# Full Documentation # VisioForge .NET SDKs API Reference Link: index.html --- title: VisioForge .NET SDKs API Reference _keywords: VisioForge, .NET SDK, Video Capture, Media Player, Video Edit, Media Blocks, C#, API, documentation _noindex: false --- # VisioForge .NET SDKs API Reference Welcome to the VisioForge .NET SDKs API documentation. ## Overview This documentation provides comprehensive API reference for the VisioForge Media Framework .NET libraries: - **VisioForge.Core** - Core media processing functionality - **VisioForge.Core.UI.Avalonia** - Avalonia UI controls - **VisioForge.Core.UI.MAUI** - .NET MAUI UI controls - **VisioForge.Core.UI.WinUI** - WinUI controls - **VisioForge.Core.UI.Uno** - Uno Platform controls - **VisioForge.Core.WindowsExtensions** - Windows-specific extensions - **VisioForge.Core.CV** - Computer vision functionality - **VisioForge.Core.CVD** - Computer vision detection - **VisioForge.Core.FaceAI** - Face AI features - **VisioForge.Core.MLKit** - ML Kit integration - **VisioForge.Core.Custom** - Custom implementations - **VisioForge.Core.OpenGL** - OpenGL rendering - **VisioForge.Plugins.MQTT** - MQTT plugin - **VisioForge.VideoFingerPrinting.MongoDB** - Video fingerprinting with MongoDB ## Getting Started Browse the [API Reference](api/index.md) to explore all available types, classes, and methods. For samples and tutorials, visit [VisioForge Help](https://www.visioforge.com/help/). ## AI / LLM Resources - [llms.txt](llms.txt) - Condensed documentation index for LLMs - [llms-full.txt](llms-full.txt) - Full documentation content for LLM ingestion --- # Class BaseContext Link: api/VisioForge.Core.BaseContext.html # Class BaseContext # Class BaseContext **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll Provides a base context class for logging operations and utility functions across the VisioForge SDK. This class serves as a foundation for other SDK components, offering centralized logging capabilities and shared utilities like random number generation. ```csharp public class BaseContext ``` #### Inheritance #### Inherited Members ## Properties ### Rnd Gets a shared random number generator instance for use across the SDK. This provides a convenient way to generate random values for various operations such as unique identifiers, test data, or randomization features. ```csharp public Random Rnd { get; } ``` #### Property Value Parameters: - (Random): ## Methods ### Debug(string, string, string) Log debug. ```csharp public void Debug(string class_, string method, string message) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. ### Debug(string, string, string, Exception) Log debug. ```csharp public void Debug(string class_, string method, string message, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. - ex (Exception): The exception. ### Debug(string, string, Exception) Log debug. ```csharp public void Debug(string class_, string method, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - ex (Exception): The exception. ### Error(string, string, string) Logs an error message with structured context information including class and method names. The message will be written to both the configured Serilog logger and System.Diagnostics.Debug output. Messages containing "unregistered" are treated specially and only written to debug output. ```csharp public void Error(string class_, string method, string message) ``` #### Parameters Parameters: - class_ (string): The name of the class where the error occurred. - method (string): The name of the method where the error occurred. - message (string): The error message to log. ### Error(string, string, string, Exception) Log error. ```csharp public void Error(string class_, string method, string message, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. - ex (Exception): The exception. ### Error(string, string, Exception) Log error. ```csharp public void Error(string class_, string method, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - ex (Exception): The exception. ### GetLogger() Gets the current Serilog logger instance configured for this context. ```csharp public ILogger GetLogger() ``` #### Returns Parameters: - (ILogger): The current ILogger instance, or null if no logger has been set. ### Info(string, string, string) Log info. ```csharp public void Info(string class_, string method, string message) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. ### Info(string, string, string, Exception) Log info. ```csharp public void Info(string class_, string method, string message, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. - ex (Exception): The exception. ### Info(string, string, Exception) Log info. ```csharp public void Info(string class_, string method, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - ex (Exception): The exception. ### SetLogger(ILogger) Sets the Serilog logger instance to be used for all logging operations in this context. This allows for centralized logging configuration and ensures consistent log formatting across all SDK components that inherit from this base context. ```csharp public void SetLogger(ILogger logger) ``` #### Parameters Parameters: - logger (ILogger): The Serilog logger instance to use for logging operations. Can be null to disable logging. ### Warning(string, string, string) Log warning. ```csharp public void Warning(string class_, string method, string message) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. ### Warning(string, string, string, Exception) Log warning. ```csharp public void Warning(string class_, string method, string message, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - message (string): The message. - ex (Exception): The exception. ### Warning(string, string, Exception) Log warning. ```csharp public void Warning(string class_, string method, Exception ex) ``` #### Parameters Parameters: - class_ (string): The class. - method (string): The method. - ex (Exception): The exception. --- # Class CameraCoveredDetector Link: api/VisioForge.Core.CV.CameraCoveredDetector.html # Class CameraCoveredDetector # Class CameraCoveredDetector **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Detects when a camera lens is covered or obscured using edge detection algorithms. ```csharp public class CameraCoveredDetector : IDisposable, IVideoProcessor ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The class analyzes video frames to determine if the camera view is blocked by an object or covering. It uses Canny edge detection to count the number of edges in each frame; when the edge count falls below a threshold, it indicates the camera is likely covered. This is useful for surveillance systems, security applications, and monitoring whether a camera has been tampered with or blocked. ## Constructors ### CameraCoveredDetector() Initializes a new instance of the class. ```csharp public CameraCoveredDetector() ``` ## Properties ### FramesToSkip Gets or sets the number of frames to skip between detections. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Increasing this value improves performance by analyzing fewer frames but may delay detection of camera coverage. For real-time applications processing 30fps video, a skip value of 5-10 still provides timely notifications while reducing CPU usage. ### Threshold Gets or sets the threshold level for determining if the camera is covered. ```csharp public int Threshold { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This threshold must be tuned based on your specific camera and scene: Test by monitoring edge counts in normal operation to find an appropriate threshold. ### VideoScale Gets or sets the scale factor for video processing to improve performance. ```csharp public double VideoScale { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Reducing the scale improves performance significantly while maintaining accuracy for coverage detection. A typical value is 0.25-0.5 for HD video sources. ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~CameraCoveredDetector() Finalizes an instance of the class. ```csharp protected ~CameraCoveredDetector() ``` ### GetSupportedFrameFormats() Gets the video frame formats supported by this processor. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): An array containing , which is the required format for processing. ### ProcessFrame(VideoFrame) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. ### ProcessFrame(VideoFrameX) Processes a video frame to detect if the camera is covered. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to analyze. Must be in RGB or BGR format. #### Remarks This method converts the frame to grayscale, applies Canny edge detection, and counts the number of edge pixels. If the count is below the threshold and enough frames have been processed (based on ), the event is raised. Frames are skipped according to the FramesToSkip setting to improve performance. #### Exceptions Parameters: - (Exception): Thrown when the frame format is not RGB or BGR. ### SetContext(BaseContext) Sets the context. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. ### OnCameraCovered Occurs when the camera is detected as being covered or obscured. ```csharp public event EventHandler OnCameraCovered ``` #### Event Type Parameters: - (EventHandler < CameraCoveredDetectorEventArgs >): #### Remarks This event is raised when the edge count falls below the value, indicating the camera view is likely blocked. The event args contain the actual edge count which can be logged for threshold tuning purposes. --- # Class CameraCoveredDetectorEventArgs Link: api/VisioForge.Core.CV.CameraCoveredDetectorEventArgs.html # Class CameraCoveredDetectorEventArgs # Class CameraCoveredDetectorEventArgs **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Provides data for the event. ```csharp public class CameraCoveredDetectorEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event args class contains information about the camera coverage detection event, including the detected edge count which indicates the severity of the coverage. Lower edge counts indicate more complete coverage. ## Constructors ### CameraCoveredDetectorEventArgs(int) Initializes a new instance of the class. ```csharp public CameraCoveredDetectorEventArgs(int level) ``` #### Parameters Parameters: - level (int): The level. ## Properties ### Level Gets or sets the number of detected edges in the frame when coverage was detected. ```csharp public int Level { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This value is useful for logging and threshold tuning. By monitoring typical edge counts during normal operation versus coverage events, you can optimize the detection threshold for your specific environment. ### Time Gets the timestamp when the camera coverage was detected. ```csharp public DateTime Time { get; } ``` #### Property Value Parameters: - (DateTime): ## See Also --- # Class CarCounter Link: api/VisioForge.Core.CV.CarCounter.html # Class CarCounter # Class CarCounter **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Detects and counts vehicles crossing a defined tracking line in video streams. ```csharp public class CarCounter : IDisposable, IVideoProcessor ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The class uses computer vision algorithms to detect moving vehicles in video frames and count how many cross a horizontal tracking line. It's designed for traffic monitoring, parking lot management, and vehicle flow analysis. The detector tracks vehicle movement across frames and triggers an event each time a vehicle crosses the line. Visual overlays (counter, tracking line, contours) can be drawn on frames for debugging and visualization purposes. ## Constructors ### CarCounter() Initializes a new instance of the class. ```csharp public CarCounter() ``` ## Properties ### ContoursColor Gets or sets the color used for drawing detected vehicle contours. ```csharp public Color ContoursColor { get; set; } ``` #### Property Value Parameters: - (Color): ### ContoursDraw Gets or sets whether detected vehicle contours are drawn on the video frame. ```csharp public bool ContoursDraw { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Contours show the detected vehicle boundaries, useful for debugging and verifying that the detector is correctly identifying vehicles. ### CounterColor Gets or sets the color used for drawing the vehicle count overlay. ```csharp public Color CounterColor { get; set; } ``` #### Property Value Parameters: - (Color): ### CounterDraw Gets or sets whether the vehicle count overlay is drawn on the video frame. ```csharp public bool CounterDraw { get; set; } ``` #### Property Value Parameters: - (bool): ### Initialized Gets a value indicating whether the car counter has been initialized. ```csharp public bool Initialized { get; } ``` #### Property Value Parameters: - (bool): ### TrackingLineActiveColor Gets or sets the active color for the tracking line when a vehicle is crossing. ```csharp public Color TrackingLineActiveColor { get; set; } ``` #### Property Value Parameters: - (Color): ### TrackingLineDefaultColor Gets or sets the default color for the tracking line when no vehicle is crossing. ```csharp public Color TrackingLineDefaultColor { get; set; } ``` #### Property Value Parameters: - (Color): ### TrackingLineDraw Gets or sets whether the tracking line is drawn on the video frame. ```csharp public bool TrackingLineDraw { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks The tracking line is the horizontal line that vehicles must cross to be counted. Drawing it helps with visual verification and debugging of the detection zone. ### TrackingLinePosition Gets or sets the vertical position of the tracking line within the frame. ```csharp public double TrackingLinePosition { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Position the line where vehicles clearly cross it in your camera view. For overhead cameras monitoring a road, 0.5 (middle) often works well. For angled views, adjust based on the road's position in the frame. ## Methods ### Clear() Clears. ```csharp public void Clear() ``` ### Dispose() Dispose. ```csharp public void Dispose() ``` ### Dispose(bool) Dispose. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Disposing parameter. ### ~CarCounter() Finalizes an instance of the class. ```csharp protected ~CarCounter() ``` ### GetSupportedFrameFormats() Gets the video frame formats supported by this processor. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): An array containing , which is the required format for vehicle detection. ### Init() Initializes the car counter and prepares it for frame processing. ```csharp public void Init() ``` #### Remarks This method must be called before processing any frames. It creates the internal detection engine and applies the current visual and detection settings. If already initialized, calling this method will clear and reinitialize the detector. ### ProcessFrame(VideoFrame) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. ### ProcessFrame(VideoFrameX) Processes a video frame to detect and count vehicles. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to analyze. Must be in RGB format. #### Remarks This method analyzes the frame for vehicle movement, detects vehicles crossing the tracking line, and raises the event with the updated count. The detector must be initialized with before calling this method, otherwise the frame will be ignored. ### SetContext(BaseContext) Sets the context. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. ### UpdateSettings() Applies the current property values to the internal detection engine. ```csharp public void UpdateSettings() ``` #### Remarks Call this method after modifying properties like , , or other visual settings to apply the changes to the active detector. This is automatically called by . ### OnCarsDetected Occurs when vehicles are detected crossing the tracking line. ```csharp public event EventHandler OnCarsDetected ``` #### Event Type Parameters: - (EventHandler < CVCarDetectedEventArgs >): #### Remarks This event is raised each time the detector processes a frame where vehicles have been found. The event args contain the cumulative count of vehicles that have crossed the tracking line. --- # Class CascadeFaceDetector Link: api/VisioForge.Core.CV.CascadeFaceDetector.html # Class CascadeFaceDetector # Class CascadeFaceDetector **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Implements face detection using Haar Feature-based Cascade Classifiers. ```csharp public class CascadeFaceDetector : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class uses the OpenCvSharp library to detect faces, eyes, noses, and mouths in video frames. It supports frontal and profile face detection, as well as feature detection within the face region. It also includes features for performance optimization (skipping frames, scaling) and visual effects (blur, pixelate). ## Constructors ### CascadeFaceDetector(CascadeFaceDetectorSettings) Initializes a new instance of the class. ```csharp public CascadeFaceDetector(CascadeFaceDetectorSettings settings = null) ``` #### Parameters Parameters: - settings (CascadeFaceDetectorSettings): The settings to configure the detector. If null, default settings are used. ## Properties ### Settings Gets or sets the configuration settings for the face detector. ```csharp public CascadeFaceDetectorSettings Settings { get; set; } ``` #### Property Value Parameters: - (CascadeFaceDetectorSettings): ## Methods ### Clear() Clears. ```csharp public void Clear() ``` ### Dispose() Dispose. ```csharp public void Dispose() ``` ### Dispose(bool) Dispose. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Disposing parameter. ### ~CascadeFaceDetector() Finalizes an instance of the class. ```csharp protected ~CascadeFaceDetector() ``` ### Process(RAWImage, out List) Processes the specified source. ```csharp public void Process(RAWImage source, out List facesList) ``` #### Parameters Parameters: - source (RAWImage): The source. - facesList (List < CVFace >): The faces list. ### Process(RAWImage, TimeSpan) Process. ```csharp public CVFace[] Process(RAWImage frame, TimeSpan timestamp) ``` #### Parameters Parameters: - frame (RAWImage): The frame. - timestamp (TimeSpan): Timestamp. #### Returns Parameters: - (CVFace [ ]): The . ### Process(VideoFrame) Process. ```csharp public CVFace[] Process(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. #### Returns Parameters: - (CVFace [ ]): The . ### OnFaceDetected Event raised when one or more faces are detected in a frame. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): --- # Class CascadeFaceDetectorSettings Link: api/VisioForge.Core.CV.CascadeFaceDetectorSettings.html # Class CascadeFaceDetectorSettings # Class CascadeFaceDetectorSettings **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Settings for the Cascade Face Detector, allowing configuration of detection parameters and visual feedback. ```csharp public class CascadeFaceDetectorSettings ``` #### Inheritance #### Inherited Members ## Properties ### Blur Gets or sets a value indicating whether to blur the detected faces. ```csharp public bool Blur { get; set; } ``` #### Property Value Parameters: - (bool): ### CacheSize Gets or sets the size of the cache (duration in frames). ```csharp public int CacheSize { get; set; } ``` #### Property Value Parameters: - (int): ### DetectEyes Gets or sets a value indicating whether to detect eyes within the detected face. ```csharp public bool DetectEyes { get; set; } ``` #### Property Value Parameters: - (bool): ### DetectFrontalFace Gets or sets a value indicating whether to detect frontal faces. ```csharp public bool DetectFrontalFace { get; set; } ``` #### Property Value Parameters: - (bool): ### DetectMouth Gets or sets a value indicating whether to detect the mouth within the detected face. ```csharp public bool DetectMouth { get; set; } ``` #### Property Value Parameters: - (bool): ### DetectNose Gets or sets a value indicating whether to detect the nose within the detected face. ```csharp public bool DetectNose { get; set; } ``` #### Property Value Parameters: - (bool): ### DetectProfileFace Gets or sets a value indicating whether to detect profile faces (side view). ```csharp public bool DetectProfileFace { get; set; } ``` #### Property Value Parameters: - (bool): ### DrawColor Gets or sets the color used for drawing the detection shapes (rectangles or circles). ```csharp public SKColor DrawColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DrawEnabled Gets or sets a value indicating whether to draw rectangles or circles around detected faces on the video frame. ```csharp public bool DrawEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### DrawShapeType Gets or sets the shape to use when drawing detected faces. ```csharp public CVShapeType DrawShapeType { get; set; } ``` #### Property Value Parameters: - (CVShapeType): ### FramesToSkip Gets or sets the number of frames to skip between detection passes to improve performance. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): ### MaxFaceSize Gets or sets the maximum possible object size. Objects larger than this are ignored. ```csharp public Size MaxFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MinFaceSize Gets or sets the minimum possible object size. Objects smaller than this are ignored. ```csharp public Size MinFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MinNeighbors Gets or sets the parameter specifying how many neighbors each candidate rectangle should have to retain it. ```csharp public int MinNeighbors { get; set; } ``` #### Property Value Parameters: - (int): ### Pixelate Gets or sets a value indicating whether to pixelate the detected faces. ```csharp public bool Pixelate { get; set; } ``` #### Property Value Parameters: - (bool): ### ScaleFactor Gets or sets the parameter specifying how much the image size is reduced at each image scale. ```csharp public float ScaleFactor { get; set; } ``` #### Property Value Parameters: - (float): ### UseCache Gets or sets a value indicating whether to use a cache for detected faces. ```csharp public bool UseCache { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the detector reuses the location of detected faces for a certain number of frames (defined by ), which improves performance by running the expensive detection algorithm less frequently. ### VideoScale Gets or sets the scaling factor for the video frame during processing. ```csharp public double VideoScale { get; set; } ``` #### Property Value Parameters: - (double): --- # Class CVProcess Link: api/VisioForge.Core.CV.CVProcess.html # Class CVProcess # Class CVProcess **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Provides helper methods for processing computer vision frames, including pixelation, blurring, and cache management. ```csharp public static class CVProcess ``` #### Inheritance #### Inherited Members ## Methods ### BlurRegion(Mat, Rect) Applies a Gaussian blur to a specific region within a video frame. ```csharp public static void BlurRegion(Mat img, Rect region) ``` #### Parameters Parameters: - img (Mat): The video frame (Mat) to process. - region (Rect): The rectangular region of interest to blur. ### PixelateRegion(Mat, Rect, int) Pixelates a specific region within a video frame. ```csharp public static void PixelateRegion(Mat frame, Rect region, int pixelSize) ``` #### Parameters Parameters: - frame (Mat): The video frame (Mat) to process. - region (Rect): The rectangular region of interest to pixelate. - pixelSize (int): The size of the "pixel" blocks. Larger values result in more abstract pixelation. #### Remarks This method works by downscaling the region of interest and then upscaling it back to the original size using nearest-neighbor interpolation, creating a blocky effect. ### ProcessCache(Mat, ref List>, bool, bool) Processes the list of cached faces, updates their state, merges overlapping areas, and applies visual effects (blur/pixelate). ```csharp public static void ProcessCache(Mat frame, ref List> facesCacheList, bool blur, bool pixelate) ``` #### Parameters Parameters: - frame (Mat): The current video frame to draw on or modify. - facesCacheList (List < Tuple < CVFace , int > >): The list of cached faces and their remaining lifetimes. - blur (bool): if set to true, applies a blur effect to the cached face regions. - pixelate (bool): if set to true, applies a pixelation effect to the cached face regions. --- # Class DNNFaceDetector Link: api/VisioForge.Core.CV.DNNFaceDetector.html # Class DNNFaceDetector # Class DNNFaceDetector **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Implements a Deep Neural Network (DNN) based face detector using OpenCvSharp's DNN module. ```csharp public class DNNFaceDetector : IDisposable, IFaceDetector, IVideoProcessor ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This detector uses a pre-trained Caffe model (SSD architecture) to detect faces with high accuracy. It requires the 'deploy.prototxt' and 'res10_300x300_ssd_iter_140000_fp16.caffemodel' resources. It supports GPU acceleration if configured and available (VFCUDA). ## Constructors ### DNNFaceDetector(DNNFaceDetectorSettings) Initializes a new instance of the class. ```csharp public DNNFaceDetector(DNNFaceDetectorSettings settings = null) ``` #### Parameters Parameters: - settings (DNNFaceDetectorSettings): The settings to configure the detector. If null, default settings are used. ## Properties ### Settings Gets or sets the configuration settings for the DNN face detector. ```csharp public DNNFaceDetectorSettings Settings { get; set; } ``` #### Property Value Parameters: - (DNNFaceDetectorSettings): ## Methods ### Clear() Clears. ```csharp public void Clear() ``` ### Dispose() Dispose. ```csharp public void Dispose() ``` ### Dispose(bool) Dispose. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Disposing parameter. ### ~DNNFaceDetector() Finalizes an instance of the class. ```csharp protected ~DNNFaceDetector() ``` ### GetSupportedFrameFormats() Gets the supported frame format. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): VideoFormatX. ### ProcessFrame(VideoFrame) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. ### ProcessFrame(VideoFrameX) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The frame. ### SetContext(BaseContext) Sets the context. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. ### FacesDetected Event raised when one or more faces are detected in a frame. ```csharp public event EventHandler FacesDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): --- # Class DNNFaceDetectorSettings Link: api/VisioForge.Core.CV.DNNFaceDetectorSettings.html # Class DNNFaceDetectorSettings # Class DNNFaceDetectorSettings **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Settings for the Deep Neural Network (DNN) based Face Detector. ```csharp public class DNNFaceDetectorSettings ``` #### Inheritance #### Inherited Members ## Properties ### Blur Gets or sets a value indicating whether to blur the detected faces. ```csharp public bool Blur { get; set; } ``` #### Property Value Parameters: - (bool): ### CacheSize Gets or sets the size of the cache (duration in frames). ```csharp public int CacheSize { get; set; } ``` #### Property Value Parameters: - (int): ### Confidence Gets or sets the confidence threshold for face detection. ```csharp public float Confidence { get; set; } ``` #### Property Value Parameters: - (float): ### DrawColor Gets or sets the color used for drawing the detection shapes. ```csharp public SKColor DrawColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DrawEnabled Gets or sets a value indicating whether to draw rectangles or circles around detected faces on the video frame. ```csharp public bool DrawEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### DrawShapeType Gets or sets the shape to use when drawing detected faces. ```csharp public CVShapeType DrawShapeType { get; set; } ``` #### Property Value Parameters: - (CVShapeType): ### DrawThickness Gets or sets the thickness of the lines used for drawing detection shapes. ```csharp public int DrawThickness { get; set; } ``` #### Property Value Parameters: - (int): ### FramesToSkip Gets or sets the number of frames to skip between detection passes. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): ### MaxFaceSize Gets or sets the maximum possible object size. Objects larger than this are ignored. ```csharp public Size MaxFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MinFaceSize Gets or sets the minimum possible object size. Objects smaller than this are ignored. ```csharp public Size MinFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MinNeighbors Gets or sets the minimum neighbors parameter (used only if internal legacy methods use it, otherwise might be unused in DNN context). ```csharp public int MinNeighbors { get; set; } ``` #### Property Value Parameters: - (int): ### Pixelate Gets or sets a value indicating whether to pixelate the detected faces. ```csharp public bool Pixelate { get; set; } ``` #### Property Value Parameters: - (bool): ### ScaleFactor Gets or sets the scale factor (used if resizing or legacy methods use it). ```csharp public float ScaleFactor { get; set; } ``` #### Property Value Parameters: - (float): ### UseCache Gets or sets a value indicating whether to use a cache for detected faces. ```csharp public bool UseCache { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, undetected faces are drawn using cached positions for frames. ### VideoScale Gets or sets the scaling factor for the video frame during processing. ```csharp public double VideoScale { get; set; } ``` #### Property Value Parameters: - (double): --- # Class ObjectDetector Link: api/VisioForge.Core.CV.ObjectDetector.html # Class ObjectDetector # Class ObjectDetector **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Detects and tracks moving objects in a video stream using background subtraction and Euclidean distance tracking. ```csharp public class ObjectDetector ``` #### Inheritance #### Inherited Members ## Constructors ### ObjectDetector() Initializes a new instance of the class. ```csharp public ObjectDetector() ``` ## Methods ### Process(RAWImage) Processes a raw video frame to detect and track moving objects. ```csharp public int Process(RAWImage frame) ``` #### Parameters Parameters: - frame (RAWImage): The raw image frame to process. #### Returns Parameters: - (int): Returns 0 on success. --- # Class PedestrianDetector Link: api/VisioForge.Core.CV.PedestrianDetector.html # Class PedestrianDetector # Class PedestrianDetector **Namespace**: VisioForge.Core.CV **Assembly**: VisioForge.Core.CV.dll Detects pedestrians in video frames using Histogram of Oriented Gradients (HOG) descriptors and SVM. ```csharp public class PedestrianDetector : IDisposable, IVideoProcessor ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PedestrianDetector() Initializes a new instance of the class. ```csharp public PedestrianDetector() ``` ## Properties ### DrawColor Gets or sets the color used for drawing the bounding boxes. ```csharp public SKColor DrawColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DrawEnabled Gets or sets a value indicating whether to draw bounding boxes around detected pedestrians. ```csharp public bool DrawEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### FramesToSkip Gets or sets the number of frames to skip between detection passes. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): ### Initialized Gets a value indicating whether the detector has been initialized. ```csharp public bool Initialized { get; } ``` #### Property Value Parameters: - (bool): ### VideoScale Gets or sets the video scaling factor to optimize performance. ```csharp public double VideoScale { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### Clear() Clears. ```csharp public void Clear() ``` ### Dispose() Dispose. ```csharp public void Dispose() ``` ### Dispose(bool) Dispose. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Disposing parameter. ### ~PedestrianDetector() Finalizes an instance of the class. ```csharp protected ~PedestrianDetector() ``` ### GetSupportedFrameFormats() Gets the supported frame format. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): VideoFormatX. ### Init() Init. ```csharp public void Init() ``` ### ProcessFrame(VideoFrame) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. ### ProcessFrame(VideoFrameX) Processes the frame. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The frame. ### SetContext(BaseContext) Sets the context. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. ### OnPedestrianDetected Event raised when pedestrians are detected. ```csharp public event EventHandler OnPedestrianDetected ``` #### Event Type Parameters: - (EventHandler < CVPedestrianDetectedEventArgs >): --- # Namespace VisioForge.Core.CV Link: api/VisioForge.Core.CV.html # Namespace VisioForge.Core.CV # Namespace VisioForge.Core.CV ### Classes Parameters: - (): Provides helper methods for processing computer vision frames, including pixelation, blurring, and cache management. - (): Detects when a camera lens is covered or obscured using edge detection algorithms. - (): Provides data for the event. - (): Detects and counts vehicles crossing a defined tracking line in video streams. - (): Implements face detection using Haar Feature-based Cascade Classifiers. - (): Settings for the Cascade Face Detector, allowing configuration of detection parameters and visual feedback. - (): Implements a Deep Neural Network (DNN) based face detector using OpenCvSharp's DNN module. - (): Settings for the Deep Neural Network (DNN) based Face Detector. - (): Detects and tracks moving objects in a video stream using background subtraction and Euclidean distance tracking. - (): Detects pedestrians in video frames using Histogram of Oriented Gradients (HOG) descriptors and SVM. --- # Class FaceDetector Link: api/VisioForge.Core.CVD.FaceDetector.html # Class FaceDetector # Class FaceDetector **Namespace**: VisioForge.Core.CVD **Assembly**: VisioForge.Core.CVD.dll Face detector. ```csharp public class FaceDetector : IDisposable, IFaceDetector, IVideoProcessor ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FaceDetector() Initializes a new instance of the class with default settings. ```csharp public FaceDetector() ``` ### FaceDetector(FaceDetectorSettings) Initializes a new instance of the class with specified settings. ```csharp public FaceDetector(FaceDetectorSettings settings) ``` #### Parameters Parameters: - settings (FaceDetectorSettings): The configuration settings. ## Properties ### Settings Gets or sets the configuration settings for face detection. ```csharp public FaceDetectorSettings Settings { get; set; } ``` #### Property Value Parameters: - (FaceDetectorSettings): ## Methods ### Clear() Clears the internal state and resets the detector. ```csharp public void Clear() ``` ### Dispose() Disposes of the resources used by this instance. ```csharp public void Dispose() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### ~FaceDetector() Finalizes an instance of the class. ```csharp protected ~FaceDetector() ``` ### GetSupportedFrameFormats() Gets the supported frame format. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): VideoFormatX. #### Exceptions Parameters: - (NotImplementedException): ### Init() Initializes the face detector instance. ```csharp public void Init() ``` ### Process(VideoFrameX, TimeSpan) Processes the video frame and returns detected faces. ```csharp public CVFace[] Process(VideoFrameX frame, TimeSpan timestamp) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to process. - timestamp (TimeSpan): The timestamp of the frame. #### Returns Parameters: - (CVFace [ ]): The . ### Process(VideoFrameX) Processes the video frame using its internal timestamp. ```csharp public CVFace[] Process(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to process. #### Returns Parameters: - (CVFace [ ]): An array of objects representing the detected faces. ### ProcessFrame(VideoFrame) Processes the frame. Frame may be skipped according to the settings. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The frame. ### ProcessFrame(VideoFrameX) Processes the specified video frame for face detection. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to process. ### SetContext(BaseContext) Sets the context. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. #### Exceptions Parameters: - (NotImplementedException): ### FacesDetected Occurs when faces are detected in a frame. ```csharp public event EventHandler FacesDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): --- # Class FaceDetectorSettings Link: api/VisioForge.Core.CVD.FaceDetectorSettings.html # Class FaceDetectorSettings # Class FaceDetectorSettings **Namespace**: VisioForge.Core.CVD **Assembly**: VisioForge.Core.CVD.dll Configuration settings for the DLib-based face detector. ```csharp public class FaceDetectorSettings ``` #### Inheritance #### Inherited Members ## Remarks The class provides configuration options for face detection using the DLib library. It allows customization of detection parameters, visual overlays, performance optimization, and privacy features like face blurring. ## Properties ### BlurFaces Gets or sets whether to blur detected faces for privacy protection. ```csharp public bool BlurFaces { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, each detected face region is blurred to obscure identity while maintaining scene context. Useful for privacy-compliant video recording, public displays, or automated anonymization workflows. ### DrawColor Gets or sets the color used for drawing face detection overlays. ```csharp public SKColor DrawColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DrawEnabled Gets or sets whether detected faces are drawn on the video frame. ```csharp public bool DrawEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### DrawShapeType Gets or sets the shape used for drawing face detection indicators. ```csharp public CVShapeType DrawShapeType { get; set; } ``` #### Property Value Parameters: - (CVShapeType): ### FramesToSkip Gets or sets the number of frames to skip between detections. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks

This value directly affects performance and detection responsiveness:

  • Higher values improve performance but increase detection latency
  • For 30fps video analyzing 5 frames/second, use skip value of 5 (30/5 - 1)
  • For real-time tracking, reduce to 1-2; for passive monitoring, increase to 10-15
### MaxFaceSize Gets or sets the maximum face size for detection. ```csharp public Size MaxFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): #### Remarks Set this to filter out very close faces or objects that are too large to be faces. Useful for eliminating false positives from large objects in the scene. ### MinFaceSize Gets or sets the minimum face size for detection. ```csharp public Size MinFaceSize { get; set; } ``` #### Property Value Parameters: - (Size): #### Remarks Increase this value to ignore distant/small faces and improve performance. For close-up scenarios, reduce to 20x20. For wide-angle surveillance, increase to 50x50 or higher. ### MinNeighbors Gets or sets the minimum number of neighboring detections required to confirm a face. ```csharp public int MinNeighbors { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This is a key parameter for balancing detection accuracy vs. false positives:
  • Lower values (3-5): More detections but more false positives
  • Medium values (6-10): Balanced detection (recommended)
  • Higher values (11+): Fewer false positives but may miss some faces
### ScaleFactor Gets or sets the scale factor for the detection window at each image scale. ```csharp public float ScaleFactor { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Smaller values (closer to 1.0) provide more thorough detection at the cost of performance. Larger values (1.2-1.3) are faster but may miss faces at certain sizes. The default 1.1 provides a good balance between speed and accuracy. ### VideoScale Gets or sets the scaling factor applied to video frames before detection. ```csharp public double VideoScale { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Reducing the scale significantly improves performance with minimal impact on detection accuracy. Typical values are 0.5 for HD video or 0.25 for 4K video to achieve real-time performance. --- # Namespace VisioForge.Core.CVD Link: api/VisioForge.Core.CVD.html # Namespace VisioForge.Core.CVD # Namespace VisioForge.Core.CVD ### Classes Parameters: - (): Face detector. - (): Configuration settings for the DLib-based face detector. --- # Class DeviceEnumerator Link: api/VisioForge.Core.DeviceEnumerator.html # Class DeviceEnumerator # Class DeviceEnumerator **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll Provides specialized enumeration for Allied Vision industrial cameras using the Vimba X SDK integration. ```csharp public class DeviceEnumerator : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

This class provides unified access to a wide variety of media devices:

  • Standard webcams and video capture devices
  • Microphones and audio capture sources
  • Audio output devices (speakers, headphones, etc.)
  • IP cameras via ONVIF protocol
  • NDI (Network Device Interface) sources for IP video streaming
  • Blackmagic Design DeckLink professional video hardware
  • Industrial cameras supporting GenICam/GigE Vision standards
  • Allied Vision, Basler, and FLIR/Teledyne machine vision cameras

The class supports both synchronous and asynchronous device discovery methods with platform-specific optimizations for Windows, macOS, Linux, iOS, and Android. Real-time device change notifications are provided through events when devices are added or removed from the system.

Use the singleton instance for most scenarios to avoid resource duplication and ensure consistent device state across your application.

## Constructors ### DeviceEnumerator(ContextX) Initializes a new instance of the class with an optional GStreamer context. If no context is provided, a new default context will be created for device operations. ```csharp protected DeviceEnumerator(ContextX context = null) ``` #### Parameters Parameters: - context (ContextX): The GStreamer context to use for device operations, or null to create a default context. ## Fields ### _shared The shared singleton DeviceEnumerator instance for application-wide device management. ```csharp protected static DeviceEnumerator _shared ``` #### Field Value Parameters: - (DeviceEnumerator): ### _videoSourcesLock The video sources lock. ```csharp protected object _videoSourcesLock ``` #### Field Value Parameters: - (object): ### _videoSourcesX Represents a list of video capture device information objects. ```csharp protected List _videoSourcesX ``` #### Field Value Parameters: - (List < VideoCaptureDeviceInfo >): ## Properties ### Shared Gets the shared singleton instance that provides application-wide device enumeration. ```csharp public static DeviceEnumerator Shared { get; } ``` #### Property Value Parameters: - (DeviceEnumerator): #### Remarks

This property provides a singleton instance that is automatically created on first access and disposed when the application exits via the event.

Using the shared instance is recommended for most scenarios to:

  • Avoid resource duplication from multiple enumerator instances
  • Maintain consistent device state across your application
  • Reduce memory overhead from redundant device monitoring
## Methods ### AlliedVisionSourcesAsync() Asynchronously gets an array of available Allied Vision machine vision cameras. ```csharp public Task AlliedVisionSourcesAsync() ``` #### Returns Parameters: - (Task < AlliedVisionCameraInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available Allied Vision cameras. #### Remarks

This method discovers Allied Vision cameras using the Vimba X SDK, supporting GigE Vision, USB3 Vision, and Camera Link interfaces. The enumeration is performed on a background thread.

Requires the Allied Vision Vimba X SDK to be installed on the system.

### AudioOutputsAsync(AudioOutputDeviceAPI?) Asynchronously gets an array of available audio output devices (speakers, headphones, etc.). ```csharp public Task AudioOutputsAsync(AudioOutputDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioOutputDeviceAPI ?): Optional filter to return only devices from a specific audio API. If null, returns devices from all available APIs. #### Returns Parameters: - (Task < AudioOutputDeviceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available audio output devices. #### Remarks This method runs device enumeration on a background thread to avoid blocking the calling thread. ### AudioSources(AudioCaptureDeviceAPI?) Gets an array of available audio capture devices (microphones and audio inputs). ```csharp public AudioCaptureDeviceInfo[] AudioSources(AudioCaptureDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI ?): Optional filter to return only devices from a specific audio API. If null, returns devices from all available APIs. On Linux, defaults to PulseAudio. #### Returns Parameters: - (AudioCaptureDeviceInfo [ ]): An array of objects representing available audio input devices. #### Remarks

This method automatically performs device enumeration on first call if the internal cache is empty. Subsequent calls return cached results unless is called.

Supported APIs vary by platform:

  • Windows: DirectSound, WASAPI
  • Linux: PulseAudio, ALSA, PipeWire
  • macOS: Core Audio
  • iOS/Android: Platform default (single device)
### AudioSourcesAsync(AudioCaptureDeviceAPI?) Asynchronously gets an array of available audio capture devices (microphones and audio inputs). ```csharp public Task AudioSourcesAsync(AudioCaptureDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI ?): Optional filter to return only devices from a specific audio API. If null, returns devices from all available APIs. #### Returns Parameters: - (Task < AudioCaptureDeviceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available audio input devices. #### Remarks On Apple platforms (macOS, iOS), this method automatically requests microphone access permission before performing enumeration. The method runs device enumeration on a background thread. ### BaslerSourcesAsync() Asynchronously gets an array of available Basler machine vision cameras. ```csharp public Task BaslerSourcesAsync() ``` #### Returns Parameters: - (Task < BaslerCameraInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available Basler cameras. #### Remarks

This method discovers Basler cameras using the Pylon SDK, supporting GigE Vision, USB3 Vision, and Camera Link interfaces. The enumeration provides detailed camera information including device IDs, model names, and connection details.

Requires the Basler Pylon SDK to be installed on the system. The method runs enumeration on a background thread to avoid blocking the calling thread.

### Clear() Clears all cached device lists, forcing a fresh enumeration on the next device query. ```csharp public void Clear() ``` #### Remarks

This method clears all internal device caches including:

  • Video capture sources
  • Audio capture sources
  • Audio output devices (sinks)
  • DeckLink video and audio sources/sinks
  • NDI sources
  • GenICam cameras

Call this method when you need to force a complete re-enumeration of all devices, for example, after system configuration changes or when troubleshooting device detection issues.

### DecklinkAudioSinksAsync() Asynchronously gets an array of available DeckLink audio output sinks. ```csharp public Task DecklinkAudioSinksAsync() ``` #### Returns Parameters: - (Task < DecklinkAudioSinkInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available DeckLink audio outputs. #### Remarks This method enumerates all DeckLink audio output connections including embedded audio channels. The enumeration is performed on a background thread. ### DecklinkAudioSourcesAsync() Asynchronously gets an array of available DeckLink audio capture sources. ```csharp public Task DecklinkAudioSourcesAsync() ``` #### Returns Parameters: - (Task < DecklinkAudioSourceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available DeckLink audio inputs. #### Remarks This method enumerates all DeckLink audio capture inputs including embedded audio channels. The enumeration is performed on a background thread. ### DecklinkVideoSinksAsync() Asynchronously gets an array of available DeckLink video output sinks. ```csharp public Task DecklinkVideoSinksAsync() ``` #### Returns Parameters: - (Task < DecklinkVideoSinkInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available DeckLink video outputs. #### Remarks This method enumerates all DeckLink video output connections including SDI and HDMI outputs. The enumeration is performed on a background thread. ### DecklinkVideoSourcesAsync() Asynchronously gets an array of available DeckLink video capture sources. ```csharp public Task DecklinkVideoSourcesAsync() ``` #### Returns Parameters: - (Task < DecklinkVideoSourceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available DeckLink video inputs. #### Remarks This method enumerates all DeckLink video capture inputs including SDI, HDMI, and component connections. The enumeration is performed on a background thread. ### Dispose() Releases all resources used by the instance. ```csharp public void Dispose() ``` #### Remarks

This method stops all active device monitors, releases GStreamer resources, and unregisters any platform-specific device notification handlers. On Windows, this also stops the WMI event watcher used for USB device change notifications.

After calling this method, the device enumerator cannot be reused. If using the instance, a new instance will be created automatically on the next access.

### Dispose(bool) ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### ~DeviceEnumerator() ```csharp protected ~DeviceEnumerator() ``` ### GenICamSourcesAsync() Asynchronously gets an array of available GenICam-compliant cameras. ```csharp public Task GenICamSourcesAsync() ``` #### Returns Parameters: - (Task < GenICamCamera [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available GenICam cameras. #### Remarks

This method discovers industrial and scientific cameras that comply with the GenICam standard, including GigE Vision and USB3 Vision devices. The enumeration provides detailed camera information including device IDs, model names, and available pixel formats.

The method includes fallback mechanisms to ensure robust camera discovery even when detailed enumeration fails.

### NDISourcesAsync() Asynchronously gets an array of available NDI video/audio sources on the network. ```csharp public Task NDISourcesAsync() ``` #### Returns Parameters: - (Task < NDISourceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available NDI sources. #### Remarks

This method discovers NDI sources available on the local network. NDI (Network Device Interface) is a royalty-free protocol for live video streaming over IP networks, commonly used in professional broadcast and video production environments.

The enumeration includes a retry mechanism with delays to ensure all network sources are discovered, as NDI source discovery may take time depending on network conditions.

### ONVIF_ListSourcesAsync(TimeSpan?, CancellationTokenSource?) Asynchronously discovers ONVIF-compliant devices on the local network. ```csharp public Task ONVIF_ListSourcesAsync(TimeSpan? timeout, CancellationTokenSource? cts) ``` #### Parameters Parameters: - timeout (TimeSpan ?): The maximum time to wait for device responses. If null, defaults to 2 seconds. Increase this value for larger networks or slow-responding devices. - cts (CancellationTokenSource ?): Optional cancellation token source to abort the discovery operation. If null, a new cancellation token source is created internally. #### Returns Parameters: - (Task < Uri [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing the service URLs of discovered ONVIF devices. #### Remarks

This method uses WS-Discovery to find ONVIF devices on the network. Each returned URI represents the device service endpoint that can be used to establish a connection for camera control and streaming.

For connecting to discovered devices, use the ONVIFClientX class from VisioForge.Core.ONVIFX namespace for full device management capabilities including PTZ control, event handling, and profile management.

### StartAudioSinkMonitor() Starts monitoring for audio output device changes on the current thread. ```csharp public void StartAudioSinkMonitor() ``` #### Remarks

Once started, the monitor will raise and events when audio output devices are connected or disconnected.

On Linux, this method performs a one-time enumeration instead of continuous monitoring.

### StartAudioSinkMonitorAsync() Asynchronously starts monitoring for audio output device changes. ```csharp public Task StartAudioSinkMonitorAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous operation. #### Remarks

Once started, the monitor will raise and events when audio output devices are connected or disconnected.

On Apple platforms (macOS, iOS), this method automatically requests audio access permission.

### StartAudioSourceMonitor() Starts monitoring for audio capture device changes on the current thread. ```csharp public void StartAudioSourceMonitor() ``` #### Remarks

Once started, the monitor will raise and events when audio input devices are connected or disconnected.

On Linux, this method performs a one-time enumeration instead of continuous monitoring.

### StartAudioSourceMonitorAsync() Asynchronously starts monitoring for audio capture device changes. ```csharp public Task StartAudioSourceMonitorAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous operation. #### Remarks

Once started, the monitor will raise and events when audio input devices are connected or disconnected.

On Apple platforms (macOS, iOS), this method automatically requests microphone access permission.

### StartVideoSourceMonitor() Starts monitoring for video capture device changes on the current thread. ```csharp public void StartVideoSourceMonitor() ``` #### Remarks

Once started, the monitor will raise and events when video capture devices are connected or disconnected.

On Linux, this method performs a one-time enumeration instead of continuous monitoring.

### StartVideoSourceMonitorAsync() Asynchronously starts monitoring for video capture device changes. ```csharp public Task StartVideoSourceMonitorAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous operation. #### Remarks

Once started, the monitor will raise and events when video capture devices are connected or disconnected.

On Apple platforms (macOS), this method automatically requests camera access permission.

### VideoSources() Gets an array of available video capture devices (cameras, webcams, and capture cards). ```csharp public VideoCaptureDeviceInfo[] VideoSources() ``` #### Returns Parameters: - (VideoCaptureDeviceInfo [ ]): An array of objects representing available video capture devices. #### Remarks

This method automatically performs device enumeration on first call if the internal cache is empty. Subsequent calls return cached results unless is called.

Supported video sources vary by platform:

  • Windows: DirectShow, Media Foundation, UVC cameras
  • Linux: V4L2, libcamera, UVC cameras
  • macOS: AVFoundation cameras
  • iOS: Built-in cameras via AVFoundation
  • Android: Camera API devices
### VideoSourcesAsync() Asynchronously gets an array of available video capture devices (cameras, webcams, and capture cards). ```csharp public Task VideoSourcesAsync() ``` #### Returns Parameters: - (Task < VideoCaptureDeviceInfo [ ] >): A task that represents the asynchronous operation. The task result contains an array of objects representing available video capture devices. #### Remarks On Apple platforms (macOS), this method automatically requests camera access permission before performing enumeration. The method runs device enumeration on a background thread. ### OnAudioSinkAdded Occurs when a new audio output device (speaker/headphones) is added to the system. ```csharp public event EventHandler OnAudioSinkAdded ``` #### Event Type Parameters: - (EventHandler < AudioOutputDeviceInfo >): #### Remarks This event is triggered when the device monitor detects a newly connected audio output device. The event argument contains detailed information about the added device. ### OnAudioSinkRemoved Occurs when an audio output device (speaker/headphones) is removed from the system. ```csharp public event EventHandler OnAudioSinkRemoved ``` #### Event Type Parameters: - (EventHandler < AudioOutputDeviceInfo >): #### Remarks This event is triggered when the device monitor detects that an audio output device has been disconnected. The event argument contains information about the removed device. ### OnAudioSourceAdded Occurs when a new audio capture device (microphone) is added to the system. ```csharp public event EventHandler OnAudioSourceAdded ``` #### Event Type Parameters: - (EventHandler < AudioCaptureDeviceInfo >): #### Remarks This event is triggered when the device monitor detects a newly connected audio input device. The event argument contains detailed information about the added device including its name, API type, and internal identifier. ### OnAudioSourceRemoved Occurs when an audio capture device (microphone) is removed from the system. ```csharp public event EventHandler OnAudioSourceRemoved ``` #### Event Type Parameters: - (EventHandler < AudioCaptureDeviceInfo >): #### Remarks This event is triggered when the device monitor detects that an audio input device has been disconnected. The event argument contains information about the removed device. ### OnDecklinkSignalLost Occurs when the DeckLink device loses input signal. ```csharp public event EventHandler OnDecklinkSignalLost ``` #### Event Type Parameters: - (EventHandler < EventArgs >): #### Remarks This event is triggered when the DeckLink hardware detects a loss of video/audio input signal. This commonly occurs when an SDI or HDMI cable is disconnected or the source device is powered off. Applications should handle this event to notify users or switch to alternative sources. ### OnVideoSourceAdded Occurs when a new video capture device (camera/webcam) is added to the system. ```csharp public event EventHandler OnVideoSourceAdded ``` #### Event Type Parameters: - (EventHandler < VideoCaptureDeviceInfo >): #### Remarks This event is triggered when the device monitor detects a newly connected video capture device. The event argument contains detailed information about the added device including its name, supported formats, resolutions, and API type. ### OnVideoSourceRemoved Occurs when a video capture device (camera/webcam) is removed from the system. ```csharp public event EventHandler OnVideoSourceRemoved ``` #### Event Type Parameters: - (EventHandler < VideoCaptureDeviceInfo >): #### Remarks This event is triggered when the device monitor detects that a video capture device has been disconnected. The event argument contains information about the removed device. --- # Class iOSTest Link: api/VisioForge.Core.Experimental.iOSTest.html # Class iOSTest # Class iOSTest **Namespace**: VisioForge.Core.Experimental **Assembly**: VisioForge.Core.dll Experimental iOS test class. ```csharp public class iOSTest ``` #### Inheritance #### Inherited Members ## Constructors ### iOSTest() Initializes a new instance of the class. ```csharp public iOSTest() ``` ## Methods ### SetWindowHandle(nint) Sets the window handle. ```csharp public void SetWindowHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The handle. ### StartAsync() Starts asynchronously. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous operation. ### StopAsync() Stops asynchronously. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous operation. --- # Class KLVRemux Link: api/VisioForge.Core.Experimental.KLVRemux.html # Class KLVRemux # Class KLVRemux **Namespace**: VisioForge.Core.Experimental **Assembly**: VisioForge.Core.dll Experimental KLV remuxer. ```csharp public class KLVRemux ``` #### Inheritance #### Inherited Members ## Methods ### Start(string, string, string) Starts the remuxing process. ```csharp public static void Start(string sourceFile, string sinkFile, string metadataFile) ``` #### Parameters Parameters: - sourceFile (string): The source file. - sinkFile (string): The sink file. - metadataFile (string): The metadata file. --- # Class PluginCheck Link: api/VisioForge.Core.Experimental.PluginCheck.html # Class PluginCheck # Class PluginCheck **Namespace**: VisioForge.Core.Experimental **Assembly**: VisioForge.Core.dll Class PluginCheck. ```csharp public static class PluginCheck ``` #### Inheritance #### Inherited Members ## Methods ### IsAvailable(string) Determines whether the specified name is available. ```csharp public static bool IsAvailable(string name) ``` #### Parameters Parameters: - name (string): The name. #### Returns Parameters: - (bool): true if the specified name is available; otherwise, false. --- # Class VideoEffectsCS Link: api/VisioForge.Core.Experimental.VideoEffectsCS.html # Class VideoEffectsCS # Class VideoEffectsCS **Namespace**: VisioForge.Core.Experimental **Assembly**: VisioForge.Core.dll Class VideoEffectsCS. ```csharp public static class VideoEffectsCS ``` #### Inheritance #### Inherited Members ## Methods ### ColorNoise(nint, int, int, int, Rect) Applies a color noise effect to the specified pixels. ```csharp public static void ColorNoise(nint pixels, int width, int height, int amount, Rect rect) ``` #### Parameters Parameters: - pixels (nint): The pixels. - width (int): The width. - height (int): The height. - amount (int): The amount of noise. - rect (Rect): The rectangle area to apply the effect. ### Mosaic(nint, int, int, int, Rect) Processes the specified pixels. ```csharp public static void Mosaic(nint pixels, int width, int height, int size, Rect rect) ``` #### Parameters Parameters: - pixels (nint): The pixels. - width (int): The width. - height (int): The height. - size (int): The size. - rect (Rect): The rectangle. --- # Namespace VisioForge.Core.Experimental Link: api/VisioForge.Core.Experimental.html # Namespace VisioForge.Core.Experimental # Namespace VisioForge.Core.Experimental ### Classes Parameters: - (): Experimental KLV remuxer. - (): Class PluginCheck. - (): Class VideoEffectsCS. - (): Experimental iOS test class. --- # Class FaceInfo Link: api/VisioForge.Core.FaceAI.FaceInfo.html # Class FaceInfo # Class FaceInfo **Namespace**: VisioForge.Core.FaceAI **Assembly**: VisioForge.Core.FaceAI.dll Contains information about a detected face including its location, encoding, and dimensions. ```csharp [Serializable] public class FaceInfo ``` #### Inheritance #### Inherited Members ## Remarks The class encapsulates all data associated with a detected face, including its position in the frame, biometric encoding for recognition, size, and any resize ratio applied during detection. This class requires x64 architecture. ## Constructors ### FaceInfo(Location, FaceEncoding, Size, double) Initializes a new instance of the class. ```csharp public FaceInfo(Location location, FaceEncoding encoding, Size size, double resizeRatio) ``` #### Parameters Parameters: - location (Location): The location of the face in the image. - encoding (FaceEncoding): The biometric encoding of the face. - size (Size): The size of the face region. - resizeRatio (double): The resize ratio applied during detection. #### Remarks This class requires x64 architecture due to dependencies on native libraries used by FaceRecognitionDotNet. Attempting to instantiate this class in an x86 process will throw an exception. #### Exceptions Parameters: - (Exception): Thrown when the application is not running as an x64 process. ## Properties ### Encoding Gets the biometric encoding of the detected face. ```csharp public FaceEncoding Encoding { get; } ``` #### Property Value Parameters: - (FaceEncoding): ### Location Gets the location of the detected face in the image. ```csharp public Location Location { get; } ``` #### Property Value Parameters: - (Location): ### ResizeRatio Gets or sets the resize ratio that was applied during face detection. ```csharp public double ResizeRatio { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks This value is important for mapping detected face coordinates back to the original image dimensions. ### Size Gets or sets the size of the detected face region. ```csharp public Size Size { get; set; } ``` #### Property Value Parameters: - (Size): --- # Class FaceRecognitionCore Link: api/VisioForge.Core.FaceAI.FaceRecognitionCore.html # Class FaceRecognitionCore # Class FaceRecognitionCore **Namespace**: VisioForge.Core.FaceAI **Assembly**: VisioForge.Core.FaceAI.dll Provides core functionality for face recognition, including adding known persons and detecting faces. ```csharp public class FaceRecognitionCore ``` #### Inheritance #### Inherited Members ## Constructors ### FaceRecognitionCore(string) Initializes a new instance of the class. ```csharp public FaceRecognitionCore(string modelDir) ``` #### Parameters Parameters: - modelDir (string): The directory containing the face recognition models. #### Exceptions Parameters: - (Exception): Thrown if the application is not running in x64 mode. ## Properties ### KnownPersons Gets the list of known persons for recognition. ```csharp public List KnownPersons { get; } ``` #### Property Value Parameters: - (List < Person >): ## Methods ### AddKnownPerson(string) Adds a known person from an image file. ```csharp public bool AddKnownPerson(string imageFile) ``` #### Parameters Parameters: - imageFile (string): The path to the image file. #### Returns Parameters: - (bool): true if the person was added successfully; otherwise, false. ### AddKnownPersonAsync(string) Asynchronously adds a known person from an image file. ```csharp public Task AddKnownPersonAsync(string imageFile) ``` #### Parameters Parameters: - imageFile (string): The path to the image file. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if successful; otherwise, false. ### AddKnownPersons(string[]) Adds multiple known persons from image files. ```csharp public void AddKnownPersons(string[] imageFiles) ``` #### Parameters Parameters: - imageFiles (string [ ]): The array of image file paths. ### AddKnownPersonsAsync(string[]) Asynchronously adds multiple known persons from image files. ```csharp public Task AddKnownPersonsAsync(string[] imageFiles) ``` #### Parameters Parameters: - imageFiles (string [ ]): The array of image file paths. #### Returns Parameters: - (Task): A task that represents the asynchronous operation. ### Clear() Clears the list of known persons. ```csharp public void Clear() ``` ### Detect(Person) Detects if the specified person matches any known person. ```csharp public Person Detect(Person person) ``` #### Parameters Parameters: - person (Person): The person to detect. #### Returns Parameters: - (Person): The matched if found; otherwise, null. ### Detect(VideoFrameX) Detects persons in the specified video frame. ```csharp public Person[] Detect(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame. #### Returns Parameters: - (Person [ ]): An array of detected objects. ### DetectAsync(Person) Asynchronously detects if the specified person matches any known person. ```csharp public Task DetectAsync(Person person) ``` #### Parameters Parameters: - person (Person): The person to detect. #### Returns Parameters: - (Task < Person >): A task that represents the asynchronous operation. The task result contains the matched if found; otherwise, null. ### DetectAsync(VideoFrameX) Asynchronously detects persons in the specified video frame. ```csharp public Task DetectAsync(VideoFrameX person) ``` #### Parameters Parameters: - person (VideoFrameX): The video frame containing the person. #### Returns Parameters: - (Task < Person [ ] >): A task that represents the asynchronous operation. The task result contains an array of detected objects. ### GetFacesInfo(string, int) Gets face information from an image file. ```csharp public List GetFacesInfo(string imageFile, int maxWidthOrHeight = 320) ``` #### Parameters Parameters: - imageFile (string): The path to the image file. - maxWidthOrHeight (int): The maximum width or height for resizing the image. Default is 320. #### Returns Parameters: - (List < FaceInfo >): A list of objects containing face details. ### GetFacesInfo(VideoFrameX, int) Gets face information from a video frame. ```csharp public List GetFacesInfo(VideoFrameX frame, int maxWidthOrHeight = 320) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame. - maxWidthOrHeight (int): The maximum width or height for resizing the image. Default is 320. #### Returns Parameters: - (List < FaceInfo >): A list of objects containing face details. ### GetFacesInfo(Image, int) Gets face information from a Dlib image object. ```csharp public List GetFacesInfo(Image imageSrc, int maxWidthOrHeight = 320) ``` #### Parameters Parameters: - imageSrc (Image): The source image. - maxWidthOrHeight (int): The maximum width or height for resizing the image. Default is 320. #### Returns Parameters: - (List < FaceInfo >): A list of objects containing face details. --- # Class FaceRecognitionDB Link: api/VisioForge.Core.FaceAI.FaceRecognitionDB.html # Class FaceRecognitionDB # Class FaceRecognitionDB **Namespace**: VisioForge.Core.FaceAI **Assembly**: VisioForge.Core.FaceAI.dll Represents a database for storing known objects for face recognition. ```csharp [Serializable] public class FaceRecognitionDB ``` #### Inheritance #### Inherited Members ## Remarks This class provides methods to serialize and deserialize the list of known persons to and from a file. ## Properties ### Persons Gets or sets the list of persons stored in the database. ```csharp public List Persons { get; set; } ``` #### Property Value Parameters: - (List < Person >): ## Methods ### Load(string) Loads a from a file. ```csharp public static FaceRecognitionDB Load(string filename) ``` #### Parameters Parameters: - filename (string): The path to the file to load. #### Returns Parameters: - (FaceRecognitionDB): A object containing the loaded data. #### Exceptions Parameters: - (Exception): Thrown if the application is not running in x64 mode. ### Save(string) Saves the current database to a file. ```csharp public void Save(string filename) ``` #### Parameters Parameters: - filename (string): The path to the file where the database will be saved. --- # Class Person Link: api/VisioForge.Core.FaceAI.Person.html # Class Person # Class Person **Namespace**: VisioForge.Core.FaceAI **Assembly**: VisioForge.Core.FaceAI.dll Represents a person in the face recognition system with their associated face encodings. ```csharp [Serializable] public class Person ``` #### Inheritance #### Inherited Members ## Remarks The class stores one or more face encodings for an individual, allowing for face recognition across multiple photos or angles. It supports loading face data from images or video frames and maintains the biometric encodings needed for face matching operations. This class requires x64 architecture. ## Constructors ### Person(string) Initializes a new instance of the class with the specified name. ```csharp public Person(string name) ``` #### Parameters Parameters: - name (string): The name of the person. #### Exceptions Parameters: - (Exception): Thrown if the application is not running in x64 mode. ### Person() Initializes a new instance of the class. ```csharp public Person() ``` #### Exceptions Parameters: - (Exception): Thrown if the application is not running in x64 mode. ## Properties ### Name Gets or sets the name of the person. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### AddData(FaceInfo) Adds face information to this person's profile. ```csharp public void AddData(FaceInfo info) ``` #### Parameters Parameters: - info (FaceInfo): The face information to add. #### Remarks This method adds both the full object and extracts its encoding array for use in recognition operations. ### GetDataImages() Gets the list of encoded face images for this person. ```csharp public List GetDataImages() ``` #### Returns Parameters: - (List < double [ ] >): A list of 128-dimension face descriptor arrays used for recognition. ### GetFaceInfos() Gets the list of face information objects for this person. ```csharp public List GetFaceInfos() ``` #### Returns Parameters: - (List < FaceInfo >): A list of objects containing detailed face detection data. ### LoadFromImageFile(FaceRecognitionCore, string) Loads person data from an image file by detecting and encoding all faces. ```csharp public static List LoadFromImageFile(FaceRecognitionCore core, string imageFile) ``` #### Parameters Parameters: - core (FaceRecognitionCore): The face recognition core engine. - imageFile (string): The path to the image file to process. #### Returns Parameters: - (List < Person >): A list of objects, one for each detected face. Returns null if the file doesn't exist or no faces are found. #### Remarks

The person's name is derived from the image filename (without extension).

If one face is detected, uses the filename as the person's name.

If multiple faces are detected, appends indices like "filename_0", "filename_1", etc.

This method is ideal for batch enrollment from photo directories.

#### Exceptions Parameters: - (Exception): Thrown when the application is not running as an x64 process. ### LoadFromImageFileAsync(FaceRecognitionCore, string) Asynchronously loads person data from an image file. ```csharp public static Task> LoadFromImageFileAsync(FaceRecognitionCore core, string imageFile) ``` #### Parameters Parameters: - core (FaceRecognitionCore): The face recognition core engine. - imageFile (string): The path to the image file to process. #### Returns Parameters: - (Task < List < Person > >): A task representing the asynchronous operation with a list of objects. #### Remarks This method runs on a background thread to avoid blocking the UI. ### LoadFromVideoFrame(FaceRecognitionCore, VideoFrameX, string) Loads person data from a video frame by detecting and encoding all faces. ```csharp public static List LoadFromVideoFrame(FaceRecognitionCore core, VideoFrameX frame, string name) ``` #### Parameters Parameters: - core (FaceRecognitionCore): The face recognition core engine. - frame (VideoFrameX): The video frame to process. - name (string): The name to assign to the detected person(s). #### Returns Parameters: - (List < Person >): A list of objects, one for each detected face. Returns null if no faces are found. #### Remarks

If one face is detected, it creates a person with the given name.

If multiple faces are detected, creates multiple persons with names like "name_0", "name_1", etc.

This method is useful for enrolling persons from live video streams or recorded video files.

#### Exceptions Parameters: - (Exception): Thrown when the application is not running as an x64 process. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Namespace VisioForge.Core.FaceAI Link: api/VisioForge.Core.FaceAI.html # Namespace VisioForge.Core.FaceAI # Namespace VisioForge.Core.FaceAI ### Classes Parameters: - (): Contains information about a detected face including its location, encoding, and dimensions. - (): Provides core functionality for face recognition, including adding known persons and detecting faces. - (): Represents a database for storing known objects for face recognition. - (): Represents a person in the face recognition system with their associated face encodings. --- # Class ColorspaceConverterX Link: api/VisioForge.Core.FastImageProcessingX.ColorspaceConverterX.html # Class ColorspaceConverterX # Class ColorspaceConverterX **Namespace**: VisioForge.Core.FastImageProcessingX **Assembly**: VisioForge.Core.dll Provides high-performance colorspace conversion for video frames using GStreamer. ```csharp public class ColorspaceConverterX : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

The ColorspaceConverterX class leverages GStreamer's videoconvert element to perform efficient colorspace transformations between different video formats. It supports: - Multiple input and output video formats (RGB, BGR, YUV, etc.) - Hardware-accelerated conversions when available - Thread-safe operation with internal synchronization - Configurable timeout for conversion operations

The converter uses an internal GStreamer pipeline with appsrc and appsink elements to process frames in real-time. Each conversion operation is synchronized using an AutoResetEvent to ensure proper buffer handling.

This class implements and must be properly disposed to release GStreamer resources and native memory.

## Constructors ### ColorspaceConverterX(BaseContext, VideoFormatX, VideoFormatX, int, int) Initializes a new instance of the class. ```csharp public ColorspaceConverterX(BaseContext context, VideoFormatX inputFormat, VideoFormatX outputFormat, int width, int height) ``` #### Parameters Parameters: - context (BaseContext): The base context for logging and error reporting. Can be null if logging is not required. - inputFormat (VideoFormatX): The video format of the input frames (e.g., RGB, BGR, YUV). - outputFormat (VideoFormatX): The desired video format for the output frames. - width (int): The width of the video frames in pixels. - height (int): The height of the video frames in pixels. #### Remarks

This constructor creates and configures a GStreamer pipeline with the following elements: - appsrc: Receives input frames - capsfilter (input): Enforces input format constraints - videoconvert: Performs the actual colorspace conversion - capsfilter (output): Enforces output format constraints - appsink: Provides converted output frames

The pipeline is automatically started during construction. If initialization fails, all allocated resources are cleaned up and an exception is thrown.

#### Exceptions Parameters: - (InvalidOperationException): Thrown if GStreamer elements cannot be created or linked. ## Methods ### Convert(VideoFrameX, VideoFrameX, int) Converts a video frame from the input colorspace to the output colorspace. ```csharp public void Convert(VideoFrameX inFrame, VideoFrameX outFrame, int timeoutMs = 1000) ``` #### Parameters Parameters: - inFrame (VideoFrameX): The input video frame containing the source data. - outFrame (VideoFrameX): The output video frame that will receive the converted data. - timeoutMs (int): The maximum time to wait for conversion completion, in milliseconds. Default is 1000ms. #### Remarks This is a convenience overload that extracts the data pointers and sizes from the objects and calls the main conversion method. #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the converter has been disposed. ### Convert(nint, int, nint, int, int) Converts video frame data from the input colorspace to the output colorspace. ```csharp public void Convert(nint inFrameData, int inFrameDataSize, nint outFrameData, int outFrameDataSize, int timeoutMs = 1000) ``` #### Parameters Parameters: - inFrameData (nint): A pointer to the input frame data buffer. - inFrameDataSize (int): The size of the input frame data in bytes. - outFrameData (nint): A pointer to the output frame data buffer that will receive the converted data. - outFrameDataSize (int): The size of the output frame data buffer in bytes. - timeoutMs (int): The maximum time to wait for conversion completion, in milliseconds. Default is 1000ms. #### Remarks

This method performs a synchronous colorspace conversion operation: 1. Creates a GStreamer buffer from the input data 2. Pushes the buffer through the conversion pipeline 3. Waits for the converted output (with timeout) 4. Copies the result to the output buffer

The operation is thread-safe and uses internal locking to ensure only one conversion happens at a time. If the pipeline is not started, it will be started automatically.

If the conversion times out, no data is written to the output buffer and an error is logged.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the converter has been disposed. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` #### Remarks

This method stops the GStreamer pipeline, disconnects event handlers, and releases all native resources including GStreamer elements and allocated memory buffers.

After calling Dispose, the converter instance cannot be reused. Consider using a 'using' statement to ensure proper disposal.

### Dispose(bool) Releases the unmanaged and optionally the managed resources used by the class. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): If set to true, releases both managed and unmanaged resources; if false, releases only unmanaged resources. #### Remarks

When called from Dispose (disposing = true), this method: - Disposes the buffer processed event - Frees allocated native memory for output buffers

Regardless of the disposing parameter, it always: - Stops the GStreamer pipeline - Disconnects event handlers to prevent callbacks after disposal - Disposes all GStreamer objects (bin, caps)

### ~ColorspaceConverterX() Finalizes an instance of the class and releases unmanaged resources. ```csharp protected ~ColorspaceConverterX() ``` #### Remarks This destructor ensures that native resources are released even if Dispose is not called explicitly. For better performance and deterministic cleanup, always call Dispose explicitly. ### Reset() Resets the colorspace converter pipeline and clears internal buffers. ```csharp public void Reset() ``` #### Remarks

This method stops the GStreamer pipeline, restarts it, and releases all cached output buffers. Use this method if you need to recover from errors or clear the pipeline state.

After reset, the converter is ready to process new frames.

--- # Namespace VisioForge.Core.FastImageProcessingX Link: api/VisioForge.Core.FastImageProcessingX.html # Namespace VisioForge.Core.FastImageProcessingX # Namespace VisioForge.Core.FastImageProcessingX ### Classes Parameters: - (): Provides high-performance colorspace conversion for video frames using GStreamer. --- # Enum VmbAccessModeType Link: api/VisioForge.Core.GenICam.AlliedVision.VmbAccessModeType.html # Enum VmbAccessModeType # Enum VmbAccessModeType **Namespace**: VisioForge.Core.GenICam.AlliedVision **Assembly**: VisioForge.Core.dll Access mode for cameras. ```csharp public enum VmbAccessModeType ``` ## Fields Parameters: - None (): No access. - Full (): Read and write access. - Read (): Read-only access. - Unknown (): Access type unknown. - Exclusive (): Read and write access without permitting access for other consumers. ## Remarks Used in VmbCameraInfo as flags, so multiple modes can be announced. While in VmbCameraOpen(), no combination must be used. --- # Struct VmbCameraInfo Link: api/VisioForge.Core.GenICam.AlliedVision.VmbCameraInfo.html # Struct VmbCameraInfo # Struct VmbCameraInfo **Namespace**: VisioForge.Core.GenICam.AlliedVision **Assembly**: VisioForge.Core.dll Holds read-only information about a camera. ```csharp public struct VmbCameraInfo ``` #### Inherited Members ## Fields ### CameraIdExtended Globally unique identifier for the camera. ```csharp public string CameraIdExtended ``` #### Field Value Parameters: - (string): ### CameraIdString Identifier of the camera. ```csharp public string CameraIdString ``` #### Field Value Parameters: - (string): ### CameraName The display name of the camera. ```csharp public string CameraName ``` #### Field Value Parameters: - (string): ### InterfaceHandle Handle of the related interface for feature access. ```csharp public nint InterfaceHandle ``` #### Field Value Parameters: - (nint): ### LocalDeviceHandle Handle of the related GenTL local device. Null if the camera is not opened. ```csharp public nint LocalDeviceHandle ``` #### Field Value Parameters: - (nint): ### ModelName Model name. ```csharp public string ModelName ``` #### Field Value Parameters: - (string): ### PermittedAccess Permitted access modes, see . ```csharp public VmbAccessModeType PermittedAccess ``` #### Field Value Parameters: - (VmbAccessModeType): ### SerialString Serial number. ```csharp public string SerialString ``` #### Field Value Parameters: - (string): ### StreamCount Number of stream handles in the streamHandles array. ```csharp public uint StreamCount ``` #### Field Value Parameters: - (uint): ### StreamHandles Handles of the streams provided by the camera. Null if the camera is not opened. ```csharp public nint StreamHandles ``` #### Field Value Parameters: - (nint): ### TransportLayerHandle Handle of the related transport layer for feature access. ```csharp public nint TransportLayerHandle ``` #### Field Value Parameters: - (nint): --- # Enum VmbError Link: api/VisioForge.Core.GenICam.AlliedVision.VmbError.html # Enum VmbError # Enum VmbError **Namespace**: VisioForge.Core.GenICam.AlliedVision **Assembly**: VisioForge.Core.dll Error codes returned by the Allied Vision camera API functions. ```csharp public enum VmbError ``` ## Fields Parameters: - Success (): No error. - InternalFault (): Unexpected fault in VmbC or driver. - ApiNotStarted (): ::VmbStartup() was not called before the current command. - NotFound (): The designated instance (camera, feature etc.) cannot be found. - BadHandle (): The given handle is not valid. - DeviceNotOpen (): Device was not opened for usage. - InvalidAccess (): Operation is invalid with the current access mode. - BadParameter (): One of the parameters is invalid (usually an illegal pointer). - StructSize (): The given struct size is not valid for this version of the API. - MoreData (): More data available in a string/list than space is provided. - WrongType (): Wrong feature type for this access function. - InvalidValue (): The value is not valid; either out of bounds or not an increment of the minimum. - Timeout (): Timeout during wait. - Other (): Other error. - Resources (): Resources not available (e.g., memory). - InvalidCall (): Call is invalid in the current context (e.g., callback). - NoTL (): No transport layers are found. - NotImplemented (): API feature is not implemented. - NotSupported (): API feature is not supported. - Incomplete (): The current operation was not completed (e.g., a multiple registers read or write). - IO (): Low-level IO error in transport layer. - ValidValueSetNotPresent (): The valid value set could not be retrieved, since the feature does not provide this property. - GenTLUnspecified (): Unspecified GenTL runtime error. - Unspecified (): Unspecified runtime error. - Busy (): The responsible module/entity is busy executing actions. - NoData (): The function has no data to work on. - ParsingChunkData (): An error occurred parsing a buffer containing chunk data. - InUse (): Something is already in use. - Unknown (): Error condition unknown. - Xml (): Error parsing XML. - NotAvailable (): Something is not available. - NotInitialized (): Something is not initialized. - InvalidAddress (): The given address is out of range or invalid for internal reasons. - Already (): Something has already been done. - NoChunkData (): A frame expected to contain chunk data does not contain chunk data. - UserCallbackException (): A callback provided by the user threw an exception. - FeaturesUnavailable (): The XML for the module is currently not loaded; the module could be in the wrong state or the XML could not be retrieved or could not be parsed properly. - TLNotFound (): A required transport layer could not be found or loaded. - Ambiguous (): An entity cannot be uniquely identified based on the information provided. - RetriesExceeded (): Something could not be accomplished with a given number of retries. - InsufficientBufferCount (): The operation requires more buffers. - Custom (): The minimum error code to use for user-defined error codes to avoid conflict with existing error codes. --- # Namespace VisioForge.Core.GenICam.AlliedVision Link: api/VisioForge.Core.GenICam.AlliedVision.html # Namespace VisioForge.Core.GenICam.AlliedVision # Namespace VisioForge.Core.GenICam.AlliedVision ### Structs Parameters: - (): Holds read-only information about a camera. ### Enums Parameters: - (): Access mode for cameras. - (): Error codes returned by the Allied Vision camera API functions. --- # Class AravisStreamDiagnostics Link: api/VisioForge.Core.GenICam.AravisStreamDiagnostics.html # Class AravisStreamDiagnostics # Class AravisStreamDiagnostics **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Stream diagnostics information ```csharp public class AravisStreamDiagnostics ``` #### Inheritance #### Inherited Members ## Properties ### BufferCount Number of allocated buffers ```csharp public int BufferCount { get; set; } ``` #### Property Value Parameters: - (int): ### CompletedBuffers Number of successfully completed buffers ```csharp public ulong CompletedBuffers { get; set; } ``` #### Property Value Parameters: - (ulong): ### ErrorMessage Error message if diagnostics failed ```csharp public string ErrorMessage { get; set; } ``` #### Property Value Parameters: - (string): ### FailedBuffers Number of failed buffers ```csharp public ulong FailedBuffers { get; set; } ``` #### Property Value Parameters: - (ulong): ### FillingBuffers Number of buffers currently being filled ```csharp public int FillingBuffers { get; set; } ``` #### Property Value Parameters: - (int): ### HasStreamHandle Whether a stream handle exists ```csharp public bool HasStreamHandle { get; set; } ``` #### Property Value Parameters: - (bool): ### InputBuffers Number of input buffers ```csharp public int InputBuffers { get; set; } ``` #### Property Value Parameters: - (int): ### IsStreaming Whether streaming is currently active ```csharp public bool IsStreaming { get; set; } ``` #### Property Value Parameters: - (bool): ### OutputBuffers Number of output buffers ```csharp public int OutputBuffers { get; set; } ``` #### Property Value Parameters: - (int): ### UnderrunBuffers Number of buffer underruns ```csharp public ulong UnderrunBuffers { get; set; } ``` #### Property Value Parameters: - (ulong): ## Methods ### ToString() Gets diagnostic information as string ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Diagnostic information --- # Struct PylonDeviceInfo_t Link: api/VisioForge.Core.GenICam.Basler.PylonDeviceInfo_t.html # Struct PylonDeviceInfo_t # Struct PylonDeviceInfo_t **Namespace**: VisioForge.Core.GenICam.Basler **Assembly**: VisioForge.Core.dll ```csharp public struct PylonDeviceInfo_t ``` #### Inherited Members ## Fields ### DeviceClass ```csharp public string DeviceClass ``` #### Field Value Parameters: - (string): ### DeviceVersion ```csharp public string DeviceVersion ``` #### Field Value Parameters: - (string): ### FriendlyName ```csharp public string FriendlyName ``` #### Field Value Parameters: - (string): ### FullName ```csharp public string FullName ``` #### Field Value Parameters: - (string): ### ModelName ```csharp public string ModelName ``` #### Field Value Parameters: - (string): ### SerialNumber ```csharp public string SerialNumber ``` #### Field Value Parameters: - (string): ### UserDefinedName ```csharp public string UserDefinedName ``` #### Field Value Parameters: - (string): ### VendorName ```csharp public string VendorName ``` #### Field Value Parameters: - (string): --- # Namespace VisioForge.Core.GenICam.Basler Link: api/VisioForge.Core.GenICam.Basler.html # Namespace VisioForge.Core.GenICam.Basler # Namespace VisioForge.Core.GenICam.Basler ### Structs Parameters: - (): --- # Class GenICamCamera Link: api/VisioForge.Core.GenICam.GenICamCamera.html # Class GenICamCamera # Class GenICamCamera **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Represents a GenICam-compliant camera device with high-level access to camera information, resolutions, pixel formats, and control features. This class provides a comprehensive wrapper around the Aravis library for industrial camera control.

Typical Usage Workflow:

  1. Create camera instance using
  2. Call to establish connection
  3. Call to populate camera capabilities
  4. Configure camera settings (exposure, gain, ROI, etc.)
  5. Use for continuous capture or for single shots
  6. Handle events for frame processing
  7. Call and when done

Thread Safety: This class is not thread-safe. Access should be synchronized when used from multiple threads, particularly for streaming operations.

Resource Management: The class implements . Always dispose of camera instances when done, either explicitly or using 'using' statements. Alternatively, use for temporary disconnection without disposal.

Basic usage example:
using var camera = GenICamCameraManager.CreateCamera("MyCamera");
if (camera.Connect())
{
    camera.ReadInfo();
    camera.SetExposureTime(10000); // 10ms
    camera.SetGain(0.0);

    camera.FrameReceived += (s, e) => {
        Console.WriteLine($"Frame: {e.FrameData.Width}x{e.FrameData.Height}");
    };

    camera.StartStreaming();
    Thread.Sleep(5000); // Stream for 5 seconds
    camera.StopStreaming();
}
API Update Notes: - Fixed acquisition startup sequence: camera acquisition handles device-level streaming automatically - Removed redundant arv_stream_start_acquisition calls that could conflict with camera acquisition - Updated buffer management to use modern Aravis buffer management APIs - Enhanced stream diagnostics with FillingBuffers parameter support - Improved error handling and logging throughout streaming operations - Added pre-flight checks for camera and stream handles before starting acquisition ```csharp public class GenICamCamera : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Address ```csharp public string Address { get; set; } ``` #### Property Value Parameters: - (string): ### AvailableBooleanFeatures Gets the array of available boolean-type GenICam features. Call to populate this property. ```csharp public string[] AvailableBooleanFeatures { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### AvailableFloatFeatures Gets the array of available float-type GenICam features. Call to populate this property. ```csharp public string[] AvailableFloatFeatures { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### AvailableIntegerFeatures Gets the array of available integer-type GenICam features. Call to populate this property. ```csharp public string[] AvailableIntegerFeatures { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### AvailablePixelFormatDisplayNames Gets or sets the array of available pixel format display names for user interfaces. ```csharp public string[] AvailablePixelFormatDisplayNames { get; set; } ``` #### Property Value Parameters: - (string [ ]): #### Remarks These are human-readable names corresponding to , suitable for displaying in dropdown lists or configuration interfaces. This array is populated by . ### AvailablePixelFormats Gets or sets the array of available pixel format names supported by the camera. ```csharp public string[] AvailablePixelFormats { get; set; } ``` #### Property Value Parameters: - (string [ ]): #### Remarks Common formats include:
  • "Mono8" - 8-bit monochrome
  • "Mono16" - 16-bit monochrome
  • "BayerRG8", "BayerGR8", etc. - Bayer pattern color formats
  • "RGB8Packed" - 8-bit RGB color
  • "YUV422Packed" - YUV color format
This array is populated by . ### AvailableStringFeatures Gets the array of available string-type GenICam features. Call to populate this property. ```csharp public string[] AvailableStringFeatures { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### AvailableTriggerSources ```csharp public string[] AvailableTriggerSources { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### AvailableTriggers ```csharp public string[] AvailableTriggers { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### BinningAvailable Gets or sets whether pixel binning is supported by the camera. ```csharp public bool BinningAvailable { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Binning combines adjacent pixels to:

  • Increase sensitivity (brightness) by combining pixel values
  • Reduce resolution for higher frame rates
  • Reduce noise in low-light conditions
If true, use to configure binning factors. ### BlackLevelBounds ```csharp public (double Min, double Max) BlackLevelBounds { get; set; } ``` #### Property Value Parameters: - (( double Min , double Max )): ### CameraName Gets or sets the camera name. This is typically the device ID or a user-friendly name. ```csharp public string CameraName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property is populated by and may be used for display purposes. ### CurrentAcquisitionMode ```csharp public GenICamAcquisitionMode CurrentAcquisitionMode { get; set; } ``` #### Property Value Parameters: - (GenICamAcquisitionMode): ### CurrentBinning ```csharp public (int Horizontal, int Vertical) CurrentBinning { get; set; } ``` #### Property Value Parameters: - (( int Horizontal , int Vertical )): ### CurrentBlackLevel ```csharp public double CurrentBlackLevel { get; set; } ``` #### Property Value Parameters: - (double): ### CurrentExposureTime ```csharp public double CurrentExposureTime { get; set; } ``` #### Property Value Parameters: - (double): ### CurrentFrameRate ```csharp public VideoFrameRate CurrentFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### CurrentGain ```csharp public double CurrentGain { get; set; } ``` #### Property Value Parameters: - (double): ### CurrentRegion ```csharp public (int X, int Y, int Width, int Height) CurrentRegion { get; set; } ``` #### Property Value Parameters: - (( int X , int Y , int Width , int Height )): ### CurrentTriggerSource ```csharp public string CurrentTriggerSource { get; set; } ``` #### Property Value Parameters: - (string): ### DeviceId Gets or sets the device identifier used for camera connection. ```csharp public string DeviceId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Format depends on the camera interface:
  • GigE Vision: IP address or MAC address
  • USB3 Vision: Device path or unique identifier
  • Camera Link: Device name
### ExposureTimeAvailable ```csharp public bool ExposureTimeAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### ExposureTimeBounds ```csharp public (double Min, double Max) ExposureTimeBounds { get; set; } ``` #### Property Value Parameters: - (( double Min , double Max )): ### FrameRateAvailable ```csharp public bool FrameRateAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameRateBounds ```csharp public (double Min, double Max) FrameRateBounds { get; set; } ``` #### Property Value Parameters: - (( double Min , double Max )): ### GainAvailable ```csharp public bool GainAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### GainBounds ```csharp public (double Min, double Max) GainBounds { get; set; } ``` #### Property Value Parameters: - (( double Min , double Max )): ### Handle Gets the native camera handle ```csharp public nint Handle { get; } ``` #### Property Value Parameters: - (nint): ### HasAdvancedFeatures Gets whether the camera has advanced features (more than 30 total features). Call to populate this property. ```csharp public bool HasAdvancedFeatures { get; set; } ``` #### Property Value Parameters: - (bool): ### HeightBounds Gets or sets the valid range and increment for image height settings. ```csharp public (int Min, int Max, int Increment) HeightBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks

Defines the constraints for ROI height:

  • Min: Minimum allowed height in pixels
  • Max: Maximum allowed height in pixels (typically sensor height)
  • Increment: Height must be a multiple of this value (often 1 or 2)
Use these bounds when calling . ### IsBlackLevelAutoAvailable ```csharp public bool IsBlackLevelAutoAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsBlackLevelAvailable ```csharp public bool IsBlackLevelAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsChunkDataAvailable ```csharp public bool IsChunkDataAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsComponentControlAvailable ```csharp public bool IsComponentControlAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsConnected Gets whether the camera is connected and available ```csharp public bool IsConnected { get; } ``` #### Property Value Parameters: - (bool): ### IsExposureAutoAvailable ```csharp public bool IsExposureAutoAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsFrameRateControlEnabled ```csharp public bool IsFrameRateControlEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### IsGainAutoAvailable ```csharp public bool IsGainAutoAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsRegionOffsetAvailable ```csharp public bool IsRegionOffsetAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### IsStreaming Gets whether the camera is currently streaming frames ```csharp public bool IsStreaming { get; } ``` #### Property Value Parameters: - (bool): ### IsTriggerAvailable ```csharp public bool IsTriggerAvailable { get; set; } ``` #### Property Value Parameters: - (bool): ### LastConnected ```csharp public DateTime LastConnected { get; set; } ``` #### Property Value Parameters: - (DateTime): ### LastUpdated ```csharp public DateTime LastUpdated { get; set; } ``` #### Property Value Parameters: - (DateTime): ### ManufacturerInfo ```csharp public string ManufacturerInfo { get; set; } ``` #### Property Value Parameters: - (string): ### ModelName Gets or sets the camera model name (e.g., "acA1920-40gm", "Blackfly S"). ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property is populated from the camera's GenICam DeviceModelName feature by . ### PhysicalId ```csharp public string PhysicalId { get; set; } ``` #### Property Value Parameters: - (string): ### PixelFormat Gets or sets the current pixel format name (e.g., "Mono8", "BayerRG8", "RGB8Packed"). ```csharp public string PixelFormat { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property reflects the currently selected pixel format. Use to change the format, and to see supported formats. ### Protocol ```csharp public string Protocol { get; set; } ``` #### Property Value Parameters: - (string): ### SensorSize Gets or sets the maximum sensor size in pixels (full resolution). ```csharp public (int Width, int Height) SensorSize { get; set; } ``` #### Property Value Parameters: - (( int Width , int Height )): #### Remarks This represents the physical sensor dimensions and is the maximum possible resolution. Actual image size may be smaller due to ROI settings. Populated by . ### SerialNumber Gets or sets the camera serial number for unique identification. ```csharp public string SerialNumber { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property is populated from the camera's GenICam DeviceSerialNumber feature by . Serial numbers are unique per device and useful for identifying specific cameras in multi-camera setups. ### SoftwareTriggerSupported ```csharp public bool SoftwareTriggerSupported { get; set; } ``` #### Property Value Parameters: - (bool): ### StreamBufferCount ```csharp public int StreamBufferCount { get; set; } ``` #### Property Value Parameters: - (int): ### StreamDiagnostics ```csharp public AravisStreamDiagnostics StreamDiagnostics { get; set; } ``` #### Property Value Parameters: - (AravisStreamDiagnostics): ### StreamHandle Gets the current stream handle (if streaming is active) ```csharp public nint StreamHandle { get; } ``` #### Property Value Parameters: - (nint): ### URL ```csharp public string URL { get; set; } ``` #### Property Value Parameters: - (string): ### VendorName Gets or sets the camera vendor/manufacturer name (e.g., "Basler", "FLIR", "Allied Vision"). ```csharp public string VendorName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property is populated from the camera's GenICam DeviceVendorName feature by . ### WidthBounds Gets or sets the valid range and increment for image width settings. ```csharp public (int Min, int Max, int Increment) WidthBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks

Defines the constraints for ROI width:

  • Min: Minimum allowed width in pixels
  • Max: Maximum allowed width in pixels (typically sensor width)
  • Increment: Width must be a multiple of this value (often 1, 2, 4, or 8)
Use these bounds when calling . ### XBinningBounds Gets or sets the valid range and increment for horizontal binning factors. ```csharp public (int Min, int Max, int Increment) XBinningBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks Only relevant if is true. Defines constraints for horizontal binning:
  • Min: Minimum binning factor (usually 1 = no binning)
  • Max: Maximum binning factor (e.g., 4 or 8)
  • Increment: Allowed step size between factors (usually 1)
### XOffsetBounds Gets or sets the valid range and increment for X offset (horizontal position) of the ROI. ```csharp public (int Min, int Max, int Increment) XOffsetBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks

Defines the constraints for ROI X position:

  • Min: Minimum X offset (usually 0)
  • Max: Maximum X offset (sensor width - ROI width)
  • Increment: X offset must be a multiple of this value
Use these bounds when calling . ### YBinningBounds Gets or sets the valid range and increment for vertical binning factors. ```csharp public (int Min, int Max, int Increment) YBinningBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks Only relevant if is true. Defines constraints for vertical binning:
  • Min: Minimum binning factor (usually 1 = no binning)
  • Max: Maximum binning factor (e.g., 4 or 8)
  • Increment: Allowed step size between factors (usually 1)
### YOffsetBounds Gets or sets the valid range and increment for Y offset (vertical position) of the ROI. ```csharp public (int Min, int Max, int Increment) YOffsetBounds { get; set; } ``` #### Property Value Parameters: - (( int Min , int Max , int Increment )): #### Remarks

Defines the constraints for ROI Y position:

  • Min: Minimum Y offset (usually 0)
  • Max: Maximum Y offset (sensor height - ROI height)
  • Increment: Y offset must be a multiple of this value
Use these bounds when calling . ## Methods ### AbortAcquisition() Aborts acquisition ```csharp public void AbortAcquisition() ``` ### AreChunksAvailable() Checks if chunk data features are available ```csharp public bool AreChunksAvailable() ``` #### Returns Parameters: - (bool): True if chunk data is available #### Remarks

Chunk data allows additional metadata to be embedded with each frame, such as:

  • Timestamp information
  • Frame counter
  • Exposure time used for the frame
  • Gain settings
  • Trigger information
#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### CanReinitialize() Checks if the camera can be reinitialized ```csharp public bool CanReinitialize() ``` #### Returns Parameters: - (bool): True if the camera has the necessary information for reinitialization ### CaptureFrame(int) Captures a single frame in one-shot mode with specified timeout. ```csharp public GenICamFrameData CaptureFrame(int timeoutMs = 5000) ``` #### Parameters Parameters: - timeoutMs (int): Timeout in milliseconds to wait for frame capture (default: 5000). Use larger values for slow cameras or longer exposures. #### Returns Parameters: - (GenICamFrameData): Frame data containing image information and pixel data, or null if capture failed or timed out. #### Examples
// Capture a single frame with default timeout
var frameData = camera.CaptureFrame();
if (frameData != null)
{
    Console.WriteLine($"Captured frame: {frameData.Width}x{frameData.Height}");
    Console.WriteLine($"Pixel format: {frameData.PixelFormat}");
    Console.WriteLine($"Data size: {frameData.Size} bytes");

    // Process the frame data
    ProcessImageData(frameData.Data);
}
else
{
    Console.WriteLine("Frame capture failed or timed out");
}

// Capture with longer timeout for slow camera
var slowFrameData = camera.CaptureFrame(15000); // 15 second timeout
#### Remarks

This method performs a synchronous single frame capture:

  1. Ensures camera is connected (connects if necessary)
  2. Creates stream and buffers if they don't exist
  3. Sets acquisition mode to single frame
  4. Starts acquisition and waits for frame
  5. Extracts frame data and stops acquisition

Timeout Considerations: The timeout should be longer than the exposure time plus any camera processing delays. For very long exposures (>1 second), increase the timeout accordingly.

Performance: This method is suitable for infrequent captures. For continuous imaging, use instead for better performance.

Thread Safety: This method blocks the calling thread until the frame is captured or timeout occurs.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. ### Connect() Establishes connection to the camera hardware and initializes the camera for operation. ```csharp public bool Connect() ``` #### Returns Parameters: - (bool): True if connection was successful, false otherwise. #### Examples
var camera = new GenICamCamera("192.168.1.100");
if (camera.Connect())
{
    camera.ReadInfo();
    Console.WriteLine($"Connected to: {camera.ModelName}");
}
else
{
    Console.WriteLine("Failed to connect to camera");
}
#### Remarks

This method performs the following operations:

  1. Validates that the camera instance is not disposed
  2. Checks if already connected (returns true if so)
  3. Attempts to connect using the device ID or handle provided in constructor
  4. Updates connection timestamps on success

Note: After successful connection, call to populate camera capabilities.

#### Exceptions Parameters: - (AravisException): Thrown when camera connection fails due to hardware or network issues. - (ObjectDisposedException): Thrown if the camera instance has been disposed. ### CreateStream(int) Creates and configures a stream for frame acquisition ```csharp public bool CreateStream(int bufferCount = 10) ``` #### Parameters Parameters: - bufferCount (int): Number of buffers to allocate (default: 10) #### Returns Parameters: - (bool): True if stream was created successfully ### DestroyStream() Destroys the current stream and releases all resources ```csharp public void DestroyStream() ``` ### Disconnect() Disconnects from the camera hardware without disposing the object ```csharp public bool Disconnect() ``` #### Returns Parameters: - (bool): True if disconnection was successful ### Dispose() Disposes the camera resources ```csharp public void Dispose() ``` ### Dispose(bool) Disposes the camera resources ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Whether disposing from Dispose() method ### ExecuteCommand(string) Executes a command feature on the camera ```csharp public bool ExecuteCommand(string commandName) ``` #### Parameters Parameters: - commandName (string): Name of the command feature to execute #### Returns Parameters: - (bool): True if command was executed successfully #### Examples
// Execute software trigger command
if (camera.IsFeatureAvailable("TriggerSoftware"))
{
    bool success = camera.ExecuteCommand("TriggerSoftware");
    Console.WriteLine($"Software trigger: {(success ? "Success" : "Failed")}");
}

// Load user set
if (camera.IsFeatureAvailable("UserSetLoad"))
{
    camera.SetStringFeature("UserSetSelector", "UserSet1");
    camera.ExecuteCommand("UserSetLoad");
}
#### Remarks

This method can be used to execute GenICam command features such as:

  • "TriggerSoftware" - Send software trigger
  • "AcquisitionStart" - Start acquisition
  • "AcquisitionStop" - Stop acquisition
  • "DeviceReset" - Reset device
  • "UserSetLoad" - Load user settings
  • "UserSetSave" - Save user settings

Use to check if a command is available before executing.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the command execution fails. ### ~GenICamCamera() Finalizer ```csharp protected ~GenICamCamera() ``` ### GetAcquisitionMode() Gets the current acquisition mode ```csharp public GenICamAcquisitionMode GetAcquisitionMode() ``` #### Returns Parameters: - (GenICamAcquisitionMode): Current acquisition mode ### GetAvailablePixelFormatDisplayNames() Gets the list of available pixel formats with display names ```csharp public string[] GetAvailablePixelFormatDisplayNames() ``` #### Returns Parameters: - (string [ ]): Array of pixel format display names ### GetAvailablePixelFormats() Gets the list of available pixel formats as strings ```csharp public string[] GetAvailablePixelFormats() ``` #### Returns Parameters: - (string [ ]): Array of available pixel format names ### GetBinning() Gets the current binning settings ```csharp public (int Horizontal, int Vertical) GetBinning() ``` #### Returns Parameters: - (( int Horizontal , int Vertical )): Binning as horizontal and vertical factors ### GetBlackLevel() Gets the current black level value ```csharp public double GetBlackLevel() ``` #### Returns Parameters: - (double): Current black level #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetBlackLevelAuto() Gets the current black level auto mode ```csharp public GenICamAuto GetBlackLevelAuto() ``` #### Returns Parameters: - (GenICamAuto): Current black level auto mode #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetBlackLevelBounds() Gets the black level bounds (minimum and maximum values) ```csharp public (double Min, double Max) GetBlackLevelBounds() ``` #### Returns Parameters: - (( double Min , double Max )): Black level bounds as min and max #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetBooleanFeature(string) Gets a boolean feature value ```csharp public bool GetBooleanFeature(string featureName) ``` #### Parameters Parameters: - featureName (string): Feature name #### Returns Parameters: - (bool): Feature value ### GetCapabilitySummary() Gets a detailed summary of camera capabilities ```csharp public string GetCapabilitySummary() ``` #### Returns Parameters: - (string): Detailed capability summary ### GetDeviceId() Gets the device ID from camera ```csharp public string GetDeviceId() ``` #### Returns Parameters: - (string): ### GetExposureAuto() Gets the current exposure auto mode ```csharp public GenICamAuto GetExposureAuto() ``` #### Returns Parameters: - (GenICamAuto): Current exposure auto mode #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetExposureTime() Gets the exposure time in microseconds ```csharp public double GetExposureTime() ``` #### Returns Parameters: - (double): Exposure time in microseconds ### GetExposureTimeBounds() Gets the exposure time bounds ```csharp public (double Min, double Max) GetExposureTimeBounds() ``` #### Returns Parameters: - (( double Min , double Max )): Exposure time bounds as min and max in microseconds ### GetFloatFeature(string) Gets a float feature value ```csharp public double GetFloatFeature(string featureName) ``` #### Parameters Parameters: - featureName (string): Feature name #### Returns Parameters: - (double): Feature value ### GetFrameCount() Gets the current frame count setting ```csharp public long GetFrameCount() ``` #### Returns Parameters: - (long): Current frame count #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetFrameCountBounds() Gets the frame count bounds (minimum and maximum values) ```csharp public (long Min, long Max) GetFrameCountBounds() ``` #### Returns Parameters: - (( long Min , long Max )): Frame count bounds as min and max #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetFrameRate() Gets the frame rate ```csharp public VideoFrameRate GetFrameRate() ``` #### Returns Parameters: - (VideoFrameRate): Frame rate in frames per second ### GetFrameRateBounds() Gets the frame rate bounds ```csharp public (double Min, double Max) GetFrameRateBounds() ``` #### Returns Parameters: - (( double Min , double Max )): Frame rate bounds as min and max ### GetFrameRateControlEnabled() Checks if frame rate control is enabled ```csharp public bool GetFrameRateControlEnabled() ``` #### Returns Parameters: - (bool): True if frame rate control is enabled ### GetGain() Gets the gain value ```csharp public double GetGain() ``` #### Returns Parameters: - (double): Gain value ### GetGainAuto() Gets the current gain auto mode ```csharp public GenICamAuto GetGainAuto() ``` #### Returns Parameters: - (GenICamAuto): Current gain auto mode #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetGainBounds() Gets the gain bounds ```csharp public (double Min, double Max) GetGainBounds() ``` #### Returns Parameters: - (( double Min , double Max )): Gain bounds as min and max ### GetHeightBounds() Gets the height bounds (min and max values) ```csharp public (int Min, int Max) GetHeightBounds() ``` #### Returns Parameters: - (( int Min , int Max )): Height bounds as min and max ### GetHeightIncrement() Gets the height increment ```csharp public int GetHeightIncrement() ``` #### Returns Parameters: - (int): Height increment value ### GetIntegerFeature(string) Gets an integer feature value ```csharp public long GetIntegerFeature(string featureName) ``` #### Parameters Parameters: - featureName (string): Feature name #### Returns Parameters: - (long): Feature value ### GetModelName() Gets the model name from camera ```csharp public string GetModelName() ``` #### Returns Parameters: - (string): ### GetPayload() Gets the payload size directly from the camera ```csharp public uint GetPayload() ``` #### Returns Parameters: - (uint): Payload size in bytes #### Remarks

This method provides direct access to the camera's payload size, which represents the size in bytes of image data that will be transmitted per frame.

This is more reliable than calculating payload size from image dimensions as it accounts for any camera-specific padding or formatting.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### GetPixelFormat() Gets the current pixel format ```csharp public int GetPixelFormat() ``` #### Returns Parameters: - (int): Current pixel format as integer ### GetPixelFormatString() Gets the current pixel format as a string ```csharp public string GetPixelFormatString() ``` #### Returns Parameters: - (string): Current pixel format name ### GetRegion() Gets the current region of interest (ROI) ```csharp public (int X, int Y, int Width, int Height) GetRegion() ``` #### Returns Parameters: - (( int X , int Y , int Width , int Height )): ROI as x, y, width, height ### GetSensorSize() Gets the sensor size (maximum resolution) ```csharp public (int Width, int Height) GetSensorSize() ``` #### Returns Parameters: - (( int Width , int Height )): Sensor size as width and height ### GetSerialNumber() Gets the serial number from camera ```csharp public string GetSerialNumber() ``` #### Returns Parameters: - (string): ### GetStreamDiagnostics() Gets comprehensive diagnostic information about the current streaming state and performance. ```csharp public AravisStreamDiagnostics GetStreamDiagnostics() ``` #### Returns Parameters: - (AravisStreamDiagnostics): Diagnostic information including buffer counts, statistics, and error states. #### Examples
// Monitor streaming performance
var diagnostics = camera.GetStreamDiagnostics();

Console.WriteLine($"Streaming Active: {diagnostics.IsStreaming}");
Console.WriteLine($"Completed Frames: {diagnostics.CompletedBuffers}");
Console.WriteLine($"Failed Frames: {diagnostics.FailedBuffers}");
Console.WriteLine($"Underruns: {diagnostics.UnderrunBuffers}");
Console.WriteLine($"Buffer Counts - Input: {diagnostics.InputBuffers}, Output: {diagnostics.OutputBuffers}");

// Check for problems
if (diagnostics.FailedBuffers > diagnostics.CompletedBuffers * 0.1)
{
    Console.WriteLine("Warning: High frame failure rate detected");
}

if (!string.IsNullOrEmpty(diagnostics.ErrorMessage))
{
    Console.WriteLine($"Stream Error: {diagnostics.ErrorMessage}");
}
#### Remarks

This method provides detailed information about the streaming subsystem:

  • Buffer Information: Input, output, and filling buffer counts
  • Statistics: Completed frames, failed frames, and underrun counts
  • State Information: Whether streaming is active and stream handle validity
  • Error Information: Any error messages from the streaming subsystem

Troubleshooting Guide:

  • High Failed Buffers: Indicates camera producing frames faster than processing - reduce frame rate or increase buffer count
  • High Underruns: Suggests insufficient buffers or slow processing - increase buffer count or optimize frame handling
  • Zero Completed Buffers: Camera may not be producing frames - check exposure settings and triggers
  • No Input Buffers: Stream buffer creation failed - check memory availability

Performance Note: This method queries the stream in real-time, so it reflects current state.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. ### GetStringFeature(string) Gets a string feature value ```csharp public string GetStringFeature(string featureName) ``` #### Parameters Parameters: - featureName (string): Feature name #### Returns Parameters: - (string): Feature value ### GetVendorName() Gets the vendor name from camera ```csharp public string GetVendorName() ``` #### Returns Parameters: - (string): ### GetWidthBounds() Gets the width bounds (min and max values) ```csharp public (int Min, int Max) GetWidthBounds() ``` #### Returns Parameters: - (( int Min , int Max )): Width bounds as min and max ### GetWidthIncrement() Gets the width increment ```csharp public int GetWidthIncrement() ``` #### Returns Parameters: - (int): Width increment value ### GetXBinningBounds() Gets the horizontal binning bounds ```csharp public (int Min, int Max) GetXBinningBounds() ``` #### Returns Parameters: - (( int Min , int Max )): Horizontal binning bounds as min and max ### GetXBinningIncrement() Gets the X binning increment ```csharp public int GetXBinningIncrement() ``` #### Returns Parameters: - (int): X binning increment value ### GetXOffsetBounds() Gets the X offset bounds ```csharp public (int Min, int Max) GetXOffsetBounds() ``` #### Returns Parameters: - (( int Min , int Max )): X offset bounds as min and max ### GetXOffsetIncrement() Gets the X offset increment ```csharp public int GetXOffsetIncrement() ``` #### Returns Parameters: - (int): X offset increment value ### GetYBinningBounds() Gets the vertical binning bounds ```csharp public (int Min, int Max) GetYBinningBounds() ``` #### Returns Parameters: - (( int Min , int Max )): Vertical binning bounds as min and max ### GetYBinningIncrement() Gets the Y binning increment ```csharp public int GetYBinningIncrement() ``` #### Returns Parameters: - (int): Y binning increment value ### GetYOffsetBounds() Gets the Y offset bounds ```csharp public (int Min, int Max) GetYOffsetBounds() ``` #### Returns Parameters: - (( int Min , int Max )): Y offset bounds as min and max ### GetYOffsetIncrement() Gets the Y offset increment ```csharp public int GetYOffsetIncrement() ``` #### Returns Parameters: - (int): Y offset increment value ### IsBinningAvailable() Checks if binning is available ```csharp public bool IsBinningAvailable() ``` #### Returns Parameters: - (bool): True if binning is supported ### IsComponentAvailable() Checks if component control is available ```csharp public bool IsComponentAvailable() ``` #### Returns Parameters: - (bool): True if component control is available #### Remarks

Component control allows selection and configuration of different sensor components or processing pipelines, commonly used in multi-tap or color cameras.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### IsExposureTimeAvailable() Checks if exposure time control is available ```csharp public bool IsExposureTimeAvailable() ``` #### Returns Parameters: - (bool): True if exposure time control is available #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### IsFeatureAvailable(string) Checks if a feature is available ```csharp public bool IsFeatureAvailable(string featureName) ``` #### Parameters Parameters: - featureName (string): Feature name #### Returns Parameters: - (bool): True if feature is available ### IsRegionOffsetAvailableCheck() Checks if region offset is available ```csharp public bool IsRegionOffsetAvailableCheck() ``` #### Returns Parameters: - (bool): True if region offset is available ### IsSoftwareTriggerSupported() Checks if software trigger is supported by the camera ```csharp public bool IsSoftwareTriggerSupported() ``` #### Returns Parameters: - (bool): True if software trigger is supported #### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails. ### ReadAvailableFeatures() Reads and populates all available GenICam features organized by data type. This method enumerates common GenICam features and categorizes them by type. ```csharp public void ReadAvailableFeatures() ``` #### Examples
// Connect and read basic info
camera.Connect();
camera.ReadInfo();

// Optionally read detailed feature information
camera.ReadAvailableFeatures();

// Check capabilities
Console.WriteLine($"Advanced camera: {camera.HasAdvancedFeatures}");
Console.WriteLine($"Available features: {camera.AvailableStringFeatures.Length + camera.AvailableIntegerFeatures.Length + camera.AvailableFloatFeatures.Length + camera.AvailableBooleanFeatures.Length}");

// Check for specific feature types
bool hasCounters = camera.AvailableIntegerFeatures.Contains("CounterValue");
bool hasUserSets = camera.AvailableStringFeatures.Contains("UserSetSelector");
#### Remarks

This method populates the following properties:

  • - Whether camera has advanced capabilities
  • - String-type features (enums, device info, etc.)
  • - Integer-type features (dimensions, counts, etc.)
  • - Float-type features (rates, temperatures, etc.)
  • - Boolean-type features (enable flags, status, etc.)

Performance Note: This method can take several seconds to complete as it tests many potential features. It's recommended to call this only when feature discovery is needed.

Feature Categories Tested:

  • Device Information (vendor, model, serial number, etc.)
  • Image Format Control (dimensions, pixel formats, binning, etc.)
  • Acquisition Control (exposure, triggers, frame rate, etc.)
  • Analog Control (gain, black level, white balance, etc.)
  • Digital I/O Control (line controls, triggering, etc.)
  • Transport Layer (GigE/USB3 specific features)
  • Advanced Features (counters, timers, chunk data, user sets)
#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. ### ReadInfo() Reads and populates all camera information properties from the connected camera device. ```csharp public void ReadInfo() ``` #### Examples
if (camera.Connect())
{
    camera.ReadInfo();

    Console.WriteLine($"Camera: {camera.VendorName} {camera.ModelName}");
    Console.WriteLine($"Sensor Size: {camera.SensorSize.Width}x{camera.SensorSize.Height}");
    Console.WriteLine($"Pixel Formats: {string.Join(", ", camera.AvailablePixelFormats)}");
    Console.WriteLine($"Frame Rate Range: {camera.FrameRateBounds.Min}-{camera.FrameRateBounds.Max} FPS");
}
#### Remarks

This method queries the camera for comprehensive information including:

  • Basic device information (vendor, model, serial number)
  • Sensor capabilities (size, resolution bounds)
  • Pixel format support and current settings
  • Exposure and gain capabilities and ranges
  • Frame rate capabilities
  • Binning and ROI capabilities
  • Protocol type (GigE, USB3, etc.)
  • Current camera settings

Performance Note: This method involves multiple queries to the camera and may take several hundred milliseconds to complete, especially over network connections.

Usage: Call this method after and before attempting to configure camera settings or start streaming.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera is not connected or communication fails. ### RefreshBoundsInfo() Reads and updates all bounds information from the camera ```csharp public void RefreshBoundsInfo() ``` ### ReinitializeCamera() Reinitializes the camera connection using the original device parameters. This method can be used to reconnect a camera that was disconnected or disposed. ```csharp public bool ReinitializeCamera() ``` #### Returns Parameters: - (bool): True if reinitialization was successful, false otherwise. #### Examples
// Handle camera disconnection and recovery
try
{
    camera.StartStreaming();
}
catch (AravisException ex)
{
    Console.WriteLine($"Camera error: {ex.Message}");

    // Attempt to reinitialize
    if (camera.ReinitializeCamera())
    {
        Console.WriteLine("Camera reinitialized successfully");
        camera.ReadInfo(); // Refresh capabilities
        camera.StartStreaming(); // Resume streaming
    }
    else
    {
        Console.WriteLine("Failed to reinitialize camera");
    }
}
#### Remarks

This method performs a complete reinitialization:

  1. Stops any active streaming operations
  2. Cleans up existing camera and stream resources
  3. Resets the disposed state to allow normal operation
  4. Recreates the camera connection using original parameters

Usage Scenarios:

  • Camera was disconnected due to network issues (GigE cameras)
  • USB camera was unplugged and reconnected
  • Camera was manually disconnected using
  • Camera object was disposed but you want to reuse it
  • Recovery from communication errors

Important: After successful reinitialization, you should call to refresh camera capabilities, as they may have changed.

Alternative: For temporary disconnections without disposal, consider using followed by instead.

### SetAcquisitionMode(GenICamAcquisitionMode) Sets the acquisition mode ```csharp public void SetAcquisitionMode(GenICamAcquisitionMode mode) ``` #### Parameters Parameters: - mode (GenICamAcquisitionMode): Acquisition mode ### SetBinning(int, int) Sets the binning ```csharp public void SetBinning(int horizontal, int vertical) ``` #### Parameters Parameters: - horizontal (int): Horizontal binning factor - vertical (int): Vertical binning factor ### SetBlackLevel(double) Sets the black level value ```csharp public void SetBlackLevel(double blackLevel) ``` #### Parameters Parameters: - blackLevel (double): Black level value #### Remarks

Black level represents the minimum signal level that corresponds to black in the image. Adjusting black level can help improve image contrast and correct for sensor dark current.

Use to determine the valid range for your camera.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the black level is invalid or the camera rejects the setting. ### SetBlackLevelAuto(GenICamAuto) Sets the black level auto mode ```csharp public void SetBlackLevelAuto(GenICamAuto autoMode) ``` #### Parameters Parameters: - autoMode (GenICamAuto): Auto mode (Off = 0, Once = 1, Continuous = 2) #### Remarks

Auto black level modes:

  • Off (0): Manual black level control - use SetBlackLevel() to set specific values
  • Once (1): Single auto-adjustment, then returns to manual mode
  • Continuous (2): Continuous automatic black level adjustment

Availability: Check before using this method.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the auto mode is invalid or the camera rejects the setting. ### SetBooleanFeature(string, bool) Sets a boolean feature value ```csharp public void SetBooleanFeature(string featureName, bool value) ``` #### Parameters Parameters: - featureName (string): Feature name - value (bool): Feature value ### SetExposureAuto(GenICamAuto) Sets the exposure auto mode ```csharp public void SetExposureAuto(GenICamAuto autoMode) ``` #### Parameters Parameters: - autoMode (GenICamAuto): Auto mode (Off = 0, Once = 1, Continuous = 2) #### Examples
// Enable continuous auto exposure
if (camera.IsExposureAutoAvailable)
{
    camera.SetExposureAuto(GenICamAuto.Continuous);
}

// Disable auto exposure and set manual value
camera.SetExposureAuto(GenICamAuto.Off);
camera.SetExposureTime(10000); // 10ms
#### Remarks

Auto exposure modes:

  • Off (0): Manual exposure control - use SetExposureTime() to set specific values
  • Once (1): Single auto-exposure adjustment, then returns to manual mode
  • Continuous (2): Continuous automatic exposure adjustment

Availability: Check before using this method.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the auto mode is invalid or the camera rejects the setting. ### SetExposureTime(double) Sets the exposure time in microseconds. ```csharp public void SetExposureTime(double exposureTimeUs) ``` #### Parameters Parameters: - exposureTimeUs (double): Exposure time in microseconds (must be within ) #### Examples
// Set exposure to 10 milliseconds
camera.SetExposureTime(10000);

// Set exposure within valid bounds
camera.ReadInfo();
double minExposure = camera.ExposureTimeBounds.Min;
double maxExposure = camera.ExposureTimeBounds.Max;
double targetExposure = Math.Min(maxExposure, Math.Max(minExposure, 5000));
camera.SetExposureTime(targetExposure);
#### Remarks

The exposure time controls how long the sensor is exposed to light for each frame. Longer exposure times result in brighter images but may cause motion blur.

Valid Range: Use to determine the valid range for your camera.

Units: Microseconds (µs). Common values:

  • 100 µs (0.1 ms) - Very fast, for high-speed imaging
  • 1,000 µs (1 ms) - Fast, typical for motion capture
  • 10,000 µs (10 ms) - Medium, general purpose
  • 100,000 µs (100 ms) - Long, for low-light conditions

Frame Rate Impact: Longer exposure times may limit the maximum achievable frame rate.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the exposure time is invalid or the camera rejects the setting. ### SetFloatFeature(string, double) Sets a float feature value ```csharp public void SetFloatFeature(string featureName, double value) ``` #### Parameters Parameters: - featureName (string): Feature name - value (double): Feature value ### SetFrameCount(long) Sets the number of frames to capture in multi-frame acquisition mode ```csharp public void SetFrameCount(long frameCount) ``` #### Parameters Parameters: - frameCount (long): Number of frames to capture #### Remarks

This setting is typically used with acquisition mode to capture a specific number of frames before stopping automatically.

Use to determine the valid range for your camera.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the frame count is invalid or the camera rejects the setting. ### SetFrameRate(VideoFrameRate) Sets the frame rate ```csharp public void SetFrameRate(VideoFrameRate frameRate) ``` #### Parameters Parameters: - frameRate (VideoFrameRate): Frame rate in frames per second ### SetGain(double) Sets the gain value ```csharp public void SetGain(double gain) ``` #### Parameters Parameters: - gain (double): Gain value ### SetGainAuto(GenICamAuto) Sets the gain auto mode ```csharp public void SetGainAuto(GenICamAuto autoMode) ``` #### Parameters Parameters: - autoMode (GenICamAuto): Auto mode (Off = 0, Once = 1, Continuous = 2) #### Examples
// Enable continuous auto gain
if (camera.IsGainAutoAvailable)
{
    camera.SetGainAuto(GenICamAuto.Continuous);
}

// Disable auto gain and set manual value
camera.SetGainAuto(GenICamAuto.Off);
camera.SetGain(0.0); // Minimum gain
#### Remarks

Auto gain modes:

  • Off (0): Manual gain control - use SetGain() to set specific values
  • Once (1): Single auto-gain adjustment, then returns to manual mode
  • Continuous (2): Continuous automatic gain adjustment

Availability: Check before using this method.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the auto mode is invalid or the camera rejects the setting. ### SetIntegerFeature(string, long) Sets an integer feature value ```csharp public void SetIntegerFeature(string featureName, long value) ``` #### Parameters Parameters: - featureName (string): Feature name - value (long): Feature value ### SetPixelFormat(int) Sets the pixel format ```csharp public void SetPixelFormat(int format) ``` #### Parameters Parameters: - format (int): Pixel format as integer ### SetPixelFormat(string) Sets the pixel format from string ```csharp public void SetPixelFormat(string format) ``` #### Parameters Parameters: - format (string): Pixel format name ### SetRegion(int, int, int, int) Sets the region of interest (ROI) for image acquisition. ```csharp public void SetRegion(int x, int y, int width, int height) ``` #### Parameters Parameters: - x (int): X offset in pixels from the left edge of the sensor (must be within ) - y (int): Y offset in pixels from the top edge of the sensor (must be within ) - width (int): Width in pixels (must be within and x + width ≤ sensor width) - height (int): Height in pixels (must be within and y + height ≤ sensor height) #### Examples
// Set ROI to center 640x480 region
camera.ReadInfo();
int centerX = (camera.SensorSize.Width - 640) / 2;
int centerY = (camera.SensorSize.Height - 480) / 2;
camera.SetRegion(centerX, centerY, 640, 480);

// Verify the actual ROI set
var actualROI = camera.GetRegion();
Console.WriteLine($"Actual ROI: {actualROI.X}, {actualROI.Y}, {actualROI.Width}x{actualROI.Height}");
#### Remarks

The ROI must satisfy the following constraints:

  • x, y, width, height must be positive
  • x + width must not exceed the sensor width
  • y + height must not exceed the sensor height
  • Values must respect the camera's increment requirements

Performance Impact: Smaller ROIs typically allow higher frame rates due to reduced data transfer.

Note: Some cameras may adjust the ROI to the nearest valid values based on their constraints.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the ROI parameters are invalid or the camera rejects the settings. ### SetStringFeature(string, string) Sets a string feature value ```csharp public void SetStringFeature(string featureName, string value) ``` #### Parameters Parameters: - featureName (string): Feature name - value (string): Feature value ### SoftwareTrigger() Sends a software trigger command to the camera ```csharp public void SoftwareTrigger() ``` #### Examples
// Configure for software trigger
if (camera.IsSoftwareTriggerSupported())
{
    camera.SetStringFeature("TriggerMode", "On");
    camera.SetStringFeature("TriggerSource", "Software");

    // Start acquisition
    camera.StartAcquisition();

    // Trigger a frame
    camera.SoftwareTrigger();
}
#### Remarks

This method sends a software trigger signal to the camera, which can be used to:

  • Capture a single frame when in software trigger mode
  • Start acquisition when trigger mode is enabled
  • Synchronize capture timing in multi-camera setups

Prerequisites: The camera must be configured for software triggering and must return true.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if the camera communication fails or software trigger is not supported. ### StartAcquisition() Starts acquisition ```csharp public void StartAcquisition() ``` ### StartStreaming() Starts streaming frames in continuous mode with automatic buffer management. ```csharp public bool StartStreaming() ``` #### Returns Parameters: - (bool): True if streaming started successfully, false otherwise. #### Examples
// Set up frame handling
camera.FrameReceived += (sender, e) => {
    var frame = e.FrameData;
    Console.WriteLine($"Received frame: {frame.Width}x{frame.Height}");
    // Process frame data...
};

camera.FrameError += (sender, e) => {
    Console.WriteLine($"Frame error: {e.ErrorMessage}");
};

// Start streaming
if (camera.StartStreaming())
{
    Console.WriteLine("Streaming started successfully");
    // Let it stream for a while...
    Thread.Sleep(5000);
    camera.StopStreaming();
}
#### Remarks

This method performs the following operations:

  1. Ensures camera is connected (connects if necessary)
  2. Creates stream and buffers if they don't exist
  3. Sets acquisition mode to continuous
  4. Starts camera acquisition
  5. Begins frame polling timer
  6. Fires event on success

Event Handling: Subscribe to before calling this method to receive frame data. Frames are delivered asynchronously via events.

Buffer Management: Buffers are created and managed automatically. The default buffer count is 10, which should be sufficient for most applications.

Thread Safety: This method is not thread-safe with respect to other camera operations.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the camera instance has been disposed. - (AravisException): Thrown if streaming cannot be started due to camera or configuration issues. ### StopAcquisition() Stops acquisition ```csharp public void StopAcquisition() ``` ### StopStreaming() Stops streaming frames ```csharp public bool StopStreaming() ``` #### Returns Parameters: - (bool): True if streaming stopped successfully ### ToString() Returns a string representation of the camera ```csharp public override string ToString() ``` #### Returns Parameters: - (string): String representation ### FrameError Event fired when a frame acquisition error occurs during streaming. ```csharp public event EventHandler FrameError ``` #### Event Type Parameters: - (EventHandler < GenICamFrameErrorEventArgs >): #### Remarks

Common causes include:

  • Buffer underrun (camera producing frames faster than they can be processed)
  • Network packet loss (GigE cameras)
  • USB bandwidth limitations (USB3 cameras)
  • Insufficient system resources

The streaming will typically continue after an error, but consider reducing frame rate or increasing buffer count.

### FrameReceived Event fired when a new frame is received during streaming operations. ```csharp public event EventHandler FrameReceived ``` #### Event Type Parameters: - (EventHandler < GenICamFrameReceivedEventArgs >): #### Examples
camera.FrameReceived += (sender, e) => {
    var frame = e.FrameData;
    Console.WriteLine($"Frame: {frame.Width}x{frame.Height}, Format: {frame.PixelFormat}");
    // Process frame data...
};
#### Remarks

This event is raised from a background timer thread, so UI updates should be marshaled to the appropriate thread.

Frame processing should be kept minimal to avoid blocking the acquisition pipeline.

The frame data is copied, so it's safe to access after the event handler returns.

### StreamingStarted Event fired when streaming starts successfully. ```csharp public event EventHandler StreamingStarted ``` #### Event Type Parameters: - (EventHandler): #### Remarks This event indicates that the camera acquisition has started and buffers are available for frame capture. ### StreamingStopped Event fired when streaming stops. ```csharp public event EventHandler StreamingStopped ``` #### Event Type Parameters: - (EventHandler): #### Remarks This event is fired both for normal stop operations and when streaming stops due to errors. --- # Class GenICamCameraManager Link: api/VisioForge.Core.GenICam.GenICamCameraManager.html # Class GenICamCameraManager # Class GenICamCameraManager **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Static class for centralized camera management and enumeration of GenICam-compatible cameras. This class provides centralized management and enumeration of GenICamCamera instances to ensure: - Each camera is created only once and reused across the application - Simple open/closed state tracking with thread-safe operations - Thread-safe access to camera instances using concurrent collections - Automatic cleanup when cameras are no longer needed or available - Comprehensive device enumeration and discovery with real-time updates - Proper resource management and disposal patterns

Thread Safety: This class is fully thread-safe and can be used from multiple threads simultaneously.

Usage Pattern:

  1. Call to populate the camera dictionary with available devices
  2. Use to get a camera reference by device ID
  3. Call before using the camera for operations
  4. Perform camera operations (streaming, configuration, etc.)
  5. Call when done with the camera

Resource Management:

Cameras are automatically cleaned up when they become unavailable. The manager tracks device availability and removes cameras that are no longer present in the system during calls.

// Enumerate and populate camera dictionary
                                                                                                                                                                          GenICamCameraManager.UpdateDeviceList();

                                                                                                                                                                          // Get camera reference
                                                                                                                                                                          var camera = GenICamCameraManager.GetCamera("MyCamera");
                                                                                                                                                                          if (camera == null)
                                                                                                                                                                          {
                                                                                                                                                                              Console.WriteLine("Camera not found");
                                                                                                                                                                              return;
                                                                                                                                                                          }

                                                                                                                                                                          // Open camera for use
                                                                                                                                                                          if (GenICamCameraManager.OpenCamera("MyCamera"))
                                                                                                                                                                          {
                                                                                                                                                                              try
                                                                                                                                                                              {
                                                                                                                                                                                  // Use camera for operations
                                                                                                                                                                                  camera.StartStreaming();

                                                                                                                                                                                  // Perform image capture operations
                                                                                                                                                                                  // ... do work ...

                                                                                                                                                                                  camera.StopStreaming();
                                                                                                                                                                              }
                                                                                                                                                                              finally
                                                                                                                                                                              {
                                                                                                                                                                                  // Always close camera when done
                                                                                                                                                                                  GenICamCameraManager.CloseCamera("MyCamera");
                                                                                                                                                                              }
                                                                                                                                                                          }
                                                                                                                                                                          else
                                                                                                                                                                          {
                                                                                                                                                                              Console.WriteLine("Failed to open camera");
                                                                                                                                                                          }
```csharp public static class GenICamCameraManager ``` #### Inheritance #### Inherited Members ## Methods ### CloseCamera(string) Closes a camera and disconnects it from the hardware without removing it from the cache. ```csharp public static bool CloseCamera(string deviceId) ``` #### Parameters Parameters: - deviceId (string): The unique device ID of the camera to close. #### Returns Parameters: - (bool): true if the camera was successfully closed or was already closed; false if an error occurred during the closing process. #### Examples
string deviceId = "MyCamera_12345";

// Open camera
if (GenICamCameraManager.OpenCamera(deviceId))
{
    try
    {
        // Use camera...
        var camera = GenICamCameraManager.GetCamera(deviceId);
        camera.StartStreaming();
        // ... perform operations ...
    }
    finally
    {
        // Always close when done
        bool closed = GenICamCameraManager.CloseCamera(deviceId);
        if (!closed)
        {
            Console.WriteLine("Warning: Camera may not have closed properly");
        }
    }
}
#### Remarks

This method performs the following operations:

  • Stops any active streaming on the camera
  • Disconnects the camera from the hardware
  • Keeps the camera instance in cache for potential reuse

Thread Safety: This method is thread-safe and uses internal locking.

Resource Management: This method properly releases hardware resources while maintaining the camera instance for future use.

Idempotent: It's safe to call this method multiple times on the same camera.

### FindCameraBySerialNumber(string) Finds a camera by its exact serial number using case-insensitive matching. ```csharp public static GenICamCamera FindCameraBySerialNumber(string serialNumber) ``` #### Parameters Parameters: - serialNumber (string): The serial number to search for. #### Returns Parameters: - (GenICamCamera): A instance with the matching serial number, or null if no camera with that serial number is found. #### Examples
// Find camera by serial number
var camera = GenICamCameraManager.FindCameraBySerialNumber("12345678");
if (camera != null)
{
    Console.WriteLine($"Found camera: {camera.DeviceId}");

    // Open and use the camera
    if (GenICamCameraManager.OpenCamera(camera.DeviceId))
    {
        // Use camera...
        GenICamCameraManager.CloseCamera(camera.DeviceId);
    }
}
else
{
    Console.WriteLine("Camera with serial number 12345678 not found");
}
#### Remarks

This method performs a case-insensitive exact match search for cameras with the specified serial number.

Performance: This method may take some time as it needs to query device information for each available camera until a match is found.

Cameras that cannot be queried are skipped with a warning logged.

Uniqueness: Serial numbers should be unique, so this method returns the first match found.

### FindCamerasByModel(string) Finds cameras by model name using case-insensitive partial matching. ```csharp public static List FindCamerasByModel(string modelName) ``` #### Parameters Parameters: - modelName (string): The model name or partial model name to search for. #### Returns Parameters: - (List < GenICamCamera >): A list of instances with models matching the specified name. Returns an empty list if no matches are found. #### Examples
// Find all cameras with model names containing "ace"
var aceCameras = GenICamCameraManager.FindCamerasByModel("ace");
Console.WriteLine($"Found {aceCameras.Count} cameras with 'ace' in model name");

foreach (var camera in aceCameras)
{
    Console.WriteLine($"  - {camera.DeviceId}");
}
#### Remarks

This method performs a case-insensitive search for cameras whose model name contains the specified string. Partial matches are supported.

Performance: This method may take some time as it needs to query device information for each available camera.

Cameras that cannot be queried are skipped with a warning logged.

### FindCamerasByVendor(string) Finds cameras by vendor name using case-insensitive partial matching. ```csharp public static List FindCamerasByVendor(string vendorName) ``` #### Parameters Parameters: - vendorName (string): The vendor name or partial vendor name to search for. #### Returns Parameters: - (List < GenICamCamera >): A list of instances from vendors matching the specified name. Returns an empty list if no matches are found. #### Examples
// Find all cameras from vendors containing "Basler"
var baslerCameras = GenICamCameraManager.FindCamerasByVendor("Basler");
Console.WriteLine($"Found {baslerCameras.Count} Basler cameras");

foreach (var camera in baslerCameras)
{
    Console.WriteLine($"  - {camera.DeviceId}");
}
#### Remarks

This method performs a case-insensitive search for cameras whose vendor name contains the specified string. Partial matches are supported.

Performance: This method may take some time as it needs to query device information for each available camera.

Cameras that cannot be queried are skipped with a warning logged.

### ForceCleanup() Forces removal and disposal of all cameras from the cache, regardless of their current state. ```csharp public static void ForceCleanup() ``` #### Examples
// Application shutdown sequence
try
{
    // Attempt graceful shutdown first
    foreach (var deviceId in GetDeviceIds())
    {
        CloseCamera(deviceId);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Graceful shutdown failed: {ex.Message}");
}
finally
{
    // Force cleanup as last resort
    GenICamCameraManager.ForceCleanup();
}
#### Remarks

⚠️ WARNING: This method should be used with extreme caution as it will dispose all camera instances even if they are currently in use. This can cause exceptions in other parts of the application that are actively using cameras.

This method is intended for use in the following scenarios:

  • Application shutdown
  • Recovery from unrecoverable camera states
  • Memory cleanup in testing scenarios

Thread Safety: This method is thread-safe but will affect all threads using cameras.

Recovery: After calling this method, you must call to repopulate the camera cache before using cameras again.

### GetCamera(string) Gets a camera instance by device ID, creating it if necessary but not connecting to it. ```csharp public static GenICamCamera GetCamera(string deviceId) ``` #### Parameters Parameters: - deviceId (string): The unique device ID of the camera to retrieve. #### Returns Parameters: - (GenICamCamera): A instance for the specified device, or null if the device ID is invalid or the camera cannot be created. #### Examples
// First, update the device list
GenICamCameraManager.UpdateDeviceList();

// Get a camera instance
var camera = GenICamCameraManager.GetCamera("MyCamera_12345");
if (camera != null)
{
    Console.WriteLine($"Camera retrieved: {camera.DeviceId}");
}
else
{
    Console.WriteLine("Camera not found or could not be created");
}
#### Remarks

This method returns a camera instance from the internal cache. If the camera doesn't exist in the cache, it will attempt to create a new instance. The camera is not automatically connected.

Important: You must call before using this method to ensure the device is available in the enumerated list.

Use to connect to the camera before performing operations.

### GetCamera(uint) Gets a camera instance by its enumeration index. ```csharp public static GenICamCamera GetCamera(uint index) ``` #### Parameters Parameters: - index (uint): The zero-based index of the camera in the device enumeration. #### Returns Parameters: - (GenICamCamera): A instance for the camera at the specified index. #### Examples
try
{
    var firstCamera = GenICamCameraManager.GetCamera(0);
    Console.WriteLine($"First camera: {firstCamera.DeviceId}");
}
catch (ArgumentOutOfRangeException)
{
    Console.WriteLine("No cameras available");
}
catch (AravisException ex)
{
    Console.WriteLine($"Error getting camera: {ex.Message}");
}
#### Remarks

This method is a convenience wrapper that gets the device ID for the specified index and then retrieves the corresponding camera instance.

Note: Device indices may change between enumerations. For consistent access, consider using device IDs instead of indices.

#### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when the specified index is greater than or equal to the number of available devices. - (AravisException): Thrown when the camera cannot be retrieved or created for the specified index. ### GetCameras() Gets all available cameras as instances from the centralized cache. ```csharp public static List GetCameras() ``` #### Returns Parameters: - (List < GenICamCamera >): A list of instances for all available cameras. Cameras that cannot be retrieved are excluded from the list. #### Examples
// Get all available cameras
var cameras = GenICamCameraManager.GetCameras();
Console.WriteLine($"Found {cameras.Count} cameras:");

foreach (var camera in cameras)
{
    Console.WriteLine($"  - {camera.DeviceId}");
}
#### Remarks

This method retrieves camera instances for all devices found in the most recent enumeration. Cameras that cannot be created or retrieved are skipped with a warning logged.

The returned cameras are not automatically connected. Use to connect to individual cameras before use.

Performance: This method may take some time if there are many cameras or if some cameras are slow to respond during instantiation.

### GetCamerasWithInfo() Gets all cameras with their detailed information loaded by temporarily opening each camera. ```csharp public static List GetCamerasWithInfo() ``` #### Returns Parameters: - (List < GenICamCamera >): A list of instances with their properties populated with detailed camera information. #### Examples
// Get all cameras with detailed information
var camerasWithInfo = GenICamCameraManager.GetCamerasWithInfo();

Console.WriteLine($"Found {camerasWithInfo.Count} cameras with detailed info:");
foreach (var camera in camerasWithInfo)
{
    var info = camera.CameraInfo;
    Console.WriteLine($"  - {info.DeviceId}");
    Console.WriteLine($"    Vendor: {info.Vendor}");
    Console.WriteLine($"    Model: {info.Model}");
    Console.WriteLine($"    Serial: {info.SerialNumber}");
    Console.WriteLine($"    Resolution: {info.Width}x{info.Height}");
}
#### Remarks

This method temporarily opens each camera to read its detailed information, then closes it immediately. This provides comprehensive camera information but has the following implications:

  • Performance: This operation can be slow as it connects to each camera
  • Exclusive Access: Cameras in use by other applications will be skipped
  • Resource Usage: Temporarily uses camera resources for each device

Use Cases:

  • Camera discovery and enumeration interfaces
  • Detailed camera capability reporting
  • Camera selection based on specifications

Cameras that cannot be opened or provide information are excluded from the results.

### GetDeviceCount() Gets the number of currently available GenICam-compatible devices. ```csharp public static uint GetDeviceCount() ``` #### Returns Parameters: - (uint): The number of available cameras detected by the system. #### Examples
GenICamCameraManager.UpdateDeviceList();
uint count = GenICamCameraManager.GetDeviceCount();
Console.WriteLine($"Available cameras: {count}");
#### Remarks This method returns the count from the most recent device enumeration. Call to refresh the device list before calling this method if you need the most up-to-date count. ### GetDeviceId(uint) Gets the device ID for a specific camera by its enumeration index. ```csharp public static string GetDeviceId(uint index) ``` #### Parameters Parameters: - index (uint): The zero-based index of the device in the enumeration list. #### Returns Parameters: - (string): The device ID string for the specified camera, or "Unknown" if the ID cannot be determined. #### Examples
try
{
    string firstDeviceId = GenICamCameraManager.GetDeviceId(0);
    Console.WriteLine($"First camera ID: {firstDeviceId}");
}
catch (ArgumentOutOfRangeException)
{
    Console.WriteLine("No cameras available");
}
#### Remarks

This method automatically calls to ensure the most current device list.

Device indices are assigned in the order devices are discovered and may change between enumerations.

#### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when the specified index is greater than or equal to the number of available devices. ### GetDeviceIds() Gets device IDs for all currently available GenICam-compatible cameras. ```csharp public static string[] GetDeviceIds() ``` #### Returns Parameters: - (string [ ]): An array of device ID strings. Each string uniquely identifies a camera device. #### Examples
string[] deviceIds = GenICamCameraManager.GetDeviceIds();
foreach (string deviceId in deviceIds)
{
    Console.WriteLine($"Found camera: {deviceId}");
}
#### Remarks

This method automatically calls to ensure the most current device list.

Device IDs are typically in the format "Vendor_Model_SerialNumber" but the exact format depends on the camera manufacturer.

The returned array will contain "Unknown" for devices where the ID cannot be determined.

### GetFirstAvailableCamera() Gets the first available camera from the centralized cache. ```csharp public static GenICamCamera GetFirstAvailableCamera() ``` #### Returns Parameters: - (GenICamCamera): A instance for the first available camera. #### Examples
try
{
    var camera = GenICamCameraManager.GetFirstAvailableCamera();
    Console.WriteLine($"Using camera: {camera.DeviceId}");

    // Open and use the camera
    if (GenICamCameraManager.OpenCamera(camera.DeviceId))
    {
        // Use camera...
        GenICamCameraManager.CloseCamera(camera.DeviceId);
    }
}
catch (AravisException ex)
{
    Console.WriteLine($"No cameras available: {ex.Message}");
}
#### Remarks

This is a convenience method for applications that only need to work with a single camera or want to use the first available camera by default.

This method automatically calls to ensure current device information.

The returned camera is not automatically connected. Use to connect to the camera before use.

#### Exceptions Parameters: - (AravisException): Thrown when no cameras are available or the first camera cannot be retrieved. ### IsCameraOpen(string) Checks if a camera is currently open and connected to the hardware. ```csharp public static bool IsCameraOpen(string deviceId) ``` #### Parameters Parameters: - deviceId (string): The unique device ID of the camera to check. #### Returns Parameters: - (bool): true if the camera is currently open and connected; false if the camera is closed, not found, or the device ID is invalid. #### Examples
string deviceId = "MyCamera_12345";

if (GenICamCameraManager.IsCameraOpen(deviceId))
{
    Console.WriteLine("Camera is ready for use");
    var camera = GenICamCameraManager.GetCamera(deviceId);
    // Use camera...
}
else
{
    Console.WriteLine("Camera needs to be opened first");
    GenICamCameraManager.OpenCamera(deviceId);
}
#### Remarks

This method provides a quick way to check camera connection status without attempting to open or modify the camera state.

Thread Safety: This method is thread-safe and can be called from any thread.

Performance: This is a lightweight operation that only checks internal state.

### OpenCamera(string) Opens a camera for use by establishing a connection to the hardware. ```csharp public static bool OpenCamera(string deviceId) ``` #### Parameters Parameters: - deviceId (string): The unique device ID of the camera to open. #### Returns Parameters: - (bool): true if the camera was successfully opened and is ready for use; false if the camera could not be opened. #### Examples
string deviceId = "MyCamera_12345";

if (GenICamCameraManager.OpenCamera(deviceId))
{
    try
    {
        var camera = GenICamCameraManager.GetCamera(deviceId);
        // Use camera for operations
        camera.StartStreaming();
        // ... perform operations ...
        camera.StopStreaming();
    }
    finally
    {
        GenICamCameraManager.CloseCamera(deviceId);
    }
}
else
{
    Console.WriteLine("Failed to open camera");
}
#### Remarks

This method performs the following operations:

  • Validates the device ID and retrieves the camera instance
  • Checks if the camera is already connected (returns true if so)
  • Establishes a hardware connection to the camera
  • Reads camera information to populate detailed properties

Thread Safety: This method is thread-safe and uses internal locking.

Resource Management: Always call when done with the camera to properly release resources.

Error Handling: Detailed error information is logged. Check logs for specific failure reasons.

### SetContext(BaseContext) Sets the BaseContext for logging operations throughout the camera manager. ```csharp public static void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): BaseContext instance for logging. If null, a new default context will be created. #### Examples
var context = new BaseContext();
GenICamCameraManager.SetContext(context);
#### Remarks This method should be called early in the application lifecycle to ensure proper logging throughout camera operations. ### UpdateDeviceList() Updates the device list by scanning for available GenICam-compatible cameras. Automatically cleans up cameras that are no longer available in the system. ```csharp public static void UpdateDeviceList() ``` #### Examples
// Refresh the list of available cameras
GenICamCameraManager.UpdateDeviceList();

// Get count of available devices
uint deviceCount = GenICamCameraManager.GetDeviceCount();
Console.WriteLine($"Found {deviceCount} cameras");
#### Remarks

This method performs the following operations:

  • Calls the underlying Aravis system to refresh the device list
  • Compares current devices with cached camera instances
  • Removes cameras that are no longer available (if not connected)
  • Adds new cameras to the internal dictionary

Thread Safety: This method is thread-safe and can be called from multiple threads.

Performance: This method may take some time to complete as it performs hardware enumeration. Consider calling it on a background thread in UI applications.

--- # Class GenICamFrameData Link: api/VisioForge.Core.GenICam.GenICamFrameData.html # Class GenICamFrameData # Class GenICamFrameData **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Frame data container ```csharp public class GenICamFrameData ``` #### Inheritance #### Inherited Members ## Properties ### Data Raw frame data ```csharp public byte[] Data { get; set; } ``` #### Property Value Parameters: - (byte [ ]): ### Height Frame height in pixels ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### PixelFormat Pixel format ```csharp public GenICamPixelFormat PixelFormat { get; set; } ``` #### Property Value Parameters: - (GenICamPixelFormat): ### Size Frame data size in bytes ```csharp public int Size { get; set; } ``` #### Property Value Parameters: - (int): ### Timestamp Frame timestamp in nanoseconds ```csharp public ulong Timestamp { get; set; } ``` #### Property Value Parameters: - (ulong): ### Width Frame width in pixels ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Gets frame information as string ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Frame information --- # Class GenICamFrameErrorEventArgs Link: api/VisioForge.Core.GenICam.GenICamFrameErrorEventArgs.html # Class GenICamFrameErrorEventArgs # Class GenICamFrameErrorEventArgs **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Event arguments for GenICam frame error events. This class provides information about errors that occur during frame processing in GenICam-compatible camera devices. ```csharp public class GenICamFrameErrorEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Subscribe to frame error events
camera.FrameError += (sender, e) =>
{
    Console.WriteLine($"Frame error occurred: {e.ErrorMessage}");
    // Handle the error appropriately
};
## Remarks GenICam (Generic Interface for Cameras) is a standard interface for machine vision cameras. Frame errors can occur due to various reasons such as transmission issues, buffer overflows, or camera hardware problems. ## Constructors ### GenICamFrameErrorEventArgs(string) Initializes a new instance of the class. ```csharp public GenICamFrameErrorEventArgs(string errorMessage) ``` #### Parameters Parameters: - errorMessage (string): The error message describing the frame error that occurred. #### Examples
var errorArgs = new GenICamFrameErrorEventArgs("Frame transmission failed: timeout occurred");
#### Exceptions Parameters: - (ArgumentNullException): Thrown when errorMessage is null. ## Properties ### ErrorMessage Gets the error message describing the frame error that occurred. ```csharp public string ErrorMessage { get; } ``` #### Property Value Parameters: - (string): --- # Class GenICamFrameReceivedEventArgs Link: api/VisioForge.Core.GenICam.GenICamFrameReceivedEventArgs.html # Class GenICamFrameReceivedEventArgs # Class GenICamFrameReceivedEventArgs **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Provides data for the frame received event in GenICam operations. This event is raised when a new frame is captured from a GenICam-compatible device. ```csharp public class GenICamFrameReceivedEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Subscribe to frame received event
genICamDevice.FrameReceived += (sender, e) =>
{
    var frameData = e.Frame;
    Console.WriteLine($"Frame received: {frameData.Width}x{frameData.Height}");
};
## Remarks The GenICamFrameReceivedEventArgs class carries frame data that includes image information, timestamps, and other metadata associated with the captured frame. ## Constructors ### GenICamFrameReceivedEventArgs(GenICamFrameData) Initializes a new instance of the class. ```csharp public GenICamFrameReceivedEventArgs(GenICamFrameData frame) ``` #### Parameters Parameters: - frame (GenICamFrameData): The frame data associated with the received frame. #### Remarks This constructor is typically called by the GenICam device implementation when a new frame is captured and ready to be processed. #### Exceptions Parameters: - (ArgumentNullException): Thrown when frame is null. ## Properties ### Frame Gets the frame data associated with the received frame. ```csharp public GenICamFrameData Frame { get; } ``` #### Property Value Parameters: - (GenICamFrameData): #### Remarks This property provides read-only access to the frame data. The frame data contains all relevant information about the captured image frame. --- # Class ManagedEvaluator Link: api/VisioForge.Core.GenICam.ManagedEvaluator.html # Class ManagedEvaluator # Class ManagedEvaluator **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Managed wrapper class for ArvEvaluator with automatic resource management ```csharp public class ManagedEvaluator : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ManagedEvaluator(string) Creates a new managed evaluator with the given expression ```csharp public ManagedEvaluator(string expression) ``` #### Parameters Parameters: - expression (string): Mathematical expression to evaluate ## Properties ### Expression Sets or gets the main expression ```csharp public string Expression { get; set; } ``` #### Property Value Parameters: - (string): ### Handle Gets the native evaluator pointer ```csharp public nint Handle { get; } ``` #### Property Value Parameters: - (nint): ## Methods ### Dispose() Disposes the evaluator ```csharp public void Dispose() ``` ### Dispose(bool) ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### EvaluateAsDouble() Evaluates the expression as a double ```csharp public double EvaluateAsDouble() ``` #### Returns Parameters: - (double): Result as double #### Exceptions Parameters: - (InvalidOperationException): Thrown if evaluation fails ### EvaluateAsInt64() Evaluates the expression as a long integer ```csharp public long EvaluateAsInt64() ``` #### Returns Parameters: - (long): Result as long #### Exceptions Parameters: - (InvalidOperationException): Thrown if evaluation fails ### ~ManagedEvaluator() ```csharp protected ~ManagedEvaluator() ``` ### GetConstant(string) Gets a constant value ```csharp public string GetConstant(string name) ``` #### Parameters Parameters: - name (string): Name of the constant #### Returns Parameters: - (string): Constant value as string ### GetSubExpression(string) Gets a sub-expression ```csharp public string GetSubExpression(string name) ``` #### Parameters Parameters: - name (string): Name of the sub-expression #### Returns Parameters: - (string): Expression string ### SetConstant(string, string) Sets a constant value ```csharp public void SetConstant(string name, string value) ``` #### Parameters Parameters: - name (string): Name of the constant - value (string): Constant value as string ### SetSubExpression(string, string) Sets a sub-expression ```csharp public void SetSubExpression(string name, string expression) ``` #### Parameters Parameters: - name (string): Name of the sub-expression - expression (string): Expression string ### SetVariable(string, double) Sets a double variable ```csharp public void SetVariable(string name, double value) ``` #### Parameters Parameters: - name (string): Variable name - value (double): Variable value ### SetVariable(string, long) Sets an integer variable ```csharp public void SetVariable(string name, long value) ``` #### Parameters Parameters: - name (string): Variable name - value (long): Variable value --- # Class ManagedGenICam Link: api/VisioForge.Core.GenICam.ManagedGenICam.html # Class ManagedGenICam # Class ManagedGenICam **Namespace**: VisioForge.Core.GenICam **Assembly**: VisioForge.Core.dll Managed wrapper class for ArvGc providing safe access to GenICam functionality ```csharp public class ManagedGenICam : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ManagedGenICam(nint, byte[]) Creates a new GenICam object from XML data ```csharp public ManagedGenICam(nint device, byte[] xmlData) ``` #### Parameters Parameters: - device (nint): Device handle - xmlData (byte [ ]): GenICam XML data ### ManagedGenICam(nint, bool) Creates a managed wrapper around an existing GenICam handle ```csharp public ManagedGenICam(nint handle, bool ownsHandle = true) ``` #### Parameters Parameters: - handle (nint): Existing GenICam handle - ownsHandle (bool): Whether this wrapper owns the handle and should dispose it ## Properties ### Handle Gets the native handle ```csharp public nint Handle { get; } ``` #### Property Value Parameters: - (nint): ### IsValid Gets whether the GenICam object is valid ```csharp public bool IsValid { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### Dispose() Disposes the GenICam object ```csharp public void Dispose() ``` ### Dispose(bool) Disposes the GenICam object ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Whether disposing from Dispose method ### ~ManagedGenICam() Finalizer ```csharp protected ~ManagedGenICam() ``` ### GetAccessCheckPolicy() Gets the access check policy ```csharp public GenICamAccessCheckPolicy GetAccessCheckPolicy() ``` #### Returns Parameters: - (GenICamAccessCheckPolicy): Current access check policy ### GetBuffer() Gets the current buffer ```csharp public nint GetBuffer() ``` #### Returns Parameters: - (nint): Buffer handle ### GetDevice() Gets the associated device ```csharp public nint GetDevice() ``` #### Returns Parameters: - (nint): Device handle ### GetNode(string) Gets a GenICam node by name ```csharp public nint GetNode(string nodeName) ``` #### Parameters Parameters: - nodeName (string): Name of the node #### Returns Parameters: - (nint): Node handle or IntPtr.Zero if not found ### GetRangeCheckPolicy() Gets the range check policy ```csharp public GenICamRangeCheckPolicy GetRangeCheckPolicy() ``` #### Returns Parameters: - (GenICamRangeCheckPolicy): Current range check policy ### GetRegisterCachePolicy() Gets the register cache policy ```csharp public GenICamRegisterCachePolicy GetRegisterCachePolicy() ``` #### Returns Parameters: - (GenICamRegisterCachePolicy): Current cache policy ### RegisterFeatureNode(nint) Registers a feature node with the GenICam object ```csharp public void RegisterFeatureNode(nint node) ``` #### Parameters Parameters: - node (nint): Feature node handle ### SetAccessCheckPolicy(GenICamAccessCheckPolicy) Sets the access check policy ```csharp public void SetAccessCheckPolicy(GenICamAccessCheckPolicy policy) ``` #### Parameters Parameters: - policy (GenICamAccessCheckPolicy): Access check policy ### SetBuffer(nint) Sets the buffer for chunk data parsing ```csharp public void SetBuffer(nint buffer) ``` #### Parameters Parameters: - buffer (nint): Buffer handle ### SetRangeCheckPolicy(GenICamRangeCheckPolicy) Sets the range check policy ```csharp public void SetRangeCheckPolicy(GenICamRangeCheckPolicy policy) ``` #### Parameters Parameters: - policy (GenICamRangeCheckPolicy): Range check policy ### SetRegisterCachePolicy(GenICamRegisterCachePolicy) Sets the register cache policy ```csharp public void SetRegisterCachePolicy(GenICamRegisterCachePolicy policy) ``` #### Parameters Parameters: - policy (GenICamRegisterCachePolicy): Cache policy --- # Namespace VisioForge.Core.GenICam Link: api/VisioForge.Core.GenICam.html # Namespace VisioForge.Core.GenICam # Namespace VisioForge.Core.GenICam ### Namespaces Parameters: - (): - (): ### Classes Parameters: - (): Stream diagnostics information - (): Represents a GenICam-compliant camera device with high-level access to camera information, resolutions, pixel formats, and control features. This class provides a comprehensive wrapper around the Aravis library for industrial camera control.

Typical Usage Workflow:

  1. Create camera instance using
  2. Call to establish connection
  3. Call to populate camera capabilities
  4. Configure camera settings (exposure, gain, ROI, etc.)
  5. Use for continuous capture or for single shots
  6. Handle events for frame processing
  7. Call and when done

Thread Safety: This class is not thread-safe. Access should be synchronized when used from multiple threads, particularly for streaming operations.

Resource Management: The class implements . Always dispose of camera instances when done, either explicitly or using 'using' statements. Alternatively, use for temporary disconnection without disposal.

Basic usage example:
using var camera = GenICamCameraManager.CreateCamera("MyCamera");
if (camera.Connect())
{
    camera.ReadInfo();
    camera.SetExposureTime(10000); // 10ms
    camera.SetGain(0.0);

    camera.FrameReceived += (s, e) => {
        Console.WriteLine($"Frame: {e.FrameData.Width}x{e.FrameData.Height}");
    };

    camera.StartStreaming();
    Thread.Sleep(5000); // Stream for 5 seconds
    camera.StopStreaming();
}
API Update Notes: - Fixed acquisition startup sequence: camera acquisition handles device-level streaming automatically - Removed redundant arv_stream_start_acquisition calls that could conflict with camera acquisition - Updated buffer management to use modern Aravis buffer management APIs - Enhanced stream diagnostics with FillingBuffers parameter support - Improved error handling and logging throughout streaming operations - Added pre-flight checks for camera and stream handles before starting acquisition - (): Static class for centralized camera management and enumeration of GenICam-compatible cameras. This class provides centralized management and enumeration of GenICamCamera instances to ensure: - Each camera is created only once and reused across the application - Simple open/closed state tracking with thread-safe operations - Thread-safe access to camera instances using concurrent collections - Automatic cleanup when cameras are no longer needed or available - Comprehensive device enumeration and discovery with real-time updates - Proper resource management and disposal patterns

Thread Safety: This class is fully thread-safe and can be used from multiple threads simultaneously.

Usage Pattern:

  1. Call to populate the camera dictionary with available devices
  2. Use to get a camera reference by device ID
  3. Call before using the camera for operations
  4. Perform camera operations (streaming, configuration, etc.)
  5. Call when done with the camera

Resource Management:

Cameras are automatically cleaned up when they become unavailable. The manager tracks device availability and removes cameras that are no longer present in the system during calls.

// Enumerate and populate camera dictionary
                                                                                                                                                                          GenICamCameraManager.UpdateDeviceList();

                                                                                                                                                                          // Get camera reference
                                                                                                                                                                          var camera = GenICamCameraManager.GetCamera("MyCamera");
                                                                                                                                                                          if (camera == null)
                                                                                                                                                                          {
                                                                                                                                                                              Console.WriteLine("Camera not found");
                                                                                                                                                                              return;
                                                                                                                                                                          }

                                                                                                                                                                          // Open camera for use
                                                                                                                                                                          if (GenICamCameraManager.OpenCamera("MyCamera"))
                                                                                                                                                                          {
                                                                                                                                                                              try
                                                                                                                                                                              {
                                                                                                                                                                                  // Use camera for operations
                                                                                                                                                                                  camera.StartStreaming();

                                                                                                                                                                                  // Perform image capture operations
                                                                                                                                                                                  // ... do work ...

                                                                                                                                                                                  camera.StopStreaming();
                                                                                                                                                                              }
                                                                                                                                                                              finally
                                                                                                                                                                              {
                                                                                                                                                                                  // Always close camera when done
                                                                                                                                                                                  GenICamCameraManager.CloseCamera("MyCamera");
                                                                                                                                                                              }
                                                                                                                                                                          }
                                                                                                                                                                          else
                                                                                                                                                                          {
                                                                                                                                                                              Console.WriteLine("Failed to open camera");
                                                                                                                                                                          }
- (): Frame data container - (): Event arguments for GenICam frame error events. This class provides information about errors that occur during frame processing in GenICam-compatible camera devices. - (): Provides data for the frame received event in GenICam operations. This event is raised when a new frame is captured from a GenICam-compatible device. - (): Managed wrapper class for ArvEvaluator with automatic resource management - (): Managed wrapper class for ArvGc providing safe access to GenICam functionality --- # Class GIFDecoder Link: api/VisioForge.Core.GIF.GIFDecoder.html # Class GIFDecoder # Class GIFDecoder **Namespace**: VisioForge.Core.GIF **Assembly**: VisioForge.Core.dll Decodes gifs to provides information. ```csharp public class GIFDecoder : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GIFDecoder(string) Initializes a new instance of the class. ```csharp public GIFDecoder(string filename) ``` #### Parameters Parameters: - filename (string): The file name to decode. ## Properties ### AnimationLength Gets or sets the animation length. ```csharp public TimeSpan AnimationLength { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Frames Gets the GIF frames. ```csharp public List Frames { get; } ``` #### Property Value Parameters: - (List < GIFFrame >): ### Height Gets or sets the image height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### IsAnimated Gets or sets a value indicating whether the image is animated. ```csharp public bool IsAnimated { get; set; } ``` #### Property Value Parameters: - (bool): ### LoadedToRGB32 Gets a value indicating whether the image is loaded to RGB32. ```csharp public bool LoadedToRGB32 { get; } ``` #### Property Value Parameters: - (bool): ### Width Gets or sets the image width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Clear() Clears data. ```csharp public void Clear() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~GIFDecoder() Finalizes an instance of the class. ```csharp protected ~GIFDecoder() ``` ### ResizeFrames(int, int, GIFResizeStretchMode) Resizes the frames. ```csharp public void ResizeFrames(int width, int height, GIFResizeStretchMode mode) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - mode (GIFResizeStretchMode): The mode. --- # Class GIFFrame Link: api/VisioForge.Core.GIF.GIFFrame.html # Class GIFFrame # Class GIFFrame **Namespace**: VisioForge.Core.GIF **Assembly**: VisioForge.Core.dll A single GIF frame. ```csharp public class GIFFrame : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GIFFrame(SKBitmap, TimeSpan, TimeSpan, bool) Initializes a new instance of the class. ```csharp public GIFFrame(SKBitmap image, TimeSpan delay, TimeSpan position, bool decodeToRGB32) ``` #### Parameters Parameters: - image (SKBitmap): Image. - delay (TimeSpan): Delay. - position (TimeSpan): Position. - decodeToRGB32 (bool): True to decode to RGB32. ## Properties ### EndPosition Gets the end position. ```csharp public TimeSpan EndPosition { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Height Gets or sets height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Image Gets the image. ```csharp public SKBitmap Image { get; } ``` #### Property Value Parameters: - (SKBitmap): ### Length Gets or sets the length. ```csharp public TimeSpan Length { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Position Gets or sets the position. ```csharp public TimeSpan Position { get; } ``` #### Property Value Parameters: - (TimeSpan): ### RGB32 Gets image as RGB32. ```csharp public nint RGB32 { get; } ``` #### Property Value Parameters: - (nint): ### RGB32Size Gets the size of the RGB32 image. ```csharp public int RGB32Size { get; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the x position of the frame. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y position of the frame. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~GIFFrame() Finalizes an instance of the class. ```csharp protected ~GIFFrame() ``` ### Resize(int, int, GIFResizeStretchMode) Resizes the GIF frame. ```csharp public void Resize(int newWidth, int newHeight, GIFResizeStretchMode mode) ``` #### Parameters Parameters: - newWidth (int): The new width. - newHeight (int): The new height. - mode (GIFResizeStretchMode): The resize mode. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Namespace VisioForge.Core.GIF Link: api/VisioForge.Core.GIF.html # Namespace VisioForge.Core.GIF # Namespace VisioForge.Core.GIF ### Classes Parameters: - (): Decodes gifs to provides information. - (): A single GIF frame. --- # Class CircularBuffer Link: api/VisioForge.Core.Helpers.CircularBuffer-1.html # Class CircularBuffer # Class CircularBuffer **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll A generic circular buffer implementation that allows efficient insertion and removal of elements at both ends of the buffer. When the buffer reaches full capacity, adding new elements will automatically remove elements from the opposite end. ```csharp public class CircularBuffer : IEnumerable, IEnumerable ``` #### Type Parameters Parameters: - T (): The type of elements stored in the circular buffer. #### Inheritance #### Implements #### Inherited Members ## Remarks

When writing to a full buffer:

  • PushBack() removes the element at Front() (this[0])
  • PushFront() removes the element at Back() (this[Size-1])

This implementation is inspired by the Boost circular_buffer library: http://www.boost.org/doc/libs/1_53_0/libs/circular_buffer/doc/circular_buffer.html

## Constructors ### CircularBuffer(int) Initializes a new instance of the class with the specified capacity. ```csharp public CircularBuffer(int capacity) ``` #### Parameters Parameters: - capacity (int): The maximum number of elements that the buffer can hold. Must be positive. #### Exceptions Parameters: - (ArgumentException): Thrown when capacity is less than 1. ### CircularBuffer(int, T[]) Initializes a new instance of the class with the specified capacity and pre-fills it with the provided items. ```csharp public CircularBuffer(int capacity, T[] items) ``` #### Parameters Parameters: - capacity (int): The maximum number of elements that the buffer can hold. Must be positive. - items (T [ ]): Initial items to fill the buffer with. The length must not exceed the capacity. Tip: Use Skip(x).Take(y).ToArray() to build this parameter from any enumerable. #### Exceptions Parameters: - (ArgumentException): Thrown when capacity is less than 1 or when items length exceeds capacity. - (ArgumentNullException): Thrown when items is null. ## Properties ### Capacity Gets the maximum capacity of the circular buffer. ```csharp public int Capacity { get; } ``` #### Property Value Parameters: - (int): #### Remarks When the buffer reaches maximum capacity (IsFull = true), pushing new elements will automatically remove elements from the opposite end to maintain the capacity limit. ### IsEmpty Gets a value indicating whether the circular buffer is empty. ```csharp public bool IsEmpty { get; } ``` #### Property Value Parameters: - (bool): ### IsFull Gets a value indicating whether the circular buffer is at full capacity. ```csharp public bool IsFull { get; } ``` #### Property Value Parameters: - (bool): #### Remarks When the buffer is full, adding new elements will cause elements to be removed from the opposite end of the buffer to maintain the capacity constraint. ### Size Gets the current number of elements contained in the circular buffer. ```csharp public int Size { get; } ``` #### Property Value Parameters: - (int): ### this[int] Gets or sets the element at the specified index in the buffer. ```csharp public T this[int index] { get; set; } ``` #### Property Value Parameters: - (T): #### Remarks The index does not wrap around; valid indices are in the range [0, Size). #### Exceptions Parameters: - (IndexOutOfRangeException): Thrown when index is negative, greater than or equal to Size, or when the buffer is empty. ## Methods ### Back() Returns the element at the back of the buffer without removing it. ```csharp public T Back() ``` #### Returns Parameters: - (T): The element at the back of the buffer (equivalent to this[Size - 1]). #### Exceptions Parameters: - (InvalidOperationException): Thrown when the buffer is empty. ### Clear() Removes all elements from the circular buffer. ```csharp public void Clear() ``` #### Remarks After this operation, Size will be 0 but Capacity remains unchanged. All elements in the internal buffer are set to their default values. ### Front() Returns the element at the front of the buffer without removing it. ```csharp public T Front() ``` #### Returns Parameters: - (T): The element at the front of the buffer (equivalent to this[0]). #### Exceptions Parameters: - (InvalidOperationException): Thrown when the buffer is empty. ### GetEnumerator() Returns an enumerator that iterates through the circular buffer. ```csharp public IEnumerator GetEnumerator() ``` #### Returns Parameters: - (IEnumerator < T >): An enumerator that can be used to iterate through the buffer from front to back. #### Remarks The enumeration preserves the logical order of elements regardless of their physical arrangement in the internal buffer. ### PopBack() Removes and discards the element at the back of the circular buffer. ```csharp public void PopBack() ``` #### Remarks This operation decreases the buffer size by 1. #### Exceptions Parameters: - (InvalidOperationException): Thrown when the buffer is empty. ### PopFront() Removes and discards the element at the front of the circular buffer. ```csharp public void PopFront() ``` #### Remarks This operation decreases the buffer size by 1. #### Exceptions Parameters: - (InvalidOperationException): Thrown when the buffer is empty. ### PushBack(T) Adds an element to the back of the circular buffer. ```csharp public void PushBack(T item) ``` #### Parameters Parameters: - item (T): The element to add to the back of the buffer. #### Remarks After this operation, Back() and this[Size-1] will return the newly added element. If the buffer is full, the element at the front (Front()/this[0]) will be removed to make room for the new element. ### PushFront(T) Adds an element to the front of the circular buffer. ```csharp public void PushFront(T item) ``` #### Parameters Parameters: - item (T): The element to add to the front of the buffer. #### Remarks After this operation, Front() and this[0] will return the newly added element. If the buffer is full, the element at the back (Back()/this[Size-1]) will be removed to make room for the new element. ### IEnumerable.GetEnumerator() Returns a non-generic enumerator that iterates through the circular buffer. ```csharp IEnumerator IEnumerable.GetEnumerator() ``` #### Returns Parameters: - (IEnumerator): An IEnumerator that can be used to iterate through the buffer. ### ToArray() Copies all elements from the circular buffer to a new array. ```csharp public T[] ToArray() ``` #### Returns Parameters: - (T [ ]): A new array containing copies of the elements in the buffer, ordered from front to back. #### Remarks The returned array preserves the logical order of elements (from front to back), regardless of their physical arrangement in the internal buffer. ### ToArraySegments() Gets the contents of the buffer as two ArraySegment instances without copying the elements. ```csharp public IList> ToArraySegments() ``` #### Returns Parameters: - (IList < ArraySegment < T > >): An IList containing two ArraySegment instances that represent the buffer contents. #### Remarks

This method provides a zero-copy view of the buffer contents, which is useful for performance-critical scenarios such as network operations (e.g., Send(IList<ArraySegment<byte>>)).

The segments preserve the logical order of elements from front to back. Either or both segments may be empty depending on the buffer state.

--- # Class ColorspaceConverter Link: api/VisioForge.Core.Helpers.ColorspaceConverter.html # Class ColorspaceConverter # Class ColorspaceConverter **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides methods for converting between different color space formats such as RGB, RGBA, ARGB, BGRA, YUV, and others. Supports hardware-accelerated conversions using Intel IPP when available on Windows platforms. ```csharp public static class ColorspaceConverter ``` #### Inheritance #### Inherited Members ## Methods ### ARGBToBGRA(nint, int, nint, int, int, int) Converts image data from ARGB format (Alpha, Red, Green, Blue) to BGRA format (Blue, Green, Red, Alpha). ```csharp public static void ARGBToBGRA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source ARGB image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for BGRA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### ARGBToRGB(nint, int, nint, int, int, int) Converts ARGB image data (4 bytes per pixel) to RGB format (3 bytes per pixel), discarding the alpha channel. ```csharp public static void ARGBToRGB(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source ARGB image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for RGB image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### BGRAToARGB(nint, int, nint, int, int, int) Converts image data from BGRA format (Blue, Green, Red, Alpha) to ARGB format (Alpha, Red, Green, Blue). ```csharp public static void BGRAToARGB(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source BGRA image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for ARGB image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### BGRToBGRA(nint, int, nint, int, int, int) Converts BGR image data (3 bytes per pixel) to BGRA format (4 bytes per pixel) with full opacity (alpha = 255). ```csharp public static void BGRToBGRA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source BGR image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for BGRA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### BGRToRGBA(nint, int, nint, int, int, int) Converts BGR image data (3 bytes per pixel) to RGBA format (4 bytes per pixel) with full opacity (alpha = 255). Swaps red and blue channels during conversion. ```csharp public static void BGRToRGBA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source BGR image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for RGBA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### NV12ToRGBSlow(nint, int, int, int, nint, int) Converts NV12 YUV format to RGB format using software conversion (slower than hardware-accelerated methods). NV12 format stores Y plane followed by interleaved UV plane. ```csharp public static void NV12ToRGBSlow(nint nv12Data, int stride, int width, int height, nint rgbData, int rgbStride) ``` #### Parameters Parameters: - nv12Data (nint): Pointer to the source NV12 data containing Y plane and UV plane. - stride (int): The stride of the NV12 data (bytes per row). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. - rgbData (nint): Pointer to the destination buffer for RGB data. - rgbStride (int): The stride of the RGB data (bytes per row). ### RGBAToARGB(nint, int, nint, int, int, int) Converts image data from RGBA format (Red, Green, Blue, Alpha) to ARGB format (Alpha, Red, Green, Blue). ```csharp public static void RGBAToARGB(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source RGBA image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for ARGB image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### RGBAToBGRA(nint, int, nint, int, int, int) Converts image data from RGBA format (Red, Green, Blue, Alpha) to BGRA format (Blue, Green, Red, Alpha). ```csharp public static void RGBAToBGRA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source RGBA image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for BGRA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### RGBAToCairo32(byte[], double) Converts RGBA image data to Cairo32 format with pre-multiplied alpha. Cairo32 format stores pixels in pre-multiplied BGRA order for efficient rendering. ```csharp public static byte[] RGBAToCairo32(byte[] data, double alpha) ``` #### Parameters Parameters: - data (byte [ ]): The source RGBA image data as a byte array. - alpha (double): Additional alpha multiplier (0.0 to 1.0) to apply to all pixels. #### Returns Parameters: - (byte [ ]): A new byte array containing the converted Cairo32 format data. ### RGBAToCairo32Ptr(byte[], double) Converts RGBA image data to Cairo32 format and returns a pointer to the converted data. The caller is responsible for freeing the allocated memory using Marshal.FreeHGlobal. ```csharp public static nint RGBAToCairo32Ptr(byte[] data, double alpha) ``` #### Parameters Parameters: - data (byte [ ]): The source RGBA image data as a byte array. - alpha (double): Additional alpha multiplier (0.0 to 1.0) to apply to all pixels. #### Returns Parameters: - (nint): A pointer to the newly allocated Cairo32 format data. Must be freed by the caller. ### RGBToARGB(nint, int, nint, int, int, int) Converts RGB image data (3 bytes per pixel) to ARGB format (4 bytes per pixel) with full opacity (alpha = 255). ```csharp public static void RGBToARGB(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source RGB image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for ARGB image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### RGBToBGRA(nint, int, nint, int, int, int) Converts RGB image data (3 bytes per pixel) to BGRA format (4 bytes per pixel) with full opacity (alpha = 255). Swaps red and blue channels during conversion. ```csharp public static void RGBToBGRA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source RGB image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for BGRA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### RGBToRGBA(byte[], nint, int, int, int) Converts RGB image data (3 bytes per pixel) to RGBA format (4 bytes per pixel) with full opacity. This overload accepts input data as a byte array. ```csharp public static void RGBToRGBA(byte[] inputData, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputData (byte [ ]): The source RGB image data as a byte array. - outputPtr (nint): Pointer to the destination buffer for RGBA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. ### RGBToRGBA(nint, int, nint, int, int, int) Converts RGB image data (3 bytes per pixel) to RGBA format (4 bytes per pixel) with full opacity (alpha = 255). ```csharp public static void RGBToRGBA(nint inputPtr, int inputStride, nint outputPtr, int outputStride, int width, int height) ``` #### Parameters Parameters: - inputPtr (nint): Pointer to the source RGB image data. - inputStride (int): The number of bytes per row in the source image (including padding). - outputPtr (nint): Pointer to the destination buffer for RGBA image data. - outputStride (int): The number of bytes per row in the destination image (including padding). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. --- # Class DecklinkHelper Link: api/VisioForge.Core.Helpers.DecklinkHelper.html # Class DecklinkHelper # Class DecklinkHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides helper methods for working with Blackmagic DeckLink professional video hardware. This class contains extension methods and utilities for converting between DeckLink-specific formats and the framework's internal format representations. ```csharp public static class DecklinkHelper ``` #### Inheritance #### Inherited Members ## Methods ### GetVideoInfoFromMode(DecklinkMode, out int, out int, out VideoFrameRate) Extracts video format information from a DeckLink video mode. This method parses the DeckLink mode enumeration and returns the corresponding video resolution (width and height) and frame rate for the specified mode. ```csharp public static void GetVideoInfoFromMode(this DecklinkMode mode, out int width, out int height, out VideoFrameRate framerate) ``` #### Parameters Parameters: - mode (DecklinkMode): The DeckLink video mode to parse. - width (int): When this method returns, contains the horizontal resolution in pixels for the specified mode. - height (int): When this method returns, contains the vertical resolution in pixels for the specified mode. - framerate (VideoFrameRate): When this method returns, contains the frame rate information for the specified mode. #### Remarks Supports standard definition (NTSC/PAL), HD (720p/1080i/1080p), 2K DCI, and UHD 4K formats. For unrecognized modes, returns width=0, height=0, and framerate=25fps. ### ToFormat(DecklinkAudioFormat) Converts a DeckLink audio format to the framework's internal AudioFormatX representation. ```csharp public static AudioFormatX ToFormat(this DecklinkAudioFormat format) ``` #### Parameters Parameters: - format (DecklinkAudioFormat): The DeckLink audio format to convert. #### Returns Parameters: - (AudioFormatX): The corresponding AudioFormatX format. Returns S16LE as the default if the format is not recognized. --- # Class FilenameHelper Link: api/VisioForge.Core.Helpers.FilenameHelper.html # Class FilenameHelper # Class FilenameHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides utility methods for working with file names, extensions, and paths. ```csharp public static class FilenameHelper ``` #### Inheritance #### Inherited Members ## Methods ### ChangeFileExt(string, string) Changes the file extension of the specified file name to a new extension. ```csharp public static string ChangeFileExt(string filename, string ext) ``` #### Parameters Parameters: - filename (string): The original file name whose extension will be changed. - ext (string): The new extension to apply (should include the period, e.g., ".txt"). #### Returns Parameters: - (string): The file name with the new extension, or the original file name if no extension was found. ### GetFileExt(string) Gets the file extension from the specified file name, including the period. ```csharp public static string GetFileExt(string fileName) ``` #### Parameters Parameters: - fileName (string): The file name from which to extract the extension. #### Returns Parameters: - (string): The file extension including the period (e.g., ".txt"), or an empty string if no extension is found or an error occurs. ### IsAudioFile(string) Determines whether the specified file name represents an audio file based on its extension. ```csharp public static bool IsAudioFile(string filename) ``` #### Parameters Parameters: - filename (string): The file name to check. #### Returns Parameters: - (bool): true if the file extension matches common audio formats (WAV, MP3, OGG, M4A, FLAC, OPUS, SPEEX, WMA); otherwise, false. ### IsImageFile(string) Determines whether the specified file name represents an image file based on its extension. ```csharp public static bool IsImageFile(string filename) ``` #### Parameters Parameters: - filename (string): The file name to check. #### Returns Parameters: - (bool): true if the file extension matches common image formats (BMP, JPG, JPEG, GIF, PNG, TIF, TIFF); otherwise, false. ### SafeCreateFileUri(string) Creates a object from the specified file name, safely handling both absolute and relative paths. ```csharp public static Uri SafeCreateFileUri(string fileName) ``` #### Parameters Parameters: - fileName (string): The file name or path to convert to a URI. Can be either an absolute or relative path. #### Returns Parameters: - (Uri): A object representing the file. Relative paths are converted to absolute paths before creating the URI. --- # Class ImageConversionExtensions Link: api/VisioForge.Core.Helpers.ImageConversionExtensions.html # Class ImageConversionExtensions # Class ImageConversionExtensions **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Extension methods for converting between different image formats. ```csharp public static class ImageConversionExtensions ``` #### Inheritance #### Inherited Members ## Methods ### ToCairoImageSurface(SKBitmap) Converts an SKBitmap to Cairo.ImageSurface. ```csharp public static ImageSurface ToCairoImageSurface(this SKBitmap bitmap) ``` #### Parameters Parameters: - bitmap (SKBitmap): The SKBitmap to convert. #### Returns Parameters: - (ImageSurface): The converted Cairo.ImageSurface. --- # Class ImageHelper Link: api/VisioForge.Core.Helpers.ImageHelper.html # Class ImageHelper # Class ImageHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides comprehensive image processing utilities for RGB/RGBA image manipulation, stride calculations, and pixel format conversions. This static helper class handles low-level image operations including memory copying, color format conversions, image flipping, and stride calculations for various pixel formats (RGB24, RGB32, ARGB). Essential for video frame processing and image manipulation operations across the VisioForge media framework. ```csharp public static class ImageHelper ``` #### Inheritance #### Inherited Members ## Methods ### DrawRGBImage(nint, int, int, nint, int, int, int, bool, ILogger) Copies an uncompressed RGB image from a source buffer to a destination buffer at specified coordinates. Supports both RGB24 (3 bytes per pixel) and RGB32 (4 bytes per pixel) formats. ```csharp public static void DrawRGBImage(nint src, int srcWidth, int srcHeight, nint dest, int destWidth, int x, int y, bool draw32b, ILogger logger) ``` #### Parameters Parameters: - src (nint): Pointer to the source image buffer containing raw RGB pixel data. - srcWidth (int): Width of the source image in pixels. - srcHeight (int): Height of the source image in pixels. - dest (nint): Pointer to the destination image buffer where the image will be drawn. - destWidth (int): Width of the destination image in pixels (used for stride calculation). - x (int): X-coordinate in the destination image where the source image will be placed. - y (int): Y-coordinate in the destination image where the source image will be placed. - draw32b (bool): If true, processes as RGB32 format (4 bytes per pixel); if false, processes as RGB24 format (3 bytes per pixel). - logger (ILogger): Optional logger instance for error reporting. Pass null to disable logging. ### FlipRGBImage(byte[], int, int) Flips an RGB24 image vertically by reversing the order of scan lines. This is commonly needed when working with bitmap formats that store pixels bottom-up. ```csharp public static byte[] FlipRGBImage(byte[] data, int width, int height) ``` #### Parameters Parameters: - data (byte [ ]): The raw RGB24 image data as a byte array (3 bytes per pixel). - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. #### Returns Parameters: - (byte [ ]): A new byte array containing the vertically flipped image data. ### GetStrideByPixelSize(int, byte) Calculates the stride (bytes per row) for an image based on arbitrary pixel size. The stride is aligned to 4-byte boundaries for optimal memory access. ```csharp public static int GetStrideByPixelSize(int width, byte pixelSize) ``` #### Parameters Parameters: - width (int): The width of the image in pixels. - pixelSize (byte): The size of each pixel in bytes (e.g., 3 for RGB24, 4 for RGB32). #### Returns Parameters: - (int): The stride value in bytes, aligned to 4-byte boundaries. ### GetStrideRGB(int, PixelFormatX) Calculates the stride (bytes per row) for an RGB image based on its width and pixel format. The stride is aligned to 4-byte boundaries as required by many graphics APIs. ```csharp public static int GetStrideRGB(int width, PixelFormatX pixelFormat) ``` #### Parameters Parameters: - width (int): The width of the image in pixels. - pixelFormat (PixelFormatX): The pixel format of the image (Format24bppRgb, Format32bppArgb, etc.). #### Returns Parameters: - (int): The stride value in bytes, aligned to 4-byte boundaries. Returns 0 for unsupported formats. ### GetStrideRGB24(int) Calculates the stride (bytes per row) for an RGB24 image (3 bytes per pixel). The stride is aligned to 4-byte boundaries for optimal memory access. ```csharp public static int GetStrideRGB24(int width) ``` #### Parameters Parameters: - width (int): The width of the image in pixels. #### Returns Parameters: - (int): The stride value in bytes, aligned to 4-byte boundaries. ### GetStrideRGB32(int) Calculates the stride (bytes per row) for an RGB32 image (4 bytes per pixel). The stride is aligned to 4-byte boundaries for optimal memory access. ```csharp public static int GetStrideRGB32(int width) ``` #### Parameters Parameters: - width (int): The width of the image in pixels. #### Returns Parameters: - (int): The stride value in bytes, aligned to 4-byte boundaries. ### GetStrideYUY2(int) Calculates the stride (bytes per row) for a YUY2 image format. YUY2 uses 2 bytes per pixel in a packed format (Y0 U0 Y1 V0). ```csharp public static int GetStrideYUY2(int width) ``` #### Parameters Parameters: - width (int): The width of the image in pixels. #### Returns Parameters: - (int): The stride value in bytes (width * 2). ### MakeCOLORREF(byte, byte, byte) Creates a COLORREF value from individual red, green, and blue color components. ```csharp public static int MakeCOLORREF(byte r, byte g, byte b) ``` #### Parameters Parameters: - r (byte): The red component value (0-255). - g (byte): The green component value (0-255). - b (byte): The blue component value (0-255). #### Returns Parameters: - (int): A 32-bit integer representing the COLORREF value in Windows GDI format (0x00BBGGRR). --- # Class MathHelper Link: api/VisioForge.Core.Helpers.MathHelper.html # Class MathHelper # Class MathHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides mathematical utility methods and extension methods for common mathematical operations. ```csharp public static class MathHelper ``` #### Inheritance #### Inherited Members ## Methods ### Clamp(T, T, T) Clamps a value between a minimum and maximum range. ```csharp public static T Clamp(this T val, T min, T max) where T : IComparable ``` #### Parameters Parameters: - val (T): The value to clamp. - min (T): The minimum allowed value. - max (T): The maximum allowed value. #### Returns Parameters: - (T): The clamped value. Returns min if val is less than min, max if val is greater than max, otherwise returns val. #### Type Parameters Parameters: - T (): The type of the value to clamp. Must implement IComparable. ### DegreesToRadians(double) Converts an angle from degrees to radians. ```csharp public static double DegreesToRadians(double degrees) ``` #### Parameters Parameters: - degrees (double): The angle in degrees to convert. #### Returns Parameters: - (double): The angle converted to radians. ### GenRange(int, int, int) Generates a sequence of integers within a specified range with a given step size. ```csharp public static IEnumerable GenRange(int min, int max, int step) ``` #### Parameters Parameters: - min (int): The starting value of the range (inclusive). - max (int): The ending value of the range (inclusive). - step (int): The increment between each value in the sequence. #### Returns Parameters: - (IEnumerable < int >): An enumerable sequence of integers from min to max with the specified step size. ### HighWord(uint) Extracts the high word (upper 16 bits) from a 32-bit unsigned integer. ```csharp public static uint HighWord(this uint number) ``` #### Parameters Parameters: - number (uint): The 32-bit unsigned integer to extract the high word from. #### Returns Parameters: - (uint): The upper 16 bits of the input number as a 32-bit unsigned integer. ### Hypot(double, double) Calculates the length of the hypotenuse of a right triangle given the lengths of the two other sides. ```csharp public static double Hypot(double x, double y) ``` #### Parameters Parameters: - x (double): The length of one side of the right triangle. - y (double): The length of the other side of the right triangle. #### Returns Parameters: - (double): The length of the hypotenuse, calculated as sqrt(x² + y²). ### IsIntInRange(int, int, int) Determines whether an integer value is within a specified range (inclusive). ```csharp public static bool IsIntInRange(int value, int min, int max) ``` #### Parameters Parameters: - value (int): The value to check. - min (int): The minimum value of the range (inclusive). - max (int): The maximum value of the range (inclusive). #### Returns Parameters: - (bool): True if the value is within the range [min, max], false otherwise. ### LowWord(uint) Extracts the low word (lower 16 bits) from a 32-bit unsigned integer. ```csharp public static uint LowWord(this uint number) ``` #### Parameters Parameters: - number (uint): The 32-bit unsigned integer to extract the low word from. #### Returns Parameters: - (uint): The lower 16 bits of the input number as a 32-bit unsigned integer. ### RoundToSpecial(int, int) Rounds a value down to the nearest multiple of a specified number. ```csharp public static int RoundToSpecial(int value, int roundTo) ``` #### Parameters Parameters: - value (int): The value to round. - roundTo (int): The multiple to round down to. #### Returns Parameters: - (int): The value rounded down to the nearest multiple of roundTo. --- # Class ObservableCollectionHelper Link: api/VisioForge.Core.Helpers.ObservableCollectionHelper.html # Class ObservableCollectionHelper # Class ObservableCollectionHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides extension methods for to perform bulk operations that would otherwise require multiple individual operations, potentially improving performance and reducing the number of collection change notifications. ```csharp public static class ObservableCollectionHelper ``` #### Inheritance #### Inherited Members ## Methods ### AddRange(ObservableCollection, IEnumerable) Adds multiple items to the end of the . ```csharp public static void AddRange(this ObservableCollection collection, IEnumerable items) ``` #### Parameters Parameters: - collection (ObservableCollection < T >): The collection to add items to. - items (IEnumerable < T >): The enumerable collection of items to add. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks This method adds each item individually, triggering a CollectionChanged event for each addition. For large collections, consider whether batch notifications would be more appropriate. ### AddRange(ObservableCollection, T[]) Adds multiple items from an array to the end of the . ```csharp public static void AddRange(this ObservableCollection collection, T[] items) ``` #### Parameters Parameters: - collection (ObservableCollection < T >): The collection to add items to. - items (T [ ]): The array of items to add. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks This overload is provided for convenience when working with arrays. Each item triggers a separate CollectionChanged event. ### InsertRange(ObservableCollection, int, IEnumerable) Inserts multiple items into the at the specified index. ```csharp public static void InsertRange(this ObservableCollection collection, int index, IEnumerable items) ``` #### Parameters Parameters: - collection (ObservableCollection < T >): The collection to insert items into. - index (int): The zero-based index at which the first item should be inserted. - items (IEnumerable < T >): The enumerable collection of items to insert. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks Items are inserted sequentially at consecutive indices starting from the specified index. Each insertion triggers a separate CollectionChanged event. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when index is negative or greater than the collection count. ### RemoveRange(ObservableCollection, IEnumerable) Removes all occurrences of the specified items from the . ```csharp public static void RemoveRange(this ObservableCollection collection, IEnumerable items) ``` #### Parameters Parameters: - collection (ObservableCollection < T >): The collection to remove items from. - items (IEnumerable < T >): The enumerable collection of items to remove. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks Only the first occurrence of each item is removed. If an item appears multiple times in the collection, only the first instance will be removed. Each removal triggers a separate CollectionChanged event. ### RemoveRange(ObservableCollection, int, int) Removes a range of items from the starting at the specified index. ```csharp public static void RemoveRange(this ObservableCollection collection, int index, int count) ``` #### Parameters Parameters: - collection (ObservableCollection < T >): The collection to remove items from. - index (int): The zero-based starting index of the range of items to remove. - count (int): The number of items to remove. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks Items are removed one at a time from the same index position, as the collection shifts after each removal. Each removal triggers a separate CollectionChanged event. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when index is negative or greater than or equal to the collection count. ### ToObservableCollection(List) Converts a to an . ```csharp public static ObservableCollection ToObservableCollection(this List collection) ``` #### Parameters Parameters: - collection (List < T >): The list to convert. #### Returns Parameters: - (ObservableCollection < T >): A new containing all items from the source list. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks This method creates a new ObservableCollection and copies all items from the source list. The original list remains unchanged. ### ToObservableCollection(T[]) Converts an array to an . ```csharp public static ObservableCollection ToObservableCollection(this T[] collection) ``` #### Parameters Parameters: - collection (T [ ]): The array to convert. #### Returns Parameters: - (ObservableCollection < T >): A new containing all items from the source array. #### Type Parameters Parameters: - T (): The type of elements in the collection. #### Remarks This method creates a new ObservableCollection and copies all items from the source array. The original array remains unchanged. --- # Class PhotoGalleryHelper Link: api/VisioForge.Core.Helpers.PhotoGalleryHelper.html # Class PhotoGalleryHelper # Class PhotoGalleryHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides helper methods for adding media files (photos and videos) to device galleries on mobile platforms. This class contains platform-specific implementations for Android and iOS to save media files to the device's photo/video gallery, making them accessible through the native gallery applications. ```csharp public static class PhotoGalleryHelper ``` #### Inheritance #### Inherited Members --- # Class RandomHelper Link: api/VisioForge.Core.Helpers.RandomHelper.html # Class RandomHelper # Class RandomHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides utility methods for generating random values and unique identifiers. ```csharp public static class RandomHelper ``` #### Inheritance #### Inherited Members ## Remarks This class offers thread-safe methods for generating random integers and timestamp-based unique identifiers useful for file naming, logging, or tracking purposes. ## Methods ### Get() Generates a non-negative random integer. ```csharp public static int Get() ``` #### Returns Parameters: - (int): A 32-bit signed integer greater than or equal to 0 and less than . #### Remarks This method uses the shared Random instance to generate values. For thread-safe operations in multi-threaded scenarios, consider implementing additional synchronization if needed. ### GetWithDate() Generates a unique string identifier combining the current timestamp with a random number. ```csharp public static string GetWithDate() ``` #### Returns Parameters: - (string): A string in the format "YYYY_M_D_H_m_s_ms_randomNumber" where each component represents the current date/time values and a random integer. For example: "2022_2_4_14_30_45_123_456789". #### Remarks This method is useful for generating unique file names, log entries, or any identifier that requires both temporal ordering and uniqueness. The timestamp ensures chronological sorting while the random number helps prevent collisions when called multiple times within the same millisecond. --- # Class SizeHelper Link: api/VisioForge.Core.Helpers.SizeHelper.html # Class SizeHelper # Class SizeHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides extension methods for converting between System.Drawing.Size and VisioForge.Core.Types.Size types. This helper class facilitates seamless conversion between the platform-specific System.Drawing.Size and the framework's internal Size representation, ensuring compatibility across different UI frameworks. ```csharp public static class SizeHelper ``` #### Inheritance #### Inherited Members --- # Class SkiaHelper Link: api/VisioForge.Core.Helpers.SkiaHelper.html # Class SkiaHelper # Class SkiaHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides helper methods for working with SkiaSharp bitmaps, including format conversions, image transformations, and interoperability with video frames. ```csharp public static class SkiaHelper ``` #### Inheritance #### Inherited Members ## Methods ### ByteArrayRGBAToSKBitmap(byte[], int, int) Converts a byte array containing RGBA pixel data to an SKBitmap. ```csharp public static SKBitmap ByteArrayRGBAToSKBitmap(byte[] frame, int width, int height) ``` #### Parameters Parameters: - frame (byte [ ]): The byte array containing RGBA pixel data. - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. ### ByteArrayRGBToSKBitmap(byte[], int, int) Converts a byte array containing RGB pixel data to an SKBitmap. The RGB data is converted to RGBA format internally. ```csharp public static SKBitmap ByteArrayRGBToSKBitmap(byte[] frame, int width, int height) ``` #### Parameters Parameters: - frame (byte [ ]): The byte array containing RGB pixel data. - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. ### FlipHorizontal(SKBitmap) Creates a new SKBitmap that is horizontally flipped (mirrored) from the original. ```csharp public static SKBitmap FlipHorizontal(this SKBitmap bmp) ``` #### Parameters Parameters: - bmp (SKBitmap): The original SKBitmap to flip. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the horizontally flipped image. ### FlipVertical(SKBitmap) Creates a new SKBitmap that is vertically flipped from the original. ```csharp public static SKBitmap FlipVertical(this SKBitmap bmp) ``` #### Parameters Parameters: - bmp (SKBitmap): The original SKBitmap to flip. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the vertically flipped image. ### RGBAToSKBitmap(nint, int, int) Converts an unmanaged memory pointer containing RGBA pixel data to an SKBitmap. ```csharp public static SKBitmap RGBAToSKBitmap(nint data, int width, int height) ``` #### Parameters Parameters: - data (nint): A pointer to unmanaged memory containing RGBA pixel data. - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. ### Rotate(SKBitmap, SKRotationAngle) Rotates an SKBitmap by the specified angle. ```csharp public static SKBitmap Rotate(this SKBitmap originalBitmap, SKRotationAngle rotation) ``` #### Parameters Parameters: - originalBitmap (SKBitmap): The original SKBitmap to rotate. - rotation (SKRotationAngle): The rotation angle to apply (90, 180, or 270 degrees). #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the rotated image with dimensions adjusted as necessary. ### SaveToFile(SKBitmap, string, SKEncodedImageFormat, int) Saves an SKBitmap to a file in the specified format. ```csharp public static void SaveToFile(this SKBitmap bitmap, string filename, SKEncodedImageFormat format = SKEncodedImageFormat.Png, int quality = 85) ``` #### Parameters Parameters: - bitmap (SKBitmap): The SKBitmap to save. - filename (string): The full path and filename where the image will be saved. - format (SKEncodedImageFormat): The image format to use for encoding. Defaults to PNG. - quality (int): The quality level for lossy formats (0-100). Defaults to 85. Only applicable for formats like JPEG. ### ToARGB(SKBitmap, out int) Converts an SKBitmap to an ARGB byte array and returns a pointer to the allocated memory. ```csharp public static nint ToARGB(this SKBitmap bitmap, out int length) ``` #### Parameters Parameters: - bitmap (SKBitmap): The SKBitmap to convert. - length (int): When this method returns, contains the length of the allocated memory in bytes. #### Returns Parameters: - (nint): A pointer to unmanaged memory containing the ARGB data. The caller is responsible for freeing this memory using Marshal.FreeHGlobal. ### VideoFrameBGRAToSKBitmap(VideoFrameX) Converts a VideoFrameX containing BGRA data to an SKBitmap. This is a direct copy as SKBitmap uses BGRA format internally. ```csharp public static SKBitmap VideoFrameBGRAToSKBitmap(this VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The VideoFrameX containing BGRA pixel data. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the image data. ### VideoFrameRGBAToSKBitmap(VideoFrame) Converts a VideoFrame containing RGBA data to an SKBitmap. ```csharp public static SKBitmap VideoFrameRGBAToSKBitmap(this VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The VideoFrame containing RGBA pixel data. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. ### VideoFrameRGBAToSKBitmap(VideoFrameX) Converts a VideoFrameX containing RGBA data to an SKBitmap. The RGBA data is converted to BGRA format to match SKBitmap's internal format. ```csharp public static SKBitmap VideoFrameRGBAToSKBitmap(this VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The VideoFrameX containing RGBA pixel data. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. ### VideoFrameRGBToSKBitmap(VideoFrameX) Converts a VideoFrameX containing RGB data to an SKBitmap. The RGB data is converted to BGRA format to match SKBitmap's internal format. ```csharp public static SKBitmap VideoFrameRGBToSKBitmap(this VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The VideoFrameX containing RGB pixel data. #### Returns Parameters: - (SKBitmap): A new SKBitmap containing the converted image data. --- # Enum SKRotationAngle Link: api/VisioForge.Core.Helpers.SKRotationAngle.html # Enum SKRotationAngle # Enum SKRotationAngle **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Specifies the rotation angles supported for bitmap rotation operations. ```csharp public enum SKRotationAngle ``` ## Fields Parameters: - Degrees90 (): Rotate the image 90 degrees clockwise. - Degrees180 (): Rotate the image 180 degrees. - Degrees270 (): Rotate the image 270 degrees clockwise (90 degrees counter-clockwise). --- # Class UIThreadHelper Link: api/VisioForge.Core.Helpers.UIThreadHelper.html # Class UIThreadHelper # Class UIThreadHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides helper methods for executing code on the UI thread in cross-platform applications. Automatically detects and captures the UI thread context for WPF, WinForms, and MAUI applications. ```csharp public static class UIThreadHelper ``` #### Inheritance #### Inherited Members ## Properties ### IsUIThread Gets a value indicating whether the current thread is the UI thread. ```csharp public static bool IsUIThread { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### RunOnUIThread(Action) Executes the specified action on the UI thread. ```csharp public static void RunOnUIThread(Action action) ``` #### Parameters Parameters: - action (Action): The action to execute on the UI thread. #### Remarks If already on the UI thread, the action is executed immediately. Otherwise, the action is posted to the UI thread's synchronization context. If no UI context is available, the action runs on the current thread as a fallback. ### RunOnUIThreadAsync(Action) Executes the specified action on the UI thread asynchronously. ```csharp public static Task RunOnUIThreadAsync(Action action) ``` #### Parameters Parameters: - action (Action): The action to execute on the UI thread. #### Returns Parameters: - (Task): A task that represents the asynchronous operation. #### Remarks This method returns a Task that completes when the action has been executed. If the action throws an exception, it will be propagated through the returned Task. ### RunOnUIThreadAsync(Func) Executes the specified function on the UI thread asynchronously and returns its result. ```csharp public static Task RunOnUIThreadAsync(Func function) ``` #### Parameters Parameters: - function (Func < T >): The function to execute on the UI thread. #### Returns Parameters: - (Task < T >): A task that represents the asynchronous operation and contains the function's result. #### Type Parameters Parameters: - T (): The type of the result returned by the function. #### Remarks This method returns a Task that completes when the function has been executed. If the function throws an exception, it will be propagated through the returned Task. --- # Class VFRectHelper Link: api/VisioForge.Core.Helpers.VFRectHelper.html # Class VFRectHelper # Class VFRectHelper **Namespace**: VisioForge.Core.Helpers **Assembly**: VisioForge.Core.dll Provides extension methods and helper utilities for converting between VFRectIntl and other rectangle types. ```csharp public static class VFRectHelper ``` #### Inheritance #### Inherited Members ## Remarks This static class contains platform-specific and cross-platform conversion methods for rectangle structures, facilitating interoperability between VisioForge's internal rectangle type (VFRectIntl) and standard .NET rectangle types. ## Methods ### IsEmpty(VFRectIntl) Determines whether the specified VFRectIntl instance represents an empty rectangle. ```csharp public static bool IsEmpty(this VFRectIntl rect) ``` #### Parameters Parameters: - rect (VFRectIntl): The VFRectIntl instance to check. #### Returns Parameters: - (bool): true if all coordinates (Left, Top, Right, Bottom) are zero, indicating an empty rectangle; otherwise, false. #### Remarks An empty rectangle is defined as having all coordinate values set to zero. This method is useful for checking if a rectangle has been initialized or contains valid dimensions. ### ToRect(VFRectIntl) Converts a VFRectIntl instance to a Rect instance. ```csharp public static Rect ToRect(this VFRectIntl rect) ``` #### Parameters Parameters: - rect (VFRectIntl): The VFRectIntl instance to convert. #### Returns Parameters: - (Rect): A new Rect instance with the same dimensions as the input VFRectIntl. #### Remarks This method provides cross-platform rectangle conversion between VisioForge's internal rectangle type and the standard Rect type used throughout the framework. ### ToRectIntl(Rect) Converts a Rect instance to a VFRectIntl instance. ```csharp public static VFRectIntl ToRectIntl(this Rect rect) ``` #### Parameters Parameters: - rect (Rect): The Rect instance to convert. #### Returns Parameters: - (VFRectIntl): A new VFRectIntl instance with the same dimensions as the input Rect. #### Remarks This method provides cross-platform rectangle conversion from the standard Rect type to VisioForge's internal rectangle representation. --- # Namespace VisioForge.Core.Helpers Link: api/VisioForge.Core.Helpers.html # Namespace VisioForge.Core.Helpers # Namespace VisioForge.Core.Helpers ### Classes Parameters: - (): A generic circular buffer implementation that allows efficient insertion and removal of elements at both ends of the buffer. When the buffer reaches full capacity, adding new elements will automatically remove elements from the opposite end. - (): Provides methods for converting between different color space formats such as RGB, RGBA, ARGB, BGRA, YUV, and others. Supports hardware-accelerated conversions using Intel IPP when available on Windows platforms. - (): Provides helper methods for working with Blackmagic DeckLink professional video hardware. This class contains extension methods and utilities for converting between DeckLink-specific formats and the framework's internal format representations. - (): Provides utility methods for working with file names, extensions, and paths. - (): Extension methods for converting between different image formats. - (): Provides comprehensive image processing utilities for RGB/RGBA image manipulation, stride calculations, and pixel format conversions. This static helper class handles low-level image operations including memory copying, color format conversions, image flipping, and stride calculations for various pixel formats (RGB24, RGB32, ARGB). Essential for video frame processing and image manipulation operations across the VisioForge media framework. - (): Provides mathematical utility methods and extension methods for common mathematical operations. - (): Provides extension methods for to perform bulk operations that would otherwise require multiple individual operations, potentially improving performance and reducing the number of collection change notifications. - (): Provides helper methods for adding media files (photos and videos) to device galleries on mobile platforms. This class contains platform-specific implementations for Android and iOS to save media files to the device's photo/video gallery, making them accessible through the native gallery applications. - (): Provides utility methods for generating random values and unique identifiers. - (): Provides extension methods for converting between System.Drawing.Size and VisioForge.Core.Types.Size types. This helper class facilitates seamless conversion between the platform-specific System.Drawing.Size and the framework's internal Size representation, ensuring compatibility across different UI frameworks. - (): Provides helper methods for working with SkiaSharp bitmaps, including format conversions, image transformations, and interoperability with video frames. - (): Provides helper methods for executing code on the UI thread in cross-platform applications. Automatically detects and captures the UI thread context for WPF, WinForms, and MAUI applications. - (): Provides extension methods and helper utilities for converting between VFRectIntl and other rectangle types. ### Enums Parameters: - (): Specifies the rotation angles supported for bitmap rotation operations. --- # Enum CodeSize Link: api/VisioForge.Core.LibDMTX.CodeSize.html # Enum CodeSize # Enum CodeSize **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Symbol size enumeration for DataMatrix codes. ```csharp public enum CodeSize : short ``` ## Fields Parameters: - SymbolRectAuto (): - SymbolSquareAuto (): - SymbolShapeAuto (): - Symbol10x10 (): - Symbol12x12 (): - Symbol14x14 (): - Symbol16x16 (): - Symbol18x18 (): - Symbol20x20 (): - Symbol22x22 (): - Symbol24x24 (): - Symbol26x26 (): - Symbol32x32 (): - Symbol36x36 (): - Symbol40x40 (): - Symbol44x44 (): - Symbol48x48 (): - Symbol52x52 (): - Symbol64x64 (): - Symbol72x72 (): - Symbol80x80 (): - Symbol88x88 (): - Symbol96x96 (): - Symbol104x104 (): - Symbol120x120 (): - Symbol132x132 (): - Symbol144x144 (): - Symbol8x18 (): - Symbol8x32 (): - Symbol12x26 (): - Symbol12x36 (): - Symbol16x36 (): - Symbol16x48 (): --- # Enum CodeType Link: api/VisioForge.Core.LibDMTX.CodeType.html # Enum CodeType # Enum CodeType **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Symbol type (DataMatrix or Mosaic). ```csharp public enum CodeType : ushort ``` ## Fields Parameters: - DataMatrix (): - Mosaic (): Composite of multiple data matrixes. --- # Class Corners Link: api/VisioForge.Core.LibDMTX.Corners.html # Class Corners # Class Corners **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll The four corners of a DataMatrix symbol. ```csharp public class Corners ``` #### Inheritance #### Inherited Members ## Fields ### Corner0 ```csharp public DmtxPoint Corner0 ``` #### Field Value Parameters: - (DmtxPoint): ### Corner1 ```csharp public DmtxPoint Corner1 ``` #### Field Value Parameters: - (DmtxPoint): ### Corner2 ```csharp public DmtxPoint Corner2 ``` #### Field Value Parameters: - (DmtxPoint): ### Corner3 ```csharp public DmtxPoint Corner3 ``` #### Field Value Parameters: - (DmtxPoint): --- # Class DecodeOptions Link: api/VisioForge.Core.LibDMTX.DecodeOptions.html # Class DecodeOptions # Class DecodeOptions **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Options used for decoding DataMatrix symbols. ```csharp public class DecodeOptions ``` #### Inheritance #### Inherited Members ## Fields ### CodeType ```csharp public CodeType CodeType ``` #### Field Value Parameters: - (CodeType): ### CorrectionsMax ```csharp public short CorrectionsMax ``` #### Field Value Parameters: - (short): ### EdgeMax ```csharp public short EdgeMax ``` #### Field Value Parameters: - (short): ### EdgeMin ```csharp public short EdgeMin ``` #### Field Value Parameters: - (short): ### EdgeThresh ```csharp public short EdgeThresh ``` #### Field Value Parameters: - (short): ### MaxCodes ```csharp public short MaxCodes ``` #### Field Value Parameters: - (short): ### ScanGap ```csharp public short ScanGap ``` #### Field Value Parameters: - (short): ### Shrink ```csharp public short Shrink ``` #### Field Value Parameters: - (short): ### SizeIdxExpected ```csharp public CodeSize SizeIdxExpected ``` #### Field Value Parameters: - (CodeSize): ### SquareDevn ```csharp public short SquareDevn ``` #### Field Value Parameters: - (short): ### TimeoutMS ```csharp public int TimeoutMS ``` #### Field Value Parameters: - (int): ### XMax ```csharp public short XMax ``` #### Field Value Parameters: - (short): ### XMin ```csharp public short XMin ``` #### Field Value Parameters: - (short): ### YMax ```csharp public short YMax ``` #### Field Value Parameters: - (short): ### YMin ```csharp public short YMin ``` #### Field Value Parameters: - (short): --- # Class Dmtx Link: api/VisioForge.Core.LibDMTX.Dmtx.html # Class Dmtx # Class Dmtx **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll High-level wrapper for decoding and encoding DataMatrix barcodes using libdmtx. ```csharp public static class Dmtx ``` #### Inheritance #### Inherited Members ## Fields ### DmtxUndefined ```csharp public const int DmtxUndefined = -1 ``` #### Field Value Parameters: - (int): ## Properties ### LoadedDllPath Gets the path where the LibDMTX DLL was loaded from. ```csharp public static string LoadedDllPath { get; } ``` #### Property Value Parameters: - (string): ### Version Gets the version of the underlying libdmtx library. ```csharp public static string Version { get; } ``` #### Property Value Parameters: - (string): ## Methods ### Decode(SKBitmap, DecodeOptions) Decodes a bitmap returning all DataMatrix symbols found in the image. ```csharp public static DmtxDecoded[] Decode(SKBitmap b, DecodeOptions options) ``` #### Parameters Parameters: - b (SKBitmap): The bitmap to decode. - options (DecodeOptions): The options used for decoding. #### Returns Parameters: - (DmtxDecoded [ ]): An array of decoded symbols. ### Encode(byte[], EncodeOptions) Encodes data into a DataMatrix barcode. ```csharp public static DmtxEncoded Encode(byte[] data, EncodeOptions options) ``` #### Parameters Parameters: - data (byte [ ]): The data to encode. - options (EncodeOptions): The options used for encoding. #### Returns Parameters: - (DmtxEncoded): The encoded barcode as a bitmap. ### IsLibraryAvailable() Checks if the LibDMTX library is available and can be loaded. ```csharp public static bool IsLibraryAvailable() ``` #### Returns Parameters: - (bool): True if the library is available, false otherwise. --- # Class DmtxDecoded Link: api/VisioForge.Core.LibDMTX.DmtxDecoded.html # Class DmtxDecoded # Class DmtxDecoded **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Result from decoding a DataMatrix symbol. ```csharp public class DmtxDecoded ``` #### Inheritance #### Inherited Members ## Fields ### Corners ```csharp public Corners Corners ``` #### Field Value Parameters: - (Corners): ### Data The data contained in the symbol. If the contains a string use the following code to convert it.
string str = Encoding.ASCII.GetString(decodeResults[0].Data).TrimEnd('\0');
```csharp public byte[] Data ``` #### Field Value Parameters: - (byte [ ]): ### SymbolInfo Information about the symbol that was decoded. ```csharp public SymbolInfo SymbolInfo ``` #### Field Value Parameters: - (SymbolInfo): --- # Class DmtxEncoded Link: api/VisioForge.Core.LibDMTX.DmtxEncoded.html # Class DmtxEncoded # Class DmtxEncoded **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Result from encoding a DataMatrix symbol. ```csharp public class DmtxEncoded ``` #### Inheritance #### Inherited Members ## Fields ### Bitmap The bitmap containing the symbol. ```csharp public SKBitmap Bitmap ``` #### Field Value Parameters: - (SKBitmap): ### SymbolInfo Information about the symbol that was created. ```csharp public SymbolInfo SymbolInfo ``` #### Field Value Parameters: - (SymbolInfo): --- # Class DmtxException Link: api/VisioForge.Core.LibDMTX.DmtxException.html # Class DmtxException # Class DmtxException **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Base exception for libdmtx operations. ```csharp public class DmtxException : ApplicationException, ISerializable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### DmtxException() Initializes a new instance of the class. ```csharp public DmtxException() ``` ### DmtxException(string) Initializes a new instance of the class with a specified error message. ```csharp public DmtxException(string message) ``` #### Parameters Parameters: - message (string): ### DmtxException(string, Exception) Initializes a new instance of the class with a specified error message and inner exception. ```csharp public DmtxException(string message, Exception innerException) ``` #### Parameters Parameters: - message (string): - innerException (Exception): --- # Class DmtxInvalidArgumentException Link: api/VisioForge.Core.LibDMTX.DmtxInvalidArgumentException.html # Class DmtxInvalidArgumentException # Class DmtxInvalidArgumentException **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Exception thrown when invalid arguments are provided to libdmtx. ```csharp public class DmtxInvalidArgumentException : DmtxException, ISerializable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DmtxInvalidArgumentException() Initializes a new instance of the class. ```csharp public DmtxInvalidArgumentException() ``` ### DmtxInvalidArgumentException(string) Initializes a new instance of the class with a specified error message. ```csharp public DmtxInvalidArgumentException(string message) ``` #### Parameters Parameters: - message (string): ### DmtxInvalidArgumentException(string, Exception) Initializes a new instance of the class with a specified error message and inner exception. ```csharp public DmtxInvalidArgumentException(string message, Exception innerException) ``` #### Parameters Parameters: - message (string): - innerException (Exception): --- # Class DMTXNativeLibrary Link: api/VisioForge.Core.LibDMTX.DMTXNativeLibrary.html # Class DMTXNativeLibrary # Class DMTXNativeLibrary **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Platform-specific library loader for libdmtx ```csharp public static class DMTXNativeLibrary ``` #### Inheritance #### Inherited Members ## Properties ### LoadedDllPath Gets the path where the DLL was loaded from. ```csharp public static string LoadedDllPath { get; } ``` #### Property Value Parameters: - (string): ## Methods ### GetVersion() Gets the version string from the native library. ```csharp public static string GetVersion() ``` #### Returns Parameters: - (string): --- # Class DmtxOutOfMemoryException Link: api/VisioForge.Core.LibDMTX.DmtxOutOfMemoryException.html # Class DmtxOutOfMemoryException # Class DmtxOutOfMemoryException **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Exception thrown when libdmtx runs out of memory. ```csharp public class DmtxOutOfMemoryException : DmtxException, ISerializable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DmtxOutOfMemoryException() Initializes a new instance of the class. ```csharp public DmtxOutOfMemoryException() ``` ### DmtxOutOfMemoryException(string) Initializes a new instance of the class with a specified error message. ```csharp public DmtxOutOfMemoryException(string message) ``` #### Parameters Parameters: - message (string): ### DmtxOutOfMemoryException(string, Exception) Initializes a new instance of the class with a specified error message and inner exception. ```csharp public DmtxOutOfMemoryException(string message, Exception innerException) ``` #### Parameters Parameters: - message (string): - innerException (Exception): --- # Class DmtxPoint Link: api/VisioForge.Core.LibDMTX.DmtxPoint.html # Class DmtxPoint # Class DmtxPoint **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Represents a 2D point. ```csharp public class DmtxPoint ``` #### Inheritance #### Inherited Members ## Fields ### X ```csharp public ushort X ``` #### Field Value Parameters: - (ushort): ### Y ```csharp public ushort Y ``` #### Field Value Parameters: - (ushort): --- # Enum DmtxSymbolSize Link: api/VisioForge.Core.LibDMTX.DmtxSymbolSize.html # Enum DmtxSymbolSize # Enum DmtxSymbolSize **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Symbol size enumeration matching libdmtx. ```csharp public enum DmtxSymbolSize ``` ## Fields Parameters: - DmtxSymbolRectAuto (): - DmtxSymbolSquareAuto (): - DmtxSymbolShapeAuto (): - DmtxSymbol10x10 (): - DmtxSymbol12x12 (): - DmtxSymbol14x14 (): - DmtxSymbol16x16 (): - DmtxSymbol18x18 (): - DmtxSymbol20x20 (): - DmtxSymbol22x22 (): - DmtxSymbol24x24 (): - DmtxSymbol26x26 (): - DmtxSymbol32x32 (): - DmtxSymbol36x36 (): - DmtxSymbol40x40 (): - DmtxSymbol44x44 (): - DmtxSymbol48x48 (): - DmtxSymbol52x52 (): - DmtxSymbol64x64 (): - DmtxSymbol72x72 (): - DmtxSymbol80x80 (): - DmtxSymbol88x88 (): - DmtxSymbol96x96 (): - DmtxSymbol104x104 (): - DmtxSymbol120x120 (): - DmtxSymbol132x132 (): - DmtxSymbol144x144 (): - DmtxSymbol8x18 (): - DmtxSymbol8x32 (): - DmtxSymbol12x26 (): - DmtxSymbol12x36 (): - DmtxSymbol16x36 (): - DmtxSymbol16x48 (): --- # Class EncodeOptions Link: api/VisioForge.Core.LibDMTX.EncodeOptions.html # Class EncodeOptions # Class EncodeOptions **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Options used for encoding DataMatrix symbols. ```csharp public class EncodeOptions ``` #### Inheritance #### Inherited Members ## Constructors ### EncodeOptions() Initializes a new instance of the class. ```csharp public EncodeOptions() ``` ## Fields ### CodeType Type of symbol to generate. ```csharp public CodeType CodeType ``` #### Field Value Parameters: - (CodeType): ### MarginSize Whitespace padding in pixels around symbol. ```csharp public ushort MarginSize ``` #### Field Value Parameters: - (ushort): ### ModuleSize The size in pixels of each element in the symbol. ```csharp public ushort ModuleSize ``` #### Field Value Parameters: - (ushort): ### Rotate ```csharp public ushort Rotate ``` #### Field Value Parameters: - (ushort): ### Scheme The encoding to apply to the symbol. ```csharp public Scheme Scheme ``` #### Field Value Parameters: - (Scheme): ### SizeIdx Size of the symbol to generate. ```csharp public CodeSize SizeIdx ``` #### Field Value Parameters: - (CodeSize): --- # Enum Scheme Link: api/VisioForge.Core.LibDMTX.Scheme.html # Enum Scheme # Enum Scheme **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Encoding schemes for DataMatrix. ```csharp public enum Scheme : short ``` ## Fields Parameters: - Ascii (): ASCII character 0 to 127. 1 byte per CW. - C40 (): Upper-case alphanumeric. 1.5 byte per CW. - Text (): Lower-case alphanumeric. 1.5 byte per CW. - X12 (): ANSI X12. 1.5 byte per CW. - Edifact (): ASCII character 32 to 94. 1.33 bytes per CW. - Base256 (): ASCII character 0 to 255. 1 byte per CW. - AutoBest (): - AutoFast (): --- # Class SymbolInfo Link: api/VisioForge.Core.LibDMTX.SymbolInfo.html # Class SymbolInfo # Class SymbolInfo **Namespace**: VisioForge.Core.LibDMTX **Assembly**: VisioForge.Core.dll Information about a DataMatrix symbol. ```csharp public class SymbolInfo ``` #### Inheritance #### Inherited Members ## Fields ### Angle ```csharp public ushort Angle ``` #### Field Value Parameters: - (ushort): ### Capacity ```csharp public ushort Capacity ``` #### Field Value Parameters: - (ushort): ### Cols ```csharp public ushort Cols ``` #### Field Value Parameters: - (ushort): ### DataWords ```csharp public ushort DataWords ``` #### Field Value Parameters: - (ushort): ### ErrorWords ```csharp public ushort ErrorWords ``` #### Field Value Parameters: - (ushort): ### HorizDataRegions ```csharp public ushort HorizDataRegions ``` #### Field Value Parameters: - (ushort): ### InterleavedBlocks ```csharp public ushort InterleavedBlocks ``` #### Field Value Parameters: - (ushort): ### PadWords ```csharp public ushort PadWords ``` #### Field Value Parameters: - (ushort): ### Rows ```csharp public ushort Rows ``` #### Field Value Parameters: - (ushort): ### VertDataRegions ```csharp public ushort VertDataRegions ``` #### Field Value Parameters: - (ushort): --- # Namespace VisioForge.Core.LibDMTX Link: api/VisioForge.Core.LibDMTX.html # Namespace VisioForge.Core.LibDMTX # Namespace VisioForge.Core.LibDMTX ### Classes Parameters: - (): The four corners of a DataMatrix symbol. - (): Platform-specific library loader for libdmtx - (): Options used for decoding DataMatrix symbols. - (): High-level wrapper for decoding and encoding DataMatrix barcodes using libdmtx. - (): Result from decoding a DataMatrix symbol. - (): Result from encoding a DataMatrix symbol. - (): Base exception for libdmtx operations. - (): Exception thrown when invalid arguments are provided to libdmtx. - (): Exception thrown when libdmtx runs out of memory. - (): Represents a 2D point. - (): Options used for encoding DataMatrix symbols. - (): Information about a DataMatrix symbol. ### Enums Parameters: - (): Symbol size enumeration for DataMatrix codes. - (): Symbol type (DataMatrix or Mosaic). - (): Symbol size enumeration matching libdmtx. - (): Encoding schemes for DataMatrix. --- # Class LiveSourceSwitchBlock Link: api/VisioForge.Core.LiveSourceSwitch.LiveSourceSwitchBlock.html # Class LiveSourceSwitchBlock # Class LiveSourceSwitchBlock **Namespace**: VisioForge.Core.LiveSourceSwitch **Assembly**: VisioForge.Core.dll Live Source Switch. Allows to switch between multiple video and audio sources. Implements the . Implements the . ```csharp public class LiveSourceSwitchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### LiveSourceSwitchBlock(MediaBlocksPipeline, LiveSourceSwitchSettings) Initializes a new instance of the class. ```csharp public LiveSourceSwitchBlock(MediaBlocksPipeline pipeline, LiveSourceSwitchSettings settings) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline that will host this switch block. - settings (LiveSourceSwitchSettings): The configuration settings including video/audio parameters and input limits. #### Remarks This constructor sets up the internal switch infrastructure including bridge sources, video/audio switches, and multi-queue synchronization based on the provided settings. ## Properties ### AudioOutput Gets the audio output pad providing access to the currently selected audio stream. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad for this block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the collection of input pads for this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the configuration settings for the live source switch. ```csharp public LiveSourceSwitchSettings Settings { get; } ``` #### Property Value Parameters: - (LiveSourceSwitchSettings): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad providing access to the currently selected video stream. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds the internal pipeline structure by connecting bridge sources to switch inputs. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful or was already built; false otherwise. #### Remarks This method connects all video and audio bridge sources to their respective switch inputs. It is called automatically by and only executes once. ### CleanUp() Performs cleanup operations and resets the built state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### DurationAsync() Gets the current playback duration/position of the switch block. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A representing the current playback position. ### GetContext() Gets the execution context for this switch block. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The instance used for logging and error handling. ### GetCore() Gets the core GStreamer base element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null as this is a composite block without a single core element. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always returns null as this is a composite block without a single underlying element. ### GetPipeline() Gets the parent pipeline that hosts this switch block. ```csharp public MediaBlocksPipeline GetPipeline() ``` #### Returns Parameters: - (MediaBlocksPipeline): The instance managing this block. ### Input_AddAsync(LVCVideoInput) Adds a video-only input source to the switch. ```csharp public Task Input_AddAsync(LVCVideoInput input) ``` #### Parameters Parameters: - input (LVCVideoInput): The video input configuration including source block and positioning information. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks The input is assigned a unique bridge name and automatically started if the main pipeline is already running. Returns false if the maximum video input count has been reached. ### Input_AddAsync(LVCAudioInput) Adds an audio-only input source to the switch. ```csharp public Task Input_AddAsync(LVCAudioInput input) ``` #### Parameters Parameters: - input (LVCAudioInput): The audio input configuration including source block and audio format information. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks The audio format is automatically configured to match the switch settings. The input is started automatically if AutoStart is true and the main pipeline is running. ### Input_AddAsync(LVCVideoAudioInput, bool) Adds a combined video and audio input source to the switch. ```csharp public Task Input_AddAsync(LVCVideoAudioInput input, bool start = false) ``` #### Parameters Parameters: - input (LVCVideoAudioInput): The video/audio input configuration including source block and media information. - start (bool): If true, starts the input immediately after adding; otherwise, waits for AutoStart or manual start. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. ### Input_AddAsync(LVCFileVideoAudioInput, bool) Adds a file-based video and audio input source to the switch. ```csharp public Task Input_AddAsync(LVCFileVideoAudioInput input, bool start = false) ``` #### Parameters Parameters: - input (LVCFileVideoAudioInput): The file video/audio input configuration including source block and media information. - start (bool): If true, starts the input immediately after adding; otherwise, waits for AutoStart or manual start. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks This method uses buffered bridge sources for file inputs to ensure smooth playback. ### Input_FileVideoAudio_Get(int) Gets a file-based video/audio input by its index position. ```csharp public LVCFileVideoAudioInput Input_FileVideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to retrieve. #### Returns Parameters: - (LVCFileVideoAudioInput): The at the specified index, or null if the index is invalid or the input is not a file video/audio type. ### Input_Get(int) Gets any input by its index position. ```csharp public LVCInput Input_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to retrieve. #### Returns Parameters: - (LVCInput): The at the specified index, or null if the index is out of range. ### Input_RemoveAtAsync(int) Removes an input at the specified index position. ```csharp public Task Input_RemoveAtAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to remove. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was removed successfully; otherwise, false. #### Remarks The input pipeline is stopped and disposed before removal. Returns false if the index is out of range. ### Input_VideoAudio_Get(int) Gets a video/audio input by its index position. ```csharp public LVCVideoAudioInput Input_VideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to retrieve. #### Returns Parameters: - (LVCVideoAudioInput): The at the specified index, or null if the index is invalid or the input is not a video/audio type. ### StartAsync() Starts the switch block and all configured input sources asynchronously. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A that completes with true if startup was successful; otherwise, false. #### Remarks This method builds the pipeline if not already built, preloads all inputs, then starts all input pipelines and the main pipeline in synchronized fashion. ### StopAsync() Stops the switch block and all active input sources asynchronously. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous stop operation. #### Remarks This method stops all input pipelines first, then stops the main pipeline. Any errors during stopping are logged but do not prevent other inputs from being stopped. ### Switch(int) Switches both video and audio inputs to the specified source index. ```csharp public void Switch(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input source to switch to. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the execution context for this block from the specified pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline to retrieve context from. ## See Also --- # Class LiveSourceSwitchBlockDynamic Link: api/VisioForge.Core.LiveSourceSwitch.LiveSourceSwitchBlockDynamic.html # Class LiveSourceSwitchBlockDynamic # Class LiveSourceSwitchBlockDynamic **Namespace**: VisioForge.Core.LiveSourceSwitch **Assembly**: VisioForge.Core.dll Dynamic Live Source Switch block with proper support for runtime input add/remove. Unlike LiveSourceSwitchBlock, this version uses slot-based management where each slot has a fixed bridge name. When an input is removed, the slot becomes empty but the bridge remains ready for a new input. ```csharp public class LiveSourceSwitchBlockDynamic : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### LiveSourceSwitchBlockDynamic(MediaBlocksPipeline, LiveSourceSwitchSettings) Initializes a new instance of the class. ```csharp public LiveSourceSwitchBlockDynamic(MediaBlocksPipeline pipeline, LiveSourceSwitchSettings settings) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline that will host this switch block. - settings (LiveSourceSwitchSettings): The configuration settings including video/audio parameters and input limits. #### Remarks This constructor creates fixed bridge sources for each slot with predetermined names. When inputs are removed and re-added, they reuse the same bridge names to avoid conflicts. ## Properties ### AudioOutput Gets the audio output pad. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### CurrentAudioIndex Gets the currently active audio slot index. ```csharp public int CurrentAudioIndex { get; } ``` #### Property Value Parameters: - (int): ### CurrentVideoIndex Gets the currently active video slot index. ```csharp public int CurrentVideoIndex { get; } ``` #### Property Value Parameters: - (int): ### Input Gets the input (not used - inputs are managed via slots). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs array (empty - inputs are managed via slots). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output (video). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the settings. ```csharp public LiveSourceSwitchSettings Settings { get; } ``` #### Property Value Parameters: - (LiveSourceSwitchSettings): ### Type Gets the block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds the internal pipeline structure by connecting bridge sources to switch inputs. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful or was already built; false otherwise. #### Remarks This method connects all video and audio bridge sources to their respective switch inputs. Bridge sources remain connected even when slots are empty, outputting silence/black until an input is added. ### CleanUp() Cleans up resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Disposes resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### DurationAsync() Gets the current playback duration/position of the main pipeline. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A representing the current playback position. ### GetContext() Gets the execution context for this switch block. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The instance used for logging and error handling. ### GetCore() Gets the core element (not applicable for composite blocks). ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): ### GetElement() Gets the element (not applicable for composite blocks). ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): ### GetPipeline() Gets the parent pipeline that hosts this switch block. ```csharp public MediaBlocksPipeline GetPipeline() ``` #### Returns Parameters: - (MediaBlocksPipeline): The instance managing this block. ### Input_AddToSlotAsync(LVCVideoInput, int) Adds a video-only input to a specific slot. ```csharp public Task Input_AddToSlotAsync(LVCVideoInput input, int slotIndex) ``` #### Parameters Parameters: - input (LVCVideoInput): The video input configuration to add. - slotIndex (int): The zero-based slot index (0 to MaxVideoInputsCount-1). #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks Each slot has a fixed bridge name. When an input is added to a slot, it connects to that bridge. The slot must be empty before adding a new input - use first if needed. ### Input_AddToSlotAsync(LVCVideoAudioInput, int) Adds a combined video and audio input to a specific slot. ```csharp public Task Input_AddToSlotAsync(LVCVideoAudioInput input, int slotIndex) ``` #### Parameters Parameters: - input (LVCVideoAudioInput): The video/audio input configuration to add. - slotIndex (int): The zero-based slot index. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks Both video and audio streams are connected to their respective bridges for the same slot index. The slot must be empty before adding a new input. ### Input_GetFromSlot(int) Gets the input at a specific slot. ```csharp public LVCInput Input_GetFromSlot(int slotIndex) ``` #### Parameters Parameters: - slotIndex (int): The zero-based slot index. #### Returns Parameters: - (LVCInput): The at the specified slot, or null if the slot is empty or the index is invalid. ### Input_RemoveFromSlotAsync(int) Removes an input from a specific slot. ```csharp public Task Input_RemoveFromSlotAsync(int slotIndex) ``` #### Parameters Parameters: - slotIndex (int): The zero-based slot index to clear. #### Returns Parameters: - (Task < bool >): A that completes with true if the slot was cleared successfully; otherwise, false. #### Remarks The bridge source remains active after removal, outputting silence/black until a new input is added. The new input must use the same bridge name for this slot, which is handled automatically by . Returns true if the slot is already empty. ### StartAsync() Starts the switch block and all configured input sources asynchronously. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A that completes with true if startup was successful; otherwise, false. #### Remarks This method builds the pipeline if not already built, preloads all inputs in occupied slots, then starts all input pipelines and the main pipeline in synchronized fashion. ### StopAsync() Stops the switch block and all active input sources asynchronously. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous stop operation. #### Remarks This method stops all input pipelines in occupied slots, then stops the main pipeline. Empty slots are skipped during the stop process. ### Switch(int) Switches both video and audio to the specified slot. ```csharp public void Switch(int slotIndex) ``` #### Parameters Parameters: - slotIndex (int): The zero-based slot index to switch to. #### Remarks This method synchronously switches both video and audio streams to the same slot. Use and for independent control. ### SwitchAudio(int) Switches only audio to the specified slot, keeping video on its current slot. ```csharp public void SwitchAudio(int slotIndex) ``` #### Parameters Parameters: - slotIndex (int): The zero-based slot index to switch audio to. ### SwitchVideo(int) Switches only video to the specified slot, keeping audio on its current slot. ```csharp public void SwitchVideo(int slotIndex) ``` #### Parameters Parameters: - slotIndex (int): The zero-based slot index to switch video to. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this MediaBlock with a pipeline and initializes its internal context. This method is called automatically when the block is added to a pipeline, providing access to shared resources and pipeline-wide configuration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. --- # Class LiveSourceSwitchSettings Link: api/VisioForge.Core.LiveSourceSwitch.LiveSourceSwitchSettings.html # Class LiveSourceSwitchSettings # Class LiveSourceSwitchSettings **Namespace**: VisioForge.Core.LiveSourceSwitch **Assembly**: VisioForge.Core.dll Configuration settings for the Live Source Switch block. ```csharp public class LiveSourceSwitchSettings ``` #### Inheritance #### Inherited Members ## Remarks This class contains all parameters needed to initialize a live source switching session, including video dimensions, frame rate, audio configuration, input limits, and synchronization options for fast, seamless source switching. ## Constructors ### LiveSourceSwitchSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public LiveSourceSwitchSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The output video width in pixels. - height (int): The output video height in pixels. - frameRate (VideoFrameRate): The output video frame rate. #### Remarks Video dimensions and frame rate are immutable after construction. Audio settings and input limits can be modified before passing to the switch block. ## Properties ### AudioChannels Gets or sets the number of audio channels. ```csharp public int AudioChannels { get; set; } ``` #### Property Value Parameters: - (int): ### AudioFormat Gets or sets the audio sample format. ```csharp public AudioFormatX AudioFormat { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### AudioSampleRate Gets or sets the audio sample rate in Hz. ```csharp public int AudioSampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### AudioStream Gets or sets a value indicating whether audio stream is enabled. ```csharp public bool AudioStream { get; set; } ``` #### Property Value Parameters: - (bool): ### CacheBuffers Gets or sets a value indicating whether the active pad caches buffers to avoid missing frames when the pad is reactivated. Default is true for smoother switching. ```csharp public bool CacheBuffers { get; set; } ``` #### Property Value Parameters: - (bool): ### DropBackwards Gets or sets a value indicating whether buffers that go backwards relative to the last output buffer should be dropped. Default is true to avoid visual glitches. ```csharp public bool DropBackwards { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxAudioInputsCount Gets or sets the maximum number of audio inputs that can be registered. ```csharp public int MaxAudioInputsCount { get; set; } ``` #### Property Value Parameters: - (int): ### MaxVideoInputsCount Gets or sets the maximum number of video inputs that can be registered. ```csharp public int MaxVideoInputsCount { get; set; } ``` #### Property Value Parameters: - (int): ### RandomKey Gets the unique random key used for generating bridge connection names. ```csharp public int RandomKey { get; } ``` #### Property Value Parameters: - (int): ### SyncMode Gets or sets the synchronization mode for the input selector. Default is Clock for better live switching performance. ```csharp public InputSelectorSyncMode SyncMode { get; set; } ``` #### Property Value Parameters: - (InputSelectorSyncMode): ### SyncStreams Gets or sets a value indicating whether inactive streams should be synced. Default is false for faster switching without synchronization delay. ```csharp public bool SyncStreams { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoFrameRate Gets the output video frame rate. ```csharp public VideoFrameRate VideoFrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### VideoHeight Gets the output video height in pixels. ```csharp public int VideoHeight { get; } ``` #### Property Value Parameters: - (int): ### VideoStream Gets or sets a value indicating whether video stream is enabled. ```csharp public bool VideoStream { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoWidth Gets the output video width in pixels. ```csharp public int VideoWidth { get; } ``` #### Property Value Parameters: - (int): --- # Namespace VisioForge.Core.LiveSourceSwitch Link: api/VisioForge.Core.LiveSourceSwitch.html # Namespace VisioForge.Core.LiveSourceSwitch # Namespace VisioForge.Core.LiveSourceSwitch ### Classes Parameters: - (): Live Source Switch. Allows to switch between multiple video and audio sources. Implements the . Implements the . - (): Dynamic Live Source Switch block with proper support for runtime input add/remove. Unlike LiveSourceSwitchBlock, this version uses slot-based management where each slot has a fixed bridge name. When an input is removed, the slot becomes empty but the bridge remains ready for a new input. - (): Configuration settings for the Live Source Switch block. --- # Class LiveVideoCompositor Link: api/VisioForge.Core.LiveVideoCompositor.LiveVideoCompositor.html # Class LiveVideoCompositor # Class LiveVideoCompositor **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Resource disposal and cleanup functionality for the Live Video Compositor. This partial class implements proper disposal patterns for releasing unmanaged resources, cleaning up MediaBlocks pipelines, and ensuring proper shutdown of composition operations. Provides both synchronous and asynchronous disposal methods for different cleanup scenarios. Implements the . ```csharp public class LiveVideoCompositor : IDisposable, IAsyncDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Create compositor with specific settings
var settings = new LiveVideoCompositorSettings
{
    VideoWidth = 1920,
    VideoHeight = 1080,
    VideoFrameRate = new VideoFrameRate(30, 1),
    MixerType = LVCMixerType.OpenGL,
    MaxVideoInputsCount = 4,
    MaxVideoOutputsCount = 2
};

using var compositor = new LiveVideoCompositor(settings);

// Add video inputs
var input1 = new LVCVideoAudioInput("Camera 1", captureSettings);
await compositor.Input_AddAsync(input1);

// Add output
var output = new LVCVideoAudioOutput("RTMP Stream", rtmpSettings);
await compositor.Output_AddAsync(output);

// Start composition
await compositor.StartAsync();
## Remarks Disposal operations include: - Proper shutdown of MediaBlocks pipelines - Cleanup of video and audio mixers - Disposal of overlay managers and effects processors - Release of all input and output resources - Cleanup of tee blocks and bridge connections Both synchronous and asynchronous disposal patterns are supported for different use cases. ## Constructors ### LiveVideoCompositor(LiveVideoCompositorSettings) Initializes a new instance of the class. ```csharp public LiveVideoCompositor(LiveVideoCompositorSettings settings) ``` #### Parameters Parameters: - settings (LiveVideoCompositorSettings): The settings. ## Properties ### Background Gets or sets the background type for the video mixer (transparent, black, white, etc.). ```csharp public VideoMixerBackground Background { get; set; } ``` #### Property Value Parameters: - (VideoMixerBackground): ### Settings Gets the configuration settings used to initialize this compositor instance. ```csharp public LiveVideoCompositorSettings Settings { get; } ``` #### Property Value Parameters: - (LiveVideoCompositorSettings): ### Video_Overlay_Enabled Gets or sets a value indicating whether video overlay rendering is enabled globally. ```csharp public bool Video_Overlay_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When disabled, no overlays will be rendered on any channel regardless of individual overlay settings. Default value is true. ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method follows the standard IDisposable pattern. When disposing is true, both managed and unmanaged resources are released. When disposing is false (called from finalizer), only unmanaged resources are released. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` #### Remarks This method should be called when the Live Video Compositor is no longer needed. It releases all resources including MediaBlocks pipelines, mixers, effects, and overlays. After disposal, the object cannot be used and should be discarded. ### DisposeAsync() Asynchronously disposes of the Live Video Compositor and all its resources. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): A ValueTask representing the asynchronous disposal operation. #### Remarks This method provides asynchronous disposal support for scenarios where pipeline shutdown may involve asynchronous operations. It ensures proper cleanup of all MediaBlocks components without blocking the calling thread. Prefer this method over synchronous Dispose() when possible. ### DurationAsync() Gets the current playback position of the main pipeline. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains the current position. ### ~LiveVideoCompositor() Finalizes an instance of the class. ```csharp protected ~LiveVideoCompositor() ``` #### Remarks The finalizer ensures that unmanaged resources are released even if Dispose was not called. This is a safety mechanism and should not be relied upon for proper cleanup. Always call Dispose() or use a using statement for deterministic cleanup. ### GetAudioMixer() Gets the audio mixer block if it's an AudioMixerBlock type (not a switcher). ```csharp public AudioMixerBlock GetAudioMixer() ``` #### Returns Parameters: - (AudioMixerBlock): The audio mixer block, or null if using switcher mode. ### GetContext() Gets the context object for logging and error handling. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The context object used by this compositor instance. ### GetPipeline() Gets the main MediaBlocks pipeline that manages the mixing and effects processing. ```csharp public MediaBlocksPipeline GetPipeline() ``` #### Returns Parameters: - (MediaBlocksPipeline): The main pipeline instance. ### GetVideoMixer() Gets the video mixer block if it's a VideoMixerBlock type (not a switcher). ```csharp public VideoMixerBlock GetVideoMixer() ``` #### Returns Parameters: - (VideoMixerBlock): The video mixer block, or null if using switcher mode or another mixer type. ### Input_AddAsync(LVCVideoInput) Adds a video-only input source to the compositor. ```csharp public Task Input_AddAsync(LVCVideoInput input) ``` #### Parameters Parameters: - input (LVCVideoInput): The video input configuration to add. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max inputs reached. ### Input_AddAsync(LVCAudioInput) Adds an audio-only input source to the compositor. ```csharp public Task Input_AddAsync(LVCAudioInput input) ``` #### Parameters Parameters: - input (LVCAudioInput): The audio input configuration to add. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max inputs reached. ### Input_AddAsync(LVCVideoAudioInput, bool) Adds a combined video and audio input source to the compositor. ```csharp public Task Input_AddAsync(LVCVideoAudioInput input, bool start = false) ``` #### Parameters Parameters: - input (LVCVideoAudioInput): The video/audio input configuration to add. - start (bool): If true, starts the input immediately after adding (overrides AutoStart property). #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max inputs reached. ### Input_AddAsync(LVCFileVideoAudioInput, bool) Adds a file-based video and audio input source to the compositor. ```csharp public Task Input_AddAsync(LVCFileVideoAudioInput input, bool start = false) ``` #### Parameters Parameters: - input (LVCFileVideoAudioInput): The file video/audio input configuration to add. - start (bool): If true, starts the input immediately after adding (overrides AutoStart property). #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max inputs reached. ### Input_FileVideoAudio_Get(int) Gets a file video/audio input by its index. ```csharp public LVCFileVideoAudioInput Input_FileVideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input. #### Returns Parameters: - (LVCFileVideoAudioInput): The file video/audio input at the specified index, or null if index is invalid or input is not a file video/audio type. ### Input_Get(int) Gets an input source by its index, regardless of type. ```csharp public LVCInput Input_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input. #### Returns Parameters: - (LVCInput): The input at the specified index, or null if index is invalid. ### Input_RemoveAsync(string) Removes an input source from the compositor by its name. ```csharp public Task Input_RemoveAsync(string name) ``` #### Parameters Parameters: - name (string): The unique name of the input to remove. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if removed successfully, false if not found. ### Input_RemoveAtAsync(int) Removes an input source from the compositor by its index. ```csharp public Task Input_RemoveAtAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to remove. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if removed successfully, false if index is invalid. ### Input_VideoAudio_Get(int) Gets a video/audio input by its index. ```csharp public LVCVideoAudioInput Input_VideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input. #### Returns Parameters: - (LVCVideoAudioInput): The video/audio input at the specified index, or null if index is invalid or input is not a video/audio type. ### Input_VideoStream_Get(int) Gets the video mixer stream configuration for a specific input by index. ```csharp public VideoMixerStream Input_VideoStream_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the video input. #### Returns Parameters: - (VideoMixerStream): The video mixer stream configuration, or null if index is invalid or mixer is not available. ### Input_VideoStream_Update(int, VideoMixerStream) Updates the video mixer stream configuration for a specific input. ```csharp public void Input_VideoStream_Update(int index, VideoMixerStream stream) ``` #### Parameters Parameters: - index (int): The zero-based index of the video input (not used as stream contains its own ID). - stream (VideoMixerStream): The updated stream configuration including position, size, and other properties. ### Output_AddAsync(LVCVideoOutput, bool) Adds a video-only output destination to the compositor. ```csharp public Task Output_AddAsync(LVCVideoOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCVideoOutput): The video output configuration to add. - start (bool): If true, starts the output immediately when the pipeline is running. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max outputs reached. ### Output_AddAsync(LVCAudioOutput, bool) Adds an audio-only output destination to the compositor. ```csharp public Task Output_AddAsync(LVCAudioOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCAudioOutput): The audio output configuration to add. - start (bool): If true, starts the output immediately when the pipeline is running. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max outputs reached. ### Output_AddAsync(LVCVideoAudioOutput, bool) Adds a combined video and audio output destination to the compositor. ```csharp public Task Output_AddAsync(LVCVideoAudioOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCVideoAudioOutput): The video/audio output configuration to add. - start (bool): If true, starts the output immediately when the pipeline is running. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if added successfully, false if max outputs reached. ### Output_Audio_Get(int) Gets an audio output by its index. ```csharp public LVCAudioOutput Output_Audio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCAudioOutput): The audio output at the specified index, or null if index is invalid or output is not an audio type. ### Output_Get(int) Gets an output destination by its index, regardless of type. ```csharp public LVCOutput Output_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCOutput): The output at the specified index, or null if index is invalid. ### Output_Get(string) Gets an output destination by its unique name. ```csharp public LVCOutput Output_Get(string name) ``` #### Parameters Parameters: - name (string): The unique name of the output. #### Returns Parameters: - (LVCOutput): The output with the specified name, or null if not found. ### Output_RemoveAsync(string) Removes an output destination from the compositor by its name. ```csharp public Task Output_RemoveAsync(string name) ``` #### Parameters Parameters: - name (string): The unique name of the output to remove. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if removed successfully, false if not found. ### Output_RemoveAtAsync(int) Removes an output destination from the compositor by its index. ```csharp public Task Output_RemoveAtAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to remove. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if removed successfully, false if index is invalid. ### Output_VideoAudio_Get(int) Gets a video/audio output by its index. ```csharp public LVCVideoAudioOutput Output_VideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCVideoAudioOutput): The video/audio output at the specified index, or null if index is invalid or output is not a video/audio type. ### Output_Video_Get(int) Gets a video output by its index. ```csharp public LVCVideoOutput Output_Video_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCVideoOutput): The video output at the specified index, or null if index is invalid or output is not a video type. ### SetLicenseKey(string, string, string) Sets the license key and user information for Live Video Compositor activation. ```csharp public void SetLicenseKey(string licenseKey, string userName, string email) ``` #### Parameters Parameters: - licenseKey (string): The VisioForge license key for this component. - userName (string): The registered user name associated with the license. - email (string): The email address associated with the license. #### Remarks This method must be called before starting composition operations to enable full functionality. The license key is validated against the provided user credentials. Invalid or missing license may result in limited functionality or watermarked output. ### StartAsync() Starts the compositor, including all input pipelines, the main pipeline, and auto-start outputs. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if started successfully, false otherwise. ### StopAsync() Stops the compositor, including all input pipelines, the main pipeline, and all outputs. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous stop operation. ### Switch(int) Switches to a specific input when using switcher mode (applies to both video and audio). ```csharp public void Switch(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input to switch to. ### Video_Effects_AddOrUpdateAsync(IBaseVideoEffect, int) Adds a new video effect or updates an existing effect on the specified channel. ```csharp public Task Video_Effects_AddOrUpdateAsync(IBaseVideoEffect effect, int channel = 0) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect to add or update. Must implement IBaseVideoEffect interface. - channel (int): The video channel index to apply the effect to. Default is 0. #### Returns Parameters: - (Task): A Task representing the asynchronous operation. #### Remarks If an effect with the same name already exists, it will be updated with the new parameters. Effects are applied in the order they are added to the channel. ### Video_Effects_Clear(int) Removes all video effects from the specified channel. ```csharp public void Video_Effects_Clear(int channel = 0) ``` #### Parameters Parameters: - channel (int): The video channel index to clear effects from. Default is 0. #### Remarks This operation immediately removes all effects without pausing the pipeline. Use with caution during active composition as it may cause visual discontinuity. ### Video_Effects_Get(string, int) Retrieves a video effect by name from the specified channel. ```csharp public IBaseVideoEffect Video_Effects_Get(string effectName, int channel = 0) ``` #### Parameters Parameters: - effectName (string): The unique name identifier of the effect to retrieve. - channel (int): The video channel index to search for the effect. Default is 0. #### Returns Parameters: - (IBaseVideoEffect): The video effect instance if found; otherwise, null. #### Remarks Effect names are case-sensitive and must match exactly. ### Video_Effects_RemoveAsync(IBaseVideoEffect, int) Removes a video effect instance from the specified channel. ```csharp public Task Video_Effects_RemoveAsync(IBaseVideoEffect effect, int channel = 0) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect instance to remove. - channel (int): The video channel index to remove the effect from. Default is 0. #### Returns Parameters: - (Task): A Task representing the asynchronous operation. #### Remarks The pipeline is temporarily paused during effect removal to ensure thread safety. If the effect is not found on the channel, the method returns without error. ### Video_Effects_RemoveAsync(string, int) Removes a video effect by name from the specified channel. ```csharp public Task Video_Effects_RemoveAsync(string name, int channel = 0) ``` #### Parameters Parameters: - name (string): The unique name identifier of the effect to remove. - channel (int): The video channel index to remove the effect from. Default is 0. #### Returns Parameters: - (Task): A Task representing the asynchronous operation. #### Remarks The pipeline is temporarily paused during effect removal to ensure thread safety. If no effect with the given name exists, the method returns without error. ### Video_Overlay_Add(IOverlayManagerElement, int) Adds a new overlay element to the specified video channel. ```csharp public void Video_Overlay_Add(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to add. Must implement IOverlayManagerElement interface. - channel (int): The video channel index to add the overlay to. Default is 0. #### Remarks Overlays are rendered in the order they are added, with later overlays appearing on top. Supported overlay types include text, images, graphics, and custom visual elements. ### Video_Overlay_Clear(int) Removes all overlay elements from the specified video channel. ```csharp public void Video_Overlay_Clear(int channel = 0) ``` #### Parameters Parameters: - channel (int): The video channel index to clear overlays from. Default is 0. #### Remarks This operation immediately removes all overlays from the channel. Use with caution during active composition as it may cause visual discontinuity. ### Video_Overlay_Count(int) Gets the total number of overlays in the specified video channel. ```csharp public int Video_Overlay_Count(int channel = 0) ``` #### Parameters Parameters: - channel (int): The video channel index to count overlays from. Default is 0. #### Returns Parameters: - (int): The number of overlay elements in the channel. ### Video_Overlay_Get(int, int) Gets the overlay element at the specified index from the video channel. ```csharp public IOverlayManagerElement Video_Overlay_Get(int index, int channel = 0) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to retrieve. - channel (int): The video channel index to get the overlay from. Default is 0. #### Returns Parameters: - (IOverlayManagerElement): The overlay element at the specified index. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when index is out of range. ### Video_Overlay_Remove(IOverlayManagerElement, int) Removes an overlay element from the specified video channel. ```csharp public void Video_Overlay_Remove(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element instance to remove. - channel (int): The video channel index to remove the overlay from. Default is 0. #### Remarks If the overlay is not found on the channel, the method returns without error. ### Video_Overlay_RemoveAt(int, int) Removes an overlay element at the specified index from the video channel. ```csharp public void Video_Overlay_RemoveAt(int index, int channel = 0) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to remove. - channel (int): The video channel index to remove the overlay from. Default is 0. #### Remarks Throws an exception if the index is out of range for the channel's overlay collection. ### Video_Overlay_Update(IOverlayManagerElement, int) Updates an existing overlay element by removing and re-adding it to the specified channel. ```csharp public void Video_Overlay_Update(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element with updated properties. - channel (int): The video channel index containing the overlay. Default is 0. #### Remarks This method removes the existing overlay and adds it back with updated properties. The overlay's position in the rendering order is preserved. ### OnError Occurs when an error happens in any of the pipelines or during operations. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): ## See Also --- # Class LiveVideoCompositorSettings Link: api/VisioForge.Core.LiveVideoCompositor.LiveVideoCompositorSettings.html # Class LiveVideoCompositorSettings # Class LiveVideoCompositorSettings **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Configuration settings for the Live Video Compositor, defining video/audio format parameters, mixer technology, resource limits, and processing capabilities for real-time composition. These settings determine the compositor's output quality, performance characteristics, and capacity for handling multiple inputs and outputs. ```csharp public class LiveVideoCompositorSettings ``` #### Inheritance #### Inherited Members ## Examples
// Create settings for 1080p live composition
var settings = new LiveVideoCompositorSettings(1920, 1080, new VideoFrameRate(30, 1))
{
    MixerType = LVCMixerType.OpenGL,
    VideoChannelCount = 2,  // Two independent video processing channels
    MaxVideoInputsCount = 6,
    MaxVideoOutputsCount = 3,
    AudioSampleRate = 48000,
    AudioChannels = 2
};
## Remarks The settings are immutable for video dimensions and frame rate once created, as these fundamental parameters affect the entire composition pipeline. Other settings like mixer type and capacity limits can be adjusted based on the target platform and performance requirements. Default values are optimized for common live streaming scenarios with balanced quality and performance. ## Constructors ### LiveVideoCompositorSettings(int, int, VideoFrameRate) Initializes a new instance of the class with specified video dimensions and frame rate. ```csharp public LiveVideoCompositorSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width of the video composition in pixels. Must be greater than 0. - height (int): The height of the video composition in pixels. Must be greater than 0. - frameRate (VideoFrameRate): The frame rate of the composition as a rational number (e.g., new VideoFrameRate(30, 1) for 30fps). #### Remarks The video dimensions and frame rate are immutable once set. The mixer type is automatically selected based on the platform: D3D11 for Windows, OpenGL for other platforms. ## Properties ### AudioChannels Gets or sets the number of audio channels for the composition. ```csharp public int AudioChannels { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Common configurations: - 1: Mono - 2: Stereo (L/R) - 6: 5.1 surround - 8: 7.1 surround Audio inputs will be upmixed/downmixed to match this configuration. ### AudioFormat Gets or sets the audio sample format for the composition. ```csharp public AudioFormatX AudioFormat { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): #### Remarks Supported formats include: - S16LE: 16-bit signed PCM, most compatible - S32LE: 32-bit signed PCM, higher quality - F32LE: 32-bit float, professional quality ### AudioSampleRate Gets or sets the audio sample rate in Hz for the composition. ```csharp public int AudioSampleRate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Common sample rates include: - 44100: CD quality - 48000: Professional audio/video standard - 96000: High-resolution audio All audio inputs will be resampled to match this rate if different. ### MaxAudioInputsCount Gets or sets the maximum number of audio input sources that can be connected to the compositor. ```csharp public int MaxAudioInputsCount { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Audio inputs can include microphones, system audio, file sources, or network streams. Each input can be independently mixed with volume, panning, and effects control. ### MaxAudioOutputsCount Gets or sets the maximum number of audio output destinations that can receive the mixed audio. ```csharp public int MaxAudioOutputsCount { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Multiple audio outputs enable scenarios like separate mix-minus feeds, multi-language outputs, or different audio processing chains. ### MaxVideoInputsCount Gets or sets the maximum number of video input sources that can be connected to the compositor. ```csharp public int MaxVideoInputsCount { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This value should be set based on expected usage and available system resources. Higher values allow more simultaneous video sources but require more memory and processing power. Typical use cases: 2-4 for basic mixing, 8-16 for complex productions. ### MaxVideoOutputsCount Gets or sets the maximum number of video output destinations that can receive the composed video. ```csharp public int MaxVideoOutputsCount { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Multiple outputs allow simultaneous streaming, recording, and preview. Common configurations: 1 for simple recording, 2-3 for streaming + recording, 4+ for multi-destination broadcasting. ### MixerType Gets or sets the type of the video mixer technology used for compositing multiple video streams. ```csharp public LVCMixerType MixerType { get; set; } ``` #### Property Value Parameters: - (LVCMixerType): #### Remarks Different mixer types offer varying performance characteristics: - D3D11: Best performance on Windows with DirectX 11 support - OpenGL: Cross-platform compatibility with good performance - Software: CPU-based mixing, most compatible but slowest ### RandomKey Gets the unique random key assigned to this compositor instance. ```csharp public int RandomKey { get; } ``` #### Property Value Parameters: - (int): #### Remarks This key is automatically generated at creation and ensures unique identification of bridge connections between the main compositor and its inputs/outputs. ### VideoChannelCount Gets or sets the number of independent video processing channels in the compositor. ```csharp public uint VideoChannelCount { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Multiple channels allow for independent video processing pipelines within the same compositor, useful for multi-view outputs or separate processing chains. Each channel can have its own set of inputs, effects, and outputs. ### VideoFrameRate Gets the video frame rate for the composition. ```csharp public VideoFrameRate VideoFrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): #### Remarks Common frame rates include 24, 25, 29.97, 30, 50, 59.94, and 60 fps. All inputs will be resampled to match this frame rate if different. ### VideoHeight Gets the height of the video composition in pixels. ```csharp public int VideoHeight { get; } ``` #### Property Value Parameters: - (int): #### Remarks Common values include 1080 (Full HD), 720 (HD), 2160 (4K UHD). All inputs will be scaled/positioned within this resolution. ### VideoWidth Gets the width of the video composition in pixels. ```csharp public int VideoWidth { get; } ``` #### Property Value Parameters: - (int): #### Remarks Common values include 1920 (Full HD), 1280 (HD), 3840 (4K UHD). All inputs will be scaled/positioned within this resolution. --- # Class LVCAudioInput Link: api/VisioForge.Core.LiveVideoCompositor.LVCAudioInput.html # Class LVCAudioInput # Class LVCAudioInput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor audio input that feeds audio content into the composition pipeline. Handles audio-only sources with format conversion, mixing, and processing capabilities within the audio composition. Each audio input maintains its own audio format specification and optional processing chain for effects or transformations. Implements the . ```csharp public class LVCAudioInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating an audio input with custom format
var audioInfo = new AudioInfoX(AudioFormatX.S16LE, 48000, 2);
var audioInput = new LVCAudioInput("Microphone", compositor, sourceBlock, audioInfo, autostart: true);
await compositor.Input_AddAsync(audioInput);
## Remarks Audio inputs support: - Configurable audio format (sample rate, channels, bit depth) - Optional processing blocks for audio effects, normalization, or filtering - Dynamic audio info updates during playback via UpdateInfo method - Independent lifecycle management from the main compositor - Automatic format conversion to match compositor settings ## Constructors ### LVCAudioInput(string, LiveVideoCompositor, MediaBlock, AudioInfoX, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCAudioInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, AudioInfoX info, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this audio input. - compositor (LiveVideoCompositor): The compositor instance that will manage this audio input. - mainBlock (MediaBlock): The main media block that provides the audio source content. - info (AudioInfoX): The audio info (format, channels and sample rate are required). - autostart (bool): if set to true, automatically starts the input when added to compositor. - processingBlock (MediaBlock): The optional processing block for audio effects or transformations. ## Methods ### Build(int, string, int, string) Builds the audio input pipeline by creating bridge connections and linking media blocks. ```csharp public override void Build(int id, string uniqueName, int id2 = -1, string uniqueName2 = null) ``` #### Parameters Parameters: - id (int): The primary identifier for this input. - uniqueName (string): The unique name for the bridge connection. - id2 (int): The secondary identifier (optional, default is -1). - uniqueName2 (string): The secondary unique name (optional). #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when media type is invalid. ### UpdateInfo(AudioInfoX) Updates the audio format information for this input. ```csharp public void UpdateInfo(AudioInfoX info) ``` #### Parameters Parameters: - info (AudioInfoX): The new audio format information including sample rate, channels, and bit depth. ## See Also --- # Class LVCAudioOutput Link: api/VisioForge.Core.LiveVideoCompositor.LVCAudioOutput.html # Class LVCAudioOutput # Class LVCAudioOutput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor audio output that receives composed audio content from the main composition pipeline. Handles audio-only destinations including file encoders, streaming outputs, audio monitoring, and hardware outputs. Each audio output maintains its own processing pipeline with format conversion to match the target destination requirements. Implements the . ```csharp public class LVCAudioOutput : LVCOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating an audio output for file recording
var audioOutput = new LVCAudioOutput("Audio Recording", compositor, audioEncoderBlock, autostart: true);
await compositor.Output_AddAsync(audioOutput);
## Remarks Audio output types include: - File encoders (MP3, WAV, AAC) for recording composed audio - Streaming encoders (AAC for RTMP, Opus for WebRTC) for live broadcasting - Audio monitoring outputs for real-time audio monitoring - Hardware outputs (audio interfaces, headphones) for live monitoring - Network outputs (RTP audio) for distribution Automatic format conversion ensures compatibility with compositor settings and target destinations. ## Constructors ### LVCAudioOutput(string, LiveVideoCompositor, MediaBlock, bool) Initializes a new instance of the class. ```csharp public LVCAudioOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart) ``` #### Parameters Parameters: - name (string): The unique name identifying this audio output. - compositor (LiveVideoCompositor): The compositor instance that will provide audio to this output. - mainBlock (MediaBlock): The main media block that receives and processes the composed audio. - autostart (bool): if set to true, automatically starts with the main pipeline. ## See Also --- # Class LVCFileVideoAudioInput Link: api/VisioForge.Core.LiveVideoCompositor.LVCFileVideoAudioInput.html # Class LVCFileVideoAudioInput # Class LVCFileVideoAudioInput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor file-based video and audio input specifically optimized for media file playback within compositions. Handles video and audio content from file sources with specialized buffering and synchronization for non-live content. Uses BridgeBufferSinkBlock for video to provide optimal file-based media integration with the live composition pipeline. Implements the . ```csharp public class LVCFileVideoAudioInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating a file input for background video
var fileInput = new LVCFileVideoAudioInput("Background", compositor, fileSourceBlock,
    videoInfo, audioInfo, new Rect(0, 0, 1920, 1080), autostart: true);
await compositor.Input_AddAsync(fileInput);
## Remarks File-based inputs provide: - Optimized buffering for file sources via BridgeBufferSinkBlock - Synchronized video and audio playback from media files - Support for seeking, looping, and playback control - Independent processing blocks for video and audio effects - Custom synchronization flags for file-to-live timing alignment - Automatic format detection and conversion from file sources Designed specifically for integrating pre-recorded media into live compositions. ## Constructors ### LVCFileVideoAudioInput(string, LiveVideoCompositor, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class with a compositor reference. ```csharp public LVCFileVideoAudioInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this file-based input within the compositor. - compositor (LiveVideoCompositor): The parent Live Video Compositor instance that will manage this input. - mainBlock (MediaBlock): The file source block that provides video and audio content from media files. - videoInfo (VideoFrameInfoX): The video format specification including resolution, pixel format, and frame rate. - audioInfo (AudioInfoX): The audio format specification including sample format, sample rate, and channel count. - rect (Rect): The rectangle defining position (X, Y) and dimensions (Width, Height) within the composition canvas. - autostart (bool): If set to true, the input automatically starts with the main compositor pipeline. - processingVideoBlock (MediaBlock): Optional processing block for video effects or transformations before bridging. - processingAudioBlock (MediaBlock): Optional processing block for audio effects or transformations before bridging. - live (bool): If set to true, treats the file source with live source timing (typically false for files). - customSyncFlag (bool ?): Optional synchronization flag for controlling file-to-live timing alignment. ### LVCFileVideoAudioInput(string, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class without a compositor reference. ```csharp public LVCFileVideoAudioInput(string name, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this file-based input. - mainBlock (MediaBlock): The file source block that provides video and audio content from media files. - videoInfo (VideoFrameInfoX): The video format specification including resolution, pixel format, and frame rate. - audioInfo (AudioInfoX): The audio format specification including sample format, sample rate, and channel count. - rect (Rect): The rectangle defining position (X, Y) and dimensions (Width, Height) within the composition canvas. - autostart (bool): If set to true, the input automatically starts with the main compositor pipeline. - processingVideoBlock (MediaBlock): Optional processing block for video effects or transformations before bridging. - processingAudioBlock (MediaBlock): Optional processing block for audio effects or transformations before bridging. - live (bool): If set to true, treats the file source with live source timing (typically false for files). - customSyncFlag (bool ?): Optional synchronization flag for controlling file-to-live timing alignment. ## Properties ### AudioID Gets the audio identifier. ```csharp public int AudioID { get; } ``` #### Property Value Parameters: - (int): ### Rectangle Gets or sets the rectangle. This property is ignored if the playback is started. Use the Input_VideoStream_Update method to update the rectangle during the playback. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ### VideoID Gets the video identifier. ```csharp public int VideoID { get; } ``` #### Property Value Parameters: - (int): ## Methods ### Build(int, string, int, string) Builds the file input pipeline using BridgeBufferSinkBlock for video and BridgeAudioSinkBlock for audio. ```csharp public override void Build(int id, string uniqueName, int id2 = -1, string uniqueName2 = null) ``` #### Parameters Parameters: - id (int): The video stream identifier. - uniqueName (string): The unique name for the video bridge connection. - id2 (int): The audio stream identifier. - uniqueName2 (string): The unique name for the audio bridge connection. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetVideoInfo() Gets the video information. ```csharp public VideoFrameInfoX GetVideoInfo() ``` #### Returns Parameters: - (VideoFrameInfoX): VideoFrameInfoX. ## See Also --- # Class LVCInput Link: api/VisioForge.Core.LiveVideoCompositor.LVCInput.html # Class LVCInput # Class LVCInput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Base class for Live Video Compositor input sources that feed media content into the composition pipeline. Each input runs in its own isolated MediaBlocks pipeline and connects to the main compositor via bridge blocks. This architecture allows for independent control of each input source (start, stop, pause) while maintaining synchronized output from the main composition pipeline. Supports video-only, audio-only, or combined video/audio inputs. Implements the . ```csharp public class LVCInput : IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Examples
// Creating a video input from a camera
var cameraInput = new LVCVideoAudioInput("Camera 1", compositor, cameraSettings);
cameraInput.Rectangle = new Rect(0, 0, 640, 480);  // Position in composition
await compositor.Input_AddAsync(cameraInput);

// The input will automatically start with the compositor
await compositor.StartAsync();
## Remarks Input types include: - Video capture devices (cameras, capture cards) - Audio capture devices (microphones, audio interfaces) - Network streams (RTSP, NDI, HTTP) - File-based sources (video files, image sequences) - Virtual sources (test patterns, screen capture) Each input maintains its own processing pipeline for isolation and independent lifecycle management. ## Constructors ### LVCInput(string, LiveVideoCompositor, MediaBlock, LVCMediaType, bool, MediaBlock, bool) Initializes a new instance of the class. ```csharp protected LVCInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, LVCMediaType mediaType, bool autostart, MediaBlock processingBlock = null, bool live = true) ``` #### Parameters Parameters: - name (string): The user-friendly name for this input. - compositor (LiveVideoCompositor): The parent compositor that will manage this input. - mainBlock (MediaBlock): The primary source block that provides media content. - mediaType (LVCMediaType): The type of media this input handles (video, audio, or both). - autostart (bool): If set to true, automatically start with the main compositor pipeline. - processingBlock (MediaBlock): Optional processing block for effects or transformations. - live (bool): If set to true, indicates this is a live/real-time source. ## Fields ### _bridgeSinkBlock The bridge sink block that transfers media data from this input pipeline to the main compositor. ```csharp protected MediaBlock _bridgeSinkBlock ``` #### Field Value Parameters: - (MediaBlock): #### Remarks Bridge blocks enable cross-pipeline communication, allowing independent pipeline control while maintaining synchronized media flow. ### _context The execution context providing logging, error handling, and platform-specific services. ```csharp protected ContextX _context ``` #### Field Value Parameters: - (ContextX): ### _mainBlock The primary source block that generates or receives the media content for this input. ```csharp protected MediaBlock _mainBlock ``` #### Field Value Parameters: - (MediaBlock): #### Remarks This can be a camera source, file source, network stream source, or any other MediaBlock that implements IMediaBlockSource interface. ### _processingBlock The optional processing block that can be inserted between the main source block and bridge sink. ```csharp protected MediaBlock _processingBlock ``` #### Field Value Parameters: - (MediaBlock): #### Remarks Used for applying effects, filters, or transformations to the input before it reaches the compositor. Examples include color correction, scaling, deinterlacing, or audio processing. ### disposedValue Tracks whether the object has been disposed to prevent redundant disposal. ```csharp protected bool disposedValue ``` #### Field Value Parameters: - (bool): ## Properties ### AutoStart Gets or sets a value indicating whether this input automatically starts when the main compositor starts. ```csharp public bool AutoStart { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When false, the input must be started manually using StartAsync() after the compositor starts. Useful for inputs that should be added dynamically during live production. ### ID Gets or sets the numeric identifier assigned by the compositor. ```csharp public int ID { get; } ``` #### Property Value Parameters: - (int): #### Remarks Assigned internally when the input is added to the compositor. ### MediaType Gets the type of media this input handles (video, audio, or both). ```csharp public LVCMediaType MediaType { get; } ``` #### Property Value Parameters: - (LVCMediaType): ### Name Gets the user-friendly name of this input source. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Pipeline Gets the MediaBlocks pipeline that manages this input's processing chain. ```csharp public MediaBlocksPipeline Pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): #### Remarks Each input has its own pipeline for isolation and independent control. ### UniqueName Gets or sets the unique identifier for the primary bridge connection. ```csharp public string UniqueName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This name must be unique across all inputs to ensure proper data routing. ### UniqueName2 Gets or sets the unique identifier for the secondary bridge connection (used for dual-stream inputs). ```csharp public string UniqueName2 { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Only used when an input provides both video and audio through separate bridge connections. ## Methods ### Build(int, string, int, string) Builds the input pipeline by creating and connecting the necessary bridge blocks. ```csharp public virtual void Build(int id, string uniqueName, int id2 = -1, string uniqueName2 = null) ``` #### Parameters Parameters: - id (int): The primary identifier for this input. - uniqueName (string): The unique name for the primary bridge connection. - id2 (int): The secondary identifier for dual-stream inputs (default: -1). - uniqueName2 (string): The unique name for the secondary bridge connection (optional). #### Remarks Derived classes must implement this method to set up their specific pipeline configuration, including bridge connections and any processing blocks. #### Exceptions Parameters: - (NotImplementedException): This base implementation must be overridden in derived classes. ### Dispose(bool) Releases the unmanaged resources used by the input and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method properly disposes of the pipeline, main block, and bridge connections. Derived classes should override this method to dispose of their specific resources. ### Dispose() Releases all resources used by the current instance of the class. ```csharp public void Dispose() ``` #### Remarks Call this method when the input is no longer needed to free resources immediately rather than waiting for garbage collection. ### ~LVCInput() Finalizes an instance of the class by releasing unmanaged resources. ```csharp protected ~LVCInput() ``` ### PauseAsync() Pauses the input source while maintaining its connection to the compositor. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task): A task representing the asynchronous pause operation. #### Remarks Pausing an input stops media flow but keeps the pipeline ready for quick resumption. Not all source types support pausing (e.g., live camera feeds). ### ResumeAsync() Resumes playback of a paused input source. ```csharp public Task ResumeAsync() ``` #### Returns Parameters: - (Task): A task representing the asynchronous resume operation. #### Remarks Only applicable to inputs that were previously paused. Live sources may not support pause/resume. ### StartAsync() Starts the input pipeline and begins media flow to the compositor. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if the input started successfully; otherwise, false. #### Remarks For certain source types (UniversalSource, Decklink), this method waits for the pipeline to fully initialize before returning. This ensures the source is ready before proceeding. ### StopAsync() Stops the input pipeline and disconnects from the compositor. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if the input stopped successfully; otherwise, false. #### Remarks Stopping an input releases its resources and removes it from the composition. The input can be restarted later if needed. ## See Also --- # Enum LVCMediaType Link: api/VisioForge.Core.LiveVideoCompositor.LVCMediaType.html # Enum LVCMediaType # Enum LVCMediaType **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Defines the media type for Live Video Compositor inputs and outputs. This enumeration specifies whether a compositor component handles video only, audio only, or both video and audio streams. Used to categorize and manage different types of media sources and destinations within the composition pipeline. ```csharp public enum LVCMediaType ``` ## Fields Parameters: - Video (): Video-only media type. The input or output handles only video streams and will be connected to video processing components. - Audio (): Audio-only media type. The input or output handles only audio streams and will be connected to audio processing components. - VideoAudio (): Combined video and audio media type. The input or output handles both video and audio streams simultaneously, requiring connections to both video and audio processing pipelines. ## Remarks The media type determines how the compositor will process and route the associated streams. For example, VideoAudio inputs will be connected to both video and audio mixers, while Video-only inputs will only participate in video mixing operations. --- # Enum LVCMixerType Link: api/VisioForge.Core.LiveVideoCompositor.LVCMixerType.html # Enum LVCMixerType # Enum LVCMixerType **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Defines the mixing technology used by the Live Video Compositor for combining multiple video inputs. Each mixer type offers different performance characteristics, platform compatibility, and feature sets. The choice of mixer type affects both processing efficiency and visual quality of the final composition. ```csharp public enum LVCMixerType ``` ## Fields Parameters: - CPU (): CPU-based software video mixing. Provides maximum compatibility across all platforms but may have higher CPU usage and lower performance compared to GPU-accelerated options. Best for scenarios where GPU acceleration is not available or when maximum compatibility is required. - OpenGL (): OpenGL-based GPU-accelerated video mixing. Provides good performance and cross-platform compatibility on systems with OpenGL support. Recommended for most live composition scenarios requiring real-time mixing. - Switcher (): Input switcher mode that selects one input at a time rather than mixing multiple inputs. Provides the lowest resource usage and is suitable for simple input switching scenarios where only one source needs to be active at any given time. ## Remarks - CPU: Software-based mixing, most compatible but potentially slower - OpenGL: GPU-accelerated mixing using OpenGL, good performance and cross-platform - D3D11: Windows-specific GPU acceleration using Direct3D 11, optimal for Windows platforms - Switcher: Simple input selection without actual mixing, lowest resource usage --- # Class LVCOutput Link: api/VisioForge.Core.LiveVideoCompositor.LVCOutput.html # Class LVCOutput # Class LVCOutput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Base class for Live Video Compositor output destinations that receive composed media content from the main composition pipeline. Each output runs in its own isolated MediaBlocks pipeline and connects to the main compositor via bridge blocks. This architecture allows for independent control of each output destination (start, stop, pause) while receiving synchronized content from the main composition pipeline. Supports video-only, audio-only, or combined video/audio outputs. Implements the . ```csharp public class LVCOutput : IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Examples
// Creating a file output for recording
var fileOutput = new LVCVideoAudioOutput("Recording", compositor, fileEncoderBlock);
fileOutput.SetFilenameOrURL("output.mp4");
await compositor.Output_AddAsync(fileOutput);

// The output will automatically start with the compositor
await compositor.StartAsync();
## Remarks Output types include: - File encoders (MP4, AVI, MOV recordings) - Streaming encoders (RTMP, SRT, UDP streaming) - Network outputs (NDI, RTP) - Display outputs (preview windows, fullscreen) - Hardware outputs (DeckLink, NDI hardware) Each output maintains its own processing pipeline for isolation and independent lifecycle management. ## Constructors ### LVCOutput(string, LiveVideoCompositor, MediaBlock, LVCMediaType, bool) Initializes a new instance of the class. ```csharp public LVCOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, LVCMediaType mediaType, bool autostart) ``` #### Parameters Parameters: - name (string): The user-friendly name for this output. - compositor (LiveVideoCompositor): The parent compositor that will manage this output. - mainBlock (MediaBlock): The primary sink block that consumes media content. - mediaType (LVCMediaType): The type of media this output handles (video, audio, or both). - autostart (bool): If set to true, automatically start with the main compositor pipeline. ## Fields ### _bridgeSourceBlock The bridge source block that receives media data from the main compositor pipeline. ```csharp protected MediaBlock _bridgeSourceBlock ``` #### Field Value Parameters: - (MediaBlock): #### Remarks Bridge blocks enable cross-pipeline communication, allowing independent pipeline control while maintaining synchronized media flow from the compositor. ### _compositor Reference to the parent Live Video Compositor that manages this output. ```csharp protected LiveVideoCompositor _compositor ``` #### Field Value Parameters: - (LiveVideoCompositor): ### _context The execution context providing logging, error handling, and platform-specific services. ```csharp protected ContextX _context ``` #### Field Value Parameters: - (ContextX): ### _mainBlock The primary sink block that consumes the composed media content. ```csharp protected MediaBlock _mainBlock ``` #### Field Value Parameters: - (MediaBlock): #### Remarks This can be a file writer, streaming encoder, display renderer, or any other MediaBlock that implements IMediaBlockSink interface. ### _mediaType The type of media this output handles (video, audio, or both). ```csharp protected LVCMediaType _mediaType ``` #### Field Value Parameters: - (LVCMediaType): ### disposedValue Tracks whether the object has been disposed to prevent redundant disposal. ```csharp protected bool disposedValue ``` #### Field Value Parameters: - (bool): ## Properties ### AutoStart Gets or sets a value indicating whether this output automatically starts when the main compositor starts. ```csharp public bool AutoStart { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When false, the output must be started manually using StartAsync() after the compositor starts. Useful for outputs that should be activated on-demand during live production. ### Channel Gets or sets the video channel index from which this output receives content. ```csharp public int Channel { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks When the compositor has multiple video channels, this property determines which channel's output is sent to this destination. ### Name Gets the user-friendly name of this output destination. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Pipeline Gets the MediaBlocks pipeline that manages this output's processing chain. ```csharp public MediaBlocksPipeline Pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): #### Remarks Each output has its own pipeline for isolation and independent control. ## Methods ### Build(string, string) Builds the output pipeline by creating bridge source blocks and connecting to the main sink. ```csharp public virtual void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique name for the primary bridge connection. - uniqueName2 (string): The unique name for the secondary bridge connection (optional, for dual-stream outputs). #### Remarks This method creates the appropriate bridge source block based on the media type and connects it to the main sink block. For blocks supporting dynamic inputs, new input pads are created as needed. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when _mediaType is not a valid LVCMediaType value. ### Dispose(bool) Releases the unmanaged resources used by the output and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method properly disposes of the pipeline, main block, and bridge connections. Derived classes should override this method to dispose of their specific resources. ### Dispose() Releases all resources used by the current instance of the class. ```csharp public void Dispose() ``` #### Remarks Call this method when the output is no longer needed to free resources immediately rather than waiting for garbage collection. ### ~LVCOutput() Finalizes an instance of the class by releasing unmanaged resources. ```csharp protected ~LVCOutput() ``` ### GetFilenameOrURL() Gets the output filename or URL from the main sink block. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The filename for file outputs or URL for streaming outputs; null if not applicable. #### Remarks This method is only valid for outputs that write to files or stream to network destinations. Display outputs or hardware outputs will return null. ### SetAndConnectMainBlock(MediaBlock) Sets a new main sink block and connects it to the existing bridge source. ```csharp protected bool SetAndConnectMainBlock(MediaBlock mainBlock) ``` #### Parameters Parameters: - mainBlock (MediaBlock): The new main sink block to connect. #### Returns Parameters: - (bool): true if the block was successfully set and connected; false if the operation failed. #### Remarks This method allows changing the output destination dynamically after the pipeline is built. The bridge source must already exist before calling this method. ### SetFilenameOrURL(string) Sets the output filename or URL for the main sink block. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The filename for file outputs or URL for streaming outputs. #### Remarks For file outputs, provide a local file path. For streaming outputs, provide the destination URL (e.g., rtmp://server/app/stream). This method only affects blocks that implement IMediaBlockSink. ### StartAsync() Starts the output pipeline and begins receiving composed media from the compositor. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if the output started successfully; otherwise, false. #### Remarks The output will begin processing media as soon as the compositor provides it through the bridge connection. Ensure the compositor is running before starting outputs to receive media. ### StopAsync(bool) Stops the output pipeline and finalizes any pending operations. ```csharp public Task StopAsync(bool force = false) ``` #### Parameters Parameters: - force (bool): If set to true, the pipeline will be stopped immediately without waiting for proper finalization. If false (default), the pipeline performs a graceful shutdown using end-of-stream messages. #### Returns Parameters: - (Task < bool >): A task that returns true if the output stopped successfully; otherwise, false. #### Remarks For file outputs, using force=true may result in corrupted files or missing frames. Always use force=false when recording to ensure proper file finalization. ## See Also --- # Class LVCVideoAudioInput Link: api/VisioForge.Core.LiveVideoCompositor.LVCVideoAudioInput.html # Class LVCVideoAudioInput # Class LVCVideoAudioInput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor combined video and audio input that feeds synchronized video/audio content into the composition pipeline. Handles sources with both video and audio streams, maintaining synchronization between streams while providing independent processing capabilities for video positioning/effects and audio mixing/effects. This is the most common input type for camera sources, media files, and streaming inputs. Implements the . ```csharp public class LVCVideoAudioInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating a combined video/audio input from a camera
var input = new LVCVideoAudioInput("Camera", compositor, cameraBlock, videoInfo, audioInfo,
    new Rect(0, 0, 640, 480), autostart: true);
await compositor.Input_AddAsync(input);
## Remarks Combined video/audio inputs support: - Synchronized video and audio stream processing - Independent video positioning within composition canvas via Rectangle property - Separate processing blocks for video effects and audio effects - Custom synchronization flags for latency management - Dynamic detection of video/audio availability from source blocks - Automatic format conversion to match compositor settings Most live sources (cameras, microphones, streaming inputs, media files) use this input type. ## Constructors ### LVCVideoAudioInput(string, LiveVideoCompositor, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class with a compositor reference. ```csharp public LVCVideoAudioInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this combined video/audio input within the compositor. - compositor (LiveVideoCompositor): The parent Live Video Compositor instance that will manage this input. - mainBlock (MediaBlock): The primary source block that provides both video and audio content. - videoInfo (VideoFrameInfoX): The video format specification including resolution, pixel format, and frame rate. - audioInfo (AudioInfoX): The audio format specification including sample format, sample rate, and channel count. - rect (Rect): The rectangle defining position (X, Y) and dimensions (Width, Height) within the composition canvas. - autostart (bool): If set to true, the input automatically starts with the main compositor pipeline. - processingVideoBlock (MediaBlock): Optional processing block for video effects or transformations before bridging. - processingAudioBlock (MediaBlock): Optional processing block for audio effects or transformations before bridging. - live (bool): If set to true, indicates this is a live/real-time source (affects timing behavior). - customSyncFlag (bool ?): Optional synchronization flag for controlling video/audio sync behavior in the bridge system. ### LVCVideoAudioInput(string, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class without a compositor reference. ```csharp public LVCVideoAudioInput(string name, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this combined video/audio input. - mainBlock (MediaBlock): The primary source block that provides both video and audio content. - videoInfo (VideoFrameInfoX): The video format specification including resolution, pixel format, and frame rate. - audioInfo (AudioInfoX): The audio format specification including sample format, sample rate, and channel count. - rect (Rect): The rectangle defining position (X, Y) and dimensions (Width, Height) within the composition canvas. - autostart (bool): If set to true, the input automatically starts with the main compositor pipeline. - processingVideoBlock (MediaBlock): Optional processing block for video effects or transformations before bridging. - processingAudioBlock (MediaBlock): Optional processing block for audio effects or transformations before bridging. - live (bool): If set to true, indicates this is a live/real-time source (affects timing behavior). - customSyncFlag (bool ?): Optional synchronization flag for controlling video/audio sync behavior in the bridge system. ## Properties ### AudioID Gets the audio identifier. ```csharp public int AudioID { get; } ``` #### Property Value Parameters: - (int): ### Rectangle Gets or sets the rectangle. This property is ignored if the playback is started. Use the Input_VideoStream_Update method to update the rectangle during the playback. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ### VideoID Gets the video identifier. ```csharp public int VideoID { get; } ``` #### Property Value Parameters: - (int): ## Methods ### Build(int, string, int, string) Builds the input pipeline by connecting source blocks to bridge sinks with optional processing blocks. ```csharp public override void Build(int id, string uniqueName, int id2 = -1, string uniqueName2 = null) ``` #### Parameters Parameters: - id (int): The video stream identifier. - uniqueName (string): The unique name for the video bridge connection. - id2 (int): The audio stream identifier. - uniqueName2 (string): The unique name for the audio bridge connection. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetVideoInfo() Gets the video information. ```csharp public VideoFrameInfoX GetVideoInfo() ``` #### Returns Parameters: - (VideoFrameInfoX): VideoFrameInfoX. ## See Also --- # Class LVCVideoAudioOutput Link: api/VisioForge.Core.LiveVideoCompositor.LVCVideoAudioOutput.html # Class LVCVideoAudioOutput # Class LVCVideoAudioOutput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor combined video and audio output that receives synchronized video/audio content from the main composition pipeline. Handles destinations requiring both video and audio streams with independent processing capabilities for encoding, format conversion, and output-specific transformations. This is the most common output type for recording and streaming applications. Implements the . ```csharp public class LVCVideoAudioOutput : LVCOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating a combined video/audio output for MP4 recording
var output = new LVCVideoAudioOutput("Recording", compositor, encoderBlock, autostart: true,
    videoProcessingBlock, audioProcessingBlock);
await compositor.Output_AddAsync(output);
## Remarks Combined video/audio outputs support: - Synchronized video and audio stream processing - Independent processing blocks for video encoding and audio encoding - Format conversion to match target destination requirements - File recording (MP4, AVI, MOV with synchronized A/V) - Live streaming (RTMP, SRT, WebRTC with synchronized A/V) - Hardware outputs requiring both video and audio (capture cards, displays with audio) Most recording and streaming scenarios use this output type for complete media capture. ## Constructors ### LVCVideoAudioOutput(string, LiveVideoCompositor, MediaBlock, bool, MediaBlock, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoAudioOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this combined video/audio output within the compositor. - compositor (LiveVideoCompositor): The parent Live Video Compositor instance that provides composed media content. - mainBlock (MediaBlock): The primary sink block that receives and processes both video and audio streams. - autostart (bool): If set to true, the output automatically starts with the main compositor pipeline. - processingVideoBlock (MediaBlock): Optional processing block for video encoding or format conversion before output. - processingAudioBlock (MediaBlock): Optional processing block for audio encoding or format conversion before output. ## Methods ### Build(string, string) Builds the output pipeline by connecting bridge sources to output blocks with optional processing. ```csharp public override void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique name for the video bridge connection. - uniqueName2 (string): The unique name for the audio bridge connection. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ## See Also --- # Class LVCVideoInput Link: api/VisioForge.Core.LiveVideoCompositor.LVCVideoInput.html # Class LVCVideoInput # Class LVCVideoInput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor video input that feeds video content into the composition pipeline. Handles video-only sources with positioning, scaling, and transformation capabilities within the composition canvas. Each video input maintains its own rectangle position, resize policy, and optional processing chain for effects or transformations. Implements the . ```csharp public class LVCVideoInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Creating a video input with custom positioning
var videoInput = new LVCVideoInput("Camera 1", compositor, sourceBlock, videoInfo, 
    new Rect(100, 100, 640, 480), autostart: true);
videoInput.ResizePolicy = LVCResizePolicy.LetterBox;
await compositor.Input_AddAsync(videoInput);
## Remarks Video inputs support: - Positioning within the composition canvas via Rectangle property - Resize policies (Stretch, LetterBox, Crop, etc.) - Optional processing blocks for effects, color correction, or transformations - Dynamic rectangle updates during playback via Input_VideoStream_Update method - Independent lifecycle management from the main compositor ## Constructors ### LVCVideoInput(string, LiveVideoCompositor, MediaBlock, VideoFrameInfoX, Rect, bool, MediaBlock) Initializes a new instance of the class with a compositor reference. ```csharp public LVCVideoInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, VideoFrameInfoX info, Rect rect, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this video input. - compositor (LiveVideoCompositor): The compositor instance that will manage this input. - mainBlock (MediaBlock): The main media block that provides the video source content. - info (VideoFrameInfoX): The video frame info (width, height and frame rate are required). - rect (Rect): The rectangle defining position and size within the composition. - autostart (bool): if set to true, automatically starts the input when added to compositor. - processingBlock (MediaBlock): The optional processing block for video effects or transformations. ### LVCVideoInput(string, MediaBlock, VideoFrameInfoX, Rect, bool, MediaBlock) Initializes a new instance of the class without a compositor reference. ```csharp public LVCVideoInput(string name, MediaBlock mainBlock, VideoFrameInfoX info, Rect rect, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this video input. - mainBlock (MediaBlock): The main media block that provides the video source content. - info (VideoFrameInfoX): The video frame info (width, height and frame rate are required). - rect (Rect): The rectangle defining position and size within the composition. - autostart (bool): if set to true, automatically starts the input when added to compositor. - processingBlock (MediaBlock): The optional processing block for video effects or transformations. ## Properties ### Rectangle Gets or sets the rectangle position and size for this video input within the composition canvas. This property is ignored if the playback is started. Use the Input_VideoStream_Update method to update the rectangle during the playback. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ### ResizePolicy Gets or sets the resize policy that determines how the video input is scaled to fit its rectangle. ```csharp public LVCResizePolicy ResizePolicy { get; set; } ``` #### Property Value Parameters: - (LVCResizePolicy): ## Methods ### Build(int, string, int, string) Builds the video input pipeline by creating bridge connections and linking media blocks. ```csharp public override void Build(int id, string uniqueName, int id2 = -1, string uniqueName2 = null) ``` #### Parameters Parameters: - id (int): The primary identifier for this input. - uniqueName (string): The unique name for the bridge connection. - id2 (int): The secondary identifier (optional, default is -1). - uniqueName2 (string): The secondary unique name (optional). #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when media type is invalid. ### GetVideoInfo() Gets the video frame information. ```csharp public VideoFrameInfoX GetVideoInfo() ``` #### Returns Parameters: - (VideoFrameInfoX): The video frame info. ## See Also --- # Class LVCVideoOutput Link: api/VisioForge.Core.LiveVideoCompositor.LVCVideoOutput.html # Class LVCVideoOutput # Class LVCVideoOutput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Live Video Compositor video output that receives composed video content from the main composition pipeline. Handles video-only destinations including file encoders, streaming outputs, preview displays, and hardware outputs. Each video output maintains its own processing pipeline with optional video processing blocks for encoding or transformation. Implements the . ```csharp public class LVCVideoOutput : LVCOutput, IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Examples
// Creating a video output for file recording
var videoOutput = new LVCVideoOutput("Recording", compositor, fileEncoderBlock, autostart: true);
await compositor.Output_AddAsync(videoOutput);
## Remarks Video output types include: - File encoders (MP4, AVI, MOV) for recording composed video - Streaming encoders (RTMP, SRT, UDP) for live broadcasting - Preview displays for monitoring composition output - Hardware outputs (DeckLink, NDI) for professional workflows - Network outputs (RTP, multicast) for distribution Optional processing blocks can be used for final encoding, color space conversion, or format adaptation. ## Constructors ### LVCVideoOutput(string, LiveVideoCompositor, MediaBlock, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart, MediaBlock processingVideoBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifying this video output. - compositor (LiveVideoCompositor): The compositor instance that will provide video to this output. - mainBlock (MediaBlock): The main media block that receives and processes the composed video. - autostart (bool): if set to true, automatically starts with the main pipeline. - processingVideoBlock (MediaBlock): The optional processing video block for encoding or format conversion. ## Methods ### Build(string, string) Builds the video output pipeline by creating bridge source and connecting media blocks. ```csharp public override void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique name for the primary bridge connection. - uniqueName2 (string): The unique name for the secondary bridge connection (optional). #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when media type is invalid. ## See Also --- # Class LVCVideoViewOutput Link: api/VisioForge.Core.LiveVideoCompositor.LVCVideoViewOutput.html # Class LVCVideoViewOutput # Class LVCVideoViewOutput **Namespace**: VisioForge.Core.LiveVideoCompositor **Assembly**: VisioForge.Core.dll Represents a video output destination for the Live Video Compositor that renders to a video view control. This class provides functionality to display composited video content directly in UI controls through the IVideoView interface, enabling real-time preview and monitoring capabilities. Implements the . ```csharp public class LVCVideoViewOutput : LVCVideoOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### LVCVideoViewOutput(string, LiveVideoCompositor, IVideoView, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoViewOutput(string name, LiveVideoCompositor compositor, IVideoView videoView, bool autostart, MediaBlock processingVideoBlock = null) ``` #### Parameters Parameters: - name (string): A unique identifier for this output instance, used for management and debugging purposes. - compositor (LiveVideoCompositor): The parent Live Video Compositor instance that manages this output. - videoView (IVideoView): The UI control that will display the rendered video content. Must implement IVideoView interface. - autostart (bool): If set to true, the output will automatically start with the main pipeline. If false, manual start is required. - processingVideoBlock (MediaBlock): Optional media block for additional video processing before rendering (e.g., filters, effects). Pass null for direct rendering. ## See Also --- # Namespace VisioForge.Core.LiveVideoCompositor Link: api/VisioForge.Core.LiveVideoCompositor.html # Namespace VisioForge.Core.LiveVideoCompositor # Namespace VisioForge.Core.LiveVideoCompositor ### Classes Parameters: - (): Live Video Compositor audio input that feeds audio content into the composition pipeline. Handles audio-only sources with format conversion, mixing, and processing capabilities within the audio composition. Each audio input maintains its own audio format specification and optional processing chain for effects or transformations. Implements the . - (): Live Video Compositor audio output that receives composed audio content from the main composition pipeline. Handles audio-only destinations including file encoders, streaming outputs, audio monitoring, and hardware outputs. Each audio output maintains its own processing pipeline with format conversion to match the target destination requirements. Implements the . - (): Live Video Compositor file-based video and audio input specifically optimized for media file playback within compositions. Handles video and audio content from file sources with specialized buffering and synchronization for non-live content. Uses BridgeBufferSinkBlock for video to provide optimal file-based media integration with the live composition pipeline. Implements the . - (): Base class for Live Video Compositor input sources that feed media content into the composition pipeline. Each input runs in its own isolated MediaBlocks pipeline and connects to the main compositor via bridge blocks. This architecture allows for independent control of each input source (start, stop, pause) while maintaining synchronized output from the main composition pipeline. Supports video-only, audio-only, or combined video/audio inputs. Implements the . - (): Base class for Live Video Compositor output destinations that receive composed media content from the main composition pipeline. Each output runs in its own isolated MediaBlocks pipeline and connects to the main compositor via bridge blocks. This architecture allows for independent control of each output destination (start, stop, pause) while receiving synchronized content from the main composition pipeline. Supports video-only, audio-only, or combined video/audio outputs. Implements the . - (): Live Video Compositor combined video and audio input that feeds synchronized video/audio content into the composition pipeline. Handles sources with both video and audio streams, maintaining synchronization between streams while providing independent processing capabilities for video positioning/effects and audio mixing/effects. This is the most common input type for camera sources, media files, and streaming inputs. Implements the . - (): Live Video Compositor combined video and audio output that receives synchronized video/audio content from the main composition pipeline. Handles destinations requiring both video and audio streams with independent processing capabilities for encoding, format conversion, and output-specific transformations. This is the most common output type for recording and streaming applications. Implements the . - (): Live Video Compositor video input that feeds video content into the composition pipeline. Handles video-only sources with positioning, scaling, and transformation capabilities within the composition canvas. Each video input maintains its own rectangle position, resize policy, and optional processing chain for effects or transformations. Implements the . - (): Live Video Compositor video output that receives composed video content from the main composition pipeline. Handles video-only destinations including file encoders, streaming outputs, preview displays, and hardware outputs. Each video output maintains its own processing pipeline with optional video processing blocks for encoding or transformation. Implements the . - (): Represents a video output destination for the Live Video Compositor that renders to a video view control. This class provides functionality to display composited video content directly in UI controls through the IVideoView interface, enabling real-time preview and monitoring capabilities. Implements the . - (): Resource disposal and cleanup functionality for the Live Video Compositor. This partial class implements proper disposal patterns for releasing unmanaged resources, cleaning up MediaBlocks pipelines, and ensuring proper shutdown of composition operations. Provides both synchronous and asynchronous disposal methods for different cleanup scenarios. Implements the . - (): Configuration settings for the Live Video Compositor, defining video/audio format parameters, mixer technology, resource limits, and processing capabilities for real-time composition. These settings determine the compositor's output quality, performance characteristics, and capacity for handling multiple inputs and outputs. ### Enums Parameters: - (): Defines the media type for Live Video Compositor inputs and outputs. This enumeration specifies whether a compositor component handles video only, audio only, or both video and audio streams. Used to categorize and manage different types of media sources and destinations within the composition pipeline. - (): Defines the mixing technology used by the Live Video Compositor for combining multiple video inputs. Each mixer type offers different performance characteristics, platform compatibility, and feature sets. The choice of mixer type affects both processing efficiency and visual quality of the final composition. --- # Class LiveVideoCompositor Link: api/VisioForge.Core.LiveVideoCompositorV2.LiveVideoCompositor.html # Class LiveVideoCompositor # Class LiveVideoCompositor **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Manages the disposal of resources used by the . This partial class implements the and patterns to ensure proper cleanup of both managed and unmanaged resources. ```csharp public class LiveVideoCompositor : IDisposable, IAsyncDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Example of setting the license key for the Live Video Compositor.
// This should typically be done once at application startup.
var compositor = new LiveVideoCompositor();
compositor.SetLicenseKey("YOUR_LICENSE_KEY", "Your Name", "your.email@example.com");

// After setting the license key, the SDK's features will be enabled according to the license level.
// Creating a high-performance 4K live compositor
var settings = new LiveVideoCompositorSettings(3840, 2160, new VideoFrameRate(60, 1))
{
    MixerType = LVCMixerType.OpenGL,
    VideoChannelCount = 4,
    MaxVideoInputsCount = 8,
    MaxVideoOutputsCount = 4
};

var compositor = new LiveVideoCompositor(context, settings);
await compositor.StartAsync();
## Remarks Proper licensing is required to unlock the full features of the Live Video Compositor SDK. The license key, along with user details, is used to validate the software's usage. ## Constructors ### LiveVideoCompositor(LiveVideoCompositorSettings) Initializes a new instance of the class. ```csharp public LiveVideoCompositor(LiveVideoCompositorSettings settings) ``` #### Parameters Parameters: - settings (LiveVideoCompositorSettings): The configuration settings for the compositor. #### Examples
var settings = new LiveVideoCompositorSettings(1920, 1080, new VideoFrameRate(30, 1))
{
    MixerType = LVCMixerType.OpenGL,
    AudioEnabled = true
};
var compositor = new LiveVideoCompositor(settings);
#### Remarks This constructor creates the main pipeline, video mixer based on the specified mixer type, audio mixer if enabled, and all necessary infrastructure for managing inputs and outputs. The compositor is initialized but not started - call StartAsync() to begin processing. ## Properties ### Background Gets or sets the background color of the compositor canvas. ```csharp public SKColor Background { get; set; } ``` #### Property Value Parameters: - (SKColor): #### Remarks This color is visible in areas not covered by any video input. Changes to this property take effect immediately during playback when using transparent mixer background mode. ### Settings Gets the configuration settings for this Live Video Compositor instance. ```csharp public LiveVideoCompositorSettings Settings { get; } ``` #### Property Value Parameters: - (LiveVideoCompositorSettings): #### Remarks These settings are immutable after the compositor is created. To change settings, create a new compositor instance with different settings. ### Video_Overlay_Enabled Gets or sets a value indicating whether the video overlay manager is enabled. ```csharp public bool Video_Overlay_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### Dispose(bool) Releases the unmanaged resources used by the and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. This is the public synchronous Dispose method, implementing the interface. ```csharp public void Dispose() ``` ### DisposeAsync() Asynchronously releases the unmanaged and managed resources used by the . This method is part of the pattern, allowing for asynchronous resource cleanup. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): A that represents the asynchronous dispose operation. ### DurationAsync() Gets the current playback position of the compositor. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A that completes with the current position. #### Remarks For live compositing, this typically represents the elapsed time since the compositor started. The position is determined by the main pipeline's clock. ### ~LiveVideoCompositor() Finalizes an instance of the class. This finalizer is called by the .NET runtime to release unmanaged resources if the method was not called explicitly. ```csharp protected ~LiveVideoCompositor() ``` ### GetAudioMixer() Gets the audio mixer component of the compositor. ```csharp public AudioMixerBlock GetAudioMixer() ``` #### Returns Parameters: - (AudioMixerBlock): The that combines multiple audio inputs, or null if audio is disabled. #### Remarks The audio mixer combines all audio inputs into a single output stream. It is only created if AudioEnabled is true in the settings. ### GetContext() Gets the context object for this compositor. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The instance used for logging and error handling. #### Remarks The context provides centralized logging and error management functionality for the compositor and all its components. ### GetPipeline() Gets the main processing pipeline of the compositor. ```csharp public MediaBlocksPipeline GetPipeline() ``` #### Returns Parameters: - (MediaBlocksPipeline): The main that manages the compositor's core processing. #### Remarks This pipeline contains the video mixer, audio mixer, effects processors, and output distribution. It is separate from the individual input and output pipelines. ### GetVideoMixer() Gets the video mixer component of the compositor. ```csharp public VideoMixerBlock GetVideoMixer() ``` #### Returns Parameters: - (VideoMixerBlock): The that combines multiple video inputs into a single output. #### Remarks The video mixer is the core component that performs the actual video composition. Its type (CPU, OpenGL, D3D11) is determined by the MixerType setting. ### Input_AddAsync(LVCVideoInput) Adds a video-only input to the compositor. ```csharp public Task Input_AddAsync(LVCVideoInput input) ``` #### Parameters Parameters: - input (LVCVideoInput): The video input to add. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks This method can be called before or after the compositor is started. If called after startup, the input is dynamically added to the running pipeline. The input's AutoStart property determines whether it begins processing immediately. Each input is assigned a unique ID for bridge connections. #### Exceptions Parameters: - (InvalidOperationException): May occur if the maximum number of inputs is exceeded. ### Input_AddAsync(LVCAudioInput) Adds an audio-only input to the compositor. ```csharp public Task Input_AddAsync(LVCAudioInput input) ``` #### Parameters Parameters: - input (LVCAudioInput): The audio input to add. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks This method requires audio to be enabled in the compositor settings. Like video inputs, audio inputs can be added dynamically during playback. Each input is assigned a unique ID for bridge connections and mixed into the main audio output. #### Exceptions Parameters: - (InvalidOperationException): Thrown when audio is disabled in compositor settings. ### Input_AddAsync(LVCVideoAudioInput, bool) Adds a combined video and audio input to the compositor. ```csharp public Task Input_AddAsync(LVCVideoAudioInput input, bool start = false) ``` #### Parameters Parameters: - input (LVCVideoAudioInput): The video/audio input to add. - start (bool): If true, starts the input after adding; otherwise uses the input's AutoStart property. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was added successfully; otherwise, false. #### Remarks This method handles inputs that provide both video and audio streams. The video and audio components are processed separately but remain synchronized. Special handling is provided for file sources to ensure proper preloading when added to a running compositor. Both video and audio IDs are assigned from their respective pools. ### Input_Count() Gets the total number of inputs currently added to the compositor. ```csharp public int Input_Count() ``` #### Returns Parameters: - (int): The number of inputs of all types (video, audio, and combined). #### Remarks This count includes all input types regardless of their current state (playing, paused, or stopped). ### Input_Get(int) Gets an input by its index in the input list. ```csharp public LVCInput Input_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input. #### Returns Parameters: - (LVCInput): The at the specified index; null if the index is out of range. #### Remarks This method returns the base input type. Cast the result to the specific input type (LVCVideoInput, LVCAudioInput, or LVCVideoAudioInput) as needed. ### Input_Get(Guid) Gets an input by its unique identifier. ```csharp public LVCInput Input_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the input. #### Returns Parameters: - (LVCInput): The with the specified ID; null if not found. #### Remarks This is the preferred method for retrieving inputs as IDs are guaranteed to be unique and stable throughout the input's lifetime. The returned base type can be cast to the specific input type as needed. ### Input_GetID(string) Gets the unique identifier of an input by its name. ```csharp public Guid? Input_GetID(string name) ``` #### Parameters Parameters: - name (string): The name of the input to find. #### Returns Parameters: - (Guid ?): The of the input if found; null if no input with the specified name exists. #### Remarks Input names are not required to be unique, so this method returns the first match found. For reliable identification, use the input's ID directly. ### Input_GetName(Guid) Gets the name of an input by its unique identifier. ```csharp public string Input_GetName(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the input. #### Returns Parameters: - (string): The name of the input if found; null if no input with the specified ID exists. #### Remarks This method is useful for displaying input information in user interfaces or logs. ### Input_RemoveAsync(Guid) Removes an input from the compositor by its unique ID. ```csharp public Task Input_RemoveAsync(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the input to remove. #### Returns Parameters: - (Task < bool >): A that completes with true if the input was removed successfully; otherwise, false. #### Remarks This method can be called during playback to dynamically remove inputs. It properly: - Stops the input pipeline - Blocks and removes mixer pads - Cleans up bridge connections - Releases IDs back to the pool for reuse - Disposes of all resources The removal is performed safely without interrupting other inputs or the main pipeline. ### Input_VideoAudio_Get(int) Gets a video/audio input by its index in the input list. ```csharp public LVCVideoAudioInput Input_VideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the input. #### Returns Parameters: - (LVCVideoAudioInput): The at the specified index; null if the index is out of range or the input is not a video/audio type. #### Remarks This method performs type checking and will return null if the input at the specified index is not a combined video/audio input. ### Input_VideoAudio_Get(Guid) Gets a video/audio input by its unique identifier. ```csharp public LVCVideoAudioInput Input_VideoAudio_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the input. #### Returns Parameters: - (LVCVideoAudioInput): The with the specified ID; null if not found or the input is not a video/audio type. #### Remarks This is the preferred method for retrieving inputs as IDs are guaranteed to be unique and stable throughout the input's lifetime. ### Input_VideoStream_Get(LVCInput) Gets the video mixer stream configuration for a specific input. ```csharp public VideoMixerStream Input_VideoStream_Get(LVCInput input) ``` #### Parameters Parameters: - input (LVCInput): The input to get the stream for. #### Returns Parameters: - (VideoMixerStream): The containing position, size, and other properties; null if the input is not found or the video mixer is not initialized. #### Remarks Use this method to retrieve the current configuration of a video input stream, which can then be modified and updated using Input_VideoStream_Update(). ### Input_VideoStream_Update(VideoMixerStream) Updates the configuration of a video input stream in the mixer. ```csharp public void Input_VideoStream_Update(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The stream configuration to update. #### Examples
var stream = compositor.Input_VideoStream_Get(input);
if (stream != null)
{
    stream.Alpha = 0.5; // Set 50% transparency
    stream.Rectangle = new Rect(100, 100, 640, 480); // Reposition
    compositor.Input_VideoStream_Update(stream);
}
#### Remarks Use this method to dynamically change properties of a video input during playback, such as position, size, opacity, or z-order. The stream object should be obtained from Input_VideoStream_Get() and modified before passing to this method. ### Output_AddAsync(LVCVideoOutput, bool) Adds a video-only output to the compositor. ```csharp public Task Output_AddAsync(LVCVideoOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCVideoOutput): The video output to add. - start (bool): If true, starts the output immediately; otherwise, it must be started manually. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the output was added successfully; otherwise, false. #### Remarks This method can be called before or after the compositor is started. If called after startup, the output is dynamically added to the running pipeline using a tee element. The start parameter overrides the output's AutoStart property for immediate activation. ### Output_AddAsync(LVCAudioOutput, bool) Adds an audio-only output to the compositor. ```csharp public Task Output_AddAsync(LVCAudioOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCAudioOutput): The audio output to add. - start (bool): If true, starts the output immediately; otherwise, it must be started manually. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the output was added successfully; otherwise, false. #### Remarks Audio outputs receive the mixed audio from all audio inputs. Multiple audio outputs can be active simultaneously, each receiving the same audio mix. This is useful for recording while streaming or monitoring. ### Output_AddAsync(LVCVideoAudioOutput, bool) Adds a combined video and audio output to the compositor. ```csharp public Task Output_AddAsync(LVCVideoAudioOutput output, bool start = false) ``` #### Parameters Parameters: - output (LVCVideoAudioOutput): The video/audio output to add. - start (bool): If true, starts the output immediately; otherwise, it must be started manually. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the output was added successfully; otherwise, false. #### Remarks This method creates separate bridge connections for video and audio streams to the output. Both streams remain synchronized through the output pipeline. Common uses include recording files with both video and audio or streaming to services that require both components. ### Output_Audio_Get(int) Gets an audio output by its index in the output list. ```csharp public LVCAudioOutput Output_Audio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCAudioOutput): The at the specified index; null if the index is out of range or the output is not an audio-only type. #### Remarks This method performs type checking and will return null if the output at the specified index is not an audio-only output. ### Output_Audio_Get(Guid) Gets an audio output by its unique identifier. ```csharp public LVCAudioOutput Output_Audio_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output. #### Returns Parameters: - (LVCAudioOutput): The with the specified ID; null if not found or the output is not an audio-only type. #### Remarks This is the preferred method for retrieving outputs as IDs are guaranteed to be unique and stable throughout the output's lifetime. ### Output_Count() Gets the total number of outputs currently added to the compositor. ```csharp public int Output_Count() ``` #### Returns Parameters: - (int): The number of outputs of all types (video, audio, and combined). #### Remarks This count includes all output types regardless of their current state (active or inactive). ### Output_Get(int) Gets an output by its index in the output list. ```csharp public LVCOutput Output_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCOutput): The at the specified index; null if the index is out of range. #### Remarks This method returns the base output type. Cast the result to the specific output type (LVCVideoOutput, LVCAudioOutput, or LVCVideoAudioOutput) as needed. ### Output_Get(Guid) Gets an output by its unique identifier. ```csharp public LVCOutput Output_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output. #### Returns Parameters: - (LVCOutput): The with the specified ID; null if not found. #### Remarks This is the preferred method for retrieving outputs as IDs are guaranteed to be unique and stable throughout the output's lifetime. The returned base type can be cast to the specific output type as needed. ### Output_Get(string) Gets an output by its name. ```csharp [Obsolete("Use Output_Get(Guid id) instead for better performance and unique identification.")] public LVCOutput Output_Get(string name) ``` #### Parameters Parameters: - name (string): The name of the output to find. #### Returns Parameters: - (LVCOutput): The first with the specified name; null if no output with the specified name exists. #### Remarks Output names are not required to be unique, so this method returns the first match found. This method is obsolete and may be removed in future versions. ### Output_GetID(string) Gets the unique identifier of an output by its name. ```csharp public Guid? Output_GetID(string name) ``` #### Parameters Parameters: - name (string): The name of the output to find. #### Returns Parameters: - (Guid ?): The of the output if found; null if no output with the specified name exists. #### Remarks Output names are not required to be unique, so this method returns the first match found. For reliable identification, use the output's ID directly. ### Output_GetName(Guid) Gets the name of an output by its unique identifier. ```csharp public string Output_GetName(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output. #### Returns Parameters: - (string): The name of the output if found; null if no output with the specified ID exists. #### Remarks This method is useful for displaying output information in user interfaces or logs. ### Output_RemoveAsync(Guid) Removes an output from the compositor by its unique ID. ```csharp public Task Output_RemoveAsync(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output to remove. #### Returns Parameters: - (Task < bool >): A that completes with true if the output was removed successfully; otherwise, false. #### Remarks This method stops the output pipeline gracefully and removes it from the compositor. For file outputs, this ensures proper file finalization. The output is disposed after removal. ### Output_VideoAudio_Get(int) Gets a video/audio output by its index in the output list. ```csharp public LVCVideoAudioOutput Output_VideoAudio_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCVideoAudioOutput): The at the specified index; null if the index is out of range or the output is not a video/audio type. #### Remarks This method performs type checking and will return null if the output at the specified index is not a combined video/audio output. ### Output_VideoAudio_Get(Guid) Gets a video/audio output by its unique identifier. ```csharp public LVCVideoAudioOutput Output_VideoAudio_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output. #### Returns Parameters: - (LVCVideoAudioOutput): The with the specified ID; null if not found or the output is not a video/audio type. #### Remarks This is the preferred method for retrieving outputs as IDs are guaranteed to be unique and stable throughout the output's lifetime. ### Output_Video_Get(int) Gets a video output by its index in the output list. ```csharp public LVCVideoOutput Output_Video_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output. #### Returns Parameters: - (LVCVideoOutput): The at the specified index; null if the index is out of range or the output is not a video-only type. #### Remarks This method performs type checking and will return null if the output at the specified index is not a video-only output. ### Output_Video_Get(Guid) Gets a video output by its unique identifier. ```csharp public LVCVideoOutput Output_Video_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique identifier of the output. #### Returns Parameters: - (LVCVideoOutput): The with the specified ID; null if not found or the output is not a video-only type. #### Remarks This is the preferred method for retrieving outputs as IDs are guaranteed to be unique and stable throughout the output's lifetime. ### SetLicenseKey(string, string, string) Sets the license key for the Live Video Compositor SDK. ```csharp public void SetLicenseKey(string licenseKey, string userName, string email) ``` #### Parameters Parameters: - licenseKey (string): The unique license key provided by VisioForge. - userName (string): The name of the user or organization associated with the license. - email (string): The email address associated with the license. ### StartAsync() Starts the compositor and all configured inputs and outputs. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A that completes with true if startup was successful; otherwise, false. #### Examples
var compositor = new LiveVideoCompositor(settings);
// Add inputs and outputs...
if (await compositor.StartAsync())
{
    Console.WriteLine("Compositor started successfully");
}
#### Remarks This method performs the following operations: 1. Applies license keys to all pipelines 2. Builds the internal pipeline structure 3. Preloads all inputs and outputs for synchronized startup 4. Configures clock synchronization across all pipelines 5. Starts all components in the correct order Inputs and outputs with AutoStart=true will begin processing immediately. Others must be started manually after the compositor is running. ### StopAsync() Stops the compositor and all active inputs and outputs. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous stop operation. #### Remarks This method stops all components in the reverse order of startup: 1. Stops all inputs 2. Stops the main pipeline 3. Stops all outputs File outputs are properly finalized to ensure valid output files. After stopping, the compositor must be disposed and cannot be restarted. ### Video_Effects_AddOrUpdateAsync(BaseVideoEffect, int) Adds a new video effect or updates an existing one on the compositor output. ```csharp public Task Video_Effects_AddOrUpdateAsync(BaseVideoEffect effect, int channel = 0) ``` #### Parameters Parameters: - effect (BaseVideoEffect): The video effect to add or update. If an effect with the same name exists, it will be updated. - channel (int): The channel to apply the effect to. This parameter is reserved for future use and currently has no effect. Default is 0. #### Returns Parameters: - (Task): A representing the asynchronous operation. #### Remarks This method can be called during playback to dynamically add or modify effects. If the video effect manager is not initialized, this method will return without doing anything. ### Video_Effects_Clear(int) Removes all video effects from the compositor output. ```csharp public void Video_Effects_Clear(int channel = 0) ``` #### Parameters Parameters: - channel (int): The channel to clear effects from. This parameter is reserved for future use and currently has no effect. Default is 0. #### Remarks This method immediately removes all active video effects without pausing the pipeline. Use this method when you need to reset the compositor to its default state without effects. If the video effect manager is not initialized, this method will return without doing anything. ### Video_Effects_Get(string, int) Retrieves a video effect by its name. ```csharp public IBaseVideoEffect Video_Effects_Get(string effectName, int channel = 0) ``` #### Parameters Parameters: - effectName (string): The unique name of the effect to retrieve. - channel (int): The channel to get the effect from. This parameter is reserved for future use and currently has no effect. Default is 0. #### Returns Parameters: - (IBaseVideoEffect): The instance if found; otherwise, null. #### Remarks Use this method to retrieve an effect instance for modification or inspection. If the video effect manager is not initialized, this method will return null. ### Video_Effects_RemoveAsync(BaseVideoEffect, int) Removes a video effect from the compositor output. ```csharp public Task Video_Effects_RemoveAsync(BaseVideoEffect effect, int channel = 0) ``` #### Parameters Parameters: - effect (BaseVideoEffect): The video effect instance to remove. - channel (int): The channel to remove the effect from. This parameter is reserved for future use and currently has no effect. Default is 0. #### Returns Parameters: - (Task): A representing the asynchronous operation. #### Remarks This method pauses the pipeline during effect removal to ensure smooth operation. The pipeline will automatically resume after the effect is removed. If the video effect manager or pipeline is not initialized, this method will return without doing anything. ### Video_Effects_RemoveAsync(string, int) Removes a video effect from the compositor output by its name. ```csharp public Task Video_Effects_RemoveAsync(string name, int channel = 0) ``` #### Parameters Parameters: - name (string): The unique name of the effect to remove. - channel (int): The channel to remove the effect from. This parameter is reserved for future use and currently has no effect. Default is 0. #### Returns Parameters: - (Task): A representing the asynchronous operation. #### Remarks This method first looks up the effect by name, then removes it if found. The pipeline is paused during removal and automatically resumed afterwards. If the effect is not found or the video effect manager is not initialized, this method will return without doing anything. ### Video_Overlay_Add(IOverlayManagerElement, int) Adds a new overlay element to the video stream. ```csharp public void Video_Overlay_Add(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to add, such as text, image, or shape overlay. - channel (int): The channel number for multi-channel support. Currently not used but reserved for future use. Default is 0. #### Remarks The overlay will be rendered on top of the video according to its position and properties. Multiple overlays can be added and will be rendered in the order they were added. ### Video_Overlay_Clear(int) Removes all overlay elements from the video stream. ```csharp public void Video_Overlay_Clear(int channel = 0) ``` #### Parameters Parameters: - channel (int): The channel number for multi-channel support. Currently not used but reserved for future use. Default is 0. #### Remarks This method clears all overlays at once, leaving a clean video output without any overlays. ### Video_Overlay_Remove(IOverlayManagerElement, int) Removes a specific overlay element from the video stream. ```csharp public void Video_Overlay_Remove(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to remove. Must be the same instance that was previously added. - channel (int): The channel number for multi-channel support. Currently not used but reserved for future use. Default is 0. #### Remarks If the specified overlay is not found in the current overlay list, no action is taken. ### Video_Overlay_RemoveAt(int, int) Removes an overlay element at the specified index from the overlay list. ```csharp public void Video_Overlay_RemoveAt(int index, int channel = 0) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to remove. - channel (int): The channel number for multi-channel support. Currently not used but reserved for future use. Default is 0. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when the index is out of range of the overlay list. ### Video_Overlay_Update(IOverlayManagerElement, int) Updates an existing overlay element with new properties. ```csharp public void Video_Overlay_Update(IOverlayManagerElement overlay, int channel = 0) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element with updated properties. Must be the same instance that was previously added. - channel (int): The channel number for multi-channel support. Currently not used but reserved for future use. Default is 0. #### Remarks This method removes the existing overlay and re-adds it with the updated properties. This ensures that any changes to the overlay's properties (position, text, color, etc.) are immediately reflected in the video output. ### OnError Occurs when an error happens during compositor operation. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): #### Remarks Subscribe to this event to receive notifications about errors in the compositor, inputs, outputs, or any processing pipelines. The event args contain details about the error source and description. ## See Also --- # Class LiveVideoCompositorSettings Link: api/VisioForge.Core.LiveVideoCompositorV2.LiveVideoCompositorSettings.html # Class LiveVideoCompositorSettings # Class LiveVideoCompositorSettings **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Contains configuration settings for the Live Video Compositor. This class defines all the parameters needed to initialize and configure a live video compositing session, including video dimensions, frame rate, audio settings, and output destinations. ```csharp public class LiveVideoCompositorSettings ``` #### Inheritance #### Inherited Members ## Remarks The settings control both video and audio parameters for the compositor, as well as specify the mixer type and output targets. Video parameters are immutable once set through the constructor, while audio settings and output destinations can be modified after initialization. ## Constructors ### LiveVideoCompositorSettings(int, int, VideoFrameRate) Initializes a new instance of the class with the specified video dimensions and frame rate. ```csharp public LiveVideoCompositorSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width of the output video in pixels. - height (int): The height of the output video in pixels. - frameRate (VideoFrameRate): The frame rate for the output video. #### Remarks The constructor sets the video parameters which are immutable after initialization. The mixer type is automatically set to OpenGL for cross-platform compatibility. Audio settings are initialized to default values but can be modified after construction. ## Properties ### AudioChannels Gets or sets the number of audio channels. ```csharp public int AudioChannels { get; set; } ``` #### Property Value Parameters: - (int): ### AudioEnabled Gets or sets a value indicating whether audio stream processing is enabled in the compositor. ```csharp public bool AudioEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### AudioFormat Gets or sets the audio sample format for the compositor's audio output. ```csharp public AudioFormatX AudioFormat { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### AudioOutput Gets or sets the audio renderer block for audio playback. ```csharp public AudioRendererBlock AudioOutput { get; set; } ``` #### Property Value Parameters: - (AudioRendererBlock): ### AudioSampleRate Gets or sets the audio sample rate in Hz. ```csharp public int AudioSampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### MixerType Gets or sets the type of video mixer to use for compositing. ```csharp public LVCMixerType MixerType { get; set; } ``` #### Property Value Parameters: - (LVCMixerType): ### VideoFrameRate Gets the frame rate for the output video. ```csharp public VideoFrameRate VideoFrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### VideoHeight Gets the height of the output video in pixels. ```csharp public int VideoHeight { get; } ``` #### Property Value Parameters: - (int): ### VideoView Gets or sets the video view control for direct rendering output. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): ### VideoWidth Gets the width of the output video in pixels. ```csharp public int VideoWidth { get; } ``` #### Property Value Parameters: - (int): --- # Class LVCAudioInput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCAudioInput.html # Class LVCAudioInput # Class LVCAudioInput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents an audio input for the Live Video Compositor that can receive and process audio streams. This class provides functionality to connect audio sources, apply processing blocks, and route audio to the compositor pipeline. Implements the . ```csharp public class LVCAudioInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### LVCAudioInput(string, LiveVideoCompositor, MediaBlock, AudioInfoX, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCAudioInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, AudioInfoX info, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifier for this audio input. - compositor (LiveVideoCompositor): The live video compositor instance that will manage this input. - mainBlock (MediaBlock): The main media block that provides the audio source. - info (AudioInfoX): The audio information containing format, channels, and sample rate (required). - autostart (bool): If set to true, the input will start automatically when added to the compositor. - processingBlock (MediaBlock): Optional processing block for audio effects or transformations. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when info parameter is null. ## Properties ### Info Gets the audio information containing format details such as sample rate, channels, and audio format. ```csharp public AudioInfoX Info { get; } ``` #### Property Value Parameters: - (AudioInfoX): ## Methods ### UpdateInfo(AudioInfoX) Updates the audio information for this input with new format specifications. ```csharp public void UpdateInfo(AudioInfoX info) ``` #### Parameters Parameters: - info (AudioInfoX): The new audio information containing updated format, channels, or sample rate. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when info parameter is null. ## See Also --- # Class LVCAudioOutput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCAudioOutput.html # Class LVCAudioOutput # Class LVCAudioOutput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents an audio output for the Live Video Compositor that can receive and render audio streams. This class provides functionality to connect audio sinks and output devices to the compositor pipeline. Implements the . ```csharp public class LVCAudioOutput : LVCOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### LVCAudioOutput(string, LiveVideoCompositor, MediaBlock, bool) Initializes a new instance of the class. ```csharp public LVCAudioOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart) ``` #### Parameters Parameters: - name (string): The unique name identifier for this audio output. - compositor (LiveVideoCompositor): The live video compositor instance that will manage this output. - mainBlock (MediaBlock): The main media block that will handle the audio output sink. - autostart (bool): If set to true, the output will start automatically with the main pipeline. ## See Also --- # Class LVCInput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCInput.html # Class LVCInput # Class LVCInput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Base class for all Live Video Compositor input sources. ```csharp public class LVCInput : IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Remarks This abstract base class provides the common functionality for all input types in the Live Video Compositor. It manages the input pipeline, bridge connections, and lifecycle operations. Derived classes implement specific input types such as video-only, audio-only, or combined video/audio inputs. Each input maintains its own pipeline for processing before sending data to the main compositor. ## Constructors ### LVCInput(string, LiveVideoCompositor, MediaBlock, LVCMediaType, bool, MediaBlock, bool) Initializes a new instance of the class. ```csharp protected LVCInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, LVCMediaType mediaType, bool autostart, MediaBlock processingBlock = null, bool live = true) ``` #### Parameters Parameters: - name (string): A descriptive name for this input. - compositor (LiveVideoCompositor): The compositor this input belongs to. Can be null if adding later. - mainBlock (MediaBlock): The source block that provides the media stream. - mediaType (LVCMediaType): The type of media this input provides (video, audio, or both). - autostart (bool): If true, starts automatically when the compositor starts. - processingBlock (MediaBlock): Optional processing block for applying effects. Default is null. - live (bool): If true, indicates a live source requiring real-time processing. Default is true. #### Remarks This protected constructor is called by derived classes to initialize the base input functionality. It creates a separate pipeline for this input and configures clock synchronization. ## Fields ### _bridgeSinkBlock The bridge sink block. ```csharp protected MediaBlock _bridgeSinkBlock ``` #### Field Value Parameters: - (MediaBlock): ### _compositor Reference to the parent Live Video Compositor that manages this input. ```csharp protected LiveVideoCompositor _compositor ``` #### Field Value Parameters: - (LiveVideoCompositor): ### _context The execution context providing logging, error handling, and platform-specific services. ```csharp protected ContextX _context ``` #### Field Value Parameters: - (ContextX): ### _processingBlock The processing block (optional). ```csharp protected MediaBlock _processingBlock ``` #### Field Value Parameters: - (MediaBlock): ### disposedValue The disposed value. ```csharp protected bool disposedValue ``` #### Field Value Parameters: - (bool): ## Properties ### AutoStart Gets or sets a value indicating whether this input starts automatically with the main compositor. ```csharp public bool AutoStart { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When set to true, this input will begin processing as soon as the compositor starts. When false, the input must be started manually using StartAsync() or ResumeAsync(). ### ID Gets the unique identifier for this input. ```csharp public Guid ID { get; } ``` #### Property Value Parameters: - (Guid): #### Remarks This ID is generated automatically when the input is created and remains constant throughout the input's lifetime. Use this for reliable input identification. ### IsSeekable Gets a value indicating whether this input supports seeking operations. ```csharp public bool IsSeekable { get; } ``` #### Property Value Parameters: - (bool): #### Remarks Seekability is determined by the main block type. File-based sources typically support seeking, while live sources (cameras, network streams) typically do not. ### MainBlock Gets or sets the main source block that provides media data for this input. ```csharp public MediaBlock MainBlock { get; } ``` #### Property Value Parameters: - (MediaBlock): #### Remarks This is typically a source block such as UniversalSourceBlock, DecklinkVideoSourceBlock, or other media source implementations. The block type determines the input's capabilities and whether it supports seeking. ### MediaType Gets the type of media this input provides. ```csharp public LVCMediaType MediaType { get; } ``` #### Property Value Parameters: - (LVCMediaType): ### Name Gets the descriptive name of this input. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Pipeline Gets the media processing pipeline for this input. ```csharp public MediaBlocksPipeline Pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): #### Remarks Each input maintains its own pipeline separate from the main compositor pipeline. This allows independent control over playback state and processing. ### UniqueName Gets or sets the unique bridge identifier for the primary media stream. ```csharp public string UniqueName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This internal identifier is used by the bridge system to connect this input's pipeline to the main compositor pipeline. It is set automatically during the build process. ### UniqueName2 Gets or sets the unique bridge identifier for the secondary media stream. ```csharp public string UniqueName2 { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This internal identifier is used when an input provides both video and audio streams, requiring separate bridge connections. It is set automatically during the build process. ## Methods ### Dispose(bool) Releases the unmanaged and optionally managed resources used by this input. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method disposes of the main block, pipeline, and bridge sink block if they exist. Derived classes should override this method to dispose of their specific resources, ensuring to call the base implementation. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting resources. ```csharp public void Dispose() ``` #### Remarks Call this method when you are finished using the input. This method calls Dispose(true) and suppresses finalization to improve performance. ### ~LVCInput() Finalizes an instance of the class. ```csharp protected ~LVCInput() ``` #### Remarks The finalizer calls Dispose(false) to release unmanaged resources. This ensures resources are cleaned up even if Dispose() is not called explicitly. ### PauseAsync() Pauses playback of this input. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous pause operation. #### Remarks The input can be resumed later using ResumeAsync(). The input maintains its current position and state while paused. ### ResumeAsync() Resumes playback of this input after it has been paused. ```csharp public virtual Task ResumeAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous resume operation. #### Remarks This virtual method can be overridden by derived classes to perform additional operations when resuming. The base implementation simply resumes the pipeline. ### StartAsync(bool) Starts this input's pipeline and begins processing media. ```csharp public Task StartAsync(bool preloadOnly = false) ``` #### Parameters Parameters: - preloadOnly (bool): If true, only preloads the pipeline without starting playback. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the start was successful; otherwise, false. #### Remarks For certain source types (UniversalSourceBlock, DecklinkVideoSourceBlock), this method waits for the pipeline to reach a ready state before returning. This ensures proper initialization of complex sources. The preloadOnly parameter is useful for preparing inputs without immediately starting playback. ### StopAsync() Stops this input's pipeline and releases processing resources. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task < bool >): A that completes with true if the stop was successful; otherwise, false. #### Remarks This method performs a forced stop of the pipeline to ensure quick shutdown. After stopping, the input would need to be restarted using StartAsync() to resume processing. ## See Also --- # Enum LVCMediaType Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCMediaType.html # Enum LVCMediaType # Enum LVCMediaType **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Defines the media types supported by the Live Video Compositor for input and output streams. ```csharp public enum LVCMediaType ``` ## Fields Parameters: - Video (): Video-only media stream without audio. - Audio (): Audio-only media stream without video. - VideoAudio (): Combined video and audio media stream. --- # Enum LVCMixerType Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCMixerType.html # Enum LVCMixerType # Enum LVCMixerType **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Defines the rendering backend types available for video mixing in the Live Video Compositor. Different backends offer various performance characteristics and platform compatibility. ```csharp public enum LVCMixerType ``` ## Fields Parameters: - CPU (): Software-based CPU rendering for maximum compatibility but lower performance. - OpenGL (): Hardware-accelerated rendering using OpenGL for cross-platform GPU acceleration. --- # Class LVCOutput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCOutput.html # Class LVCOutput # Class LVCOutput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Base class for all Live Video Compositor output destinations. ```csharp public class LVCOutput : IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Remarks This class provides the common functionality for all output types in the Live Video Compositor. It manages the output pipeline, bridge connections from the main compositor, and lifecycle operations. Derived classes implement specific output types such as video files, streams, or display outputs. Each output maintains its own pipeline separate from the main compositor for independent control. ## Constructors ### LVCOutput(string, LiveVideoCompositor, MediaBlock, LVCMediaType, bool) Initializes a new instance of the class. ```csharp public LVCOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, LVCMediaType mediaType, bool autostart) ``` #### Parameters Parameters: - name (string): A descriptive name for this output. - compositor (LiveVideoCompositor): The compositor this output belongs to. - mainBlock (MediaBlock): The sink block that will receive and process the media stream. - mediaType (LVCMediaType): The type of media this output handles (video, audio, or both). - autostart (bool): If true, starts automatically when the compositor starts. #### Remarks This constructor initializes the output pipeline and configures clock synchronization with the main compositor. The main block typically represents a file sink, stream sink, or display renderer. ## Fields ### _bridgeSourceBlock The bridge source block. ```csharp protected MediaBlock _bridgeSourceBlock ``` #### Field Value Parameters: - (MediaBlock): ### _compositor Reference to the parent Live Video Compositor that manages this output. ```csharp protected LiveVideoCompositor _compositor ``` #### Field Value Parameters: - (LiveVideoCompositor): ### _context The execution context providing logging, error handling, and platform-specific services. ```csharp protected ContextX _context ``` #### Field Value Parameters: - (ContextX): ### _mainBlock The primary sink block that receives and processes the output media stream. ```csharp protected MediaBlock _mainBlock ``` #### Field Value Parameters: - (MediaBlock): ### _mediaType The type of media (video, audio, or both) handled by this output. ```csharp protected LVCMediaType _mediaType ``` #### Field Value Parameters: - (LVCMediaType): ### disposedValue The disposed value. ```csharp protected bool disposedValue ``` #### Field Value Parameters: - (bool): ## Properties ### AutoStart Gets or sets a value indicating whether this output starts automatically with the main compositor. ```csharp public bool AutoStart { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When set to true, this output will begin processing as soon as the compositor starts. When false, the output must be started manually using StartAsync(). This is useful for outputs that should be activated on-demand, such as recording outputs. ### ID Gets the unique identifier for this output. ```csharp public Guid ID { get; } ``` #### Property Value Parameters: - (Guid): #### Remarks This ID is generated automatically when the output is created and remains constant throughout the output's lifetime. Use this for reliable output identification instead of names. ### Name Gets the descriptive name of this output. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Pipeline Gets the media processing pipeline for this output. ```csharp public MediaBlocksPipeline Pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): #### Remarks Each output maintains its own pipeline separate from the main compositor pipeline, allowing independent control over recording, streaming, or display operations. ## Methods ### Build(string, string) Builds the internal pipeline structure for this output. ```csharp public virtual void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique bridge identifier for the primary stream (video or audio). - uniqueName2 (string): The unique bridge identifier for the secondary stream (used for video/audio outputs). #### Remarks This virtual method creates the bridge source blocks that receive data from the main compositor and connects them to the output's main block. It can be overridden by derived classes for custom pipeline configurations. The method handles dynamic input creation for blocks that support it. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when the media type is not recognized. ### Dispose(bool) Releases the unmanaged and optionally managed resources used by this output. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method disposes of the main block, pipeline, and bridge source block if they exist. Derived classes should override this method to dispose of their specific resources, ensuring to call the base implementation. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting resources. ```csharp public void Dispose() ``` #### Remarks Call this method when you are finished using the output. This method ensures proper cleanup of all resources and should be called before removing the output from the compositor. ### ~LVCOutput() Finalizes an instance of the class. ```csharp protected ~LVCOutput() ``` #### Remarks The finalizer calls Dispose(false) to release unmanaged resources. This ensures resources are cleaned up even if Dispose() is not called explicitly. ### GetFilenameOrURL() Gets the filename or URL associated with this output. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The filename or URL if the main block implements ; otherwise, null. #### Remarks This method delegates to the main block's implementation of IMediaBlockSink. It's typically used for file or stream outputs to retrieve the destination path or URL. ### SetAndConnectMainBlock(MediaBlock) Sets a new main block and connects it to the existing bridge source. ```csharp protected bool SetAndConnectMainBlock(MediaBlock mainBlock) ``` #### Parameters Parameters: - mainBlock (MediaBlock): The new sink block to use as the main output destination. #### Returns Parameters: - (bool): true if the connection was successful; false if the block is null or connection failed. #### Remarks This protected method allows derived classes to change the output destination dynamically. The bridge source must already be created before calling this method. ### SetFilenameOrURL(string) Sets the filename or URL for this output. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The filename or URL to set as the output destination. #### Remarks This method delegates to the main block's implementation of IMediaBlockSink. It's typically used for file or stream outputs to set the destination path or URL. The actual behavior depends on the specific sink implementation in the main block. ### StartAsync() Starts this output's pipeline and begins processing media from the compositor. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A that completes with true if the start was successful; otherwise, false. #### Remarks This method should be called after the output has been added to the compositor. If AutoStart is true, this method is called automatically when the compositor starts. ### StopAsync(bool) Stops this output's pipeline and finalizes any pending operations. ```csharp public Task StopAsync(bool force = false) ``` #### Parameters Parameters: - force (bool): If true, forces immediate pipeline shutdown without waiting for pending data. If false, performs a graceful shutdown using end-of-stream messages. Default is false. #### Returns Parameters: - (Task < bool >): A that completes with true if the stop was successful; otherwise, false. #### Remarks For file outputs, using force=true may result in incomplete files or corrupted endings. Always use force=false (default) for file outputs to ensure proper finalization. For display or streaming outputs, force=true can be used for immediate shutdown. ## See Also --- # Enum LVCResizePolicy Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCResizePolicy.html # Enum LVCResizePolicy # Enum LVCResizePolicy **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Defines the resize policy options for video inputs in the Live Video Compositor. ```csharp public enum LVCResizePolicy ``` ## Fields Parameters: - Letterbox (): Scales the video to fit within the target rectangle while maintaining the original aspect ratio. Black bars (letterboxing or pillarboxing) are added as needed to fill the remaining space. This mode ensures the entire source video is visible without any cropping. If the aspect ratios of source and target don't match, black bars will appear either on the sides (pillarboxing) or top/bottom (letterboxing) of the video. - Stretch (): Stretches the video to completely fill the target rectangle, ignoring the original aspect ratio. This mode may cause visual distortion if the source and target aspect ratios differ significantly. Use this mode when you need to fill the exact rectangle dimensions and aspect ratio preservation is not important. - LetterboxToFill (): Scales the video to fill the entire target rectangle while maintaining the original aspect ratio. Parts of the video may be cropped to achieve this. This mode ensures no black bars appear, but may crop portions of the source video to maintain the aspect ratio. The video is centered in the target rectangle, with equal amounts cropped from opposite sides when necessary. Also known as "zoom to fill" or "crop to fit". ## Remarks This enumeration controls how video inputs are scaled and positioned within their designated rectangle in the compositor. Each policy offers different trade-offs between preserving aspect ratio and filling the available space. --- # Class LVCVideoAudioInput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCVideoAudioInput.html # Class LVCVideoAudioInput # Class LVCVideoAudioInput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents a combined video and audio input source for the Live Video Compositor. ```csharp public class LVCVideoAudioInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class handles input streams that contain both video and audio components. It provides separate processing pipelines for video and audio, allowing independent effects and transformations on each stream while maintaining synchronization. Like video-only inputs, it supports positioning, resize policies, and preview rendering. ## Constructors ### LVCVideoAudioInput(string, LiveVideoCompositor, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class with a compositor reference. ```csharp public LVCVideoAudioInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): A descriptive name for this input. - compositor (LiveVideoCompositor): The instance this input belongs to. - mainBlock (MediaBlock): The source media block that provides both video and audio streams. - videoInfo (VideoFrameInfoX): The video frame information. Width, height, and frame rate are required. Can be null if video is disabled. - audioInfo (AudioInfoX): The audio information. Format, channels, and sample rate are required. Can be null if audio is disabled. - rect (Rect): The position and size of the video component within the compositor output. - autostart (bool): If true, the input will start automatically when the compositor starts. - processingVideoBlock (MediaBlock): An optional processing block for the video stream. Default is null. - processingAudioBlock (MediaBlock): An optional processing block for the audio stream. Default is null. - live (bool): If true, indicates this is a live source requiring real-time processing. Default is true. - customSyncFlag (bool ?): Optional custom synchronization flag for advanced timing control. Default is null. ### LVCVideoAudioInput(string, MediaBlock, VideoFrameInfoX, AudioInfoX, Rect, bool, MediaBlock, MediaBlock, bool, bool?) Initializes a new instance of the class without a compositor reference. ```csharp public LVCVideoAudioInput(string name, MediaBlock mainBlock, VideoFrameInfoX videoInfo, AudioInfoX audioInfo, Rect rect, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null, bool live = true, bool? customSyncFlag = null) ``` #### Parameters Parameters: - name (string): A descriptive name for this input. - mainBlock (MediaBlock): The source media block that provides both video and audio streams. - videoInfo (VideoFrameInfoX): The video frame information. Width, height, and frame rate are required. Can be null if video is disabled. - audioInfo (AudioInfoX): The audio information. Format, channels, and sample rate are required. Can be null if audio is disabled. - rect (Rect): The position and size of the video component within the compositor output. - autostart (bool): If true, the input will start automatically when added to a compositor. - processingVideoBlock (MediaBlock): An optional processing block for the video stream. Default is null. - processingAudioBlock (MediaBlock): An optional processing block for the audio stream. Default is null. - live (bool): If true, indicates this is a live source requiring real-time processing. Default is true. - customSyncFlag (bool ?): Optional custom synchronization flag for advanced timing control. Default is null. #### Remarks This constructor is typically used when creating inputs that will be added to a compositor later. ## Properties ### AudioInfo Gets the audio stream information for this input. ```csharp public AudioInfoX AudioInfo { get; } ``` #### Property Value Parameters: - (AudioInfoX): ### ProcessingVideoBlocks Gets the list of video processing blocks applied to the video stream. ```csharp public List ProcessingVideoBlocks { get; } ``` #### Property Value Parameters: - (List < MediaBlock >): #### Remarks Video processing blocks are applied after the source but before the video is sent to the compositor. These blocks operate independently of any audio processing blocks. Common uses include color correction, deinterlacing, or other video filters. ### Rectangle Gets or sets the position and size of the video component within the compositor output. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): #### Remarks Changes to this property after playback has started will not take effect automatically. To update the rectangle during playback, use the compositor's Input_VideoStream_Update method. When ResizePolicy is set to LetterboxToFill, changing this property will automatically recalculate the crop area. This property only affects the video component; audio is not affected. ### ResizePolicy Gets or sets the resize policy for the video component. ```csharp public LVCResizePolicy ResizePolicy { get; set; } ``` #### Property Value Parameters: - (LVCResizePolicy): #### Remarks The resize policy controls how the input video is fitted into its designated rectangle. This property only affects the video component; audio is processed independently. ### VideoInfo Gets the video stream information for this input. ```csharp public VideoFrameInfoX VideoInfo { get; } ``` #### Property Value Parameters: - (VideoFrameInfoX): ### VideoView Gets or sets an optional video view for previewing the video component of this input. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): #### Remarks When set, only the video component will be rendered to this view. Audio continues to be processed normally but is not affected by the preview setting. ### ZOrder Gets or sets the z-order (layer position) of the video component. ```csharp public uint ZOrder { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Z-order determines the stacking order when multiple video inputs overlap. This property only affects the video component; audio mixing is independent of z-order. ## Methods ### Dispose(bool) Releases the unmanaged and optionally managed resources used by this video/audio input. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method properly disposes of both video and audio bridge sinks, as well as any preview components that were created. It ensures all resources are cleaned up in the correct order before calling the base class disposal logic. ### ResumeAsync() Resumes playback of this input after it has been paused. ```csharp public override Task ResumeAsync() ``` #### Returns Parameters: - (Task): A representing the asynchronous operation. #### Remarks This override ensures that the video stream's alpha channel is restored to full opacity when resuming, in case it was set to zero during initialization. This is particularly important for inputs that were added while the compositor was already running. ## See Also --- # Class LVCVideoAudioOutput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCVideoAudioOutput.html # Class LVCVideoAudioOutput # Class LVCVideoAudioOutput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents a video and audio output component for the Live Video Compositor. This class handles the creation and management of both video and audio bridge sources that connect to the main processing pipeline, supporting optional processing blocks for both media streams. ```csharp public class LVCVideoAudioOutput : LVCOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This output type is used when both video and audio streams need to be processed and output from the compositor. It creates separate bridge sources for video and audio, allowing for independent processing of each stream before they are connected to the main output block. ## Constructors ### LVCVideoAudioOutput(string, LiveVideoCompositor, MediaBlock, bool, MediaBlock, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoAudioOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart, MediaBlock processingVideoBlock = null, MediaBlock processingAudioBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifier for this output instance. - compositor (LiveVideoCompositor): The parent compositor that manages this output. - mainBlock (MediaBlock): The main media block that will receive the processed video and audio streams. - autostart (bool): If set to true, the output will automatically start with the main pipeline; otherwise, manual start is required. - processingVideoBlock (MediaBlock): An optional video processing block to apply effects or transformations to the video stream before output. Default is null. - processingAudioBlock (MediaBlock): An optional audio processing block to apply effects or transformations to the audio stream before output. Default is null. ## Methods ### Build(string, string) Builds the output pipeline by creating bridge sources for video and audio and connecting them to the main output block through optional processing blocks. ```csharp public override void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique identifier for the video bridge source. - uniqueName2 (string): The unique identifier for the audio bridge source. If not provided, defaults to null. #### Remarks This method creates the necessary bridge sources based on the compositor's settings, connects optional processing blocks if provided, and establishes the complete pipeline from bridge sources to the main output block. The method handles dynamic input creation for blocks that support it. ### Dispose(bool) Releases unmanaged and optionally managed resources used by this output. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method properly disposes of the bridge source blocks for both video and audio to prevent memory leaks and ensure proper cleanup of resources. ## See Also --- # Class LVCVideoInput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCVideoInput.html # Class LVCVideoInput # Class LVCVideoInput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents a video-only input source for the Live Video Compositor. ```csharp public class LVCVideoInput : LVCInput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class handles video input streams that will be composited into the final output. It supports various features including custom positioning, resize policies, optional preview rendering, and processing blocks for applying effects or transformations to the input video stream. Video inputs can be dynamically added, removed, and repositioned during playback. ## Constructors ### LVCVideoInput(string, LiveVideoCompositor, MediaBlock, VideoFrameInfoX, Rect, bool, MediaBlock) Initializes a new instance of the class with a compositor reference. ```csharp public LVCVideoInput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, VideoFrameInfoX info, Rect rect, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): A descriptive name for this input. - compositor (LiveVideoCompositor): The instance this input belongs to. - mainBlock (MediaBlock): The source media block that provides the video stream. - info (VideoFrameInfoX): The video frame information. Width, height, and frame rate are required. - rect (Rect): The position and size of this video within the compositor output. - autostart (bool): If true, the input will start automatically when the compositor starts. - processingBlock (MediaBlock): An optional processing block to apply effects or transformations. Default is null. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when info is null. ### LVCVideoInput(string, MediaBlock, VideoFrameInfoX, Rect, bool, MediaBlock) Initializes a new instance of the class without a compositor reference. ```csharp public LVCVideoInput(string name, MediaBlock mainBlock, VideoFrameInfoX info, Rect rect, bool autostart, MediaBlock processingBlock = null) ``` #### Parameters Parameters: - name (string): A descriptive name for this input. - mainBlock (MediaBlock): The source media block that provides the video stream. - info (VideoFrameInfoX): The video frame information. Width, height, and frame rate are required. - rect (Rect): The position and size of this video within the compositor output. - autostart (bool): If true, the input will start automatically when added to a compositor. - processingBlock (MediaBlock): An optional processing block to apply effects or transformations. Default is null. #### Remarks This constructor is typically used when creating inputs that will be added to a compositor later. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when info is null. ## Properties ### Info Gets the video frame information for this input. ```csharp public VideoFrameInfoX Info { get; } ``` #### Property Value Parameters: - (VideoFrameInfoX): ### ProcessingVideoBlocks Gets the list of video processing blocks applied to this input. ```csharp public List ProcessingVideoBlocks { get; } ``` #### Property Value Parameters: - (List < MediaBlock >): #### Remarks Processing blocks are applied in the order they appear in the list, after the source block but before the video is sent to the compositor mixer. Common uses include color correction, deinterlacing, or other video filters. ### Rectangle Gets or sets the position and size of this video input within the compositor output. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): #### Remarks Changes to this property after playback has started will not take effect automatically. To update the rectangle during playback, use the compositor's Input_VideoStream_Update method. When ResizePolicy is set to LetterboxToFill, changing this property will automatically recalculate the crop area. ### ResizePolicy Gets or sets the resize policy for this video input. ```csharp public LVCResizePolicy ResizePolicy { get; set; } ``` #### Property Value Parameters: - (LVCResizePolicy): #### Remarks The resize policy controls how the input video is fitted into its designated rectangle, affecting whether aspect ratio is preserved and how empty space or overflow is handled. ### VideoView Gets or sets an optional video view for previewing this input. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): #### Remarks When set, the input video will be duplicated and rendered to this view in addition to being sent to the compositor. This is useful for monitoring individual inputs. The preview uses a tee element to split the video stream without affecting the main composition. ### ZOrder Gets or sets the z-order (layer position) of this video input. ```csharp public uint ZOrder { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Z-order determines the stacking order when multiple video inputs overlap. Inputs with higher z-order values will be rendered on top of those with lower values. ## Methods ### Dispose(bool) Releases the unmanaged and optionally managed resources used by this video input. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method properly disposes of the video tee and renderer components if they were created, then calls the base class disposal logic. This method is called by the public Dispose method and the finalizer. ### ToString() Returns a string representation of this video input. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string containing the input name and its rectangle dimensions in the format "Name (Rectangle)". ## See Also --- # Class LVCVideoOutput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCVideoOutput.html # Class LVCVideoOutput # Class LVCVideoOutput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents a video-only output component for the Live Video Compositor. This class handles the creation and management of video bridge sources that connect to the main processing pipeline, supporting optional video processing blocks. ```csharp public class LVCVideoOutput : LVCOutput, IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Remarks This output type is used when only video streams need to be processed and output from the compositor, without any audio components. It creates a single bridge source for video and allows for optional video processing before connection to the main output block. ## Constructors ### LVCVideoOutput(string, LiveVideoCompositor, MediaBlock, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoOutput(string name, LiveVideoCompositor compositor, MediaBlock mainBlock, bool autostart, MediaBlock processingVideoBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifier for this output instance. - compositor (LiveVideoCompositor): The parent compositor that manages this output. - mainBlock (MediaBlock): The main media block that will receive the processed video stream. - autostart (bool): If set to true, the output will automatically start with the main pipeline; otherwise, manual start is required. - processingVideoBlock (MediaBlock): An optional video processing block to apply effects or transformations to the video stream before output. Default is null. ## Methods ### Build(string, string) Builds the output pipeline by creating a video bridge source and connecting it to the main output block through an optional processing block. ```csharp public override void Build(string uniqueName, string uniqueName2 = null) ``` #### Parameters Parameters: - uniqueName (string): The unique identifier for the video bridge source. - uniqueName2 (string): Not used in video-only output. This parameter is included for interface compatibility. #### Remarks This method creates a video bridge source based on the compositor's video settings, connects an optional processing block if provided, and establishes the pipeline from the bridge source to the main output block. The method handles dynamic input creation for blocks that support it. Note that there appears to be duplicate connection logic in the current implementation that may need review. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when the media type is null or invalid. ## See Also --- # Class LVCVideoViewOutput Link: api/VisioForge.Core.LiveVideoCompositorV2.LVCVideoViewOutput.html # Class LVCVideoViewOutput # Class LVCVideoViewOutput **Namespace**: VisioForge.Core.LiveVideoCompositorV2 **Assembly**: VisioForge.Core.dll Represents a video output component that renders directly to a video view for the Live Video Compositor. This specialized output class creates a video renderer block that displays the compositor's video output directly on a user interface video view control. ```csharp public class LVCVideoViewOutput : LVCVideoOutput, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class extends to provide direct rendering capabilities to UI controls. It automatically creates a as the main block, configured for asynchronous rendering to prevent UI blocking. This is particularly useful for preview windows or direct display scenarios where the video needs to be shown in the application's user interface. ## Constructors ### LVCVideoViewOutput(string, LiveVideoCompositor, IVideoView, bool, MediaBlock) Initializes a new instance of the class. ```csharp public LVCVideoViewOutput(string name, LiveVideoCompositor compositor, IVideoView videoView, bool autostart, MediaBlock processingVideoBlock = null) ``` #### Parameters Parameters: - name (string): The unique name identifier for this output instance. - compositor (LiveVideoCompositor): The parent compositor that manages this output. - videoView (IVideoView): The video view control where the video output will be rendered. - autostart (bool): If set to true, the output will automatically start with the main pipeline; otherwise, manual start is required. - processingVideoBlock (MediaBlock): An optional video processing block to apply effects or transformations to the video stream before rendering. Default is null. #### Remarks This constructor creates a internally with asynchronous rendering enabled to ensure smooth playback without blocking the UI thread. The renderer is automatically connected to the provided video view control. ## See Also --- # Namespace VisioForge.Core.LiveVideoCompositorV2 Link: api/VisioForge.Core.LiveVideoCompositorV2.html # Namespace VisioForge.Core.LiveVideoCompositorV2 # Namespace VisioForge.Core.LiveVideoCompositorV2 ### Classes Parameters: - (): Represents an audio input for the Live Video Compositor that can receive and process audio streams. This class provides functionality to connect audio sources, apply processing blocks, and route audio to the compositor pipeline. Implements the . - (): Represents an audio output for the Live Video Compositor that can receive and render audio streams. This class provides functionality to connect audio sinks and output devices to the compositor pipeline. Implements the . - (): Base class for all Live Video Compositor input sources. - (): Base class for all Live Video Compositor output destinations. - (): Represents a combined video and audio input source for the Live Video Compositor. - (): Represents a video and audio output component for the Live Video Compositor. This class handles the creation and management of both video and audio bridge sources that connect to the main processing pipeline, supporting optional processing blocks for both media streams. - (): Represents a video-only input source for the Live Video Compositor. - (): Represents a video-only output component for the Live Video Compositor. This class handles the creation and management of video bridge sources that connect to the main processing pipeline, supporting optional video processing blocks. - (): Represents a video output component that renders directly to a video view for the Live Video Compositor. This specialized output class creates a video renderer block that displays the compositor's video output directly on a user interface video view control. - (): Manages the disposal of resources used by the . This partial class implements the and patterns to ensure proper cleanup of both managed and unmanaged resources. - (): Contains configuration settings for the Live Video Compositor. This class defines all the parameters needed to initialize and configure a live video compositing session, including video dimensions, frame rate, audio settings, and output destinations. ### Enums Parameters: - (): Defines the media types supported by the Live Video Compositor for input and output streams. - (): Defines the rendering backend types available for video mixing in the Live Video Compositor. Different backends offer various performance characteristics and platform compatibility. - (): Defines the resize policy options for video inputs in the Live Video Compositor. --- # Class AACEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.AACEncoderBlock.html # Class AACEncoderBlock # Class AACEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into AAC (Advanced Audio Coding) format. AAC is a widely supported audio format offering better quality than MP3 at similar bitrates, commonly used in streaming, broadcasting, and mobile applications. This block supports platform-specific encoders for optimal performance. Implements the . Implements the . Implements the . ```csharp public class AACEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AACEncoderBlock(IAACEncoderSettings) Initializes a new instance of the class. ```csharp public AACEncoderBlock(IAACEncoderSettings settings = null) ``` #### Parameters Parameters: - settings (IAACEncoderSettings): The settings. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the AAC encoder settings that control compression quality and encoding parameters. These settings determine bitrate (typically 64-320 kbps), profile (AAC-LC, HE-AAC, HE-AACv2), and platform-specific optimizations for the encoded output. ```csharp public IAACEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Releases all resources and performs cleanup operations for this AAC encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer AAC encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer AAC encoder. ### GetDefaultSettings() Gets the default AAC encoder settings appropriate for the current platform. On Windows, it prefers AVENC (libav) if available, otherwise falls back to Media Foundation. On Android and iOS (non-Catalyst), it uses the VO-AAC encoder. On all other platforms (Linux, macOS), it uses AVENC. ```csharp public static IAACEncoderSettings GetDefaultSettings() ``` #### Returns Parameters: - (IAACEncoderSettings): Platform-specific AAC encoder settings configured with default values. ### GetElement() Gets the underlying GStreamer element that performs the AAC encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the AAC encoder. ### IsAvailable(IAACEncoderSettings) Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable(IAACEncoderSettings settings) ``` #### Parameters Parameters: - settings (IAACEncoderSettings): The settings. #### Returns Parameters: - (bool): true if the specified settings is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this AAC encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ADPCMEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.ADPCMEncoderBlock.html # Class ADPCMEncoderBlock # Class ADPCMEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into ADPCM (Adaptive Differential Pulse Code Modulation) format. ADPCM is a lossy audio compression technique that reduces file size while maintaining reasonable quality, commonly used in telecommunications and embedded systems. This block supports configurable block alignment for optimized encoding performance. Implements the . Implements the . Implements the . ```csharp public class ADPCMEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ADPCMEncoderBlock(int) Initializes a new instance of the class. ```csharp public ADPCMEncoderBlock(int blockAlign = 1024) ``` #### Parameters Parameters: - blockAlign (int): The block alignment value for ADPCM encoding. Controls the size of audio blocks processed during encoding. ## Properties ### BlockAlign Gets or sets the block alignment value for ADPCM encoding. This parameter controls the size of audio blocks processed during encoding, affecting both compression efficiency and processing latency. Larger values typically provide better compression but may increase latency. ```csharp public int BlockAlign { get; set; } ``` #### Property Value Parameters: - (int): ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the ADPCM encoder and its associated GStreamer elements. This method creates the encoder with the specified block alignment settings, establishes input and output pads, and prepares the block for media processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this ADPCM encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer ADPCM encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer ADPCM encoder. ### GetElement() Gets the underlying GStreamer element that performs the ADPCM encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the ADPCM encoder. ### IsAvailable() Determines whether the ADPCM encoder is available on the current system. This checks if the required GStreamer ADPCM encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the ADPCM encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this ADPCM encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ALAWEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.ALAWEncoderBlock.html # Class ALAWEncoderBlock # Class ALAWEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into A-law (G.711) format. A-law is a standard audio compression algorithm widely used in European telecommunications systems, providing 8-bit logarithmic quantization of 16-bit audio samples. This encoder is commonly used for telephony applications and VoIP systems where bandwidth efficiency is important. Implements the . Implements the . Implements the . ```csharp public class ALAWEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ALAWEncoderBlock() Initializes a new instance of the class. Creates a new A-law encoder block with default settings suitable for standard telephony applications. ```csharp public ALAWEncoderBlock() ``` ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the A-law encoder and its associated GStreamer elements. This method creates the encoder with standard A-law settings, establishes input and output pads, and prepares the block for media processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this A-law encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer A-law encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer A-law encoder. ### GetElement() Gets the underlying GStreamer element that performs the A-law encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the A-law encoder. ### IsAvailable() Determines whether the A-law encoder is available on the current system. This checks if the required GStreamer A-law encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the A-law encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this A-law encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AptXDecoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.AptXDecoderBlock.html # Class AptXDecoderBlock # Class AptXDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that decodes AptX compressed audio streams into raw PCM audio. AptX is a psychoacoustic audio codec algorithm that provides CD-like audio quality with low latency, making it ideal for wireless audio reception over Bluetooth. This decoder handles AptX bitstreams and outputs high-quality stereo PCM audio. Implements the . Implements the . Implements the . ```csharp public class AptXDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AptXDecoderBlock(AptXDecoderSettings) Initializes a new instance of the class with the specified decoding settings. ```csharp public AptXDecoderBlock(AptXDecoderSettings settings) ``` #### Parameters Parameters: - settings (AptXDecoderSettings): The AptX decoder settings that define decoding parameters and behavior. ## Properties ### Input Gets the single audio input pad for this decoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this decoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the decoder settings for this AptX decoder block. ```csharp public AptXDecoderSettings Settings { get; } ``` #### Property Value Parameters: - (AptXDecoderSettings): ### Type Gets the MediaBlock type identifier for this decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the AptX decoder and its associated GStreamer elements. This method creates the decoder with the specified settings, establishes input and output pads, and prepares the block for high-quality Bluetooth audio decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this AptX decoder block. This method disposes of GStreamer elements, releases memory, and ensures proper shutdown of the block. Called automatically during pipeline teardown. ```csharp public void CleanUp() ``` ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Properly disposes of the GStreamer AptX decoder element and associated resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer AptX decoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer AptX decoder. ### GetElement() Gets the underlying GStreamer element that performs the AptX audio decoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the AptX decoder. ### IsAvailable(AptXDecoderSettings) Determines whether AptX decoding is available with the specified settings. Checks for the presence of the GStreamer openaptxdec plugin. ```csharp public static bool IsAvailable(AptXDecoderSettings settings) ``` #### Parameters Parameters: - settings (AptXDecoderSettings): The AptX decoder settings to validate. #### Returns Parameters: - (bool): true if AptX decoding is available; otherwise, false. ### SetContext(MediaBlocksPipeline) Associates this AptX decoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp public void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AptXEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.AptXEncoderBlock.html # Class AptXEncoderBlock # Class AptXEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into AptX format for Bluetooth audio applications. AptX is a psychoacoustic audio codec algorithm that provides CD-like audio quality with low latency, making it ideal for wireless audio transmission over Bluetooth. The codec uses a 4:1 compression ratio and supports stereo audio only. Implements the . Implements the . Implements the . ```csharp public class AptXEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AptXEncoderBlock(AptXEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public AptXEncoderBlock(AptXEncoderSettings settings) ``` #### Parameters Parameters: - settings (AptXEncoderSettings): The AptX encoder settings that define encoding parameters and behavior. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the encoder settings for this AptX encoder block. ```csharp public AptXEncoderSettings Settings { get; } ``` #### Property Value Parameters: - (AptXEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the AptX encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for high-quality Bluetooth audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this AptX encoder block. This method disposes of GStreamer elements, releases memory, and ensures proper shutdown of the block. Called automatically during pipeline teardown. ```csharp public void CleanUp() ``` ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Properly disposes of the GStreamer AptX encoder element and associated resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer AptX encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer AptX encoder. ### GetElement() Gets the underlying GStreamer element that performs the AptX audio encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the AptX encoder. ### IsAvailable(AptXEncoderSettings) Determines whether AptX encoding is available with the specified settings. Checks for the presence of the GStreamer openaptxenc plugin. ```csharp public static bool IsAvailable(AptXEncoderSettings settings) ``` #### Parameters Parameters: - settings (AptXEncoderSettings): The AptX encoder settings to validate. #### Returns Parameters: - (bool): true if AptX encoding is available; otherwise, false. ### SetContext(MediaBlocksPipeline) Associates this AptX encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp public void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class FLACEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.FLACEncoderBlock.html # Class FLACEncoderBlock # Class FLACEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into FLAC (Free Lossless Audio Codec) format. FLAC is a lossless audio compression format that reduces file size without quality loss, making it ideal for archival storage, high-quality audio production, and applications where audio fidelity is critical. Supports configurable compression levels and encoding parameters. Implements the . Implements the . ```csharp public class FLACEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FLACEncoderBlock(FLACEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public FLACEncoderBlock(FLACEncoderSettings settings) ``` #### Parameters Parameters: - settings (FLACEncoderSettings): The FLAC encoder settings that define compression level, quality parameters, and encoding behavior. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the FLAC encoder settings that control compression level, quality parameters, and encoding behavior. These settings determine the balance between file size and encoding speed. ```csharp public FLACEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (FLACEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the FLAC encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for lossless audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this FLAC encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer FLAC encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer FLAC encoder. ### GetElement() Gets the underlying GStreamer element that performs the FLAC encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the FLAC encoder. ### IsAvailable() Determines whether the FLAC encoder is available on the current system. This checks if the required GStreamer FLAC encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the FLAC encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this FLAC encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MP2EncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.MP2EncoderBlock.html # Class MP2EncoderBlock # Class MP2EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into MP2 (MPEG-1 Audio Layer II) format. MP2 is a standardized lossy audio compression format that provides good quality at moderate bitrates and is widely used in broadcast applications, DAB radio, and European digital television systems. The encoder offers excellent compatibility with legacy systems while maintaining efficient compression ratios suitable for broadcast transmission and professional audio distribution. Implements the . Implements the . Implements the . ```csharp public class MP2EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MP2EncoderBlock(MP2EncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public MP2EncoderBlock(MP2EncoderSettings settings) ``` #### Parameters Parameters: - settings (MP2EncoderSettings): The MP2EncoderSettings that define bitrate, quality, and encoding behavior for broadcast-quality output. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MP2 encoder settings that control bitrate, quality, and encoding parameters. These settings determine the balance between audio quality and file size for the compressed output, with considerations for broadcast compliance and transmission requirements. ```csharp public MP2EncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (MP2EncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the MP2 encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for broadcast-quality audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this MP2 encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer MP2 encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer MP2 encoder. ### GetElement() Gets the underlying GStreamer element that performs the MP2 encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the MP2 encoder. ### IsAvailable() Determines whether the MP2 encoder is available on the current system. This checks if the required GStreamer MP2 encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the MP2 encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this MP2 encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MP3EncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.MP3EncoderBlock.html # Class MP3EncoderBlock # Class MP3EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll Audio encoder block that compresses raw audio into MP3 (MPEG-1 Audio Layer III) format. MP3 is one of the most widely supported audio formats, offering good compression ratios while maintaining acceptable audio quality. This block uses the LAME encoder for high-quality MP3 encoding with configurable bitrate settings. It supports constant bitrate (CBR) and variable bitrate (VBR) encoding modes, with bitrates ranging from 32 to 320 kbps. The encoder accepts raw PCM audio input and produces compressed MP3 audio output suitable for streaming, storage, or further processing. Common use cases include creating audio files, streaming audio content, and reducing audio bandwidth requirements. The block optionally adds an MP3 parser for streaming scenarios like RTMP to YouTube or Facebook. Implements the . Implements the . Implements the . ```csharp public class MP3EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MP3EncoderBlock(MP3EncoderSettings, bool) Initializes a new instance of the class with specified settings. Creates an MP3 encoder that will compress audio according to the provided configuration. ```csharp public MP3EncoderBlock(MP3EncoderSettings settings, bool addParser = false) ``` #### Parameters Parameters: - settings (MP3EncoderSettings): The MP3 encoder settings including bitrate and quality parameters. - addParser (bool): If set to true, adds an MP3 parser after encoding. This is required for RTMP streaming to services like YouTube and Facebook to ensure proper stream formatting. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MP3 encoder settings including bitrate, quality, and encoding mode. These settings control the compression quality and output file size. ```csharp public MP3EncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (MP3EncoderSettings): ### Type Gets the block type identifier for this MP3 encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MP3 encoder within the pipeline. Creates the LAME MP3 encoder element with the specified settings and optionally adds an MP3 parser for streaming compatibility. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the MP3 encoder element. Called during disposal to ensure proper cleanup of native GStreamer resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the MP3 encoder. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The MP3Encoder element that performs the audio compression. ### GetElement() Gets the underlying GStreamer element for this MP3 encoder. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer lamemp3enc element that performs MP3 encoding. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this MP3 encoder, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this encoder block. ## See Also --- # Class OPUSEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.OPUSEncoderBlock.html # Class OPUSEncoderBlock # Class OPUSEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into Opus format. Opus is a modern, open-source audio codec designed for low-latency, high-quality audio transmission over the internet. It excels in both speech and music applications, providing superior quality at low bitrates compared to older codecs. Opus is widely used in VoIP, video conferencing, streaming, and real-time communications due to its adaptive bitrate and low encoding delay. Implements the . Implements the . Implements the . ```csharp public class OPUSEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OPUSEncoderBlock(OPUSEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public OPUSEncoderBlock(OPUSEncoderSettings settings) ``` #### Parameters Parameters: - settings (OPUSEncoderSettings): The Opus encoder settings that define bitrate, complexity, bandwidth, and encoding behavior. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Opus encoder settings that control bitrate, complexity, bandwidth, and other encoding parameters. These settings determine the balance between audio quality, compression efficiency, and encoding performance. ```csharp public OPUSEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (OPUSEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Opus encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for high-quality audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Opus encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Opus encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Opus encoder. ### GetElement() Gets the underlying GStreamer element that performs the Opus encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Opus encoder. ### IsAvailable() Determines whether the Opus encoder is available on the current system. This checks if the required GStreamer Opus encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Opus encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Opus encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SpeexEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.SpeexEncoderBlock.html # Class SpeexEncoderBlock # Class SpeexEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into Speex format. Speex is an open-source speech codec specifically designed for voice over IP (VoIP) applications and speech compression. It provides excellent compression for human speech while maintaining good quality at very low bitrates. The codec features variable bitrate encoding, noise suppression, echo cancellation, and is particularly well-suited for real-time voice communication systems, internet telephony, and voice recording applications. Implements the . Implements the . Implements the . ```csharp public class SpeexEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SpeexEncoderBlock(SpeexEncoderSettings) Initializes a new instance of the class with the specified speech encoding settings. ```csharp public SpeexEncoderBlock(SpeexEncoderSettings settings) ``` #### Parameters Parameters: - settings (SpeexEncoderSettings): The SpeexEncoderSettings that define quality, bitrate, and VoIP optimization for speech compression. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Speex encoder settings that control speech compression quality and VoIP optimization. These settings include bitrate mode, quality level, complexity, and voice activity detection parameters optimized for speech encoding and real-time communication requirements. ```csharp public SpeexEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (SpeexEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Speex encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for high-quality speech encoding optimized for VoIP applications. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Speex encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Speex encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Speex encoder. ### GetElement() Gets the underlying GStreamer element that performs the Speex speech encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Speex encoder. ### IsAvailable() Determines whether the Speex encoder is available on the current system. This checks if the required GStreamer Speex encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Speex encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Speex encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VorbisEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.VorbisEncoderBlock.html # Class VorbisEncoderBlock # Class VorbisEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into Vorbis format. Vorbis is an open-source, lossy audio compression format that provides excellent quality at low bitrates. Designed as a free alternative to MP3, Vorbis offers superior compression efficiency and is commonly used in gaming, streaming applications, and OGG containers. The encoder supports variable bitrate (VBR) encoding for optimal quality-to-size ratio. Implements the . Implements the . Implements the . ```csharp public class VorbisEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VorbisEncoderBlock(VorbisEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public VorbisEncoderBlock(VorbisEncoderSettings settings) ``` #### Parameters Parameters: - settings (VorbisEncoderSettings): The Vorbis encoder settings that define quality level, bitrate mode, and encoding behavior. ### VorbisEncoderBlock() Initializes a new instance of the class with the specified encoding settings. ```csharp public VorbisEncoderBlock() ``` ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Vorbis encoder settings that control quality level, bitrate mode, and encoding parameters. These settings determine the balance between audio quality and file size for the compressed output. ```csharp public VorbisEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (VorbisEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Vorbis encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for high-quality audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Vorbis encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Vorbis encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Vorbis encoder. ### GetElement() Gets the underlying GStreamer element that performs the Vorbis encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Vorbis encoder. ### IsAvailable() Determines whether the Vorbis encoder is available on the current system. This checks if the required GStreamer Vorbis encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Vorbis encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Vorbis encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WAVEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.WAVEncoderBlock.html # Class WAVEncoderBlock # Class WAVEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into WAV (Waveform Audio File Format). WAV is an uncompressed audio format that preserves original audio quality without any loss. It's widely supported across all platforms and applications, making it ideal for professional audio production, archiving, and scenarios where audio fidelity is paramount. The format supports various bit depths and sample rates. Implements the . Implements the . Implements the . ```csharp public class WAVEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WAVEncoderBlock(WAVEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public WAVEncoderBlock(WAVEncoderSettings settings) ``` #### Parameters Parameters: - settings (WAVEncoderSettings): The WAV encoder settings that define bit depth, sample rate, and channel configuration. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the WAV encoder settings that control bit depth, sample rate, and channel configuration for the uncompressed audio output. ```csharp public WAVEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (WAVEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the WAV encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for uncompressed audio encoding in WAV format. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this WAV encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer WAV encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer WAV encoder. ### GetElement() Gets the underlying GStreamer element that performs the WAV encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the WAV encoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this WAV encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WavPackEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.WavPackEncoderBlock.html # Class WavPackEncoderBlock # Class WavPackEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into WavPack format. WavPack is a hybrid lossless/lossy audio compression format that provides both perfect quality preservation and excellent compression ratios. Unlike traditional lossless formats, WavPack can create hybrid files with a lossy core and lossless correction data, offering flexible quality options. The format supports very high compression ratios while maintaining fast encoding/decoding speeds, making it ideal for archival storage, music distribution, and professional audio applications where both quality and file size are important considerations. Implements the . Implements the . Implements the . ```csharp public class WavPackEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WavPackEncoderBlock(WavPackEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public WavPackEncoderBlock(WavPackEncoderSettings settings) ``` #### Parameters Parameters: - settings (WavPackEncoderSettings): The WavPackEncoderSettings that define compression mode, quality level, and hybrid encoding behavior. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the WavPack encoder settings that control compression mode and quality parameters. These settings define whether to use lossless, hybrid, or lossy compression modes, along with compression level and encoding optimization parameters for achieving the desired balance between quality, file size, and encoding speed. ```csharp public WavPackEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (WavPackEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the WavPack encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for hybrid lossless/lossy audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this WavPack encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer WavPack encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer WavPack encoder. ### GetElement() Gets the underlying GStreamer element that performs the WavPack encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the WavPack encoder. ### IsAvailable() Determines whether the WavPack encoder is available on the current system. This checks if the required GStreamer WavPack encoder plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the WavPack encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this WavPack encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WMAEncoderBlock Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.WMAEncoderBlock.html # Class WMAEncoderBlock # Class WMAEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioEncoders **Assembly**: VisioForge.Core.dll MediaBlock that encodes raw audio into WMA (Windows Media Audio) format. WMA is Microsoft's proprietary lossy audio compression format that offers good compression efficiency and quality. The format supports variable bitrate encoding, lossless compression modes, and advanced features like digital rights management (DRM). WMA is widely supported on Windows platforms and provides excellent integration with Microsoft's media ecosystem, making it suitable for Windows-based applications and Windows Media streaming. Implements the . Implements the . Implements the . ```csharp public class WMAEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WMAEncoderBlock(WMAEncoderSettings) Initializes a new instance of the class with the specified encoding settings. ```csharp public WMAEncoderBlock(WMAEncoderSettings settings) ``` #### Parameters Parameters: - settings (WMAEncoderSettings): The WMAEncoderSettings that define bitrate, quality, and Windows Media-specific encoding behavior. ## Properties ### Input Gets the single audio input pad for this encoder block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this encoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this encoder block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this encoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the WMA encoder settings that control compression quality and Microsoft-specific features. These settings include bitrate mode, quality level, and WMA-specific encoding parameters optimized for Windows Media applications and streaming scenarios. ```csharp public WMAEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (WMAEncoderSettings): ### Type Gets the MediaBlock type identifier for this encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the WMA encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for Windows Media audio encoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this WMA encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer WMA encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer WMA encoder. ### GetDefaultSettings() Creates a new instance of WMAEncoderSettings with default values optimized for general-purpose encoding. These default settings provide a good balance between quality and file size for most Windows Media applications. ```csharp public static WMAEncoderSettings GetDefaultSettings() ``` #### Returns Parameters: - (WMAEncoderSettings): A WMAEncoderSettings instance configured with recommended default values for WMA encoding. ### GetElement() Gets the underlying GStreamer element that performs the WMA encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the WMA encoder. ### IsAvailable() Determines whether the WMA encoder is available on the current system. This checks if the required Windows Media Format SDK and GStreamer WMA encoder plugin are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the WMA encoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this WMA encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.AudioEncoders Link: api/VisioForge.Core.MediaBlocks.AudioEncoders.html # Namespace VisioForge.Core.MediaBlocks.AudioEncoders # Namespace VisioForge.Core.MediaBlocks.AudioEncoders ### Classes Parameters: - (): MediaBlock that encodes raw audio into AAC (Advanced Audio Coding) format. AAC is a widely supported audio format offering better quality than MP3 at similar bitrates, commonly used in streaming, broadcasting, and mobile applications. This block supports platform-specific encoders for optimal performance. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into ADPCM (Adaptive Differential Pulse Code Modulation) format. ADPCM is a lossy audio compression technique that reduces file size while maintaining reasonable quality, commonly used in telecommunications and embedded systems. This block supports configurable block alignment for optimized encoding performance. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into A-law (G.711) format. A-law is a standard audio compression algorithm widely used in European telecommunications systems, providing 8-bit logarithmic quantization of 16-bit audio samples. This encoder is commonly used for telephony applications and VoIP systems where bandwidth efficiency is important. Implements the . Implements the . Implements the . - (): MediaBlock that decodes AptX compressed audio streams into raw PCM audio. AptX is a psychoacoustic audio codec algorithm that provides CD-like audio quality with low latency, making it ideal for wireless audio reception over Bluetooth. This decoder handles AptX bitstreams and outputs high-quality stereo PCM audio. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into AptX format for Bluetooth audio applications. AptX is a psychoacoustic audio codec algorithm that provides CD-like audio quality with low latency, making it ideal for wireless audio transmission over Bluetooth. The codec uses a 4:1 compression ratio and supports stereo audio only. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into FLAC (Free Lossless Audio Codec) format. FLAC is a lossless audio compression format that reduces file size without quality loss, making it ideal for archival storage, high-quality audio production, and applications where audio fidelity is critical. Supports configurable compression levels and encoding parameters. Implements the . Implements the . - (): MediaBlock that encodes raw audio into MP2 (MPEG-1 Audio Layer II) format. MP2 is a standardized lossy audio compression format that provides good quality at moderate bitrates and is widely used in broadcast applications, DAB radio, and European digital television systems. The encoder offers excellent compatibility with legacy systems while maintaining efficient compression ratios suitable for broadcast transmission and professional audio distribution. Implements the . Implements the . Implements the . - (): Audio encoder block that compresses raw audio into MP3 (MPEG-1 Audio Layer III) format. MP3 is one of the most widely supported audio formats, offering good compression ratios while maintaining acceptable audio quality. This block uses the LAME encoder for high-quality MP3 encoding with configurable bitrate settings. It supports constant bitrate (CBR) and variable bitrate (VBR) encoding modes, with bitrates ranging from 32 to 320 kbps. The encoder accepts raw PCM audio input and produces compressed MP3 audio output suitable for streaming, storage, or further processing. Common use cases include creating audio files, streaming audio content, and reducing audio bandwidth requirements. The block optionally adds an MP3 parser for streaming scenarios like RTMP to YouTube or Facebook. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into Opus format. Opus is a modern, open-source audio codec designed for low-latency, high-quality audio transmission over the internet. It excels in both speech and music applications, providing superior quality at low bitrates compared to older codecs. Opus is widely used in VoIP, video conferencing, streaming, and real-time communications due to its adaptive bitrate and low encoding delay. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into Speex format. Speex is an open-source speech codec specifically designed for voice over IP (VoIP) applications and speech compression. It provides excellent compression for human speech while maintaining good quality at very low bitrates. The codec features variable bitrate encoding, noise suppression, echo cancellation, and is particularly well-suited for real-time voice communication systems, internet telephony, and voice recording applications. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into Vorbis format. Vorbis is an open-source, lossy audio compression format that provides excellent quality at low bitrates. Designed as a free alternative to MP3, Vorbis offers superior compression efficiency and is commonly used in gaming, streaming applications, and OGG containers. The encoder supports variable bitrate (VBR) encoding for optimal quality-to-size ratio. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into WAV (Waveform Audio File Format). WAV is an uncompressed audio format that preserves original audio quality without any loss. It's widely supported across all platforms and applications, making it ideal for professional audio production, archiving, and scenarios where audio fidelity is paramount. The format supports various bit depths and sample rates. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into WMA (Windows Media Audio) format. WMA is Microsoft's proprietary lossy audio compression format that offers good compression efficiency and quality. The format supports variable bitrate encoding, lossless compression modes, and advanced features like digital rights management (DRM). WMA is widely supported on Windows platforms and provides excellent integration with Microsoft's media ecosystem, making it suitable for Windows-based applications and Windows Media streaming. Implements the . Implements the . Implements the . - (): MediaBlock that encodes raw audio into WavPack format. WavPack is a hybrid lossless/lossy audio compression format that provides both perfect quality preservation and excellent compression ratios. Unlike traditional lossless formats, WavPack can create hybrid files with a lossy core and lossless correction data, offering flexible quality options. The format supports very high compression ratios while maintaining fast encoding/decoding speeds, making it ideal for archival storage, music distribution, and professional audio applications where both quality and file size are important considerations. Implements the . Implements the . Implements the . --- # Class AmplifyBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AmplifyBlock.html # Class AmplifyBlock # Class AmplifyBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio amplification block that adjusts the volume level of audio streams. This block provides configurable gain control with multiple clipping methods to prevent distortion when amplifying audio signals. Useful for normalizing audio levels or boosting quiet audio sources. Implements the . Implements the . Implements the . ```csharp public class AmplifyBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AmplifyBlock(AmplifyClippingMethod, double) Initializes a new instance of the class with specified settings. ```csharp public AmplifyBlock(AmplifyClippingMethod method = AmplifyClippingMethod.Normal, double level = 1) ``` #### Parameters Parameters: - method (AmplifyClippingMethod): The clipping method to use when audio exceeds valid range. Default is Normal. - level (double): The initial amplification level multiplier. Default is 1.0 (no change). ## Properties ### Input Gets the single audio input pad for this block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Level Gets or sets the amplification level multiplier. Values greater than 1.0 increase volume, values less than 1.0 decrease volume. For example: 2.0 doubles the volume, 0.5 halves it. Default value is 1.0 (no change). ```csharp public double Level { get; set; } ``` #### Property Value Parameters: - (double): ### Method Gets or sets the clipping method used when amplified audio exceeds the valid range. Different methods provide various ways to handle over-amplification to prevent distortion. Default value is Normal. ```csharp public AmplifyClippingMethod Method { get; set; } ``` #### Property Value Parameters: - (AmplifyClippingMethod): ### Output Gets the single audio output pad for this block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for this amplify block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the amplify filter element with configured settings. Creates the GStreamer element and sets up input/output pads for audio processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if initialization failed. ### CleanUp() Releases all internal resources and disposes of the amplify filter element. Called during disposal to ensure proper cleanup of native resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the amplify filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The AmplifyFilter element that performs the audio processing. ### GetElement() Gets the underlying GStreamer element for this amplify block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that performs the amplification. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block, providing access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class AudioBalanceBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioBalanceBlock.html # Class AudioBalanceBlock # Class AudioBalanceBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio balance processing block for stereo panorama control in the MediaBlocks pipeline. This block adjusts the stereo balance (left/right channel distribution) of audio content, allowing positioning of audio from full left (-1.0) through center (0.0) to full right (+1.0). Essential for stereo audio mixing, surround sound processing, and spatial audio applications. Implements the . Implements the . Implements the . ```csharp public class AudioBalanceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioBalanceBlock(float) Initializes a new instance of the class with the specified stereo balance. Creates an audio balance processing block for controlling stereo panorama positioning. ```csharp public AudioBalanceBlock(float balance = 0) ``` #### Parameters Parameters: - balance (float): The initial stereo balance value (-1.0 to +1.0, default 0.0 for center). #### Examples
// Create balance block for center positioning
var centerBalance = new AudioBalanceBlock();

// Create balance block shifted to the left
var leftBalance = new AudioBalanceBlock(-0.5f);

// Create balance block shifted to the right
var rightBalance = new AudioBalanceBlock(0.7f);
## Properties ### Balance Gets or sets the stereo balance controlling audio positioning in the stereo panorama. This property adjusts the relative levels of left and right audio channels to create a stereo positioning effect. Useful for audio mixing, spatial audio effects, and accessibility features. ```csharp public float Balance { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Balance adjustment works by: - Negative values: Attenuate right channel, emphasize left channel - Zero value: Equal left and right channel levels (no balance change) - Positive values: Attenuate left channel, emphasize right channel The adjustment preserves overall audio energy while shifting stereo perception. ### Input Gets the primary input pad for receiving audio to be balance-processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this audio balance block. This block has a single input for stereo audio processing. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad providing balanced stereo audio. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this audio balance block. This block has a single output for balanced stereo audio. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for audio balance processing. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the audio balance block by creating the GStreamer audio balance filter. This method configures the underlying audio processing element, sets up input/output pads, and applies the initial balance settings for stereo panorama control. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the audio balance block was successfully built and configured; false if initialization failed. ### CleanUp() Cleans up the audio balance block by disposing of the GStreamer audio balance filter. This method safely releases the underlying audio processing resources and resets the block to an unbuilt state for potential reuse or final disposal. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and optionally managed resources used by the audio balance block. Properly disposes of the GStreamer audio balance filter and associated resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element for this audio balance block. Provides access to the underlying audio balance filter for advanced operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement representing the audio balance filter component. ### GetElement() Gets the underlying GStreamer element for direct GStreamer API access. Provides low-level access to the audio balance filter element for advanced audio processing operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element representing the audio balance filter. ### IsAvailable() Determines whether the audio balance block is available in the current environment. Checks for the presence of required GStreamer audio processing plugins and dependencies. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if audio balance processing is available; otherwise, false. #### Remarks This method verifies that the underlying GStreamer audio balance filter is properly installed and can be instantiated. Always check availability before using the block in production code. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this audio balance block. This method is called internally by the MediaBlocks pipeline during block initialization to provide access to pipeline resources and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that owns this block. ## See Also --- # Class AudioConverterBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioConverterBlock.html # Class AudioConverterBlock # Class AudioConverterBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio format converter block that transforms audio data between different formats, sample rates, and channel configurations. This block provides automatic audio format conversion capabilities within a media processing pipeline, handling format negotiation and conversion between incompatible audio formats. It supports conversion between various audio formats including different sample rates (8kHz to 192kHz), bit depths (8/16/24/32-bit), channel layouts (mono, stereo, surround), and audio codecs. The converter automatically determines the optimal conversion path and handles format negotiation between connected blocks. Common use cases include matching audio formats between sources and encoders, resampling for output devices, and ensuring compatibility between pipeline elements with different audio requirements. Implements the . Implements the . Implements the . ```csharp public class AudioConverterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioConverterBlock() Initializes a new instance of the class. Creates an audio converter that automatically handles format conversion between connected blocks. The converter negotiates the best format based on the capabilities of upstream and downstream elements. ```csharp public AudioConverterBlock() ``` ## Properties ### Input Gets the single audio input pad for this converter block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this converter block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for this audio converter. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the audio converter element within the pipeline. Creates the GStreamer audioconvert element and establishes pad connections. This method is called during pipeline construction to set up the converter. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the converter was successfully built and initialized; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the audio converter element. Called during disposal to ensure proper cleanup of native GStreamer resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the audio converter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The AudioConverter element that performs the format conversion. ### GetElement() Gets the underlying GStreamer element for this converter block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer audioconvert element that performs the format transformation. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this converter block, providing access to shared resources and pipeline state. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this converter block. ## See Also --- # Class AudioEffectsBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioEffectsBlock.html # Class AudioEffectsBlock # Class AudioEffectsBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio effects processing block that applies multiple real-time audio effects to audio streams. This block manages a chain of audio effects including volume control, equalizers, balance adjustment, echo/reverb, amplification, compression/expansion, and tempo scaling. Effects can be dynamically added, removed, and updated during playback without interrupting the audio stream. The block supports both real-time parameter adjustment and effect chaining for complex audio processing workflows. Essential for audio post-processing, music production, broadcast audio, and interactive audio applications. Implements the . Implements the . Implements the . ```csharp public class AudioEffectsBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioEffectsBlock() Initializes a new instance of the class. Creates an audio effects processing block ready for effect configuration and audio processing. The block starts with no effects applied and can have effects added dynamically. ```csharp public AudioEffectsBlock() ``` ## Properties ### AudioEffectsCount Gets the number of audio effects currently configured in this block. This count includes all effects that have been added to the effects chain. ```csharp public int AudioEffectsCount { get; } ``` #### Property Value Parameters: - (int): ### Input Gets the primary input pad for receiving audio to be processed with effects. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this audio effects block. This block has a single input for audio effects processing. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad providing audio with applied effects. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this audio effects block. This block has a single output for effects-processed audio. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for audio effects processing. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### AddOrUpdate(BaseAudioEffect) Adds a new audio effect to the processing chain or updates an existing effect with the same name. If an effect with the same name already exists, it will be replaced with the new configuration. Effects can be added dynamically during playback, and the block will reconfigure the processing chain to include the new effect. The effect will be automatically initialized and configured. ```csharp public void AddOrUpdate(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect to add or update in the processing chain. #### Remarks Supported audio effects include: - Volume control and amplification - Stereo balance adjustment - Echo and reverb effects - Multi-band and parametric equalizers - Audio compression and expansion - Tempo scaling without pitch change Effects are applied in the order they were added to the chain. ### Build() Builds and initializes the audio effects block by creating the audio processing chain. This method sets up the audio converter, initializes the effects processor, and configures the effects chain based on the currently added effects. Effects are linked in sequence to create a processing pipeline that applies all effects to the audio stream. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the audio effects block was successfully built and configured; false if initialization failed. ### CleanUp() Cleans up the audio effects block by disposing of all internal processing components. This method safely releases the audio effects processor, audio converter, and resets the block to an unbuilt state for potential reuse or final disposal. ```csharp public void CleanUp() ``` ### Clear() Removes all audio effects from the processing chain. This method clears both the high-level effects list and the underlying GStreamer processing elements, returning the block to a pass-through state with no effects applied. ```csharp public void Clear() ``` ### Dispose(bool) Releases unmanaged and optionally managed resources used by the audio effects block. Properly disposes of all audio effects, the effects processor, and audio converter components. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Get(string) Retrieves an audio effect from the processing chain by its name. This method allows access to individual effects for parameter adjustment or configuration. The search is case-insensitive for convenience. ```csharp public BaseAudioEffect Get(string name) ``` #### Parameters Parameters: - name (string): The name of the audio effect to retrieve, as specified during creation. #### Returns Parameters: - (BaseAudioEffect): The instance with the specified name, or null if not found. ### GetCore() Gets the core GStreamer base element for this audio effects block. Returns null as this block manages multiple internal elements rather than a single core element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Null, as this block is a composite of multiple audio effect elements. ### GetElement() Gets the underlying GStreamer element for direct GStreamer API access. Returns null as this block manages multiple internal elements in a processing chain. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Null, as this block contains multiple GStreamer elements for different effects. ### IsAvailable() Determines whether the audio effects block is available in the current environment. Audio effects processing is generally available with the core SDK components. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if audio effects processing is available; otherwise, false. ### Remove(BaseAudioEffect) Removes an audio effect from the processing chain. This method safely removes the effect from both the high-level effect list and the underlying GStreamer processing chain, cleaning up resources and event handlers. ```csharp public void Remove(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect to remove from the processing chain. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this audio effects block. This method is called internally by the MediaBlocks pipeline during block initialization to provide access to pipeline resources, logging context, and effect processor configuration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that owns this block. ## See Also --- # Class AudioLoudNormBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioLoudNormBlock.html # Class AudioLoudNormBlock # Class AudioLoudNormBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio loudness normalization block using audioloudnorm from rsaudiofx plugin. Normalizes audio according to EBU R128 loudness standards with configurable target levels, loudness range, and peak limiting. Essential for broadcast compliance, streaming platforms, and maintaining consistent audio levels across different content. Implements the . Implements the . Implements the . ```csharp public class AudioLoudNormBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioLoudNormBlock() Initializes a new instance of the class with default loudness normalization settings. ```csharp public AudioLoudNormBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### LoudnessRangeTarget Gets or sets the loudness range target in LU. Valid range: 1.0 to 20.0. Default: 7.0. This controls the dynamic range of the normalized audio. ```csharp public double LoudnessRangeTarget { get; set; } ``` #### Property Value Parameters: - (double): ### LoudnessTarget Gets or sets the loudness target in LUFS. Valid range: -70.0 to -5.0. Default: -24.0. This sets the target integrated loudness level for the normalized audio. ```csharp public double LoudnessTarget { get; set; } ``` #### Property Value Parameters: - (double): ### MaxTruePeak Gets or sets the maximum true peak in dbTP. Valid range: -9.0 to 0.0. Default: -2.0. This prevents peaks from exceeding the specified level to avoid clipping. ```csharp public double MaxTruePeak { get; set; } ``` #### Property Value Parameters: - (double): ### Offset Gets or sets the offset gain in LU. Valid range: -99.0 to 99.0. Default: 0.0. This applies an additional gain offset to the normalized audio. ```csharp public double Offset { get; set; } ``` #### Property Value Parameters: - (double): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the audio loudness normalization filter and its associated GStreamer elements. This method creates the filter with the specified normalization parameters, establishes input and output pads, and prepares the block for normalizing audio according to EBU R128 standards. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio loudness normalization block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer audio loudness normalization filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer audio loudness normalization filter. ### GetElement() Gets the underlying GStreamer element that performs the loudness normalization processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the audio loudness normalization filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio loudness normalization block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AudioMixerBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioMixerBlock.html # Class AudioMixerBlock # Class AudioMixerBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio mixer block that combines multiple audio streams into a single output stream. This block accepts multiple audio inputs and mixes them together with individual volume and mute controls for each input channel. The mixer automatically handles format conversion through internal audio resamplers to ensure all inputs are converted to a common format before mixing. Essential for combining multiple audio sources like microphones, music tracks, sound effects, and other audio streams in broadcast, conferencing, and multimedia applications. Supports dynamic input addition/removal during playback and real-time volume/mute control. Implements the . Implements the . Implements the . ```csharp public class AudioMixerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioMixerBlock(AudioMixerSettings) Initializes a new instance of the class with the specified mixer settings. Creates an audio mixer block ready for input creation and audio mixing operations. ```csharp public AudioMixerBlock(AudioMixerSettings settings) ``` #### Parameters Parameters: - settings (AudioMixerSettings): The mixer settings defining output format and mixing parameters. ### AudioMixerBlock(MediaBlocksPipeline, AudioMixerSourceSettings) Initializes a new instance of the class with predefined audio sources. Creates an audio mixer block and automatically connects the specified audio sources as inputs. This constructor provides a convenient way to create a mixer with multiple audio sources. ```csharp public AudioMixerBlock(MediaBlocksPipeline pipeline, AudioMixerSourceSettings settings) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocks pipeline that will contain this mixer. - settings (AudioMixerSourceSettings): The mixer source settings containing input source definitions and output format. ## Properties ### Input Gets the first input pad of the audio mixer. Returns null if no input pads have been created yet. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this audio mixer. Returns an array of all input pads that have been created for receiving audio streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides the mixed audio stream. This pad outputs the combined result of all input audio streams. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads from this audio mixer. Always returns a single output pad as mixers combine multiple inputs into one output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the audio mixer settings. Contains configuration parameters for the output audio format including sample rate, channels, and audio format specifications. ```csharp public AudioMixerSettings Settings { get; set; } ``` #### Property Value Parameters: - (AudioMixerSettings): ### Type Gets the block type identifier for audio mixing operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the audio mixer and its associated GStreamer elements. This method creates the mixer element, sets up audio resamplers for each input, establishes all pad connections, and prepares the mixer for combining multiple audio streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the mixer was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio mixer block. This method disposes of the mixer element, all resamplers, and input blocks. ```csharp public void CleanUp() ``` ### CreateNewInput() Creates a new input pad for the audio mixer. Each input pad can receive an independent audio stream that will be mixed with other inputs. The new input is not connected to the mixer until the Build() method is called. ```csharp public MediaBlockPad CreateNewInput() ``` #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for audio input. ### CreateNewInputLive() Creates a new input pad and immediately connects it to the running audio mixer. This method allows dynamic input addition while the pipeline is in playing state. Each input includes an audio resampler to ensure format compatibility. ```csharp public MediaBlockPad CreateNewInputLive() ``` #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured and connected for live audio input. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer audio mixer element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer audio mixer. ### GetElement() Gets the underlying GStreamer element that performs the audio mixing operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the audio mixer. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### RemoveInputLive(MediaBlockPad) Removes an input from the audio mixer while the pipeline is running. This method safely disconnects and removes an input pad, its associated resampler, and mixer sink pad without interrupting other audio streams. ```csharp public bool RemoveInputLive(MediaBlockPad blockPad) ``` #### Parameters Parameters: - blockPad (MediaBlockPad): The MediaBlockPad to remove from the mixer. #### Returns Parameters: - (bool): true if the input was successfully removed; false if an error occurred. ### SetMute(int, bool) Sets the mute state for a specific input stream in the mixer. Muted streams continue to be processed but their audio is silenced in the mix. ```csharp public void SetMute(int streamIndex, bool value) ``` #### Parameters Parameters: - streamIndex (int): The zero-based index of the input stream to mute/unmute. - value (bool): True to mute the stream, false to unmute. ### SetVolume(int, double) Sets the volume level for a specific input stream in the mixer. Volume is applied independently to each input before mixing. ```csharp public void SetVolume(int streamIndex, double value) ``` #### Parameters Parameters: - streamIndex (int): The zero-based index of the input stream to adjust. - value (double): The volume multiplier (0.0 = silence, 1.0 = normal, 10.0 = maximum amplification). ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio mixer block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AudioResamplerBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioResamplerBlock.html # Class AudioResamplerBlock # Class AudioResamplerBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio resampler block that converts audio between different sample rates, formats, and channel configurations. This block provides high-quality audio resampling for format compatibility and sample rate conversion within the MediaBlocks pipeline. It can convert between various audio formats (8-bit to 32-bit), sample rates (8kHz to 192kHz), and channel layouts (mono to multi-channel). The resampler uses advanced algorithms to maintain audio quality during conversion and minimize artifacts. Essential for ensuring audio compatibility between sources, effects, and outputs with different requirements. Implements the . Implements the . Implements the . ```csharp public class AudioResamplerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioResamplerBlock(AudioResamplerSettings) Initializes a new instance of the class with the specified resampling settings. Creates an audio resampler block that will convert audio to the target format specified in the settings. ```csharp public AudioResamplerBlock(AudioResamplerSettings settings) ``` #### Parameters Parameters: - settings (AudioResamplerSettings): The resampler settings defining the target audio format, sample rate, and channel configuration. ## Properties ### Input Gets the single input pad for receiving audio to be resampled. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this audio resampler block. This block has a single input for audio resampling operations. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single output pad providing resampled audio data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this audio resampler block. This block has a single output for resampled audio data. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the audio resampler configuration settings. These settings define the target audio format, sample rate, and channel configuration for resampling. ```csharp public AudioResamplerSettings Settings { get; set; } ``` #### Property Value Parameters: - (AudioResamplerSettings): ### Type Gets the block type identifier for audio resampling operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the audio resampler block by creating the GStreamer audio resampler element. This method configures the resampler with the specified target format settings and establishes the input/output pad connections for audio resampling operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the audio resampler was successfully built and configured; false if initialization failed. ### CleanUp() Cleans up the audio resampler block by disposing of the GStreamer audio resampler element. This method safely releases the underlying resampling resources and resets the block to an unbuilt state for potential reuse or final disposal. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and optionally managed resources used by the audio resampler block. Properly disposes of the GStreamer audio resampler element and associated resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element for this audio resampler block. Provides access to the underlying audio resampler element for advanced operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement representing the audio resampler component. ### GetElement() Gets the underlying GStreamer element for direct GStreamer API access. Provides low-level access to the audio resampler element for advanced resampling operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element representing the audio resampler. ### IsAvailable() Determines whether the audio resampler block is available in the current environment. Checks for the presence of required GStreamer audio resampling plugins and dependencies. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if audio resampling is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this audio resampler block. This method is called internally by the MediaBlocks pipeline during block initialization to provide access to pipeline resources and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that owns this block. ## See Also --- # Class AudioRNNoiseBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioRNNoiseBlock.html # Class AudioRNNoiseBlock # Class AudioRNNoiseBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll RNN-based audio noise reduction block using audiornnoise from rsaudiofx plugin. Uses a recurrent neural network to intelligently remove noise from audio streams while preserving speech and other desired audio content. Features voice activity detection for optimized noise reduction performance. Essential for cleaning audio recordings, live streams, and communication applications. Implements the . Implements the . Implements the . ```csharp public class AudioRNNoiseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioRNNoiseBlock() Initializes a new instance of the class with default noise reduction settings. ```csharp public AudioRNNoiseBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VadThreshold Gets or sets the voice activity detection threshold. Valid range: 0.0 to 1.0. Default: 0.0. Higher values make the algorithm more sensitive to voice activity, which can help preserve speech quality while reducing noise. ```csharp public float VadThreshold { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### Build() Constructs and initializes the audio RNN noise reduction filter and its associated GStreamer elements. This method creates the filter with the specified noise reduction parameters, establishes input and output pads, and prepares the block for reducing noise using recurrent neural network algorithms. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio RNN noise reduction block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer audio RNN noise reduction filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer audio RNN noise reduction filter. ### GetElement() Gets the underlying GStreamer element that performs the noise reduction processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the audio RNN noise reduction filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio RNN noise reduction block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AudioSampleGrabberBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioSampleGrabberBlock.html # Class AudioSampleGrabberBlock # Class AudioSampleGrabberBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio sample grabber block that captures audio samples from the pipeline for analysis or processing. This block provides real-time access to audio data flowing through the pipeline without affecting the audio stream. It captures audio samples and delivers them through events for applications that need to analyze, visualize, or process audio data. The block supports various audio formats and can optionally include a null renderer for scenarios where audio data capture is needed without playback. Essential for audio analysis, waveform visualization, level meters, and custom audio processing applications. Implements the . Implements the . Implements the . ```csharp public class AudioSampleGrabberBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioSampleGrabberBlock(AudioFormatX) Initializes a new instance of the class with the specified audio format for sample capture. ```csharp public AudioSampleGrabberBlock(AudioFormatX format = AudioFormatX.S16) ``` #### Parameters Parameters: - format (AudioFormatX): The audio format for captured samples. Default is S16LE (16-bit signed little-endian). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the audio sample grabber and its associated GStreamer elements. This method creates the grabber element, establishes input and output pads, sets up the audio frame callback, and prepares the block for capturing audio samples from the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the grabber was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio sample grabber block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer audio sample grabber element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer sample grabber. ### GetElement() Gets the underlying GStreamer element that performs the audio sample capture. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the sample grabber. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio sample grabber block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### OnAudioFrameBuffer This event occurs whenever a new audio frame is captured from the stream. Provides real-time access to audio samples for analysis, visualization, or processing without affecting the audio pipeline flow. ```csharp public event EventHandler OnAudioFrameBuffer ``` #### Event Type Parameters: - (EventHandler < AudioFrameBufferEventArgs >): ## See Also --- # Class AudioTimestampCorrectorBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.AudioTimestampCorrectorBlock.html # Class AudioTimestampCorrectorBlock # Class AudioTimestampCorrectorBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio timestamp corrector block that stabilizes audio streams from unreliable or jittery sources. This block automatically detects timing irregularities in audio streams and corrects them by adding or removing audio samples to maintain consistent timing. It's essential for processing audio from network sources, capture devices with timing issues, or live streams that may experience dropouts. The corrector ensures smooth audio playback by maintaining proper timing relationships and preventing audio artifacts caused by inconsistent sample delivery. Particularly useful for live audio streaming, network audio sources, and real-time audio processing applications. Implements the . Implements the . Implements the . ```csharp public class AudioTimestampCorrectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioTimestampCorrectorBlock(AudioTimestampCorrectorSettings) Initializes a new instance of the class with specified timestamp correction settings for audio stream stabilization. ```csharp public AudioTimestampCorrectorBlock(AudioTimestampCorrectorSettings settings) ``` #### Parameters Parameters: - settings (AudioTimestampCorrectorSettings): The timestamp correction configuration settings defining tolerance and compensation parameters. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the audio timestamp correction settings. Contains configuration for correction tolerance levels, buffer sizes, jitter thresholds, and compensation strategies for handling timing irregularities in audio streams. ```csharp public AudioTimestampCorrectorSettings Settings { get; set; } ``` #### Property Value Parameters: - (AudioTimestampCorrectorSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the audio timestamp corrector and its associated GStreamer elements. This method creates the corrector with the specified settings, establishes input and output pads, and prepares the block for audio timing stabilization and jitter compensation. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the corrector was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio timestamp corrector block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer audio timestamp corrector element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer timestamp corrector. ### GetElement() Gets the underlying GStreamer element that performs the audio timestamp correction processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the timestamp corrector. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio timestamp corrector block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ChebyshevBandPassRejectBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.ChebyshevBandPassRejectBlock.html # Class ChebyshevBandPassRejectBlock # Class ChebyshevBandPassRejectBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Chebyshev band pass and band reject audio filter block for precise frequency domain processing. This block implements high-quality Chebyshev filters that can operate in band-pass or band-reject modes to selectively allow or remove specific frequency ranges from audio signals. Chebyshev filters provide steeper roll-off characteristics compared to Butterworth filters, making them ideal for applications requiring precise frequency separation. The block supports configurable ripple, cutoff frequencies, and filter order for optimal audio filtering performance. Essential for audio cleanup, noise reduction, frequency isolation, and professional audio processing applications. Implements the . Implements the . Implements the . ```csharp public class ChebyshevBandPassRejectBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ChebyshevBandPassRejectBlock(ChebyshevBandPassRejectAudioEffect) Initializes a new instance of the class with specified Chebyshev filter settings for band-pass or band-reject operation. ```csharp public ChebyshevBandPassRejectBlock(ChebyshevBandPassRejectAudioEffect settings) ``` #### Parameters Parameters: - settings (ChebyshevBandPassRejectAudioEffect): The Chebyshev filter configuration settings defining mode, cutoff frequencies, and filter characteristics. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Chebyshev band-pass/reject filter settings. Contains configuration for filter mode (band-pass or band-reject), lower and upper cutoff frequencies, filter order, ripple amount, and other parameters for precise frequency domain control. ```csharp public ChebyshevBandPassRejectAudioEffect Settings { get; set; } ``` #### Property Value Parameters: - (ChebyshevBandPassRejectAudioEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Chebyshev band-pass/reject filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for frequency domain audio processing with steep roll-off characteristics. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Chebyshev band-pass/reject filter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Chebyshev band-pass/reject filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Chebyshev filter. ### GetElement() Gets the underlying GStreamer element that performs the Chebyshev band-pass/reject filtering. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Chebyshev filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Chebyshev band-pass/reject filter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ChebyshevLimitBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.ChebyshevLimitBlock.html # Class ChebyshevLimitBlock # Class ChebyshevLimitBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Chebyshev low pass and high pass filter block for frequency range limiting and audio cleanup. This block implements high-quality Chebyshev filters that can operate in low-pass or high-pass modes to remove unwanted frequency content from audio signals. Chebyshev filters provide steeper roll-off characteristics compared to Butterworth filters with configurable ripple and cutoff frequency. Essential for anti-aliasing, noise reduction, audio cleanup, and frequency band limiting applications in professional audio processing and broadcast systems. Implements the . Implements the . Implements the . ```csharp public class ChebyshevLimitBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ChebyshevLimitBlock(ChebyshevLimitAudioEffect) Initializes a new instance of the class with specified Chebyshev filter settings for low-pass or high-pass operation. ```csharp public ChebyshevLimitBlock(ChebyshevLimitAudioEffect settings) ``` #### Parameters Parameters: - settings (ChebyshevLimitAudioEffect): The Chebyshev filter configuration settings defining mode, cutoff frequency, and filter characteristics. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Chebyshev limit filter settings. Contains configuration for filter mode (low-pass or high-pass), cutoff frequency, filter order, ripple amount, and other parameters for precise frequency limiting. ```csharp public ChebyshevLimitAudioEffect Settings { get; set; } ``` #### Property Value Parameters: - (ChebyshevLimitAudioEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Chebyshev limit filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for frequency limiting with steep roll-off characteristics. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Chebyshev limit filter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Chebyshev limit filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Chebyshev filter. ### GetElement() Gets the underlying GStreamer element that performs the Chebyshev low-pass/high-pass filtering. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Chebyshev filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Chebyshev limit filter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CompressorExpanderBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.CompressorExpanderBlock.html # Class CompressorExpanderBlock # Class CompressorExpanderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio compressor/expander block for dynamic range control and audio level management. This block provides professional-grade dynamic range processing including compression to reduce dynamic range and expansion to increase it. Features configurable ratio, threshold, attack/release times, and soft/hard knee characteristics. Essential for audio mastering, broadcast normalization, voice processing, and maintaining consistent audio levels in multimedia applications. Implements the . Implements the . Implements the . ```csharp public class CompressorExpanderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CompressorExpanderBlock() Initializes a new instance of the class with default settings for dynamic range processing. ```csharp public CompressorExpanderBlock() ``` ## Properties ### Characteristics Gets or sets the knee characteristics for the compression/expansion curve. Soft-knee provides gradual transition around the threshold for transparent processing, while hard-knee creates an abrupt transition for more aggressive dynamics control. Default: HardKnee. ```csharp public AudioDynamicCharacteristics Characteristics { get; set; } ``` #### Property Value Parameters: - (AudioDynamicCharacteristics): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Mode Gets or sets the dynamic range processing mode. Compressor mode reduces dynamic range by making loud sounds quieter, while expander mode increases dynamic range by making quiet sounds quieter. Default: Compressor. ```csharp public AudioCompressorMode Mode { get; set; } ``` #### Property Value Parameters: - (AudioCompressorMode): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Ratio Gets or sets the compression/expansion ratio. For compression: Values greater than 1 reduce dynamic range (e.g., 4:1 means 4dB input change results in 1dB output change). For expansion: Values control how much quieter signals become. Default: 1 (no compression/expansion). ```csharp public float Ratio { get; set; } ``` #### Property Value Parameters: - (float): ### Threshold Gets or sets the threshold level in dB where dynamic processing begins. Signals above this level are affected by compression, signals below by expansion. Typical values range from -60dB to 0dB. Default: 0dB. ```csharp public float Threshold { get; set; } ``` #### Property Value Parameters: - (float): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the compressor/expander filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for dynamic range processing with configured ratio, threshold, and knee characteristics. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this compressor/expander filter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer compressor/expander filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer compressor/expander filter. ### GetElement() Gets the underlying GStreamer element that performs the dynamic range processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the compressor/expander filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this compressor/expander filter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CsoundFilterBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.CsoundFilterBlock.html # Class CsoundFilterBlock # Class CsoundFilterBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Csound audio filter block that provides advanced audio synthesis and processing capabilities. This block integrates the powerful Csound audio programming language and DSP engine to enable complex audio transformations, synthesis, and effects processing. Supports both CSD text content and external CSD files for flexible audio programming. Features include real-time parameter control, score looping, and offset configuration for sophisticated audio manipulation in multimedia pipelines. Implements the . Implements the . Implements the . ```csharp public class CsoundFilterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CsoundFilterBlock() Initializes a new instance of the class with default Csound settings for general-purpose use. ```csharp public CsoundFilterBlock() ``` ### CsoundFilterBlock(string) Initializes a new instance of the class with specified CSD text content. ```csharp public CsoundFilterBlock(string csdText) ``` #### Parameters Parameters: - csdText (string): The CSD text content. ### CsoundFilterBlock(string, bool, double) Initializes a new instance of the class with full parameter configuration. ```csharp public CsoundFilterBlock(string csdText, bool loop, double scoreOffset) ``` #### Parameters Parameters: - csdText (string): The CSD text content. - loop (bool): If set to true [loop]. - scoreOffset (double): The score offset. ## Properties ### CsdText Gets or sets the CSD text content defining the Csound instruments and score. This property allows inline specification of Csound code for real-time audio processing. Changes take effect on the next pipeline start or restart. ```csharp public string CsdText { get; set; } ``` #### Property Value Parameters: - (string): ### Input Gets the single audio input pad for this block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Location Gets or sets the CSD file location for external Csound score files. Use either CsdText or Location but not both simultaneously to avoid conflicts. Changes take effect on the next pipeline start or restart. ```csharp public string Location { get; set; } ``` #### Property Value Parameters: - (string): ### Loop Gets or sets a value indicating whether the Csound score should loop continuously. When enabled, the score will restart automatically upon completion. Can be changed during playback in PLAYING or PAUSED states. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): ### Output Gets the single audio output pad for this block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### ScoreOffset Gets or sets the score offset in seconds for starting playback at a specific time. This allows skipping to any position within the Csound score for flexible playback control. Changes take effect on the next pipeline start or restart. ```csharp public double ScoreOffset { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets the block type identifier for this Csound filter block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Csound filter and its associated GStreamer elements. This method creates the filter with the specified Csound parameters, establishes input and output pads, and prepares the block for advanced audio synthesis and processing using the Csound DSP engine. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Csound filter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Csound filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Csound filter. ### GetElement() Gets the underlying GStreamer element that performs the Csound audio processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Csound filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Csound filter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class EbuR128LevelBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.EbuR128LevelBlock.html # Class EbuR128LevelBlock # Class EbuR128LevelBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll EBU R128 loudness level measurement block using ebur128level from rsaudiofx plugin. Measures and reports loudness levels according to EBU R128 standard including momentary, short-term, and integrated loudness measurements, loudness range, and peak levels. Essential for broadcast compliance, audio mastering, and loudness monitoring applications. Implements the . Implements the . Implements the . ```csharp public class EbuR128LevelBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### EbuR128LevelBlock() Initializes a new instance of the class with default measurement settings. ```csharp public EbuR128LevelBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Interval Gets or sets the measurement interval. Determines how often measurement results are calculated and reported. Default: 1 second. ```csharp public TimeSpan Interval { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Mode Gets or sets the measurement mode flags. Specifies which types of loudness measurements to calculate. Default: All measurement modes enabled. ```csharp public EbuR128Mode Mode { get; set; } ``` #### Property Value Parameters: - (EbuR128Mode): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PostMessages Gets or sets a value indicating whether to post messages with measurement results. When enabled, the element will post messages containing loudness measurement data to the pipeline's message bus. Default: true. ```csharp public bool PostMessages { get; set; } ``` #### Property Value Parameters: - (bool): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the EBU R128 level measurement filter and its associated GStreamer elements. This method creates the filter with the specified measurement parameters, establishes input and output pads, and prepares the block for measuring loudness levels according to EBU R128 standards. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this EBU R128 level measurement block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer EBU R128 level measurement filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer EBU R128 level measurement filter. ### GetElement() Gets the underlying GStreamer element that performs the loudness level measurement. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the EBU R128 level measurement filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this EBU R128 level measurement block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class EchoBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.EchoBlock.html # Class EchoBlock # Class EchoBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio echo effect block that adds delayed repetitions of the input audio signal. This block creates echo effects by mixing delayed versions of the audio with the original signal. Features configurable delay time, feedback amount, and intensity for creating various echo effects from subtle ambience to dramatic repeating echoes. Essential for audio enhancement, spatial effects, music production, and creating acoustic environment simulations in multimedia applications. Implements the . Implements the . Implements the . ```csharp public class EchoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### EchoBlock() Initializes a new instance of the class with default echo settings for general-purpose use. ```csharp public EchoBlock() ``` ## Properties ### Delay Gets or sets the echo delay time between the original signal and its repetitions. Shorter delays create tight slapback effects, while longer delays produce distinct echoes. Typical values range from 50ms to 500ms. Default: 200ms. ```csharp public TimeSpan Delay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Feedback Gets or sets the feedback amount that controls echo repetitions. Higher values create more repetitions with gradual decay, while lower values produce fewer repetitions. Values typically range from 0.0 to 0.9. Caution: Values close to 1.0 can create infinite feedback. ```csharp public float Feedback { get; set; } ``` #### Property Value Parameters: - (float): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Intensity Gets or sets the echo intensity determining the volume of the delayed signal. Values range from 0.0 (no echo) to 1.0 (full volume echo). Lower values create subtle echoes while higher values produce prominent effects. ```csharp public float Intensity { get; set; } ``` #### Property Value Parameters: - (float): ### MaxDelay Gets or sets the maximum echo delay time that can be used. This value determines the internal buffer size and should be set higher than the actual delay to allow for real-time adjustments. Default: 500ms. ```csharp public TimeSpan MaxDelay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the echo filter and its associated GStreamer elements. This method creates the filter with the specified echo parameters, establishes input and output pads, and prepares the block for creating echo effects with configurable delay, intensity, and feedback. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this echo effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer echo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer echo filter. ### GetElement() Gets the underlying GStreamer element that performs the echo effect processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the echo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this echo effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class Equalizer10Block Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.Equalizer10Block.html # Class Equalizer10Block # Class Equalizer10Block **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll 10-band graphic equalizer block for precise frequency response control and audio tone shaping. This block provides a traditional 10-band graphic equalizer with fixed frequency bands covering the full audio spectrum from bass to treble. Each band can be independently adjusted to boost or cut specific frequency ranges, allowing for detailed audio tone control and frequency correction. Essential for audio mastering, sound system tuning, music production, and broadcast audio processing. Implements the . Implements the . Implements the . ```csharp public class Equalizer10Block : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### Equalizer10Block() Initializes a new instance of the class with all bands set to 0dB (flat frequency response). ```csharp public Equalizer10Block() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the 10-band equalizer filter and its associated GStreamer elements. This method creates the filter with the specified band settings, establishes input and output pads, and prepares the block for frequency response adjustment across 10 fixed frequency bands. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this 10-band equalizer block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer 10-band equalizer filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer equalizer filter. ### GetElement() Gets the underlying GStreamer element that performs the 10-band equalization processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the equalizer filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetBand(int, double) Sets the gain level for a specific frequency band. ```csharp public void SetBand(int id, double value) ``` #### Parameters Parameters: - id (int): The band identifier (0-9) corresponding to specific frequencies. - value (double): The gain value in decibels (-24dB to +12dB). #### Remarks Ranging from -24 dB to +12 dB. Band 0: 29 Hz. Band 1: 59 Hz. Band 2: 119 Hz. Band 3: 237 Hz. Band 4: 474 Hz. Band 5: 947 Hz. Band 6: 1889 Hz. Band 7: 3770 Hz. Band 8: 7523 Hz. Band 9: 15011 Hz. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this 10-band equalizer block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class EqualizerParametricBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.EqualizerParametricBlock.html # Class EqualizerParametricBlock # Class EqualizerParametricBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Parametric equalizer block providing flexible multi-band frequency control with adjustable parameters. This block offers advanced equalizer functionality with configurable frequency bands where each band can have its center frequency, gain, and bandwidth (Q factor) independently adjusted. Provides more precise frequency control than graphic equalizers, making it ideal for professional audio correction, notch filtering, and surgical frequency adjustments. Essential for audio mastering, broadcast processing, and high-end audio production applications requiring precise frequency response shaping. Implements the . Implements the . Implements the . ```csharp public class EqualizerParametricBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### EqualizerParametricBlock() Initializes a new instance of the class with default 5-band configuration for general-purpose frequency adjustment. ```csharp public EqualizerParametricBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the parametric equalizer filter and its associated GStreamer elements. This method creates the filter with the specified band configurations, establishes input and output pads, and prepares the block for precise frequency response adjustment with configurable parametric bands. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this parametric equalizer block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer parametric equalizer filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer parametric equalizer filter. ### GetElement() Gets the underlying GStreamer element that performs the parametric equalization processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the parametric equalizer filter. ### GetStates() Gets the current configuration states for all parametric equalizer bands. ```csharp public ParametricEqualizerBand[] GetStates() ``` #### Returns Parameters: - (ParametricEqualizerBand [ ]): An array of ParametricEqualizerBand objects containing the configuration for each band. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetNumBands(int) Sets the number of active parametric equalizer bands. Each band can independently control a specific frequency range with adjustable center frequency, gain, and bandwidth. Default: 5. ```csharp public void SetNumBands(int value) ``` #### Parameters Parameters: - value (int): The number of bands to activate (1-64). ### SetState(int, ParametricEqualizerBand) Sets the configuration state for a specific parametric equalizer band. Each band state includes center frequency, bandwidth (Q factor), and gain settings. ```csharp public void SetState(int index, ParametricEqualizerBand bandState) ``` #### Parameters Parameters: - index (int): The band index (0-based, must be less than NumBands). - bandState (ParametricEqualizerBand): The parametric band configuration including frequency, bandwidth, and gain. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this parametric equalizer block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class HRTFRenderBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.HRTFRenderBlock.html # Class HRTFRenderBlock # Class HRTFRenderBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Head-Related Transfer Function (HRTF) spatial audio rendering block using hrtfrender from rsaudiofx plugin. Renders spatial audio using HRTF data for 3D positional audio effects. Provides immersive audio experiences by simulating how sound reaches the ears from different spatial positions. Essential for VR applications, games, and spatial audio content production. Implements the . Implements the . Implements the . ```csharp public class HRTFRenderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### HRTFRenderBlock() Initializes a new instance of the class with default HRTF rendering settings. ```csharp public HRTFRenderBlock() ``` ## Properties ### BlockLength Gets or sets the block length for processing. Determines the size of audio blocks processed at once. Larger blocks may reduce CPU usage but increase latency. Default: 512. ```csharp public ulong BlockLength { get; set; } ``` #### Property Value Parameters: - (ulong): ### DistanceGain Gets or sets the distance gain factor. Controls how distance affects the audio volume in spatial positioning. Higher values make distance more pronounced, lower values reduce distance effects. Default: 1.0. ```csharp public float DistanceGain { get; set; } ``` #### Property Value Parameters: - (float): ### HrirFile Gets or sets the path to the HRIR (Head-Related Impulse Response) file. This file contains the spatial audio data for HRTF rendering. Must be set to a valid HRIR file for proper spatial audio rendering. ```csharp public string HrirFile { get; set; } ``` #### Property Value Parameters: - (string): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### InterpolationSteps Gets or sets the number of interpolation steps. Higher values provide smoother transitions between spatial positions but use more CPU. Default: 8. ```csharp public ulong InterpolationSteps { get; set; } ``` #### Property Value Parameters: - (ulong): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the HRTF rendering filter and its associated GStreamer elements. This method creates the filter with the specified spatial rendering parameters, establishes input and output pads, and prepares the block for rendering spatial audio using HRTF data. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this HRTF rendering block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer HRTF rendering filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer HRTF rendering filter. ### GetElement() Gets the underlying GStreamer element that performs the HRTF spatial audio rendering. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the HRTF rendering filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this HRTF rendering block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class KaraokeBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.KaraokeBlock.html # Class KaraokeBlock # Class KaraokeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Karaoke audio effect block that removes or reduces center-panned vocals from stereo audio. This block uses advanced audio processing techniques to isolate and suppress vocal content that is typically recorded in the center of the stereo image. Features configurable filtering levels and frequency ranges to optimize vocal removal for different music types. Essential for karaoke applications, vocal isolation, instrumental track creation, and audio remixing. Works best with well-mixed stereo recordings where vocals are center-panned. Implements the . Implements the . Implements the . ```csharp public class KaraokeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### KaraokeBlock(KaraokeAudioEffect) Initializes a new instance of the class with specified karaoke effect settings for vocal removal. ```csharp public KaraokeBlock(KaraokeAudioEffect settings) ``` #### Parameters Parameters: - settings (KaraokeAudioEffect): The karaoke effect settings controlling vocal removal parameters. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the karaoke effect settings that control vocal removal parameters. Includes settings for filter level, frequency range, and processing mode to optimize vocal suppression for different types of audio content. ```csharp public KaraokeAudioEffect Settings { get; set; } ``` #### Property Value Parameters: - (KaraokeAudioEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the karaoke filter and its associated GStreamer elements. This method creates the filter with the specified karaoke settings, establishes input and output pads, and prepares the block for removing or reducing center-panned vocals from stereo audio streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this karaoke effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer karaoke filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer karaoke filter. ### GetElement() Gets the underlying GStreamer element that performs the karaoke vocal removal processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the karaoke filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this karaoke effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class PitchBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.PitchBlock.html # Class PitchBlock # Class PitchBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio pitch shifting block that changes the pitch without affecting playback speed. This block provides high-quality pitch shifting using the soundtouch library. Supports pitch adjustment in semitones (-12 to +12) for musical applications. Essential for karaoke, music production, and audio processing applications. Implements the . Implements the . Implements the . ```csharp public class PitchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PitchBlock() Initializes a new instance of the class with default pitch settings (no pitch change). ```csharp public PitchBlock() ``` ### PitchBlock(int) Initializes a new instance of the class with the specified pitch shift in semitones. ```csharp public PitchBlock(int semitones) ``` #### Parameters Parameters: - semitones (int): The pitch shift in semitones (-12 to +12). ## Properties ### Input Gets the input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Pitch Gets or sets the pitch multiplier directly. 1.0 = no change, 2.0 = one octave up, 0.5 = one octave down. ```csharp public float Pitch { get; set; } ``` #### Property Value Parameters: - (float): ### Semitones Gets or sets the pitch shift in semitones. Range: -12 to +12 (one octave down to one octave up). ```csharp public int Semitones { get; set; } ``` #### Property Value Parameters: - (int): ### Type Gets the media block type identifier for pitch processing operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the pitch filter and its associated GStreamer elements. This method creates the filter with the specified pitch settings, establishes input and output pads, and prepares the block for pitch shifting audio. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Cleans up all resources associated with the pitch operations. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the pitch block. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer pitch filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer pitch filter. ### GetElement() Gets the underlying GStreamer element that performs the pitch processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the pitch filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this pitch block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RemoveSilenceBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.RemoveSilenceBlock.html # Class RemoveSilenceBlock # Class RemoveSilenceBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio silence removal block that automatically detects and removes silent sections from audio streams. This block analyzes incoming audio to identify sections where the signal level falls below a specified threshold and either removes these sections entirely or reduces their volume. Essential for cleaning up recordings, podcasts, voice content, and any audio that contains unwanted silent gaps or quiet segments. Implements the . Implements the . Implements the . ```csharp public class RemoveSilenceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RemoveSilenceBlock() Initializes a new instance of the class with default silence removal settings suitable for general audio processing. ```csharp public RemoveSilenceBlock() ``` ## Properties ### Input Gets the primary input pad for audio silence removal processing. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this remove silence block. This block has a single input for audio processing. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad providing audio with silence processed. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this remove silence block. This block has a single output for processed audio. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Squash Gets or sets the squash mode for silence handling. When enabled (true), silent sections are completely removed from the output stream. When disabled (false), silent sections are reduced in level but timing is preserved. Squash mode is useful for speech processing where gaps can be eliminated entirely. ```csharp public bool Squash { get; set; } ``` #### Property Value Parameters: - (bool): ### Threshold Gets or sets the silence detection threshold. Audio levels below this threshold will be considered as silence. Values range from 0.0 (complete silence only) to 1.0 (no silence detection). Lower values are more sensitive to quiet sounds, higher values require louder audio to avoid removal. ```csharp public double Threshold { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the removesilence filter and its associated GStreamer elements. This method creates the filter with the specified silence detection parameters, establishes input and output pads, and prepares the block for processing audio with silence removal capabilities. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this remove silence block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer removesilence filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer removesilence filter. ### GetElement() Gets the underlying GStreamer element that performs the silence removal processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the removesilence filter. ### IsAvailable() Determines whether this media block is available. Checks if the required GStreamer removesilence plugin is installed and accessible. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the removesilence element is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this remove silence block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ReverberationBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.ReverberationBlock.html # Class ReverberationBlock # Class ReverberationBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Reverberation audio effect block that simulates acoustic spaces and room ambience. This block adds realistic reverb effects to audio by simulating the natural reflections and decay characteristics of various acoustic environments. Features configurable room size, decay time, damping, and wet/dry mix controls to create everything from subtle room ambience to dramatic hall reverbs. Essential for music production, audio post-production, gaming audio, and creating immersive spatial audio experiences. Implements the . Implements the . Implements the . ```csharp public class ReverberationBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ReverberationBlock(ReverberationAudioEffect) Initializes a new instance of the class with specified reverberation settings for acoustic space simulation. ```csharp public ReverberationBlock(ReverberationAudioEffect settings) ``` #### Parameters Parameters: - settings (ReverberationAudioEffect): The reverberation settings defining room characteristics and effect parameters. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the reverberation effect settings that control the acoustic space simulation. Includes parameters for room size, decay time, damping, wet/dry mix, and other properties that define the characteristics of the simulated acoustic environment. ```csharp public ReverberationAudioEffect Settings { get; set; } ``` #### Property Value Parameters: - (ReverberationAudioEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the reverberation filter and its associated GStreamer elements. This method creates the filter with the specified reverb settings, establishes input and output pads, and prepares the block for simulating acoustic spaces and adding room ambience to audio streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this reverberation effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer reverberation filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer reverberation filter. ### GetElement() Gets the underlying GStreamer element that performs the reverberation effect processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the reverberation filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this reverberation effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RSAudioEchoBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.RSAudioEchoBlock.html # Class RSAudioEchoBlock # Class RSAudioEchoBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll RS Audio Echo effect block using rsaudioecho from rsaudiofx plugin. Provides echo and reverb effects with configurable delay, intensity, and feedback parameters. Features precise control over echo characteristics for creating spatial effects, ambience, and classic echo sounds. Essential for audio enhancement and creative audio processing. Implements the . Implements the . Implements the . ```csharp public class RSAudioEchoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RSAudioEchoBlock() Initializes a new instance of the class with default echo settings for general-purpose use. ```csharp public RSAudioEchoBlock() ``` ## Properties ### Delay Gets or sets the echo delay time between the original signal and its repetitions. Shorter delays create tight slapback effects, while longer delays produce distinct echoes. Typical values range from 50ms to 500ms. Default: 500ms. ```csharp public TimeSpan Delay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Feedback Gets or sets the feedback amount that controls echo repetitions. Higher values create more repetitions with gradual decay, while lower values produce fewer repetitions. Values typically range from 0.0 to 0.9. Caution: Values close to 1.0 can create infinite feedback. ```csharp public double Feedback { get; set; } ``` #### Property Value Parameters: - (double): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Intensity Gets or sets the echo intensity determining the volume of the delayed signal. Values range from 0.0 (no echo) to 1.0 (full volume echo). Lower values create subtle echoes while higher values produce prominent effects. ```csharp public double Intensity { get; set; } ``` #### Property Value Parameters: - (double): ### MaxDelay Gets or sets the maximum echo delay time that can be used. This value determines the internal buffer size and should be set higher than the actual delay to allow for real-time adjustments. Default: 1000ms. ```csharp public TimeSpan MaxDelay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the RS audio echo filter and its associated GStreamer elements. This method creates the filter with the specified echo parameters, establishes input and output pads, and prepares the block for creating echo effects with configurable delay, intensity, and feedback. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this RS audio echo effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer RS audio echo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer RS audio echo filter. ### GetElement() Gets the underlying GStreamer element that performs the echo effect processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the RS audio echo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this RS audio echo effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ScaleTempoBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.ScaleTempoBlock.html # Class ScaleTempoBlock # Class ScaleTempoBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio tempo scaling block that changes playback speed without affecting pitch. This block provides high-quality time-stretching and pitch-shifting capabilities using advanced algorithms to modify audio tempo while preserving pitch quality. Features configurable rate scaling, overlap processing, search windows, and stride lengths for optimal audio quality. Essential for music production, audio editing, speech processing, and media playback applications requiring tempo adjustments without pitch distortion. Implements the . Implements the . Implements the . ```csharp public class ScaleTempoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ScaleTempoBlock() Initializes a new instance of the class with default tempo scaling settings. ```csharp public ScaleTempoBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Overlap Gets or sets the percentage of stride to overlap for smoother transitions. Higher values provide better quality but increased processing overhead. Default: 0.2. ```csharp public double Overlap { get; set; } ``` #### Property Value Parameters: - (double): ### Rate Gets or sets the tempo scaling rate multiplier. Values greater than 1.0 increase playback speed, values less than 1.0 decrease speed. ```csharp public double Rate { get; set; } ``` #### Property Value Parameters: - (double): ### Search Gets or sets the search window duration for finding optimal overlap positions. Longer search times improve quality but increase processing time. Default: 14 ms. ```csharp public TimeSpan Search { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Stride Gets or sets the output length for each processing stride. Shorter strides provide better quality but higher CPU usage. Default: 30 ms. ```csharp public TimeSpan Stride { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the scale tempo filter and its associated GStreamer elements. This method creates the filter with the specified tempo scaling parameters, establishes input and output pads, and prepares the block for time-stretching audio without pitch distortion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this tempo scaling block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer scale tempo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer scale tempo filter. ### GetElement() Gets the underlying GStreamer element that performs the tempo scaling processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the scale tempo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this tempo scaling block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SilenceDetectorBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.SilenceDetectorBlock.html # Class SilenceDetectorBlock # Class SilenceDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Silence detector block that analyzes uncompressed audio streams to detect periods of silence based on a configurable threshold level. This block monitors audio in real-time, identifies when audio levels drop below the specified threshold, and tracks the duration of silence periods. Features include real-time callbacks for silence start/end events, collection of all silence periods with precise timestamps, and JSON export functionality for detailed analysis and reporting. Essential for audio editing applications, speech processing, podcast production, and any scenario requiring automatic silence detection and analysis. Implements the . Implements the . Implements the . ```csharp public class SilenceDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SilenceDetectorBlock(double) Initializes a new instance of the class with default silence detection settings suitable for general audio analysis. ```csharp public SilenceDetectorBlock(double thresholdDb = -40) ``` #### Parameters Parameters: - thresholdDb (double): The silence detection threshold in decibels (dB). Default: -40.0 dB. ## Properties ### Input Gets the primary input pad for audio silence detection. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this silence detector block. This block has a single input for audio analysis. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad providing audio passthrough after silence detection. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this silence detector block. This block has a single output for passthrough audio. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### ThresholdDb Gets or sets the silence detection threshold in decibels (dB). Audio levels below this threshold will be considered as silence. Values are typically negative (e.g., -40.0 dB for fairly quiet audio, -60.0 dB for very quiet). Lower (more negative) values are less sensitive and require quieter audio to trigger silence detection. Higher (less negative) values are more sensitive and will detect silence at louder levels. ```csharp public double ThresholdDb { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the silence detector and its associated GStreamer elements. This method creates the detector with the specified threshold, establishes input and output pads, sets up event forwarding, and prepares the block for analyzing audio streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the detector was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this silence detector block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### ClearSilencePeriods() Clears all detected silence periods from the internal list. Useful when reusing the detector for multiple audio files or when resetting detection state between different processing operations. ```csharp public void ClearSilencePeriods() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### ExportSilencePeriodsJson(bool) Exports all detected silence periods to a JSON string. The JSON format includes an array of silence periods, each with start time, end time, and duration in various formats (milliseconds, seconds, and formatted strings). Suitable for saving to file, sending to APIs, or further processing by other tools. ```csharp public string ExportSilencePeriodsJson(bool prettyPrint = true) ``` #### Parameters Parameters: - prettyPrint (bool): If true, formats the JSON with indentation for readability. Default: true. #### Returns Parameters: - (string): A JSON string containing all detected silence periods with detailed timing information. ### FinalizeSilencePeriods(TimeSpan) Finalizes any in-progress silence period and returns all detected periods. This should be called when the audio stream ends to ensure the final silence period (if the stream ended during silence) is properly recorded and included in the results. ```csharp public List FinalizeSilencePeriods(TimeSpan endTime) ``` #### Parameters Parameters: - endTime (TimeSpan): The timestamp when the audio stream ended. #### Returns Parameters: - (List < SilencePeriod >): A list of all detected silence periods including any finalized period. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer silence detector element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer silence detector. ### GetElement() Gets the underlying GStreamer element that performs the silence detection. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the silence detector. ### GetSilencePeriods() Gets all detected silence periods since the detector was started. Each period includes precise start time, end time, and duration information. Useful for post-processing analysis, report generation, or audio editing operations. ```csharp public List GetSilencePeriods() ``` #### Returns Parameters: - (List < SilencePeriod >): A list of all detected silence periods with timing information. ### IsAvailable() Determines whether this media block is available. Checks if the required GStreamer level plugin is installed and accessible. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the level element is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this silence detector block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### OnSilenceEnded This event occurs when a silence period ends (audio level rises above the threshold). Provides notification with timestamp, audio level, and complete silence period information including start time, end time, and duration for recording or analysis purposes. ```csharp public event EventHandler OnSilenceEnded ``` #### Event Type Parameters: - (EventHandler < SilenceDetectionEventArgs >): ### OnSilenceStarted This event occurs when a silence period starts (audio level drops below the threshold). Provides immediate notification with timestamp and audio level information, enabling applications to respond in real-time to silence detection. ```csharp public event EventHandler OnSilenceStarted ``` #### Event Type Parameters: - (EventHandler < SilenceDetectionEventArgs >): ## See Also --- # Class VolumeBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.VolumeBlock.html # Class VolumeBlock # Class VolumeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Audio volume control block that provides precise control over audio levels and muting. This block allows dynamic adjustment of audio volume using a linear scale where 1.0 represents the original volume level. It supports both volume scaling (0.0 to 10.0 or higher) and instant muting without changing the volume setting. Unlike the AmplifyBlock which focuses on gain with clipping control, the VolumeBlock provides simple, direct volume control suitable for user-facing volume controls and audio mixing scenarios. The block processes audio in real-time with minimal latency and CPU overhead. Implements the . Implements the . Implements the . ```csharp public class VolumeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VolumeBlock() Initializes a new instance of the class. Creates a volume control block with default settings (volume = 1.0, mute = false). The block is ready to be connected in a media pipeline for real-time volume adjustment. ```csharp public VolumeBlock() ``` ## Properties ### Input Gets the single audio input pad for this block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Level Gets or sets the volume level multiplier. Valid range is typically 0.0 to 10.0, where 0.0 is silence, 1.0 is original volume, and values greater than 1.0 amplify the audio. Changes take effect immediately during playback. Default value is 1.0 (100% original volume). ```csharp public double Level { get; set; } ``` #### Property Value Parameters: - (double): ### Mute Gets or sets a value indicating whether this is muted. ```csharp public bool Mute { get; set; } ``` #### Property Value Parameters: - (bool): ### Output Gets the single audio output pad for this block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for this volume control block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the volume control element within the pipeline. Creates the GStreamer volume element, sets initial volume and mute state, and establishes pad connections for audio flow. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the volume block was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the volume filter element. Called during disposal to ensure proper cleanup of native GStreamer resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the volume filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The VolumeFilter element that performs the volume adjustment. ### GetElement() Gets the underlying GStreamer element for this volume block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer volume element that controls audio levels. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this volume block, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this volume block. ## See Also --- # Class VUMeterBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.VUMeterBlock.html # Class VUMeterBlock # Class VUMeterBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll VU (Volume Unit) meter block for real-time audio level monitoring and analysis. This block provides continuous audio level measurement and peak detection for stereo and mono audio streams. Features real-time callback events with detailed level information including RMS, peak, and decay values for both left and right channels. Essential for audio monitoring, level control, automatic gain control, broadcast applications, and professional audio production environments requiring precise level monitoring. Implements the . Implements the . Implements the . ```csharp public class VUMeterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VUMeterBlock() Initializes a new instance of the class with default VU meter monitoring settings. ```csharp public VUMeterBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ### OnAudioVUMeter This event occurs whenever new audio VU meter data is received. Provides real-time audio level information including RMS, peak, and decay values for continuous audio monitoring and level control applications. ```csharp public event EventHandler OnAudioVUMeter ``` #### Event Type Parameters: - (EventHandler < VUMeterXEventArgs >): ## See Also --- # Class WideStereoBlock Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.WideStereoBlock.html # Class WideStereoBlock # Class WideStereoBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioProcessing **Assembly**: VisioForge.Core.dll Wide stereo effect block that enhances stereo imaging and spatial audio width. This block applies psychoacoustic processing to expand the perceived stereo width of audio content while maintaining mono compatibility. Features adjustable width enhancement, phase correlation, and stereo field manipulation for creating immersive audio experiences. Essential for music production, audio mastering, broadcast enhancement, and spatial audio applications requiring enhanced stereo imaging. Implements the . Implements the . Implements the . ```csharp public class WideStereoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WideStereoBlock(WideStereoAudioEffect) Initializes a new instance of the class with specified wide stereo effect settings. ```csharp public WideStereoBlock(WideStereoAudioEffect settings) ``` #### Parameters Parameters: - settings (WideStereoAudioEffect): The wide stereo effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the wide stereo effect settings. Contains parameters for controlling stereo width, phase correlation, and spatial enhancement. ```csharp public WideStereoAudioEffect Settings { get; set; } ``` #### Property Value Parameters: - (WideStereoAudioEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the wide stereo filter and its associated GStreamer elements. This method creates the filter with the specified stereo enhancement settings, establishes input and output pads, and prepares the block for expanding stereo imaging while maintaining mono compatibility. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this wide stereo effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer wide stereo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer wide stereo filter. ### GetElement() Gets the underlying GStreamer element that performs the stereo width enhancement processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the wide stereo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this wide stereo effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.AudioProcessing Link: api/VisioForge.Core.MediaBlocks.AudioProcessing.html # Namespace VisioForge.Core.MediaBlocks.AudioProcessing # Namespace VisioForge.Core.MediaBlocks.AudioProcessing ### Classes Parameters: - (): Audio amplification block that adjusts the volume level of audio streams. This block provides configurable gain control with multiple clipping methods to prevent distortion when amplifying audio signals. Useful for normalizing audio levels or boosting quiet audio sources. Implements the . Implements the . Implements the . - (): Audio balance processing block for stereo panorama control in the MediaBlocks pipeline. This block adjusts the stereo balance (left/right channel distribution) of audio content, allowing positioning of audio from full left (-1.0) through center (0.0) to full right (+1.0). Essential for stereo audio mixing, surround sound processing, and spatial audio applications. Implements the . Implements the . Implements the . - (): Audio format converter block that transforms audio data between different formats, sample rates, and channel configurations. This block provides automatic audio format conversion capabilities within a media processing pipeline, handling format negotiation and conversion between incompatible audio formats. It supports conversion between various audio formats including different sample rates (8kHz to 192kHz), bit depths (8/16/24/32-bit), channel layouts (mono, stereo, surround), and audio codecs. The converter automatically determines the optimal conversion path and handles format negotiation between connected blocks. Common use cases include matching audio formats between sources and encoders, resampling for output devices, and ensuring compatibility between pipeline elements with different audio requirements. Implements the . Implements the . Implements the . - (): Audio effects processing block that applies multiple real-time audio effects to audio streams. This block manages a chain of audio effects including volume control, equalizers, balance adjustment, echo/reverb, amplification, compression/expansion, and tempo scaling. Effects can be dynamically added, removed, and updated during playback without interrupting the audio stream. The block supports both real-time parameter adjustment and effect chaining for complex audio processing workflows. Essential for audio post-processing, music production, broadcast audio, and interactive audio applications. Implements the . Implements the . Implements the . - (): Audio loudness normalization block using audioloudnorm from rsaudiofx plugin. Normalizes audio according to EBU R128 loudness standards with configurable target levels, loudness range, and peak limiting. Essential for broadcast compliance, streaming platforms, and maintaining consistent audio levels across different content. Implements the . Implements the . Implements the . - (): Audio mixer block that combines multiple audio streams into a single output stream. This block accepts multiple audio inputs and mixes them together with individual volume and mute controls for each input channel. The mixer automatically handles format conversion through internal audio resamplers to ensure all inputs are converted to a common format before mixing. Essential for combining multiple audio sources like microphones, music tracks, sound effects, and other audio streams in broadcast, conferencing, and multimedia applications. Supports dynamic input addition/removal during playback and real-time volume/mute control. Implements the . Implements the . Implements the . - (): RNN-based audio noise reduction block using audiornnoise from rsaudiofx plugin. Uses a recurrent neural network to intelligently remove noise from audio streams while preserving speech and other desired audio content. Features voice activity detection for optimized noise reduction performance. Essential for cleaning audio recordings, live streams, and communication applications. Implements the . Implements the . Implements the . - (): Audio resampler block that converts audio between different sample rates, formats, and channel configurations. This block provides high-quality audio resampling for format compatibility and sample rate conversion within the MediaBlocks pipeline. It can convert between various audio formats (8-bit to 32-bit), sample rates (8kHz to 192kHz), and channel layouts (mono to multi-channel). The resampler uses advanced algorithms to maintain audio quality during conversion and minimize artifacts. Essential for ensuring audio compatibility between sources, effects, and outputs with different requirements. Implements the . Implements the . Implements the . - (): Audio sample grabber block that captures audio samples from the pipeline for analysis or processing. This block provides real-time access to audio data flowing through the pipeline without affecting the audio stream. It captures audio samples and delivers them through events for applications that need to analyze, visualize, or process audio data. The block supports various audio formats and can optionally include a null renderer for scenarios where audio data capture is needed without playback. Essential for audio analysis, waveform visualization, level meters, and custom audio processing applications. Implements the . Implements the . Implements the . - (): Audio timestamp corrector block that stabilizes audio streams from unreliable or jittery sources. This block automatically detects timing irregularities in audio streams and corrects them by adding or removing audio samples to maintain consistent timing. It's essential for processing audio from network sources, capture devices with timing issues, or live streams that may experience dropouts. The corrector ensures smooth audio playback by maintaining proper timing relationships and preventing audio artifacts caused by inconsistent sample delivery. Particularly useful for live audio streaming, network audio sources, and real-time audio processing applications. Implements the . Implements the . Implements the . - (): Chebyshev band pass and band reject audio filter block for precise frequency domain processing. This block implements high-quality Chebyshev filters that can operate in band-pass or band-reject modes to selectively allow or remove specific frequency ranges from audio signals. Chebyshev filters provide steeper roll-off characteristics compared to Butterworth filters, making them ideal for applications requiring precise frequency separation. The block supports configurable ripple, cutoff frequencies, and filter order for optimal audio filtering performance. Essential for audio cleanup, noise reduction, frequency isolation, and professional audio processing applications. Implements the . Implements the . Implements the . - (): Chebyshev low pass and high pass filter block for frequency range limiting and audio cleanup. This block implements high-quality Chebyshev filters that can operate in low-pass or high-pass modes to remove unwanted frequency content from audio signals. Chebyshev filters provide steeper roll-off characteristics compared to Butterworth filters with configurable ripple and cutoff frequency. Essential for anti-aliasing, noise reduction, audio cleanup, and frequency band limiting applications in professional audio processing and broadcast systems. Implements the . Implements the . Implements the . - (): Audio compressor/expander block for dynamic range control and audio level management. This block provides professional-grade dynamic range processing including compression to reduce dynamic range and expansion to increase it. Features configurable ratio, threshold, attack/release times, and soft/hard knee characteristics. Essential for audio mastering, broadcast normalization, voice processing, and maintaining consistent audio levels in multimedia applications. Implements the . Implements the . Implements the . - (): Csound audio filter block that provides advanced audio synthesis and processing capabilities. This block integrates the powerful Csound audio programming language and DSP engine to enable complex audio transformations, synthesis, and effects processing. Supports both CSD text content and external CSD files for flexible audio programming. Features include real-time parameter control, score looping, and offset configuration for sophisticated audio manipulation in multimedia pipelines. Implements the . Implements the . Implements the . - (): EBU R128 loudness level measurement block using ebur128level from rsaudiofx plugin. Measures and reports loudness levels according to EBU R128 standard including momentary, short-term, and integrated loudness measurements, loudness range, and peak levels. Essential for broadcast compliance, audio mastering, and loudness monitoring applications. Implements the . Implements the . Implements the . - (): Audio echo effect block that adds delayed repetitions of the input audio signal. This block creates echo effects by mixing delayed versions of the audio with the original signal. Features configurable delay time, feedback amount, and intensity for creating various echo effects from subtle ambience to dramatic repeating echoes. Essential for audio enhancement, spatial effects, music production, and creating acoustic environment simulations in multimedia applications. Implements the . Implements the . Implements the . - (): 10-band graphic equalizer block for precise frequency response control and audio tone shaping. This block provides a traditional 10-band graphic equalizer with fixed frequency bands covering the full audio spectrum from bass to treble. Each band can be independently adjusted to boost or cut specific frequency ranges, allowing for detailed audio tone control and frequency correction. Essential for audio mastering, sound system tuning, music production, and broadcast audio processing. Implements the . Implements the . Implements the . - (): Parametric equalizer block providing flexible multi-band frequency control with adjustable parameters. This block offers advanced equalizer functionality with configurable frequency bands where each band can have its center frequency, gain, and bandwidth (Q factor) independently adjusted. Provides more precise frequency control than graphic equalizers, making it ideal for professional audio correction, notch filtering, and surgical frequency adjustments. Essential for audio mastering, broadcast processing, and high-end audio production applications requiring precise frequency response shaping. Implements the . Implements the . Implements the . - (): Head-Related Transfer Function (HRTF) spatial audio rendering block using hrtfrender from rsaudiofx plugin. Renders spatial audio using HRTF data for 3D positional audio effects. Provides immersive audio experiences by simulating how sound reaches the ears from different spatial positions. Essential for VR applications, games, and spatial audio content production. Implements the . Implements the . Implements the . - (): Karaoke audio effect block that removes or reduces center-panned vocals from stereo audio. This block uses advanced audio processing techniques to isolate and suppress vocal content that is typically recorded in the center of the stereo image. Features configurable filtering levels and frequency ranges to optimize vocal removal for different music types. Essential for karaoke applications, vocal isolation, instrumental track creation, and audio remixing. Works best with well-mixed stereo recordings where vocals are center-panned. Implements the . Implements the . Implements the . - (): Audio pitch shifting block that changes the pitch without affecting playback speed. This block provides high-quality pitch shifting using the soundtouch library. Supports pitch adjustment in semitones (-12 to +12) for musical applications. Essential for karaoke, music production, and audio processing applications. Implements the . Implements the . Implements the . - (): RS Audio Echo effect block using rsaudioecho from rsaudiofx plugin. Provides echo and reverb effects with configurable delay, intensity, and feedback parameters. Features precise control over echo characteristics for creating spatial effects, ambience, and classic echo sounds. Essential for audio enhancement and creative audio processing. Implements the . Implements the . Implements the . - (): Audio silence removal block that automatically detects and removes silent sections from audio streams. This block analyzes incoming audio to identify sections where the signal level falls below a specified threshold and either removes these sections entirely or reduces their volume. Essential for cleaning up recordings, podcasts, voice content, and any audio that contains unwanted silent gaps or quiet segments. Implements the . Implements the . Implements the . - (): Reverberation audio effect block that simulates acoustic spaces and room ambience. This block adds realistic reverb effects to audio by simulating the natural reflections and decay characteristics of various acoustic environments. Features configurable room size, decay time, damping, and wet/dry mix controls to create everything from subtle room ambience to dramatic hall reverbs. Essential for music production, audio post-production, gaming audio, and creating immersive spatial audio experiences. Implements the . Implements the . Implements the . - (): Audio tempo scaling block that changes playback speed without affecting pitch. This block provides high-quality time-stretching and pitch-shifting capabilities using advanced algorithms to modify audio tempo while preserving pitch quality. Features configurable rate scaling, overlap processing, search windows, and stride lengths for optimal audio quality. Essential for music production, audio editing, speech processing, and media playback applications requiring tempo adjustments without pitch distortion. Implements the . Implements the . Implements the . - (): Silence detector block that analyzes uncompressed audio streams to detect periods of silence based on a configurable threshold level. This block monitors audio in real-time, identifies when audio levels drop below the specified threshold, and tracks the duration of silence periods. Features include real-time callbacks for silence start/end events, collection of all silence periods with precise timestamps, and JSON export functionality for detailed analysis and reporting. Essential for audio editing applications, speech processing, podcast production, and any scenario requiring automatic silence detection and analysis. Implements the . Implements the . Implements the . - (): VU (Volume Unit) meter block for real-time audio level monitoring and analysis. This block provides continuous audio level measurement and peak detection for stereo and mono audio streams. Features real-time callback events with detailed level information including RMS, peak, and decay values for both left and right channels. Essential for audio monitoring, level control, automatic gain control, broadcast applications, and professional audio production environments requiring precise level monitoring. Implements the . Implements the . Implements the . - (): Audio volume control block that provides precise control over audio levels and muting. This block allows dynamic adjustment of audio volume using a linear scale where 1.0 represents the original volume level. It supports both volume scaling (0.0 to 10.0 or higher) and instant muting without changing the volume setting. Unlike the AmplifyBlock which focuses on gain with clipping control, the VolumeBlock provides simple, direct volume control suitable for user-facing volume controls and audio mixing scenarios. The block processes audio in real-time with minimal latency and CPU overhead. Implements the . Implements the . Implements the . - (): Wide stereo effect block that enhances stereo imaging and spatial audio width. This block applies psychoacoustic processing to expand the perceived stereo width of audio content while maintaining mono compatibility. Features adjustable width enhancement, phase correlation, and stereo field manipulation for creating immersive audio experiences. Essential for music production, audio mastering, broadcast enhancement, and spatial audio applications requiring enhanced stereo imaging. Implements the . Implements the . Implements the . --- # Class AudioRendererBlock Link: api/VisioForge.Core.MediaBlocks.AudioRendering.AudioRendererBlock.html # Class AudioRendererBlock # Class AudioRendererBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioRendering **Assembly**: VisioForge.Core.dll Audio renderer block for real-time audio playback through system audio devices. This block provides cross-platform audio output capabilities with support for various audio APIs including DirectSound (Windows), OpenSLES (Android), CoreAudio (macOS/iOS), and ALSA/PulseAudio (Linux). Features real-time volume control, mute functionality, synchronization with video streams, device selection, and low-latency playback. Essential for media players, live streaming applications, audio monitoring systems, and any scenario requiring high-quality audio output with precise timing control. Implements the . Implements the . Implements the . ```csharp public class AudioRendererBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockRenderer ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AudioRendererBlock(AudioOutputDeviceInfo) Initializes a new instance of the class with a specific audio output device. ```csharp public AudioRendererBlock(AudioOutputDeviceInfo device) ``` #### Parameters Parameters: - device (AudioOutputDeviceInfo): The audio output device information. ### AudioRendererBlock(IAudioRendererSettings) Initializes a new instance of the class with custom audio renderer settings. ```csharp public AudioRendererBlock(IAudioRendererSettings settings) ``` #### Parameters Parameters: - settings (IAudioRendererSettings): The audio renderer configuration settings. ### AudioRendererBlock() Initializes a new instance of the class with default settings using the system's default audio output device. ```csharp public AudioRendererBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether to sync a stream/streams, for example audio and video. Usually it should be true for playback and capture applications and false for transcoding. When enabled, maintains proper audio/video synchronization using pipeline clock. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ### Mute Gets or sets a value indicating whether audio output device mute is enabled. Muting preserves the volume setting and can be toggled without affecting it. ```csharp public bool Mute { get; set; } ``` #### Property Value Parameters: - (bool): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the audio renderer settings. Contains device selection, audio API configuration, and output parameters. ```csharp public IAudioRendererSettings Settings { get; } ``` #### Property Value Parameters: - (IAudioRendererSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### Volume Gets or sets the audio output device volume. 1.0 is 100%. Volume changes are applied in real-time without interrupting playback. ```csharp public double Volume { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### Build() Constructs and initializes the audio renderer and its associated elements. This method creates the renderer with the specified device settings, establishes the input pad, and prepares the block for audio playback operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the renderer was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this audio renderer block. This method disposes of the audio renderer element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the audio renderer element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the audio renderer. ### GetDevicesAsync(AudioOutputDeviceAPI?) Gets the available audio output devices asynchronously. Enumerates all audio devices compatible with the specified API. ```csharp public static Task GetDevicesAsync(AudioOutputDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioOutputDeviceAPI ?): The audio output API to enumerate devices for, or null for all APIs. #### Returns Parameters: - (Task < AudioOutputDeviceInfo [ ] >): A task that returns an array of available audio output devices. ### GetElement() Gets the underlying GStreamer element that performs the audio playback. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the audio sink. ### IsAvailable(AudioOutputDeviceAPI) Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks if the specified audio API is supported on the current platform. ```csharp public static bool IsAvailable(AudioOutputDeviceAPI api) ``` #### Parameters Parameters: - api (AudioOutputDeviceAPI): The audio output API to check. #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this audio renderer block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.AudioRendering Link: api/VisioForge.Core.MediaBlocks.AudioRendering.html # Namespace VisioForge.Core.MediaBlocks.AudioRendering # Namespace VisioForge.Core.MediaBlocks.AudioRendering ### Classes Parameters: - (): Audio renderer block for real-time audio playback through system audio devices. This block provides cross-platform audio output capabilities with support for various audio APIs including DirectSound (Windows), OpenSLES (Android), CoreAudio (macOS/iOS), and ALSA/PulseAudio (Linux). Features real-time volume control, mute functionality, synchronization with video streams, device selection, and low-latency playback. Essential for media players, live streaming applications, audio monitoring systems, and any scenario requiring high-quality audio output with precise timing control. Implements the . Implements the . Implements the . --- # Class LibVisualBumpscopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualBumpscopeBlock.html # Class LibVisualBumpscopeBlock # Class LibVisualBumpscopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Bumpscope audio visualizer block that creates bump scope visualization patterns synchronized to audio. ```csharp public class LibVisualBumpscopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Bumpscope visualizer creates bump mapping and scope-style visualizations: - 3D-like bump mapped surfaces that respond to audio - Waveform-style patterns with depth and texture - Dynamic surface deformations based on frequency content - Organic movements synchronized to audio characteristics This visualization provides a tactile and dimensional representation of audio signals. ## Constructors ### LibVisualBumpscopeBlock() Initializes a new instance of the class. ```csharp public LibVisualBumpscopeBlock() ``` #### Remarks Creates a libvisual bumpscope block with default settings. The block accepts audio input and produces video output showing the bumpscope visualization with textured surfaces. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bumpscope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual bumpscope elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the bumpscope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualCoronaBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualCoronaBlock.html # Class LibVisualCoronaBlock # Class LibVisualCoronaBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Corona audio visualizer block that creates sun-like corona effects synchronized to audio. ```csharp public class LibVisualCoronaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Corona visualizer creates sun-like corona effects that respond to audio input: - Dynamic solar corona patterns that pulse and flow with the music - Bright radial flares that extend from a central point - Color variations based on frequency and amplitude content - Organic flowing movements synchronized to audio characteristics This visualization provides a dramatic and energetic representation of audio signals. ## Constructors ### LibVisualCoronaBlock() Initializes a new instance of the class. ```csharp public LibVisualCoronaBlock() ``` #### Remarks Creates a libvisual corona block with default settings. The block accepts audio input and produces video output showing the corona visualization with dynamic solar effects. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the corona visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual corona elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the corona block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualInfiniteBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualInfiniteBlock.html # Class LibVisualInfiniteBlock # Class LibVisualInfiniteBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Infinite audio visualizer block that creates flowing infinite patterns synchronized to audio. ```csharp public class LibVisualInfiniteBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Infinite visualizer creates mesmerizing infinite tunnel and flowing patterns: - Dynamic tunnel-like effects that seem to extend infinitely - Flowing geometric patterns that respond to audio frequencies - Smooth morphing shapes that pulse with the music - Hypnotic movements synchronized to audio characteristics This visualization provides a psychedelic and immersive representation of audio signals. ## Constructors ### LibVisualInfiniteBlock() Initializes a new instance of the class. ```csharp public LibVisualInfiniteBlock() ``` #### Remarks Creates a libvisual infinite block with default settings. The block accepts audio input and produces video output showing the infinite visualization with flowing patterns. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the infinite visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual infinite elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the infinite block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualJakdawBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualJakdawBlock.html # Class LibVisualJakdawBlock # Class LibVisualJakdawBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Jakdaw audio visualizer block that creates Jakdaw-style visualization patterns synchronized to audio. ```csharp public class LibVisualJakdawBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Jakdaw visualizer creates dynamic bird-like and nature-inspired patterns: - Organic flowing movements resembling bird flight patterns - Dynamic particle systems that respond to audio frequencies - Natural-looking animations synchronized to musical rhythm - Fluid movements that create artistic visual narratives This visualization provides an organic and artistic representation of audio signals. ## Constructors ### LibVisualJakdawBlock() Initializes a new instance of the class. ```csharp public LibVisualJakdawBlock() ``` #### Remarks Creates a libvisual jakdaw block with default settings. The block accepts audio input and produces video output showing the jakdaw visualization with organic patterns. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the jakdaw visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual jakdaw elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the jakdaw block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualJessBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualJessBlock.html # Class LibVisualJessBlock # Class LibVisualJessBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Jess audio visualizer block that creates Jess-style visualization patterns synchronized to audio. ```csharp public class LibVisualJessBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Jess visualizer creates distinctive and artistic patterns: - Unique geometric and abstract visual patterns - Dynamic color gradients that respond to audio intensity - Artistic movements synchronized to musical characteristics - Creative visual compositions that change with the music This visualization provides a distinctive and artistic representation of audio signals. ## Constructors ### LibVisualJessBlock() Initializes a new instance of the class. ```csharp public LibVisualJessBlock() ``` #### Remarks Creates a libvisual jess block with default settings. The block accepts audio input and produces video output showing the jess visualization with artistic patterns. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the jess visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual jess elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the jess block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualLVAnalyzerBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualLVAnalyzerBlock.html # Class LibVisualLVAnalyzerBlock # Class LibVisualLVAnalyzerBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual LV Analyzer audio visualizer block that creates analyzer-style frequency display synchronized to audio. ```csharp public class LibVisualLVAnalyzerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual LV Analyzer visualizer creates analyzer-style frequency spectrum displays: - Traditional spectrum analyzer with frequency bars - Real-time frequency distribution visualization - Classic audio analyzer interface with frequency bands - Professional-style frequency analysis display This visualization provides a technical and precise representation of audio frequency content. ## Constructors ### LibVisualLVAnalyzerBlock() Initializes a new instance of the class. ```csharp public LibVisualLVAnalyzerBlock() ``` #### Remarks Creates a libvisual LV analyzer block with default settings. The block accepts audio input and produces video output showing the analyzer visualization with frequency spectrum display. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the analyzer visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual LV analyzer elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the LV analyzer block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualLVScopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualLVScopeBlock.html # Class LibVisualLVScopeBlock # Class LibVisualLVScopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual LV Scope audio visualizer block that creates scope-style waveform display synchronized to audio. ```csharp public class LibVisualLVScopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual LV Scope visualizer creates scope-style waveform displays: - Traditional oscilloscope-style waveform visualization - Real-time audio waveform representation - Classic scope interface with time-domain signal display - Professional-style waveform analysis This visualization provides a precise and technical representation of audio waveform data. ## Constructors ### LibVisualLVScopeBlock() Initializes a new instance of the class. ```csharp public LibVisualLVScopeBlock() ``` #### Remarks Creates a libvisual LV scope block with default settings. The block accepts audio input and produces video output showing the scope visualization with waveform display. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the scope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual LV scope elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the LV scope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class LibVisualOinksieBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.LibVisualOinksieBlock.html # Class LibVisualOinksieBlock # Class LibVisualOinksieBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll LibVisual Oinksie audio visualizer block that creates Oinksie-style visualization patterns synchronized to audio. ```csharp public class LibVisualOinksieBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The LibVisual Oinksie visualizer creates playful and dynamic patterns: - Whimsical and fun visual effects with bright colors - Bouncing and particle-based animations - Playful movements synchronized to musical rhythm - Creative and lighthearted visual displays This visualization provides a fun and energetic representation of audio signals. ## Constructors ### LibVisualOinksieBlock() Initializes a new instance of the class. ```csharp public LibVisualOinksieBlock() ``` #### Remarks Creates a libvisual oinksie block with default settings. The block accepts audio input and produces video output showing the oinksie visualization with playful patterns. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the oinksie visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer libvisual oinksie elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the oinksie block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class SpacescopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.SpacescopeBlock.html # Class SpacescopeBlock # Class SpacescopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll Spacescope audio visualizer block that creates a stereo spatial visualization of audio. ```csharp public class SpacescopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The Spacescope visualizer displays audio as a two-dimensional plot where: - X-axis represents the left channel - Y-axis represents the right channel - The resulting pattern shows the stereo field and phase relationships This visualization is particularly useful for analyzing stereo imaging, phase issues, and mono compatibility. ## Constructors ### SpacescopeBlock(SpacescopeSettings) Initializes a new instance of the class. ```csharp public SpacescopeBlock(SpacescopeSettings settings) ``` #### Parameters Parameters: - settings (SpacescopeSettings): The settings to configure the spacescope visualization appearance and behavior. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the settings that configure the spacescope visualization appearance and behavior. ```csharp public SpacescopeSettings Settings { get; set; } ``` #### Property Value Parameters: - (SpacescopeSettings): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the spacescope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer elements, configures the visualization settings, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the spacescope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class SpectrascopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.SpectrascopeBlock.html # Class SpectrascopeBlock # Class SpectrascopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll Spectrascope audio visualizer block that creates a frequency spectrum visualization of audio. ```csharp public class SpectrascopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The Spectrascope visualizer displays the frequency spectrum of audio signals in real-time. It performs Fast Fourier Transform (FFT) analysis on the incoming audio to show: - Frequency distribution from low to high frequencies along the horizontal axis - Amplitude/intensity of each frequency band as vertical lines or bars - Real-time updates showing how the frequency content changes over time This visualization is useful for audio analysis, equalization monitoring, and identifying frequency characteristics. ## Constructors ### SpectrascopeBlock() Initializes a new instance of the class. ```csharp public SpectrascopeBlock() ``` #### Remarks Creates a spectrascope block with default settings. The block accepts audio input and produces video output showing the frequency spectrum visualization. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the spectrascope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer FFT analysis elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the spectrascope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class SynaescopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.SynaescopeBlock.html # Class SynaescopeBlock # Class SynaescopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll Synaescope audio visualizer block that creates a synesthetic visualization of audio. ```csharp public class SynaescopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The Synaescope visualizer creates a unique visual representation of audio that combines multiple aspects: - Frequency analysis combined with color mapping (synesthesia effect) - Dynamic patterns that respond to both amplitude and frequency content - Psychedelic-style visualization that creates flowing, organic patterns - Real-time response to audio characteristics including rhythm and timbre This visualization provides an artistic and immersive representation of audio signals. ## Constructors ### SynaescopeBlock() Initializes a new instance of the class. ```csharp public SynaescopeBlock() ``` #### Remarks Creates a synaescope block with default settings. The block accepts audio input and produces video output showing the synesthetic visualization with dynamic colors and patterns. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the synaescope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer synesthetic visualization elements, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the synaescope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Class WavescopeBlock Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.WavescopeBlock.html # Class WavescopeBlock # Class WavescopeBlock **Namespace**: VisioForge.Core.MediaBlocks.AudioVisualizers **Assembly**: VisioForge.Core.dll Wavescope audio visualizer block that creates an oscilloscope-style waveform visualization of audio. ```csharp public class WavescopeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks The Wavescope visualizer displays the audio waveform in real-time, similar to an oscilloscope: - Shows the amplitude of the audio signal over time - Displays waveform shape that represents the actual audio samples - Can show both channels of stereo audio either combined or separately - Useful for monitoring audio levels, clipping detection, and waveform analysis This is the most basic and direct visualization of audio signals. ## Constructors ### WavescopeBlock(WavescopeSettings) Initializes a new instance of the class. ```csharp public WavescopeBlock(WavescopeSettings settings) ``` #### Parameters Parameters: - settings (WavescopeSettings): The settings to configure the wavescope visualization appearance and behavior. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for video data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the settings that configure the wavescope visualization appearance and behavior. ```csharp public WavescopeSettings Settings { get; set; } ``` #### Property Value Parameters: - (WavescopeSettings): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the wavescope visualization block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if an error occurred. #### Remarks This method creates the underlying GStreamer waveform visualization elements, configures the visualization settings, and establishes the input/output pads for audio/video data flow. ### CleanUp() Cleans up and releases all resources used by the wavescope block. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer elements and resets the build state. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer base element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The underlying instance. ### GetElement() Gets the raw GStreamer element for advanced manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer instance. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline that will contain this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.AudioVisualizers Link: api/VisioForge.Core.MediaBlocks.AudioVisualizers.html # Namespace VisioForge.Core.MediaBlocks.AudioVisualizers # Namespace VisioForge.Core.MediaBlocks.AudioVisualizers ### Classes Parameters: - (): LibVisual Bumpscope audio visualizer block that creates bump scope visualization patterns synchronized to audio. - (): LibVisual Corona audio visualizer block that creates sun-like corona effects synchronized to audio. - (): LibVisual Infinite audio visualizer block that creates flowing infinite patterns synchronized to audio. - (): LibVisual Jakdaw audio visualizer block that creates Jakdaw-style visualization patterns synchronized to audio. - (): LibVisual Jess audio visualizer block that creates Jess-style visualization patterns synchronized to audio. - (): LibVisual LV Analyzer audio visualizer block that creates analyzer-style frequency display synchronized to audio. - (): LibVisual LV Scope audio visualizer block that creates scope-style waveform display synchronized to audio. - (): LibVisual Oinksie audio visualizer block that creates Oinksie-style visualization patterns synchronized to audio. - (): Spacescope audio visualizer block that creates a stereo spatial visualization of audio. - (): Spectrascope audio visualizer block that creates a frequency spectrum visualization of audio. - (): Synaescope audio visualizer block that creates a synesthetic visualization of audio. - (): Wavescope audio visualizer block that creates an oscilloscope-style waveform visualization of audio. --- # Class AWSS3SinkBlock Link: api/VisioForge.Core.MediaBlocks.AWS.AWSS3SinkBlock.html # Class AWSS3SinkBlock # Class AWSS3SinkBlock **Namespace**: VisioForge.Core.MediaBlocks.AWS **Assembly**: VisioForge.Core.dll AWS S3 sink block for direct media streaming to Amazon S3 cloud storage. This block enables real-time upload of media data to AWS S3 buckets, supporting live streaming, recording, and archival workflows. Features include multipart uploads for large files, automatic retry on network failures, configurable buffer sizes, and support for various S3 storage classes. Essential for cloud-based media workflows, content distribution, backup solutions, and scalable media storage architectures. Requires AWS credentials and appropriate S3 bucket permissions. Implements the . Implements the . Implements the . ```csharp public class AWSS3SinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AWSS3SinkBlock(AWSS3SinkSettings) Initializes a new instance of the class with specified AWS S3 configuration. ```csharp public AWSS3SinkBlock(AWSS3SinkSettings settings) ``` #### Parameters Parameters: - settings (AWSS3SinkSettings): The AWS S3 sink configuration settings including bucket and credentials. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the AWS S3 sink settings. Contains S3 bucket configuration, credentials, upload parameters, and storage class options. ```csharp public AWSS3SinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (AWSS3SinkSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the AWS S3 sink and its associated elements. This method creates the sink with the specified S3 configuration, establishes the input pad, and prepares the block for cloud upload operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this AWS S3 sink block. This method disposes of the S3 sink element and resets the build state. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type. This allows the AWS S3 sink to accept multiple media streams (video, audio, etc.) for multiplexed upload to cloud storage. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media this input pad will accept (Video, Audio, Auto, etc.). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to be connected to an upstream media source or processing block. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the AWS S3 sink element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the S3 sink. ### GetElement() Gets the underlying GStreamer element that performs the S3 upload operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the AWS S3 sink. ### GetFilenameOrURL() Gets the S3 URI for the upload destination. Returns the complete S3 path including bucket and object key. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The S3 URI in the format s3://bucket/path/to/object. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the S3 URI for the upload destination. Updates the target location for media uploads. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The S3 URI in the format s3://bucket/path/to/object. ### Update() Updates the AWS S3 sink settings during runtime. This method allows dynamic reconfiguration of S3 upload parameters without stopping the pipeline. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this AWS S3 sink block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.AWS Link: api/VisioForge.Core.MediaBlocks.AWS.html # Namespace VisioForge.Core.MediaBlocks.AWS # Namespace VisioForge.Core.MediaBlocks.AWS ### Classes Parameters: - (): AWS S3 sink block for direct media streaming to Amazon S3 cloud storage. This block enables real-time upload of media data to AWS S3 buckets, supporting live streaming, recording, and archival workflows. Features include multipart uploads for large files, automatic retry on network failures, configurable buffer sizes, and support for various S3 storage classes. Essential for cloud-based media workflows, content distribution, backup solutions, and scalable media storage architectures. Requires AWS credentials and appropriate S3 bucket permissions. Implements the . Implements the . Implements the . --- # Class BlockPipelineContext Link: api/VisioForge.Core.MediaBlocks.BlockPipelineContext.html # Class BlockPipelineContext # Class BlockPipelineContext **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Shared context object that contains pipeline-wide resources, state, and configuration for MediaBlocks operations. This context is passed to all blocks in a pipeline to provide access to the underlying GStreamer pipeline, event handling, timing information, and cross-block communication. It serves as the central coordination point for pipeline lifecycle management and resource sharing. ```csharp public class BlockPipelineContext ``` #### Inheritance #### Inherited Members ## Fields ### IsClosed Flag indicating whether the pipeline context has been closed and is no longer active. Used to prevent operations on disposed or terminated pipeline contexts. ```csharp public bool IsClosed ``` #### Field Value Parameters: - (bool): ### MainThread Reference to the main application thread for ensuring thread-safe operations and UI updates. Used for marshaling callbacks and events back to the appropriate thread context. ```csharp public Thread MainThread ``` #### Field Value Parameters: - (Thread): ### Pipeline The main GStreamer pipeline object that orchestrates all media processing operations. This is the core pipeline instance that contains all GStreamer elements and manages data flow. ```csharp public Pipeline Pipeline ``` #### Field Value Parameters: - (Pipeline): ### PipelineGES The GStreamer Editing Services (GES) pipeline used for non-linear video editing operations. This is only populated when the pipeline is used for video editing scenarios with timeline-based editing. ```csharp public Pipeline PipelineGES ``` #### Field Value Parameters: - (Pipeline): ### Rate The playback rate for the pipeline (1.0 = normal speed, 2.0 = double speed, 0.5 = half speed). This affects the speed of media processing and playback across all blocks in the pipeline. ```csharp public double Rate ``` #### Field Value Parameters: - (double): ### SDKLink Reference to the parent SDK object that owns this pipeline context. Provides access to higher-level SDK functionality and settings from within the pipeline. ```csharp public object SDKLink ``` #### Field Value Parameters: - (object): ### OnStop Event raised when the pipeline stops execution, either normally or due to an error. Provides information about the reason for stopping and allows for cleanup operations. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): --- # Class BridgeAudioSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeAudioSinkBlock.html # Class BridgeAudioSinkBlock # Class BridgeAudioSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Audio sink block that bridges audio data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives audio data and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for audio streams, allowing complex architectures where audio processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time audio streaming. Common use cases include splitting audio processing across multiple pipelines, implementing modular audio processing chains, and creating reusable audio processing components. Pair this sink with a BridgeAudioSourceBlock using the same channel name to establish a complete audio bridge connection. Implements the . Implements the . Implements the . ```csharp public class BridgeAudioSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeAudioSinkBlock(BridgeAudioSinkSettings) Initializes a new instance of the class with specified settings. Creates a bridge audio sink that will send audio data to the specified channel name. ```csharp public BridgeAudioSinkBlock(BridgeAudioSinkSettings settings) ``` #### Parameters Parameters: - settings (BridgeAudioSinkSettings): The bridge settings including channel name and buffer configuration. ## Properties ### Input Gets the single audio input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single audio input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Bridge sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Bridge sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge audio sink settings, including the channel name and buffer configuration. The channel name must match the corresponding BridgeAudioSourceBlock for successful connection. ```csharp public BridgeAudioSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeAudioSinkSettings): ### Type Gets the block type identifier for this bridge audio sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge audio sink within the pipeline. Creates the bridge element with the specified channel settings and establishes pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge sink was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge audio sink element. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge audio sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeAudioSink element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this bridge sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles audio bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### UpdateChannel(string) Updates the channel name for this bridge sink dynamically. This allows changing the bridge destination without rebuilding the pipeline. The new channel must exist or be created by a corresponding source. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to bridge audio to. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge sink. ## See Also --- # Class BridgeAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeAudioSourceBlock.html # Class BridgeAudioSourceBlock # Class BridgeAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Audio source block that bridges audio data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives audio data from a named channel created by a BridgeAudioSinkBlock. It enables inter-pipeline communication for audio streams, allowing complex architectures where audio processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time audio streaming. Common use cases include receiving audio from another pipeline, implementing modular audio processing chains, and creating reusable audio processing components. Pair this source with a BridgeAudioSinkBlock using the same channel name to establish a complete audio bridge connection. Implements the . Implements the . Implements the . ```csharp public class BridgeAudioSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeAudioSourceBlock(BridgeAudioSourceSettings) Initializes a new instance of the class with specified settings. Creates a bridge audio source that will receive audio data from the specified channel name. ```csharp public BridgeAudioSourceBlock(BridgeAudioSourceSettings settings) ``` #### Parameters Parameters: - settings (BridgeAudioSourceSettings): The bridge settings including channel name and buffer configuration. ## Properties ### Input Gets the input pad. Bridge sources do not have inputs as they generate data from a channel. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. Bridge sources have no inputs as they generate data from a channel. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single audio output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single audio output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge audio source settings, including the channel name and buffer configuration. The channel name must match the corresponding BridgeAudioSinkBlock for successful connection. ```csharp public BridgeAudioSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeAudioSourceSettings): ### Type Gets the block type identifier for this bridge audio source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge audio source within the pipeline. Creates the bridge element with the specified channel settings, opens the channel connection, and establishes pad connections. The source will wait for data from the corresponding sink. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge source was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge audio source element. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge audio source. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeAudioSource element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this bridge source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles audio bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### RemoveElementsFromPipeline() Removes all internal elements from the pipeline. This method is typically called during cleanup or when reconfiguring the pipeline. It ensures proper disconnection from the bridge channel. ```csharp public override void RemoveElementsFromPipeline() ``` ### UpdateChannel(string) Updates the channel name for this bridge source dynamically. This allows changing the bridge source without rebuilding the pipeline. The new channel must have a corresponding sink providing data. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to receive audio from. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge source. ## See Also --- # Class BridgeBufferSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeBufferSinkBlock.html # Class BridgeBufferSinkBlock # Class BridgeBufferSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Buffer sink block that bridges raw buffer data between different pipelines using a pair-based communication system. This block acts as an endpoint that receives buffer data and makes it available to a corresponding BridgeBufferSourceBlock through a unique pair identifier. Unlike channel-based bridges, this uses direct buffer passing for lower latency and supports any media type including video, audio, or custom data. The bridge maintains a cache of sink/source pairs for efficient lookup and connection. Common use cases include zero-copy data transfer between pipelines, implementing custom processing chains with raw buffers, and creating high-performance media routing systems. The video information parameter helps optimize buffer handling for video streams but the block can handle any buffer type. Implements the . Implements the . ```csharp public class BridgeBufferSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeBufferSinkBlock(string, VideoFrameInfoX) Initializes a new instance of the class with specified pair ID and optional video information. Creates a bridge buffer sink that will send buffer data to the source with matching pair ID. The sink is automatically registered in the global bridge cache for discovery by sources. ```csharp public BridgeBufferSinkBlock(string pairID, VideoFrameInfoX videoInfo) ``` #### Parameters Parameters: - pairID (string): The unique identifier that pairs this sink with its corresponding source. - videoInfo (VideoFrameInfoX): Optional video frame information for optimizing video buffer handling. Can be null for non-video data. ## Properties ### Input Gets the single input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single input that accepts any media type. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Bridge sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Bridge sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pair identifier that links this sink to its corresponding source. Both sink and source must use the same pair ID for successful connection. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this bridge buffer sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge buffer sink within the pipeline. Creates the bridge element with the specified pair ID, registers it for discovery, and establishes pad connections. The sink will buffer data until a matching source connects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge sink was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the bridge buffer sink. Note: The actual element disposal is handled in the Dispose method to ensure proper removal from the bridge cache before releasing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge buffer sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeBufferSink element that manages the buffer passing. ### GetElement() Gets the underlying GStreamer element for this bridge sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles buffer bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge sink. ## See Also --- # Class BridgeBufferSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeBufferSourceBlock.html # Class BridgeBufferSourceBlock # Class BridgeBufferSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Buffer source block that bridges raw buffer data from other pipelines using a pair-based communication system. This block acts as a source that receives buffer data from a BridgeBufferSinkBlock with a matching pair identifier. Unlike channel-based bridges, this uses direct buffer passing for lower latency and supports any media type including video, audio, or custom data. The bridge maintains a cache of sink/source pairs for efficient lookup and connection. Common use cases include zero-copy data transfer between pipelines, implementing custom processing chains with raw buffers, and creating high-performance media routing systems. The source automatically discovers its corresponding sink through the global bridge cache and establishes the connection during build time. Implements the . Implements the . Implements the . ```csharp public class BridgeBufferSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeBufferSourceBlock(string) Initializes a new instance of the class with specified pair ID. Creates a bridge buffer source that will receive buffer data from the sink with matching pair ID. The source is automatically registered in the global bridge cache for discovery by sinks. ```csharp public BridgeBufferSourceBlock(string pairID) ``` #### Parameters Parameters: - pairID (string): The unique identifier that pairs this source with its corresponding sink. ## Properties ### Input Gets the input pad. Bridge sources do not have inputs as they generate data from a paired sink. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. Bridge sources have no inputs as they generate data from a paired sink. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single output that provides any media type. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pair identifier that links this source to its corresponding sink. Both sink and source must use the same pair ID for successful connection. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this bridge buffer source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge buffer source within the pipeline. Discovers the corresponding sink through the bridge cache, creates the bridge element, and establishes pad connections. If no sink is found, creates a placeholder that will connect when the sink becomes available. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge source was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the bridge buffer source. Note: The actual element disposal is handled in the Dispose method to ensure proper removal from the bridge cache before releasing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge buffer source. Note: This implementation returns null as the buffer source uses a different architecture. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for buffer sources. ### GetElement() Gets the underlying GStreamer element for this bridge source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles buffer bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge source. ## See Also --- # Class BridgeConfiguration Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeConfiguration.html # Class BridgeConfiguration # Class BridgeConfiguration **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Configuration for creating bridge instances. ```csharp public class BridgeConfiguration ``` #### Inheritance #### Inherited Members ## Properties ### AudioInfo Gets or sets audio format information for audio bridges. Optional for audio bridge configuration. ```csharp public AudioInfoX AudioInfo { get; set; } ``` #### Property Value Parameters: - (AudioInfoX): ### BridgeType Gets or sets the type of bridge to create. ```csharp public BridgeType BridgeType { get; set; } ``` #### Property Value Parameters: - (BridgeType): ### ChannelName Gets or sets the channel name for the bridge connection. If not specified, the Identifier will be used as the channel name. ```csharp public string ChannelName { get; set; } ``` #### Property Value Parameters: - (string): ### CustomSettings Gets or sets additional settings specific to certain bridge types. ```csharp public object CustomSettings { get; set; } ``` #### Property Value Parameters: - (object): ### CustomSyncFlag Gets or sets custom synchronization flag for Bridge type. ```csharp public bool CustomSyncFlag { get; set; } ``` #### Property Value Parameters: - (bool): ### Identifier Gets or sets the identifier for the bridge connection. ```csharp public Guid Identifier { get; set; } ``` #### Property Value Parameters: - (Guid): ### IsSink Gets or sets a value indicating whether to create a sink (true) or source (false). ```csharp public bool IsSink { get; set; } ``` #### Property Value Parameters: - (bool): ### MediaType Gets or sets the media type for the bridge. ```csharp public MediaBlockPadMediaType MediaType { get; set; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): ### VideoInfo Gets or sets video format information for video bridges. Required for some bridge types when MediaType is Video. ```csharp public VideoFrameInfoX VideoInfo { get; set; } ``` #### Property Value Parameters: - (VideoFrameInfoX): ## Methods ### Create(BridgeType, MediaBlockPadMediaType, bool, Guid) Creates a configuration for a specific bridge scenario. ```csharp public static BridgeConfiguration Create(BridgeType bridgeType, MediaBlockPadMediaType mediaType, bool isSink, Guid identifier) ``` #### Parameters Parameters: - bridgeType (BridgeType): The type of bridge. - mediaType (MediaBlockPadMediaType): The media type. - isSink (bool): Whether this is a sink or source. - identifier (Guid): The connection identifier. #### Returns Parameters: - (BridgeConfiguration): A new BridgeConfiguration instance. ### CreateAudio(BridgeType, bool, AudioInfoX) Creates a configuration for an audio bridge. ```csharp public static BridgeConfiguration CreateAudio(BridgeType bridgeType, bool isSink, AudioInfoX audioInfo = null) ``` #### Parameters Parameters: - bridgeType (BridgeType): The type of bridge. - isSink (bool): Whether to create a sink or source. - audioInfo (AudioInfoX): Optional audio format information. #### Returns Parameters: - (BridgeConfiguration): A configured BridgeConfiguration instance. ### CreateDefault() Creates a default configuration for a video bridge sink with a new GUID. ```csharp public static BridgeConfiguration CreateDefault() ``` #### Returns Parameters: - (BridgeConfiguration): A new BridgeConfiguration instance. ### CreateVideo(BridgeType, bool, VideoFrameInfoX) Creates a configuration for a video bridge. ```csharp public static BridgeConfiguration CreateVideo(BridgeType bridgeType, bool isSink, VideoFrameInfoX videoInfo = null) ``` #### Parameters Parameters: - bridgeType (BridgeType): The type of bridge. - isSink (bool): Whether to create a sink or source. - videoInfo (VideoFrameInfoX): Optional video format information. #### Returns Parameters: - (BridgeConfiguration): A configured BridgeConfiguration instance. ### CreateWithNewId(BridgeType, MediaBlockPadMediaType, bool) Creates a configuration for a specific bridge scenario with a new GUID. ```csharp public static BridgeConfiguration CreateWithNewId(BridgeType bridgeType, MediaBlockPadMediaType mediaType, bool isSink) ``` #### Parameters Parameters: - bridgeType (BridgeType): The type of bridge. - mediaType (MediaBlockPadMediaType): The media type. - isSink (bool): Whether this is a sink or source. #### Returns Parameters: - (BridgeConfiguration): A new BridgeConfiguration instance. ### GetEffectiveChannelName() Gets the effective channel name for the bridge. Returns ChannelName if set, otherwise returns Identifier as string. ```csharp public string GetEffectiveChannelName() ``` #### Returns Parameters: - (string): The channel name to use for the bridge. --- # Class BridgeFactory Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeFactory.html # Class BridgeFactory # Class BridgeFactory **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Factory class for creating bridge instances based on configuration. ```csharp public static class BridgeFactory ``` #### Inheritance #### Inherited Members ## Methods ### CreateBridgePair(BridgeConfiguration) Creates a bridge pair (sink and source) with the same configuration. ```csharp public static (IBridgeSink sink, IBridgeSource source) CreateBridgePair(BridgeConfiguration config) ``` #### Parameters Parameters: - config (BridgeConfiguration): The base configuration. #### Returns Parameters: - (( IBridgeSink sink , IBridgeSource source )): A tuple containing the sink and source bridges. ### CreateBridgeSink(BridgeConfiguration) Creates a bridge sink instance based on the provided configuration. ```csharp public static IBridgeSink CreateBridgeSink(BridgeConfiguration config) ``` #### Parameters Parameters: - config (BridgeConfiguration): The bridge configuration. #### Returns Parameters: - (IBridgeSink): An IBridgeSink implementation. #### Exceptions Parameters: - (ArgumentNullException): Thrown when config is null. - (NotSupportedException): Thrown when the bridge type or media type combination is not supported. ### CreateBridgeSource(BridgeConfiguration) Creates a bridge source instance based on the provided configuration. ```csharp public static IBridgeSource CreateBridgeSource(BridgeConfiguration config) ``` #### Parameters Parameters: - config (BridgeConfiguration): The bridge configuration. #### Returns Parameters: - (IBridgeSource): An IBridgeSource implementation. #### Exceptions Parameters: - (ArgumentNullException): Thrown when config is null. - (NotSupportedException): Thrown when the bridge type or media type combination is not supported. ### IsBridgeTypeAvailable(BridgeType, MediaBlockPadMediaType) Checks if a specific bridge type is available on the current platform. ```csharp public static bool IsBridgeTypeAvailable(BridgeType bridgeType, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - bridgeType (BridgeType): The bridge type to check. - mediaType (MediaBlockPadMediaType): The media type to check. #### Returns Parameters: - (bool): True if available, false otherwise. --- # Class BridgeSubtitleSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeSubtitleSinkBlock.html # Class BridgeSubtitleSinkBlock # Class BridgeSubtitleSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Subtitle sink block that bridges subtitle data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives subtitle data (text, SSA/ASS, WebVTT, or other formats) and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for subtitle streams, allowing complex architectures where subtitle processing is distributed across multiple pipelines. The bridge supports various subtitle formats and maintains timing synchronization. Common use cases include subtitle extraction and routing, implementing subtitle processing chains, overlaying subtitles from different sources, and creating subtitle broadcasting systems. Pair this sink with a BridgeSubtitleSourceBlock using the same channel name to establish a complete subtitle bridge. Implements the . Implements the . Implements the . ```csharp public class BridgeSubtitleSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeSubtitleSinkBlock(BridgeSubtitleSinkSettings) Initializes a new instance of the class with specified settings. Creates a bridge subtitle sink that will send subtitle data to the specified channel name. ```csharp public BridgeSubtitleSinkBlock(BridgeSubtitleSinkSettings settings) ``` #### Parameters Parameters: - settings (BridgeSubtitleSinkSettings): The bridge settings including channel name and subtitle format configuration. ## Properties ### Input Gets the single subtitle input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single subtitle input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Bridge sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Bridge sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge subtitle sink settings, including the channel name and subtitle format configuration. The channel name must match the corresponding BridgeSubtitleSourceBlock for successful connection. ```csharp public BridgeSubtitleSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeSubtitleSinkSettings): ### Type Gets the block type identifier for this bridge subtitle sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge subtitle sink within the pipeline. Creates the bridge element with the specified channel settings and establishes pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge sink was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge subtitle sink element. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge subtitle sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeSubtitleSink element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this bridge sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles subtitle bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### UpdateChannel(string) Updates the channel name for this bridge sink dynamically. This allows changing the bridge destination without rebuilding the pipeline. The new channel must exist or be created by a corresponding source. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to bridge subtitles to. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge sink. ## See Also --- # Class BridgeSubtitleSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeSubtitleSourceBlock.html # Class BridgeSubtitleSourceBlock # Class BridgeSubtitleSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Subtitle source block that bridges subtitle data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives subtitle data from a named channel created by a BridgeSubtitleSinkBlock. It enables inter-pipeline communication for subtitle streams, allowing complex architectures where subtitle processing is distributed across multiple pipelines. The bridge supports various subtitle formats (text, SSA/ASS, WebVTT, etc.) and maintains timing synchronization. Common use cases include receiving subtitles from another pipeline, implementing modular subtitle processing chains, combining subtitles from multiple sources, and creating subtitle distribution systems. The source includes an internal queue for buffering to ensure smooth playback. Pair this source with a BridgeSubtitleSinkBlock using the same channel name to establish a complete subtitle bridge connection. Implements the . Implements the . Implements the . ```csharp public class BridgeSubtitleSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeSubtitleSourceBlock(BridgeSubtitleSourceSettings) Initializes a new instance of the class with specified settings. Creates a bridge subtitle source that will receive subtitle data from the specified channel name. ```csharp public BridgeSubtitleSourceBlock(BridgeSubtitleSourceSettings settings) ``` #### Parameters Parameters: - settings (BridgeSubtitleSourceSettings): The bridge settings including channel name and subtitle format configuration. ## Properties ### Input Gets the input pad. Bridge sources do not have inputs as they generate data from a channel. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. Bridge sources have no inputs as they generate data from a channel. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single subtitle output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single subtitle output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge subtitle source settings, including the channel name and subtitle format configuration. The channel name must match the corresponding BridgeSubtitleSinkBlock for successful connection. ```csharp public BridgeSubtitleSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeSubtitleSourceSettings): ### Type Gets the block type identifier for this bridge subtitle source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge subtitle source within the pipeline. Creates the bridge element with the specified channel settings, opens the channel connection, establishes a queue for buffering, and sets up pad connections. The source will wait for data from the corresponding sink. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge source was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge subtitle source element and queue. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge subtitle source. Note: This implementation returns null as the subtitle source uses a different architecture. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for subtitle sources. ### GetElement() Gets the underlying GStreamer element for this bridge source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles subtitle bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### UpdateChannel(string) Updates the channel name for this bridge source dynamically. This allows changing the bridge source without rebuilding the pipeline. The new channel must have a corresponding sink providing data. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to receive subtitles from. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge source. ## See Also --- # Enum BridgeType Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeType.html # Enum BridgeType # Enum BridgeType **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Defines the types of bridges available for inter-pipeline communication. ```csharp public enum BridgeType ``` ## Fields Parameters: - Bridge (): General purpose bridge for video, audio, subtitle, or buffer data. Supports dynamic channel updates via UpdateChannel method. - Proxy (): Proxy bridge for communication within the same pipeline. Minimal overhead, best for internal routing. - InterPipe (): InterPipe bridge for communication across different pipelines in the same process. Zero-copy transfer with support for multiple listeners. - RSInter (): Rust-based inter-pipeline bridge for high-performance scenarios. Optimized for low latency and high throughput. --- # Class BridgeVideoSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeVideoSinkBlock.html # Class BridgeVideoSinkBlock # Class BridgeVideoSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Video sink block that bridges video data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives video data and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for video streams, allowing complex architectures where video processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time video streaming at high resolutions and frame rates. Common use cases include splitting video processing across multiple pipelines, implementing modular video processing chains, creating video distribution systems, and enabling multi-view applications. The sink can handle various video formats and color spaces with automatic format negotiation. Pair this sink with a BridgeVideoSourceBlock using the same channel name to establish a complete video bridge connection. Implements the . Implements the . Implements the . ```csharp public class BridgeVideoSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeVideoSinkBlock(BridgeVideoSinkSettings) Initializes a new instance of the class with specified settings. Creates a bridge video sink that will send video data to the specified channel name. ```csharp public BridgeVideoSinkBlock(BridgeVideoSinkSettings settings) ``` #### Parameters Parameters: - settings (BridgeVideoSinkSettings): The bridge settings including channel name and buffer configuration. ## Properties ### Input Gets the single video input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single video input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Bridge sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Bridge sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge video sink settings, including the channel name and buffer configuration. The channel name must match the corresponding BridgeVideoSourceBlock for successful connection. ```csharp public BridgeVideoSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeVideoSinkSettings): ### Type Gets the block type identifier for this bridge video sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge video sink within the pipeline. Creates the bridge element with the specified channel settings and establishes pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge sink was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge video sink element. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge video sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeVideoSink element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this bridge sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles video bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### UpdateChannel(string) Updates the channel name for this bridge sink dynamically. This allows changing the bridge destination without rebuilding the pipeline. The new channel must exist or be created by a corresponding source. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to bridge video to. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge sink. ## See Also --- # Class BridgeVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.BridgeVideoSourceBlock.html # Class BridgeVideoSourceBlock # Class BridgeVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Video source block that bridges video data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives video data from a named channel created by a BridgeVideoSinkBlock. It enables inter-pipeline communication for video streams, allowing complex architectures where video processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time video streaming at high resolutions and frame rates. Common use cases include receiving video from another pipeline, implementing modular video processing chains, creating multi-view applications, and building video distribution systems. The source can handle various video formats and color spaces with automatic format negotiation. Pair this source with a BridgeVideoSinkBlock using the same channel name to establish a complete video bridge connection. Implements the . Implements the . Implements the . ```csharp public class BridgeVideoSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlocksBridge ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BridgeVideoSourceBlock(BridgeVideoSourceSettings) Initializes a new instance of the class with specified settings. Creates a bridge video source that will receive video data from the specified channel name. ```csharp public BridgeVideoSourceBlock(BridgeVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (BridgeVideoSourceSettings): The bridge settings including channel name and buffer configuration. ## Properties ### Input Gets the input pad. Bridge sources do not have inputs as they generate data from a channel. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. Bridge sources have no inputs as they generate data from a channel. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single video output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single video output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the bridge video source settings, including the channel name and buffer configuration. The channel name must match the corresponding BridgeVideoSinkBlock for successful connection. ```csharp public BridgeVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (BridgeVideoSourceSettings): ### Type Gets the block type identifier for this bridge video source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the bridge video source within the pipeline. Creates the bridge element with the specified channel settings, opens the channel connection, and establishes pad connections. The source will wait for data from the corresponding sink. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bridge source was successfully built; false if an error occurred. ### CleanUp() Releases all internal resources and disposes of the bridge video source element. This disconnects from the bridge channel and frees associated resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the bridge video source. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BridgeVideoSource element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this bridge source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that handles video bridging. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### RemoveElementsFromPipeline() Removes all internal elements from the pipeline. This method is typically called during cleanup or when reconfiguring the pipeline. It ensures proper disconnection from the bridge channel. ```csharp public override void RemoveElementsFromPipeline() ``` ### UpdateChannel(string) Updates the channel name for this bridge source dynamically. This allows changing the bridge source without rebuilding the pipeline. The new channel must have a corresponding sink providing data. ```csharp public bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to receive video from. #### Returns Parameters: - (bool): true if the channel was successfully updated; false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this bridge source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this bridge source. ## See Also --- # Interface IBridge Link: api/VisioForge.Core.MediaBlocks.Bridge.IBridge.html # Interface IBridge # Interface IBridge **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Base interface for all bridge implementations that enable data transfer between pipelines. ```csharp public interface IBridge : IDisposable ``` #### Implements ## Properties ### BridgeType Gets the type of this bridge. ```csharp BridgeType BridgeType { get; } ``` #### Property Value Parameters: - (BridgeType): ### ChannelName Gets the channel name used for the bridge connection. ```csharp string ChannelName { get; } ``` #### Property Value Parameters: - (string): ### Identifier Gets the unique identifier for this bridge connection. ```csharp Guid Identifier { get; } ``` #### Property Value Parameters: - (Guid): ### MediaType Gets the media type supported by this bridge. ```csharp MediaBlockPadMediaType MediaType { get; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): ## Methods ### GetMediaBlock() Gets the underlying MediaBlock instance. ```csharp MediaBlock GetMediaBlock() ``` #### Returns Parameters: - (MediaBlock): ### IsAvailable() Checks if this bridge type is available on the current platform. ```csharp bool IsAvailable() ``` #### Returns Parameters: - (bool): True if available, false otherwise. ### UpdateChannelName(string) Updates the channel name dynamically. ```csharp bool UpdateChannelName(string channelName) ``` #### Parameters Parameters: - channelName (string): The new channel name. #### Returns Parameters: - (bool): True if the update was successful, false otherwise. ### UpdateIdentifier(Guid) Updates the connection identifier dynamically. ```csharp bool UpdateIdentifier(Guid identifier) ``` #### Parameters Parameters: - identifier (Guid): The new identifier. #### Returns Parameters: - (bool): True if the update was successful, false otherwise. --- # Interface IBridgeSink Link: api/VisioForge.Core.MediaBlocks.Bridge.IBridgeSink.html # Interface IBridgeSink # Interface IBridgeSink **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Interface for bridge sink implementations that send data to a bridge connection. ```csharp public interface IBridgeSink : IBridge, IDisposable ``` #### Implements ## Properties ### ConnectedSourceCount Gets the number of connected source blocks listening to this sink. ```csharp int ConnectedSourceCount { get; } ``` #### Property Value Parameters: - (int): ### HasConnectedSources Gets a value indicating whether the sink is currently connected to any sources. ```csharp bool HasConnectedSources { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### Register() Registers this sink in the global bridge cache if supported by the bridge type. ```csharp bool Register() ``` #### Returns Parameters: - (bool): True if registration was successful, false otherwise. ### Unregister() Unregisters this sink from the global bridge cache if previously registered. ```csharp bool Unregister() ``` #### Returns Parameters: - (bool): True if unregistration was successful, false otherwise. --- # Interface IBridgeSource Link: api/VisioForge.Core.MediaBlocks.Bridge.IBridgeSource.html # Interface IBridgeSource # Interface IBridgeSource **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Interface for bridge source implementations that receive data from a bridge connection. ```csharp public interface IBridgeSource : IBridge, IDisposable ``` #### Implements ## Properties ### IsConnected Gets a value indicating whether the source is currently connected to a sink. ```csharp bool IsConnected { get; } ``` #### Property Value Parameters: - (bool): ### IsReceivingData Gets a value indicating whether the source is currently receiving data. ```csharp bool IsReceivingData { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### Connect() Attempts to connect to a sink with the current identifier. ```csharp bool Connect() ``` #### Returns Parameters: - (bool): True if connection was successful, false otherwise. ### Disconnect() Disconnects from the current sink if connected. ```csharp bool Disconnect() ``` #### Returns Parameters: - (bool): True if disconnection was successful, false otherwise. ### GetPairedSink() Gets the paired sink if available and accessible. ```csharp IBridgeSink GetPairedSink() ``` #### Returns Parameters: - (IBridgeSink): The paired sink or null if not available. --- # Interface IMediaBlocksBridge Link: api/VisioForge.Core.MediaBlocks.Bridge.IMediaBlocksBridge.html # Interface IMediaBlocksBridge # Interface IMediaBlocksBridge **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Interface for media blocks that support bridge functionality with dynamic channel updates. This interface is implemented by bridge source and sink blocks that use channel-based communication, allowing them to change their channel assignment at runtime without rebuilding the pipeline. ```csharp public interface IMediaBlocksBridge ``` ## Methods ### UpdateChannel(string) Updates the channel name for this bridge block dynamically. This allows changing the bridge connection without rebuilding the pipeline. For sink blocks, this changes where data is sent. For source blocks, this changes where data is received from. The channel must exist or be created by the corresponding sink/source pair. ```csharp bool UpdateChannel(string channel) ``` #### Parameters Parameters: - channel (string): The new channel name to use for bridging data. #### Returns Parameters: - (bool): true if the channel was successfully updated; false if the update failed or the block doesn't support dynamic channel changes. --- # Class InterPipeSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.InterPipeSinkBlock.html # Class InterPipeSinkBlock # Class InterPipeSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll InterPipe sink block that enables high-performance inter-pipeline communication using the GStreamer interpipe plugin. This block acts as an endpoint that publishes data to a named pipe, making it available to InterPipeSourceBlock instances with the same pipe name. InterPipe provides zero-copy data transfer between pipelines running in the same process, with support for multiple listeners, dynamic connection/disconnection, and automatic format negotiation. The sink maintains compatibility with standard GStreamer elements while providing enhanced performance for local pipeline communication. Common use cases include splitting processing across multiple pipelines for modularity, implementing one-to-many data distribution, creating reusable processing components, and building complex media processing graphs. The video information parameter helps optimize buffer handling for video streams but the block can handle any media type. Implements the . Implements the . ```csharp public class InterPipeSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### InterPipeSinkBlock(string, VideoFrameInfoX) Initializes a new instance of the class with specified pipe ID and optional video information. Creates an InterPipe sink that will publish data to the named pipe for consumption by InterPipeSourceBlock instances. ```csharp public InterPipeSinkBlock(string pairID, VideoFrameInfoX videoInfo) ``` #### Parameters Parameters: - pairID (string): The unique identifier for the named pipe that sources will connect to. - videoInfo (VideoFrameInfoX): Optional video frame information for optimizing video buffer handling. Can be null for non-video data. ### InterPipeSinkBlock(string, AudioInfoX) Initializes a new instance of the class with specified pipe ID and audio information. Creates an InterPipe sink that will publish audio data to the named pipe for consumption by InterPipeSourceBlock instances. ```csharp public InterPipeSinkBlock(string pairID, AudioInfoX audioInfo) ``` #### Parameters Parameters: - pairID (string): The unique identifier for the named pipe that sources will connect to. - audioInfo (AudioInfoX): Audio information for optimizing audio buffer handling. ### InterPipeSinkBlock(string, MediaBlockPadMediaType) Initializes a new instance of the class with specified pipe ID and media type. Creates an InterPipe sink that will publish data to the named pipe for consumption by InterPipeSourceBlock instances. ```csharp public InterPipeSinkBlock(string pairID, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - pairID (string): The unique identifier for the named pipe that sources will connect to. - mediaType (MediaBlockPadMediaType): The media type for this sink (Video or Audio). ## Properties ### Input Gets the single input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single input that accepts any media type. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. InterPipe sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. InterPipe sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pipe identifier that links this sink to its corresponding sources. All InterPipeSourceBlock instances with the same PairID will receive data from this sink. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this InterPipe sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the InterPipe sink within the pipeline. Creates the interpipesink element with the specified pipe name and establishes pad connections. The sink will immediately begin accepting data for distribution to connected sources. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the InterPipe sink was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the InterPipe sink. Note: The actual element disposal is commented out, likely to maintain the named pipe for other pipelines that may still be connected. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the InterPipe sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The InterPipeSink element that manages the named pipe. ### GetElement() Gets the underlying GStreamer element for this InterPipe sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer interpipesink element. ### GetNumListeners() Gets the number of InterPipeSourceBlock elements currently listening to this sink. ```csharp public int GetNumListeners() ``` #### Returns Parameters: - (int): The number of listeners connected to this sink. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this InterPipe sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this InterPipe sink. ## See Also --- # Class InterPipeSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.InterPipeSourceBlock.html # Class InterPipeSourceBlock # Class InterPipeSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll InterPipe source block that enables high-performance inter-pipeline communication using the GStreamer interpipe plugin. This block acts as a source that listens to a named pipe created by an InterPipeSinkBlock with the same pipe name. InterPipe provides zero-copy data transfer between pipelines running in the same process, with support for dynamic connection/disconnection, automatic format negotiation, and seamless pipeline synchronization. Multiple source blocks can connect to the same sink, enabling one-to-many data distribution patterns. The source maintains compatibility with standard GStreamer elements while providing enhanced performance for local pipeline communication. Common use cases include receiving data from modular processing pipelines, implementing multi-view applications, creating reusable processing components, and building complex media processing graphs with dynamic routing. Implements the . Implements the . Implements the . ```csharp public class InterPipeSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### InterPipeSourceBlock(string, MediaBlockPadMediaType) Initializes a new instance of the class with specified pipe ID. Creates an InterPipe source that will listen for data from the InterPipeSinkBlock with the same pipe name. ```csharp public InterPipeSourceBlock(string pairID, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - pairID (string): The unique identifier for the named pipe to connect to. - mediaType (MediaBlockPadMediaType): The media type of the output pad, which determines the format of data received from the InterPipe sink. ## Properties ### Input Gets the input pad. InterPipe sources do not have inputs as they generate data from a named pipe. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. InterPipe sources have no inputs as they generate data from a named pipe. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single output that provides any media type. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pipe identifier that links this source to its corresponding sink. The source will receive data from the InterPipeSinkBlock with the same PairID. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this InterPipe source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the InterPipe source within the pipeline. Creates the interpipesrc element with the specified pipe name, opens the connection, and establishes pad connections. The source will wait for an InterPipeSinkBlock with the same PairID to provide data. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the InterPipe source was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the InterPipe source. Note: The actual element disposal is commented out, likely to maintain flexibility for dynamic pipeline reconfiguration. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the InterPipe source. Note: This implementation returns null as the InterPipe source uses a different architecture. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for InterPipe sources. ### GetElement() Gets the underlying GStreamer element for this InterPipe source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer interpipesrc element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SwitchListenTo(string) Dynamically switches this source to listen to a different InterPipeSinkBlock. This allows runtime reconfiguration of pipeline connections without rebuilding. ```csharp public void SwitchListenTo(string newPairID) ``` #### Parameters Parameters: - newPairID (string): The PairID of the InterPipeSinkBlock to start listening to. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this InterPipe source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this InterPipe source. ## See Also --- # Class ProxySinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.ProxySinkBlock.html # Class ProxySinkBlock # Class ProxySinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Proxy sink block that enables direct element-to-element communication within the same pipeline using GStreamer's proxy elements. This block acts as a sink that pairs with a ProxySourceBlock to create an internal bridge within a single pipeline, allowing dynamic pipeline reconfiguration and data routing without traditional pad connections. The proxy mechanism provides a way to decouple pipeline sections, making it easier to implement dynamic pipeline topologies, switchable processing paths, and modular pipeline designs. Unlike InterPipe which works across pipelines, proxy elements work within the same pipeline with minimal overhead. The sink automatically registers itself in a global cache for discovery by its paired source. Common use cases include implementing switchable effects chains, creating reusable processing modules within a pipeline, and building dynamic routing systems. Implements the . Implements the . ```csharp public class ProxySinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ProxySinkBlock(string) Initializes a new instance of the class with specified pair ID. Creates a proxy sink that will forward data to the ProxySourceBlock with matching pair ID. The sink is automatically registered in the global bridge cache for discovery by sources. ```csharp public ProxySinkBlock(string pairID) ``` #### Parameters Parameters: - pairID (string): The unique identifier that pairs this sink with its corresponding proxy source. ## Properties ### Input Gets the single input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single input that accepts any media type. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Proxy sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Proxy sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pair identifier that links this sink to its corresponding proxy source. Both sink and source must use the same pair ID for successful connection within the pipeline. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this proxy sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the proxy sink within the pipeline. Creates the proxysink element and establishes pad connections. The sink will be ready to forward data to its paired ProxySourceBlock once both are built. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the proxy sink was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the proxy sink. Note: The actual element disposal is handled in the Dispose method to ensure proper removal from the bridge cache before releasing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the proxy sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The ProxySink element that manages the proxy connection. ### GetElement() Gets the underlying GStreamer element for this proxy sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer proxysink element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this proxy sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this proxy sink. ## See Also --- # Class ProxySourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.ProxySourceBlock.html # Class ProxySourceBlock # Class ProxySourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll Proxy source block that enables direct element-to-element communication within the same pipeline using GStreamer's proxy elements. This block acts as a source that pairs with a ProxySinkBlock to create an internal bridge within a single pipeline, receiving data without traditional pad connections. The proxy mechanism provides a way to decouple pipeline sections, making it easier to implement dynamic pipeline topologies, switchable processing paths, and modular pipeline designs. Unlike InterPipe which works across pipelines, proxy elements work within the same pipeline with minimal overhead. The source automatically discovers its paired sink through a global cache and establishes the connection during build. Common use cases include implementing switchable effects chains, creating reusable processing modules within a pipeline, building dynamic routing systems, and enabling runtime pipeline reconfiguration without rebuilding the entire graph. Implements the . Implements the . ```csharp public class ProxySourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ProxySourceBlock(string) Initializes a new instance of the class with specified pair ID. Creates a proxy source that will receive data from the ProxySinkBlock with matching pair ID. The source is automatically registered in the global bridge cache for discovery by sinks. ```csharp public ProxySourceBlock(string pairID) ``` #### Parameters Parameters: - pairID (string): The unique identifier that pairs this source with its corresponding proxy sink. ## Properties ### Input Gets the input pad. Proxy sources do not have inputs as they generate data from a paired sink. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. Proxy sources have no inputs as they generate data from a paired sink. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single output that provides any media type. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique pair identifier that links this source to its corresponding proxy sink. Both sink and source must use the same pair ID for successful connection within the pipeline. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this proxy source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the proxy source within the pipeline. Discovers the corresponding sink through the bridge cache, creates the proxy element with the sink reference, and establishes pad connections. If the sink is found, it ensures the sink is built first to establish the proxy connection properly. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the proxy source was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the proxy source. Note: The actual element disposal is handled in the Dispose method to ensure proper removal from the bridge cache before releasing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the proxy source. Note: This implementation returns null as the proxy source uses a different architecture. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for proxy sources. ### GetElement() Gets the underlying GStreamer element for this proxy source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer proxysrc element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this proxy source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this proxy source. ## See Also --- # Class RSInterSinkBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.RSInterSinkBlock.html # Class RSInterSinkBlock # Class RSInterSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll RS (Rust) inter sink block that enables high-performance inter-pipeline communication using Rust-based GStreamer elements. This block acts as a sink that publishes data to a named channel, making it available to RSInterSourceBlock instances with the same channel name. RS inter elements provide optimized performance through Rust implementations while maintaining compatibility with standard GStreamer pipelines. The sink supports zero-copy data transfer, multiple listeners, dynamic connection/disconnection, and automatic format negotiation. Unlike standard InterPipe elements, RS inter elements may offer better performance characteristics and additional features through their Rust implementation. Common use cases include high-throughput data distribution, low-latency pipeline communication, implementing scalable media processing architectures, and building performance-critical applications. The media type parameter ensures proper type safety and format negotiation. Implements the . Implements the . Implements the . ```csharp public class RSInterSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RSInterSinkBlock(MediaBlockPadMediaType, string) Initializes a new instance of the class with specified media type and channel ID. Creates an RS inter sink that will publish data to the named channel for consumption by RSInterSourceBlock instances. The media type ensures proper format negotiation and type safety. ```csharp public RSInterSinkBlock(MediaBlockPadMediaType mediaType, string pairID) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media this sink will accept (video, audio, subtitle, or auto). - pairID (string): The unique identifier for the named channel that sources will connect to. ## Properties ### Input Gets the single input pad for this sink block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This sink has a single input with the specified media type. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. RS inter sinks do not have outputs as they are terminal blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. RS inter sinks have no outputs as they are terminal blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique channel identifier that links this sink to its corresponding sources. All RSInterSourceBlock instances with the same PairID will receive data from this sink. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this RS inter sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the RS inter sink within the pipeline. Creates the Rust-based inter sink element with the specified channel name and establishes pad connections. The sink will immediately begin accepting data for distribution to connected sources. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the RS inter sink was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the RS inter sink. Note: The actual element disposal is commented out, likely to maintain the named channel for other pipelines that may still be connected. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the RS inter sink. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The RSInterSink element that manages the named channel. ### GetElement() Gets the underlying GStreamer element for this RS inter sink. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The Rust-based GStreamer inter sink element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this RS inter sink, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this RS inter sink. ## See Also --- # Class RSInterSourceBlock Link: api/VisioForge.Core.MediaBlocks.Bridge.RSInterSourceBlock.html # Class RSInterSourceBlock # Class RSInterSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Bridge **Assembly**: VisioForge.Core.dll RS (Rust) inter source block that enables high-performance inter-pipeline communication using Rust-based GStreamer elements. This block acts as a source that listens to a named channel created by an RSInterSinkBlock with the same channel name. RS inter elements provide optimized performance through Rust implementations while maintaining compatibility with standard GStreamer pipelines. The source supports zero-copy data transfer, dynamic connection/disconnection, automatic format negotiation, and seamless pipeline synchronization. Multiple source blocks can connect to the same sink, enabling one-to-many data distribution patterns. Unlike standard InterPipe elements, RS inter elements may offer better performance characteristics and additional features through their Rust implementation. Common use cases include high-throughput data reception, low-latency pipeline communication, implementing scalable media processing architectures, and building performance-critical applications. The media type parameter ensures proper type safety and format negotiation. Implements the . Implements the . Implements the . ```csharp public class RSInterSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RSInterSourceBlock(MediaBlockPadMediaType, string) Initializes a new instance of the class with specified media type and channel ID. Creates an RS inter source that will listen for data from the RSInterSinkBlock with the same channel name. The media type ensures proper format negotiation and type safety. ```csharp public RSInterSourceBlock(MediaBlockPadMediaType mediaType, string pairID) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media this source will provide (video, audio, subtitle, or auto). - pairID (string): The unique identifier for the named channel to connect to. ## Properties ### Input Gets the input pad. RS inter sources do not have inputs as they generate data from a named channel. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. RS inter sources have no inputs as they generate data from a named channel. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single output pad for this source block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This source has a single output with the specified media type. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### PairID Gets or sets the unique channel identifier that links this source to its corresponding sink. The source will receive data from the RSInterSinkBlock with the same PairID. ```csharp public string PairID { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the block type identifier for this RS inter source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the RS inter source within the pipeline. Creates the Rust-based inter source element with the specified channel name and media type, opens the connection, and establishes pad connections. The source will wait for an RSInterSinkBlock with the same PairID to provide data. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the RS inter source was successfully built; false if an error occurred. ### CleanUp() Performs cleanup operations for the RS inter source. Note: The actual element disposal is commented out, likely to maintain flexibility for dynamic pipeline reconfiguration. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the RS inter source. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The RSInterSource element that manages the channel communication. ### GetElement() Gets the underlying GStreamer element for this RS inter source. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The Rust-based GStreamer inter source element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### RemoveElementsFromPipeline() Removes all internal elements from the pipeline. This method is typically called during cleanup or when reconfiguring the pipeline. It ensures proper disconnection from the RS inter channel. ```csharp public override void RemoveElementsFromPipeline() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this RS inter source, providing access to shared resources. This method is called internally during pipeline construction. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this RS inter source. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Bridge Link: api/VisioForge.Core.MediaBlocks.Bridge.html # Namespace VisioForge.Core.MediaBlocks.Bridge # Namespace VisioForge.Core.MediaBlocks.Bridge ### Classes Parameters: - (): Audio sink block that bridges audio data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives audio data and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for audio streams, allowing complex architectures where audio processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time audio streaming. Common use cases include splitting audio processing across multiple pipelines, implementing modular audio processing chains, and creating reusable audio processing components. Pair this sink with a BridgeAudioSourceBlock using the same channel name to establish a complete audio bridge connection. Implements the . Implements the . Implements the . - (): Audio source block that bridges audio data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives audio data from a named channel created by a BridgeAudioSinkBlock. It enables inter-pipeline communication for audio streams, allowing complex architectures where audio processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time audio streaming. Common use cases include receiving audio from another pipeline, implementing modular audio processing chains, and creating reusable audio processing components. Pair this source with a BridgeAudioSinkBlock using the same channel name to establish a complete audio bridge connection. Implements the . Implements the . Implements the . - (): Buffer sink block that bridges raw buffer data between different pipelines using a pair-based communication system. This block acts as an endpoint that receives buffer data and makes it available to a corresponding BridgeBufferSourceBlock through a unique pair identifier. Unlike channel-based bridges, this uses direct buffer passing for lower latency and supports any media type including video, audio, or custom data. The bridge maintains a cache of sink/source pairs for efficient lookup and connection. Common use cases include zero-copy data transfer between pipelines, implementing custom processing chains with raw buffers, and creating high-performance media routing systems. The video information parameter helps optimize buffer handling for video streams but the block can handle any buffer type. Implements the . Implements the . - (): Buffer source block that bridges raw buffer data from other pipelines using a pair-based communication system. This block acts as a source that receives buffer data from a BridgeBufferSinkBlock with a matching pair identifier. Unlike channel-based bridges, this uses direct buffer passing for lower latency and supports any media type including video, audio, or custom data. The bridge maintains a cache of sink/source pairs for efficient lookup and connection. Common use cases include zero-copy data transfer between pipelines, implementing custom processing chains with raw buffers, and creating high-performance media routing systems. The source automatically discovers its corresponding sink through the global bridge cache and establishes the connection during build time. Implements the . Implements the . Implements the . - (): Configuration for creating bridge instances. - (): Factory class for creating bridge instances based on configuration. - (): Subtitle sink block that bridges subtitle data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives subtitle data (text, SSA/ASS, WebVTT, or other formats) and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for subtitle streams, allowing complex architectures where subtitle processing is distributed across multiple pipelines. The bridge supports various subtitle formats and maintains timing synchronization. Common use cases include subtitle extraction and routing, implementing subtitle processing chains, overlaying subtitles from different sources, and creating subtitle broadcasting systems. Pair this sink with a BridgeSubtitleSourceBlock using the same channel name to establish a complete subtitle bridge. Implements the . Implements the . Implements the . - (): Subtitle source block that bridges subtitle data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives subtitle data from a named channel created by a BridgeSubtitleSinkBlock. It enables inter-pipeline communication for subtitle streams, allowing complex architectures where subtitle processing is distributed across multiple pipelines. The bridge supports various subtitle formats (text, SSA/ASS, WebVTT, etc.) and maintains timing synchronization. Common use cases include receiving subtitles from another pipeline, implementing modular subtitle processing chains, combining subtitles from multiple sources, and creating subtitle distribution systems. The source includes an internal queue for buffering to ensure smooth playback. Pair this source with a BridgeSubtitleSinkBlock using the same channel name to establish a complete subtitle bridge connection. Implements the . Implements the . Implements the . - (): Video sink block that bridges video data between different pipelines or applications using a channel-based communication system. This block acts as an endpoint that receives video data and makes it available to other pipelines or processes through a named channel. It enables inter-pipeline communication for video streams, allowing complex architectures where video processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time video streaming at high resolutions and frame rates. Common use cases include splitting video processing across multiple pipelines, implementing modular video processing chains, creating video distribution systems, and enabling multi-view applications. The sink can handle various video formats and color spaces with automatic format negotiation. Pair this sink with a BridgeVideoSourceBlock using the same channel name to establish a complete video bridge connection. Implements the . Implements the . Implements the . - (): Video source block that bridges video data from other pipelines or applications using a channel-based communication system. This block acts as a source that receives video data from a named channel created by a BridgeVideoSinkBlock. It enables inter-pipeline communication for video streams, allowing complex architectures where video processing is distributed across multiple pipelines. The bridge uses an efficient in-memory transport mechanism with minimal latency and supports real-time video streaming at high resolutions and frame rates. Common use cases include receiving video from another pipeline, implementing modular video processing chains, creating multi-view applications, and building video distribution systems. The source can handle various video formats and color spaces with automatic format negotiation. Pair this source with a BridgeVideoSinkBlock using the same channel name to establish a complete video bridge connection. Implements the . Implements the . Implements the . - (): InterPipe sink block that enables high-performance inter-pipeline communication using the GStreamer interpipe plugin. This block acts as an endpoint that publishes data to a named pipe, making it available to InterPipeSourceBlock instances with the same pipe name. InterPipe provides zero-copy data transfer between pipelines running in the same process, with support for multiple listeners, dynamic connection/disconnection, and automatic format negotiation. The sink maintains compatibility with standard GStreamer elements while providing enhanced performance for local pipeline communication. Common use cases include splitting processing across multiple pipelines for modularity, implementing one-to-many data distribution, creating reusable processing components, and building complex media processing graphs. The video information parameter helps optimize buffer handling for video streams but the block can handle any media type. Implements the . Implements the . - (): InterPipe source block that enables high-performance inter-pipeline communication using the GStreamer interpipe plugin. This block acts as a source that listens to a named pipe created by an InterPipeSinkBlock with the same pipe name. InterPipe provides zero-copy data transfer between pipelines running in the same process, with support for dynamic connection/disconnection, automatic format negotiation, and seamless pipeline synchronization. Multiple source blocks can connect to the same sink, enabling one-to-many data distribution patterns. The source maintains compatibility with standard GStreamer elements while providing enhanced performance for local pipeline communication. Common use cases include receiving data from modular processing pipelines, implementing multi-view applications, creating reusable processing components, and building complex media processing graphs with dynamic routing. Implements the . Implements the . Implements the . - (): Proxy sink block that enables direct element-to-element communication within the same pipeline using GStreamer's proxy elements. This block acts as a sink that pairs with a ProxySourceBlock to create an internal bridge within a single pipeline, allowing dynamic pipeline reconfiguration and data routing without traditional pad connections. The proxy mechanism provides a way to decouple pipeline sections, making it easier to implement dynamic pipeline topologies, switchable processing paths, and modular pipeline designs. Unlike InterPipe which works across pipelines, proxy elements work within the same pipeline with minimal overhead. The sink automatically registers itself in a global cache for discovery by its paired source. Common use cases include implementing switchable effects chains, creating reusable processing modules within a pipeline, and building dynamic routing systems. Implements the . Implements the . - (): Proxy source block that enables direct element-to-element communication within the same pipeline using GStreamer's proxy elements. This block acts as a source that pairs with a ProxySinkBlock to create an internal bridge within a single pipeline, receiving data without traditional pad connections. The proxy mechanism provides a way to decouple pipeline sections, making it easier to implement dynamic pipeline topologies, switchable processing paths, and modular pipeline designs. Unlike InterPipe which works across pipelines, proxy elements work within the same pipeline with minimal overhead. The source automatically discovers its paired sink through a global cache and establishes the connection during build. Common use cases include implementing switchable effects chains, creating reusable processing modules within a pipeline, building dynamic routing systems, and enabling runtime pipeline reconfiguration without rebuilding the entire graph. Implements the . Implements the . - (): RS (Rust) inter sink block that enables high-performance inter-pipeline communication using Rust-based GStreamer elements. This block acts as a sink that publishes data to a named channel, making it available to RSInterSourceBlock instances with the same channel name. RS inter elements provide optimized performance through Rust implementations while maintaining compatibility with standard GStreamer pipelines. The sink supports zero-copy data transfer, multiple listeners, dynamic connection/disconnection, and automatic format negotiation. Unlike standard InterPipe elements, RS inter elements may offer better performance characteristics and additional features through their Rust implementation. Common use cases include high-throughput data distribution, low-latency pipeline communication, implementing scalable media processing architectures, and building performance-critical applications. The media type parameter ensures proper type safety and format negotiation. Implements the . Implements the . Implements the . - (): RS (Rust) inter source block that enables high-performance inter-pipeline communication using Rust-based GStreamer elements. This block acts as a source that listens to a named channel created by an RSInterSinkBlock with the same channel name. RS inter elements provide optimized performance through Rust implementations while maintaining compatibility with standard GStreamer pipelines. The source supports zero-copy data transfer, dynamic connection/disconnection, automatic format negotiation, and seamless pipeline synchronization. Multiple source blocks can connect to the same sink, enabling one-to-many data distribution patterns. Unlike standard InterPipe elements, RS inter elements may offer better performance characteristics and additional features through their Rust implementation. Common use cases include high-throughput data reception, low-latency pipeline communication, implementing scalable media processing architectures, and building performance-critical applications. The media type parameter ensures proper type safety and format negotiation. Implements the . Implements the . Implements the . ### Interfaces Parameters: - (): Base interface for all bridge implementations that enable data transfer between pipelines. - (): Interface for bridge sink implementations that send data to a bridge connection. - (): Interface for bridge source implementations that receive data from a bridge connection. - (): Interface for media blocks that support bridge functionality with dynamic channel updates. This interface is implemented by bridge source and sink blocks that use channel-based communication, allowing them to change their channel assignment at runtime without rebuilding the pipeline. ### Enums Parameters: - (): Defines the types of bridges available for inter-pipeline communication. --- # Class DecklinkAudioSinkBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkAudioSinkBlock.html # Class DecklinkAudioSinkBlock # Class DecklinkAudioSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides audio output capabilities for Blackmagic DeckLink hardware devices. This block accepts audio streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality audio output for broadcast and professional video production workflows. Implements the . Implements the . Implements the . ```csharp public class DecklinkAudioSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkAudioSinkBlock(DecklinkAudioSinkSettings) Initializes a new instance of the class. Creates a new DeckLink audio sink block configured with the specified settings. ```csharp public DecklinkAudioSinkBlock(DecklinkAudioSinkSettings settings) ``` #### Parameters Parameters: - settings (DecklinkAudioSinkSettings): The configuration settings specifying device, format, and audio output parameters. ## Properties ### Input Gets the primary input pad for receiving audio data. This sink block has a single input pad for audio streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array containing all input pads for this block. DecklinkAudioSink has a single audio input pad. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. Returns null as this is a sink block with no outputs. Audio data is sent directly to the DeckLink hardware. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array of output pads. Returns an empty array as this is a sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the DeckLink audio output. These settings control device selection, audio format, channel configuration, and other output parameters. ```csharp public DecklinkAudioSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioSinkSettings): ### Type Gets the media block type identifier for this DeckLink audio sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DeckLink audio sink element within the pipeline. This method creates the GStreamer element, configures it with the specified settings, and establishes the input pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including the GStreamer element. This method releases the DeckLink hardware resources and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of DeckLink hardware resources and GStreamer elements. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced manipulation. This provides access to the underlying DecklinkAudioSink element for direct GStreamer operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper containing the DecklinkAudioSink GStreamer element. ### GetDevicesAsync() Asynchronously enumerates all available DeckLink audio output devices on the system. This method scans for DeckLink hardware capable of audio output and returns device information. ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < DecklinkAudioSinkInfo [ ] >): A task that returns an array of objects describing available devices. ### GetElement() Gets the raw GStreamer element for direct GStreamer API access. Use with caution as direct manipulation may interfere with the MediaBlocks pipeline. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer Gst.Element instance. ### IsAvailable() Determines whether DeckLink audio output functionality is available on the current system. This checks for the presence of required DeckLink drivers and GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DeckLink audio output is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class DecklinkAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkAudioSourceBlock.html # Class DecklinkAudioSourceBlock # Class DecklinkAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides audio input capabilities from Blackmagic DeckLink hardware devices. This block captures audio streams from professional DeckLink capture cards, supporting high-quality audio capture for broadcast and professional video production workflows. The captured audio is processed through a queue and converter for optimal format compatibility. Implements the . Implements the . Implements the . ```csharp public class DecklinkAudioSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkAudioSourceBlock(DecklinkAudioSourceSettings) Initializes a new instance of the class. Creates a new DeckLink audio source block configured with the specified settings. ```csharp public DecklinkAudioSourceBlock(DecklinkAudioSourceSettings settings) ``` #### Parameters Parameters: - settings (DecklinkAudioSourceSettings): The configuration settings specifying device, format, and audio capture parameters. ## Properties ### Input Gets the primary input pad. Returns null as this is a source block with no inputs. Audio is captured directly from the DeckLink hardware. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array of input pads. Returns an empty array as this is a source block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing captured audio data. This source block has a single output pad for audio streams. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array containing all output pads for this block. DecklinkAudioSource has a single audio output pad. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the DeckLink audio input. These settings control device selection, audio format, channel configuration, and capture parameters. ```csharp public DecklinkAudioSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioSourceSettings): ### Type Gets the media block type identifier for this DeckLink audio source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DeckLink audio source element within the pipeline. This method creates the GStreamer elements (source, queue, converter), configures them, establishes internal links, and sets up the output pad connection. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including all GStreamer elements. This method releases the DeckLink hardware resources, queue, converter, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of DeckLink hardware resources and GStreamer elements. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced manipulation. This provides access to the underlying DecklinkAudioSource element for direct GStreamer operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper containing the DecklinkAudioSource GStreamer element. ### GetDevicesAsync() Asynchronously enumerates all available DeckLink audio capture devices on the system. This method scans for DeckLink hardware capable of audio input and returns device information. ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < DecklinkAudioSourceInfo [ ] >): A task that returns an array of objects describing available devices. ### GetElement() Gets the raw GStreamer element for direct GStreamer API access. Use with caution as direct manipulation may interfere with the MediaBlocks pipeline. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer Gst.Element instance. ### IsAvailable() Determines whether DeckLink audio capture functionality is available on the current system. This checks for the presence of required DeckLink drivers and GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DeckLink audio capture is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class DecklinkVideoAudioSinkBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkVideoAudioSinkBlock.html # Class DecklinkVideoAudioSinkBlock # Class DecklinkVideoAudioSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides combined video and audio output capabilities for Blackmagic DeckLink hardware devices. This block accepts synchronized video and audio streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality output for broadcast and professional video production workflows. The block manages separate video and audio sinks internally to ensure proper synchronization. Implements the . Implements the . Implements the . ```csharp public class DecklinkVideoAudioSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkVideoAudioSinkBlock(DecklinkVideoSinkSettings, DecklinkAudioSinkSettings) Initializes a new instance of the class. Creates a new combined DeckLink video and audio sink configured with the specified settings. ```csharp public DecklinkVideoAudioSinkBlock(DecklinkVideoSinkSettings videoSinkSettings, DecklinkAudioSinkSettings audioSinkSettings) ``` #### Parameters Parameters: - videoSinkSettings (DecklinkVideoSinkSettings): The configuration settings for video output including format and device selection. - audioSinkSettings (DecklinkAudioSinkSettings): The configuration settings for audio output including format and synchronization. ## Properties ### AudioInput Gets the audio input pad for receiving audio streams. ```csharp public MediaBlockPad AudioInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### AudioSinkSettings Gets or sets the configuration settings for the DeckLink audio output. These settings control audio format, sample rate, channels, and other audio-specific parameters. ```csharp public DecklinkAudioSinkSettings AudioSinkSettings { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioSinkSettings): ### Input Gets the primary input pad for this block, which is the video input pad. For audio input, use the AudioInput property. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array containing all input pads for this block. DecklinkVideoAudioSink has two input pads: one for video and one for audio. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. Returns null as this is a sink block with no outputs. Video and audio data are sent directly to the DeckLink hardware. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array of output pads. Returns an empty array as this is a sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this DeckLink video and audio sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoInput Gets the video input pad for receiving video streams. ```csharp public MediaBlockPad VideoInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoSinkSettings Gets or sets the configuration settings for the DeckLink video output. These settings control video format, resolution, frame rate, and other video-specific parameters. ```csharp public DecklinkVideoSinkSettings VideoSinkSettings { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoSinkSettings): ## Methods ### Build() Builds and initializes both DeckLink video and audio sink elements within the pipeline. This method creates the GStreamer elements for video and audio output, configures them with their respective settings, and establishes the input pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if both video and audio sinks were built successfully; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including both video and audio sink elements. This method releases all DeckLink hardware resources and resets the build state. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new dynamic input pad. Not implemented for this block as it has fixed video and audio inputs. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media for the new input pad. #### Returns Parameters: - (MediaBlockPad): Not implemented - throws NotImplementedException. #### Exceptions Parameters: - (NotImplementedException): This block does not support dynamic input creation. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of both video and audio DeckLink hardware resources and GStreamer elements. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. Returns null as this block manages multiple elements. Use the individual video and audio sink properties to access specific elements. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this composite block. ### GetElement() Gets the raw GStreamer element. Returns null as this block manages multiple elements. Use the individual video and audio sink properties to access specific elements. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always returns null for this composite block. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad based on the specified media type. This block has fixed video and audio input pads. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media pad to retrieve (Video or Audio). #### Returns Parameters: - (MediaBlockPad): The corresponding input pad for the specified media type, or null if not found. ### IsAvailable() Determines whether DeckLink video and audio output functionality is available on the current system. This checks for the presence of required DeckLink drivers and both video and audio GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if both DeckLink video and audio output are available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class DecklinkVideoAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkVideoAudioSourceBlock.html # Class DecklinkVideoAudioSourceBlock # Class DecklinkVideoAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides combined video and audio input capabilities from Blackmagic DeckLink hardware devices. This block captures synchronized video and audio streams from professional DeckLink capture cards, supporting high-quality capture for broadcast and professional video production workflows. The captured streams are processed through a multi-queue element to maintain synchronization. Implements the . Implements the . Implements the . ```csharp public class DecklinkVideoAudioSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkVideoAudioSourceBlock(DecklinkVideoSourceSettings, DecklinkAudioSourceSettings) Initializes a new instance of the class. Creates a new combined DeckLink video and audio source configured with the specified settings. ```csharp public DecklinkVideoAudioSourceBlock(DecklinkVideoSourceSettings videoSettings, DecklinkAudioSourceSettings audioSettings) ``` #### Parameters Parameters: - videoSettings (DecklinkVideoSourceSettings): The configuration settings for video capture including format and device selection. - audioSettings (DecklinkAudioSourceSettings): The configuration settings for audio capture including format and synchronization. ## Properties ### AudioOutput Gets the audio output pad for providing captured audio streams. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### AudioSettings Gets or sets the configuration settings for the DeckLink audio input. These settings control audio format, sample rate, channels, and capture parameters. ```csharp public DecklinkAudioSourceSettings AudioSettings { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioSourceSettings): ### Input Gets the primary input pad. Returns null as this is a source block with no inputs. Video and audio are captured directly from the DeckLink hardware. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array of input pads. Returns an empty array as this is a source block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. Returns null as this block has multiple outputs. Use VideoOutput and AudioOutput properties to access specific output pads. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array containing all output pads for this block. DecklinkVideoAudioSource has two output pads: one for video and one for audio. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this DeckLink video and audio source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad for providing captured video streams. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoSettings Gets or sets the configuration settings for the DeckLink video input. These settings control video format, resolution, frame rate, and capture parameters. ```csharp public DecklinkVideoSourceSettings VideoSettings { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoSourceSettings): ## Methods ### Build() Builds and initializes both DeckLink video and audio source elements within the pipeline. This method creates the GStreamer elements for video and audio capture, configures them, establishes the multi-queue for synchronization, and sets up output pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if both video and audio sources were built successfully; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including video source, audio source, and multi-queue elements. This method releases all DeckLink hardware resources and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of both video and audio DeckLink hardware resources and GStreamer elements. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. Returns null as this block manages multiple elements. Use the individual video and audio source properties to access specific elements. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this composite block. ### GetDevicesAsync() Asynchronously enumerates all available DeckLink video capture devices on the system. This method scans for DeckLink hardware capable of video input and returns device information. Note: Audio capture availability is determined by the same devices that support video. ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < DecklinkVideoSourceInfo [ ] >): A task that returns an array of objects describing available devices. ### GetElement() Gets the raw GStreamer element. Returns null as this block manages multiple elements. Use the individual video and audio source properties to access specific elements. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always returns null for this composite block. ### IsAvailable() Determines whether DeckLink video and audio capture functionality is available on the current system. This checks for the presence of required DeckLink drivers and GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DeckLink video capture is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class DecklinkVideoSinkBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkVideoSinkBlock.html # Class DecklinkVideoSinkBlock # Class DecklinkVideoSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides video output capabilities for Blackmagic DeckLink hardware devices. This block accepts video streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality video output for broadcast and professional video production workflows. Supports various video formats, resolutions, and frame rates as supported by the DeckLink hardware. Implements the . Implements the . Implements the . ```csharp public class DecklinkVideoSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkVideoSinkBlock(DecklinkVideoSinkSettings) Initializes a new instance of the class. Creates a new DeckLink video sink block configured with the specified settings. ```csharp public DecklinkVideoSinkBlock(DecklinkVideoSinkSettings settings) ``` #### Parameters Parameters: - settings (DecklinkVideoSinkSettings): The configuration settings specifying device, format, and video output parameters. ## Properties ### Input Gets the primary input pad for receiving video data. This sink block has a single input pad for video streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array containing all input pads for this block. DecklinkVideoSink has a single video input pad. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. Returns null as this is a sink block with no outputs. Video data is sent directly to the DeckLink hardware. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array of output pads. Returns an empty array as this is a sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the DeckLink video output. These settings control device selection, video format, resolution, frame rate, and other output parameters. ```csharp public DecklinkVideoSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoSinkSettings): ### Type Gets the media block type identifier for this DeckLink video sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DeckLink video sink element within the pipeline. This method creates the GStreamer element, configures it with the specified settings, and establishes the input pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including the GStreamer element. This method releases the DeckLink hardware resources and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of DeckLink hardware resources and GStreamer elements. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced manipulation. This provides access to the underlying DecklinkVideoSink element for direct GStreamer operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper containing the DecklinkVideoSink GStreamer element. ### GetDevicesAsync() Asynchronously enumerates all available DeckLink video output devices on the system. This method scans for DeckLink hardware capable of video output and returns device information. ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < DecklinkVideoSinkInfo [ ] >): A task that returns an array of objects describing available devices. ### GetElement() Gets the raw GStreamer element for direct GStreamer API access. Use with caution as direct manipulation may interfere with the MediaBlocks pipeline. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer Gst.Element instance. ### IsAvailable() Determines whether DeckLink video output functionality is available on the current system. This checks for the presence of required DeckLink drivers and GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DeckLink video output is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class DecklinkVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Decklink.DecklinkVideoSourceBlock.html # Class DecklinkVideoSourceBlock # Class DecklinkVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Decklink **Assembly**: VisioForge.Core.dll Provides video input capabilities from Blackmagic DeckLink hardware devices. This block captures professional-quality video streams from DeckLink capture cards, supporting broadcast standards including SD/HD/4K/8K SDI and HDMI inputs. The captured video is processed through a queue and converter for optimal format compatibility with downstream pipeline elements. Common use cases include broadcast production, live streaming, video recording, and professional video capture workflows requiring frame-accurate synchronization and low latency. Implements the . Implements the . Implements the . ```csharp public class DecklinkVideoSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecklinkVideoSourceBlock(DecklinkVideoSourceSettings) Initializes a new instance of the class. Creates a new DeckLink video source block configured with the specified settings. ```csharp public DecklinkVideoSourceBlock(DecklinkVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (DecklinkVideoSourceSettings): The configuration settings specifying device, format, resolution, and video capture parameters. ## Properties ### Input Gets the primary input pad. Returns null as this is a source block with no inputs. Video is captured directly from the DeckLink hardware. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array of input pads. Returns an empty array as this is a source block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing captured video data. This source block has a single output pad for video streams. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array containing all output pads for this block. DecklinkVideoSource has a single video output pad. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the DeckLink video input. These settings control device selection, video format (SDI/HDMI), resolution, frame rate, color space, and other capture parameters specific to professional video workflows. ```csharp public DecklinkVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoSourceSettings): ### Type Gets the media block type identifier for this DeckLink video source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DeckLink video source element within the pipeline. This method creates the GStreamer elements (source, queue, converter), configures them with capture settings, establishes internal links, and sets up the output pad connection. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; false if initialization failed. ### CleanUp() Performs cleanup of internal resources including all GStreamer elements. This method releases the DeckLink hardware resources, queue, converter, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. Returns null as this block manages multiple elements. Use GetElement() to access the primary DecklinkVideoSource element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this composite block. ### GetDevicesAsync() Asynchronously enumerates all available DeckLink video capture devices on the system. This method scans for DeckLink hardware capable of video input and returns device information including model names, supported formats, and connection types (SDI/HDMI). ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < DecklinkVideoSourceInfo [ ] >): A task that returns an array of objects describing available devices. ### GetElement() Gets the raw GStreamer element for direct GStreamer API access. Use with caution as direct manipulation may interfere with the MediaBlocks pipeline. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer Gst.Element instance. ### IsAvailable() Determines whether DeckLink video capture functionality is available on the current system. This checks for the presence of required DeckLink drivers and GStreamer plugins. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DeckLink video capture is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. This internal method is called by the MediaBlocks framework to establish the pipeline relationship. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Decklink Link: api/VisioForge.Core.MediaBlocks.Decklink.html # Namespace VisioForge.Core.MediaBlocks.Decklink # Namespace VisioForge.Core.MediaBlocks.Decklink ### Classes Parameters: - (): Provides audio output capabilities for Blackmagic DeckLink hardware devices. This block accepts audio streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality audio output for broadcast and professional video production workflows. Implements the . Implements the . Implements the . - (): Provides audio input capabilities from Blackmagic DeckLink hardware devices. This block captures audio streams from professional DeckLink capture cards, supporting high-quality audio capture for broadcast and professional video production workflows. The captured audio is processed through a queue and converter for optimal format compatibility. Implements the . Implements the . Implements the . - (): Provides combined video and audio output capabilities for Blackmagic DeckLink hardware devices. This block accepts synchronized video and audio streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality output for broadcast and professional video production workflows. The block manages separate video and audio sinks internally to ensure proper synchronization. Implements the . Implements the . Implements the . - (): Provides combined video and audio input capabilities from Blackmagic DeckLink hardware devices. This block captures synchronized video and audio streams from professional DeckLink capture cards, supporting high-quality capture for broadcast and professional video production workflows. The captured streams are processed through a multi-queue element to maintain synchronization. Implements the . Implements the . Implements the . - (): Provides video output capabilities for Blackmagic DeckLink hardware devices. This block accepts video streams and outputs them through professional DeckLink capture/playback cards, supporting high-quality video output for broadcast and professional video production workflows. Supports various video formats, resolutions, and frame rates as supported by the DeckLink hardware. Implements the . Implements the . Implements the . - (): Provides video input capabilities from Blackmagic DeckLink hardware devices. This block captures professional-quality video streams from DeckLink capture cards, supporting broadcast standards including SD/HD/4K/8K SDI and HDMI inputs. The captured video is processed through a queue and converter for optimal format compatibility with downstream pipeline elements. Common use cases include broadcast production, live streaming, video recording, and professional video capture workflows requiring frame-accurate synchronization and low latency. Implements the . Implements the . Implements the . --- # Class UniversalAutoDemuxerBlock Link: api/VisioForge.Core.MediaBlocks.Demuxers.UniversalAutoDemuxerBlock.html # Class UniversalAutoDemuxerBlock # Class UniversalAutoDemuxerBlock **Namespace**: VisioForge.Core.MediaBlocks.Demuxers **Assembly**: VisioForge.Core.dll Represents a universal automatic demuxer block that dynamically selects the appropriate demuxer based on the input stream format detected by typefind element. ```csharp public class UniversalAutoDemuxerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The UniversalAutoDemuxerBlock is a MediaBlocks component that automatically detects the format of an incoming stream and creates the appropriate demuxer dynamically. It uses GStreamer's typefind element to identify the media format and then instantiates the correct demuxer element on the fly.

Key features: - Automatic format detection using typefind - Dynamic demuxer creation based on detected format - Support for all common container formats (MP4, MKV, AVI, WebM, etc.) - Pre-created output pads based on constructor parameters - Configurable output stream selection (video, audio, subtitle, metadata)

Output pads are pre-created based on constructor parameters: - If renderVideo is true, creates 1 video output pad - If renderAudio is true, creates 1 audio output pad - If renderSubtitle is true, creates 1 subtitle output pad - If renderMetadata is true, creates 1 metadata output pad

## Constructors ### UniversalAutoDemuxerBlock(bool, bool, bool, bool) Initializes a new instance of the class. ```csharp public UniversalAutoDemuxerBlock(bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - renderVideo (bool): Whether to output video streams. - renderAudio (bool): Whether to output audio streams. - renderSubtitle (bool): Whether to output subtitle streams. - renderMetadata (bool): Whether to output metadata streams. ## Properties ### AudioOutput Gets the first audio output pad if available. Convenience property for accessing the primary audio stream. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### AudioOutputs Gets all audio output pads. ```csharp public MediaBlockPad[] AudioOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Input Gets the input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MetadataOutputs Gets all metadata output pads. ```csharp public MediaBlockPad[] MetadataOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutput Gets the first subtitle output pad if available. Convenience property for accessing the primary subtitle stream. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### SubtitleOutputs Gets all subtitle output pads. ```csharp public MediaBlockPad[] SubtitleOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the first video output pad if available. Convenience property for accessing the primary video stream. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoOutputs Gets all video output pads. ```csharp public MediaBlockPad[] VideoOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ## Methods ### Build() Builds and initializes the demuxer block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if successful, false otherwise. ### CleanUp() Cleans up resources used by this block. ```csharp public void CleanUp() ``` ### Dispose(bool) Disposes of this block. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### GetCore() Gets the core BaseElement wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline to associate with this block. --- # Namespace VisioForge.Core.MediaBlocks.Demuxers Link: api/VisioForge.Core.MediaBlocks.Demuxers.html # Namespace VisioForge.Core.MediaBlocks.Demuxers # Namespace VisioForge.Core.MediaBlocks.Demuxers ### Classes Parameters: - (): Represents a universal automatic demuxer block that dynamically selects the appropriate demuxer based on the input stream format detected by typefind element. --- # Interface IMediaBlock Link: api/VisioForge.Core.MediaBlocks.IMediaBlock.html # Interface IMediaBlock # Interface IMediaBlock **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Main Media Block interface that defines the contract for all media processing blocks in the pipeline system. Media blocks are the fundamental building blocks of media processing pipelines, representing individual processing units such as sources, filters, encoders, decoders, and sinks. Each block can have input and output pads for connecting to other blocks, forming a directed graph of media processing operations. ```csharp public interface IMediaBlock : IDisposable ``` #### Implements #### Extension Methods ## Properties ### Input Gets the primary input pad for this media block, if it has a single input. For blocks with multiple inputs, this returns the default or primary input pad. Returns null for source blocks that have no inputs. ```csharp MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets an array of all input pads available on this media block. Input pads are connection points where this block can receive media data from other blocks. Source blocks typically return an empty array as they generate data rather than receive it. ```csharp MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Name Gets or sets the unique name identifier for this media block within the pipeline. The name is used for debugging, logging, and referencing the block in pipeline operations. Names should be descriptive and unique within a pipeline to avoid confusion. ```csharp string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Output Gets the primary output pad for this media block, if it has a single output. For blocks with multiple outputs, this returns the default or primary output pad. Returns null for sink blocks that have no outputs. ```csharp MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets an array of all output pads available on this media block. Output pads are connection points where this block can send media data to other blocks. Sink blocks typically return an empty array as they consume data rather than produce it. ```csharp MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets or sets the type of media block, indicating its primary function in the pipeline. The type determines the block's role (source, filter, encoder, decoder, sink, etc.) and helps in categorizing blocks for pipeline validation and optimization. ```csharp MediaBlockType Type { get; set; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### GetPipelineContext() Gets the pipeline context associated with this media block. The pipeline context provides access to shared resources, pipeline state, and coordination mechanisms used by all blocks within the same pipeline instance. ```csharp BlockPipelineContext GetPipelineContext() ``` #### Returns Parameters: - (BlockPipelineContext): The BlockPipelineContext object containing pipeline-wide state and resources. ### ToYAMLBlock() Converts this media block's configuration to a YAML representation for serialization. This method enables saving and loading pipeline configurations by converting the block's settings and connections into a portable YAML format that can be persisted and restored. ```csharp YAMLBlock ToYAMLBlock() ``` #### Returns Parameters: - (YAMLBlock): A YAMLBlock object containing the serializable configuration of this media block. --- # Interface IMediaBlockDynamicInputs Link: api/VisioForge.Core.MediaBlocks.IMediaBlockDynamicInputs.html # Interface IMediaBlockDynamicInputs # Interface IMediaBlockDynamicInputs **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Interface for MediaBlocks that support dynamic creation of input pads at runtime. This interface enables blocks like mixers and multiplexers to create new input connections on demand, allowing for flexible pipeline topologies that can change during execution. ```csharp public interface IMediaBlockDynamicInputs ``` ## Methods ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad of the specified media type on this block. This allows for runtime expansion of the block's input capabilities, useful for scenarios like adding new video streams to a mixer or new audio tracks to a multiplexer. ```csharp MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media content the new input pad will accept (video, audio, subtitle, or data). #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured as an input with the specified media type, or null if creation fails. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad that handles the specified media type. This method searches for an already created input pad matching the requested media type, useful for reusing existing connections rather than creating new ones. ```csharp MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media content to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): An existing MediaBlockPad that accepts the specified media type, or null if no matching pad is found. --- # Interface IMediaBlockInternals Link: api/VisioForge.Core.MediaBlocks.IMediaBlockInternals.html # Interface IMediaBlockInternals # Interface IMediaBlockInternals **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Internal interface providing low-level access to MediaBlock implementation details. This interface exposes the underlying GStreamer elements and pipeline management methods that are used internally by the MediaBlocks framework for pipeline construction and lifecycle management. Not intended for direct use in application code. ```csharp public interface IMediaBlockInternals ``` ## Methods ### Build() Constructs and initializes the underlying GStreamer elements for this MediaBlock. This method creates the necessary GStreamer components, configures their properties, and prepares the block for integration into the pipeline. Must be called before the block can process media. ```csharp bool Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built and all required elements were created; false if construction failed. ### CleanUp() Releases all resources and performs cleanup operations for this MediaBlock. This method disposes of GStreamer elements, releases memory, and ensures proper shutdown of the block. Called automatically during pipeline teardown. ```csharp void CleanUp() ``` ### GetCore() Retrieves the core BaseElement wrapper that provides additional functionality around the GStreamer element. This wrapper adds VisioForge-specific features and simplifies common operations on the underlying GStreamer element. ```csharp BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer element. ### GetElement() Retrieves the primary GStreamer element that represents this MediaBlock in the pipeline. This element is the main component that performs the actual media processing and is connected to other elements in the GStreamer pipeline. ```csharp Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance, or null if the block hasn't been built yet. ### SetContext(MediaBlocksPipeline) Associates this MediaBlock with a pipeline and initializes its internal context. This method is called automatically when the block is added to a pipeline, providing access to shared resources and pipeline-wide configuration. ```csharp void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. --- # Interface IMediaBlockInternals2 Link: api/VisioForge.Core.MediaBlocks.IMediaBlockInternals2.html # Interface IMediaBlockInternals2 # Interface IMediaBlockInternals2 **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Extended internal interface for MediaBlocks that require post-connection initialization. This interface provides additional lifecycle hooks for blocks that need to perform configuration or setup after their pads have been connected in the pipeline. ```csharp public interface IMediaBlockInternals2 ``` ## Methods ### PostConnect() Called after all pad connections have been established for this block. This method allows blocks to perform initialization that depends on knowing the connected blocks or negotiated media formats. Common uses include configuring filters based on input format or setting up dynamic processing chains. ```csharp bool PostConnect() ``` #### Returns Parameters: - (bool): True if post-connection initialization was successful; false if an error occurred. --- # Interface IMediaBlockRenderer Link: api/VisioForge.Core.MediaBlocks.IMediaBlockRenderer.html # Interface IMediaBlockRenderer # Interface IMediaBlockRenderer **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Interface for MediaBlocks that perform rendering operations (audio playback, video display, etc.). This interface provides control over synchronization behavior for blocks that present media to users, ensuring proper timing and smooth playback of multimedia content. ```csharp public interface IMediaBlockRenderer ``` ## Properties ### IsSync Gets or sets a value indicating whether to synchronize media streams for real-time playback. When enabled, the renderer will maintain proper timing relationships between audio and video, ensuring lip-sync and smooth playback. Should typically be true for playback and live capture scenarios, but false for transcoding or processing operations where speed is more important than timing. ```csharp bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): --- # Interface IMediaBlockSettings Link: api/VisioForge.Core.MediaBlocks.IMediaBlockSettings.html # Interface IMediaBlockSettings # Interface IMediaBlockSettings **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Interface for configuration objects that can create and configure MediaBlock instances. This interface enables a factory pattern where settings objects encapsulate all necessary configuration parameters and can instantiate properly configured MediaBlocks on demand. ```csharp public interface IMediaBlockSettings ``` ## Methods ### CreateBlock() Creates a new MediaBlock instance configured with the settings contained in this object. This factory method allows for separation of configuration from instantiation, making it easier to serialize settings or create multiple blocks with the same configuration. ```csharp MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new MediaBlock instance configured according to this settings object. --- # Interface IMediaBlocksPipeline Link: api/VisioForge.Core.MediaBlocks.IMediaBlocksPipeline.html # Interface IMediaBlocksPipeline # Interface IMediaBlocksPipeline **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Defines the core interface for the modern MediaBlocks pipeline system, enabling flexible, cross-platform media processing workflows. This interface provides the foundation for building modular media processing applications by composing reusable media blocks (sources, effects, encoders, sinks) into complete processing pipelines. Built on GStreamer, it delivers high-performance media handling across Windows, macOS, Linux, iOS, and Android platforms with a unified API. ```csharp public interface IMediaBlocksPipeline ``` ## Remarks The MediaBlocks pipeline architecture allows developers to: - Build custom media workflows from pre-built blocks (camera capture, file playback, video encoding, streaming, etc.) - Connect blocks dynamically to create processing chains - Control pipeline lifecycle (build, start, pause, resume, stop) - Handle errors and monitor pipeline state - Process multiple media streams simultaneously This is the most flexible and powerful approach in the VisioForge Media Framework ecosystem. ## Properties ### State Gets the current playback state of the pipeline (stopped, playing, paused, etc.). ```csharp PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): ## Methods ### AddBlock(IMediaBlock) Adds a media block to the pipeline for processing. The block will be automatically integrated into the pipeline's lifecycle management and can be connected to other blocks. ```csharp bool AddBlock(IMediaBlock block) ``` #### Parameters Parameters: - block (IMediaBlock): The media block to add to the pipeline (source, effect, encoder, sink, etc.). #### Returns Parameters: - (bool): true if the block was successfully added, false otherwise. ### Build() Builds the complete pipeline by creating and configuring all underlying GStreamer elements and establishing the connections between media blocks. This must be called before starting playback. ```csharp bool Build() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully built, false if an error occurred. ### Connect(MediaBlockPad, MediaBlockPad) Connects two media blocks by linking an output pad from one block to an input pad of another block. This establishes the data flow path in the media processing pipeline. ```csharp bool Connect(MediaBlockPad output, MediaBlockPad input) ``` #### Parameters Parameters: - output (MediaBlockPad): The output pad from the source media block. - input (MediaBlockPad): The input pad of the destination media block. #### Returns Parameters: - (bool): true if the connection was established successfully, false otherwise. ### GetBlock(string) Retrieves a media block from the pipeline by its unique name identifier. ```csharp IMediaBlock GetBlock(string name) ``` #### Parameters Parameters: - name (string): The unique name of the block to retrieve. #### Returns Parameters: - (IMediaBlock): The media block with the specified name, or null if not found. ### GetBlock(MediaBlockType) Retrieves the first media block of the specified type from the pipeline. Useful for finding blocks by their functional category (source, sink, effect, etc.). ```csharp IMediaBlock GetBlock(MediaBlockType type_) ``` #### Parameters Parameters: - type_ (MediaBlockType): The type of media block to search for. #### Returns Parameters: - (IMediaBlock): The first media block of the specified type, or null if not found. ### GetContext() Gets the GStreamer context that provides access to the underlying pipeline infrastructure, including the GStreamer pipeline object, bus, and other low-level components. ```csharp ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The ContextX instance containing GStreamer pipeline infrastructure. ### Pause() Pauses the pipeline execution, temporarily halting media processing while maintaining the current state. The pipeline can be resumed from the current position using Resume(). ```csharp bool Pause() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully paused, false otherwise. ### Resume() Resumes pipeline execution from a paused state, continuing media processing from the current position. ```csharp bool Resume() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully resumed, false otherwise. ### Start(bool) Starts the pipeline execution, beginning media processing and playback. The pipeline must be built before calling this method. ```csharp bool Start(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, only preloads the pipeline and sets it to paused state without starting playback. #### Returns Parameters: - (bool): true if the pipeline started successfully, false otherwise. ### Stop(bool) Stops the pipeline execution and halts all media processing. This will bring the pipeline to a complete stop and free up resources. ```csharp bool Stop(bool force = false) ``` #### Parameters Parameters: - force (bool): If set to true, forces an immediate stop without waiting for graceful shutdown. #### Returns Parameters: - (bool): true if the pipeline stopped successfully, false otherwise. ### OnError Event raised when an error occurs during pipeline execution. Provides detailed error information for debugging and error handling. ```csharp event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): --- # Class MediaBlock Link: api/VisioForge.Core.MediaBlocks.MediaBlock.html # Class MediaBlock # Class MediaBlock **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Base implementation of a media processing block in the VisioForge MediaBlocks pipeline system. This abstract base class provides core functionality for all media blocks including pipeline management, context handling, and basic lifecycle operations. Media blocks are the fundamental building blocks that can be connected together to create complex media processing pipelines. Implements the interface. ```csharp public class MediaBlock : IMediaBlock, IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members #### Extension Methods ## Fields ### Context Gets or sets the GStreamer context that provides access to the underlying pipeline and bus components. This context is essential for low-level GStreamer operations and pipeline management. ```csharp public ContextX Context ``` #### Field Value Parameters: - (ContextX): ### _isBuilt Flag indicating whether this media block has been successfully built and is ready for use in the pipeline. ```csharp protected bool _isBuilt ``` #### Field Value Parameters: - (bool): ### _pipelineCtx The pipeline context containing shared resources, settings, and state information for the entire pipeline. ```csharp protected BlockPipelineContext _pipelineCtx ``` #### Field Value Parameters: - (BlockPipelineContext): ## Properties ### HasInputs Gets a value indicating whether this media block has any input pads. ```csharp public virtual bool HasInputs { get; } ``` #### Property Value Parameters: - (bool): ### HasOutputs Gets a value indicating whether this media block has any output pads. ```csharp public virtual bool HasOutputs { get; } ``` #### Property Value Parameters: - (bool): ### ID Gets or sets the unique identifier for this media block instance. This ID is automatically generated when the block is created and should not be modified. ```csharp public Guid ID { get; set; } ``` #### Property Value Parameters: - (Guid): ### Input Gets the primary input pad for this media block. ```csharp public virtual MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the collection of input pads for this media block. ```csharp public virtual MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsBuilt Gets a value indicating whether this block is built. ```csharp public bool IsBuilt { get; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the unique name identifier for this media block within the pipeline. This name is used to reference the block when building connections and for debugging purposes. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Output Gets the primary output pad for this media block. ```csharp public virtual MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the collection of output pads for this media block. ```csharp public virtual MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Owner Gets or sets the parent SuperMediaBlock that contains this block as a child. SuperMediaBlocks can contain multiple child blocks to create complex composite functionality. ```csharp public SuperMediaBlock Owner { get; set; } ``` #### Property Value Parameters: - (SuperMediaBlock): ### Type Gets or sets the functional type of this media block (source, sink, effect, encoder, etc.). This property must be overridden in derived classes to specify the block's role in the pipeline. ```csharp public virtual MediaBlockType Type { get; set; } ``` #### Property Value Parameters: - (MediaBlockType): #### Exceptions Parameters: - (NotImplementedException): Thrown when the derived class has not implemented this property. - (NotImplementedException): Thrown when the derived class has not implemented the setter. ### _pipeline Gets the pipeline that owns this block, or null if the pipeline has been collected. Protected property for derived classes to safely access the pipeline. ```csharp protected MediaBlocksPipeline _pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): ## Methods ### AddElementsToPipeline() Adds the GStreamer elements owned by this block to the pipeline. Override this method in derived classes that manage GStreamer elements. This method is called automatically when the block is added to a pipeline. ```csharp public virtual void AddElementsToPipeline() ``` ### Build() Builds and initializes this media block, creating any necessary GStreamer elements and configuring them. This method must be overridden in derived classes to implement block-specific initialization logic. ```csharp public virtual bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. ### ClearPads() Clears all input and output pad references for this media block. This method is typically called during cleanup or disposal to ensure proper resource release. ```csharp public void ClearPads() ``` ### CreateElements() Creates the internal GStreamer elements used by this media block. Override this method in derived classes that need to create GStreamer elements. This method is typically called from the Build() method. ```csharp public virtual bool CreateElements() ``` #### Returns Parameters: - (bool): true if elements were successfully created; otherwise, false. ### DeepCopy(string) Creates and returns a deep copy of this media block with a new unique name. The clone will have the same configuration but will be a separate instance. Override this method in derived classes to implement block-specific cloning logic. ```csharp public virtual IMediaBlock DeepCopy(string newName = null) ``` #### Parameters Parameters: - newName (string): The name to assign to the cloned block. If null or empty, a name will be auto-generated. #### Returns Parameters: - (IMediaBlock): A new instance of the media block with the same configuration as the original. #### Exceptions Parameters: - (NotImplementedException): Thrown when the derived class has not implemented cloning. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Override this method in derived classes to implement block-specific cleanup logic. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~MediaBlock() Finalizes an instance of the class. ```csharp protected ~MediaBlock() ``` ### GetPipelineContext() Gets the pipeline context that contains shared resources and configuration for the entire MediaBlocks pipeline. This context provides access to GStreamer objects, logging, licensing information, and other pipeline-wide resources. ```csharp public BlockPipelineContext GetPipelineContext() ``` #### Returns Parameters: - (BlockPipelineContext): The BlockPipelineContext instance associated with this block's pipeline. ### RemoveElementsFromPipeline() Removes the GStreamer elements owned by this block from the pipeline. Override this method in derived classes that manage GStreamer elements. This method is called automatically when the block is removed from a pipeline. ```csharp public virtual void RemoveElementsFromPipeline() ``` ### Reset() Resets this media block to its initial state, clearing any accumulated data or state. Override this method in derived classes that maintain internal state that needs to be reset. ```csharp public virtual void Reset() ``` ### SetPipeline(MediaBlocksPipeline) Associates this media block with a specific MediaBlocks pipeline and initializes the pipeline context. This method is typically called automatically when the block is added to a pipeline. ```csharp public void SetPipeline(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will own this block. ### SetPipelineContext(BlockPipelineContext) Sets the pipeline context that contains shared resources and configuration for the entire MediaBlocks pipeline. This context provides access to GStreamer objects, logging, licensing information, and other pipeline-wide resources. ```csharp public void SetPipelineContext(BlockPipelineContext context) ``` #### Parameters Parameters: - context (BlockPipelineContext): The BlockPipelineContext instance to associate with this block. ### ToYAMLBlock() Converts this media block to a YAML block representation. ```csharp public virtual YAMLBlock ToYAMLBlock() ``` #### Returns Parameters: - (YAMLBlock): A YAMLBlock containing the YAML representation of this block. ## See Also --- # Class MediaBlockExtensions Link: api/VisioForge.Core.MediaBlocks.MediaBlockExtensions.html # Class MediaBlockExtensions # Class MediaBlockExtensions **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Extension methods for MediaBlock operations. ```csharp public static class MediaBlockExtensions ``` #### Inheritance #### Inherited Members ## Methods ### GetInputPadByType(IMediaBlock, MediaBlockPadMediaType) Gets an input pad of a specific media type from this media block. ```csharp public static MediaBlockPad GetInputPadByType(this IMediaBlock block, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - block (IMediaBlock): The media block to search. - mediaType (MediaBlockPadMediaType): The type of media pad to find. #### Returns Parameters: - (MediaBlockPad): The first input pad matching the specified media type, or null if none found. ### GetOutputPadByType(IMediaBlock, MediaBlockPadMediaType) Gets an output pad of a specific media type from this media block. ```csharp public static MediaBlockPad GetOutputPadByType(this IMediaBlock block, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - block (IMediaBlock): The media block to search. - mediaType (MediaBlockPadMediaType): The type of media pad to find. #### Returns Parameters: - (MediaBlockPad): The first output pad matching the specified media type, or null if none found. --- # Class MediaBlockHelper Link: api/VisioForge.Core.MediaBlocks.MediaBlockHelper.html # Class MediaBlockHelper # Class MediaBlockHelper **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Static helper class providing extension methods for MediaBlock operations. These utility methods simplify common MediaBlock operations by providing convenient access to underlying GStreamer element functionality for state management and event handling. ```csharp public static class MediaBlockHelper ``` #### Inheritance #### Inherited Members ## Methods ### SendEndOfStream(MediaBlock) Sends an End-of-Stream (EOS) event to the specified MediaBlock. This convenience method signals that no more data will be processed, causing the block to complete processing. ```csharp public static bool SendEndOfStream(this MediaBlock block) ``` #### Parameters Parameters: - block (MediaBlock): The MediaBlock that should receive the EOS event. #### Returns Parameters: - (bool): True if the EOS event was successfully sent; false if the operation failed. ### SendEvent(MediaBlock, Event) Sends a GStreamer event to the underlying element of the specified MediaBlock. This extension method allows direct event injection for advanced pipeline control and manipulation. ```csharp public static bool SendEvent(this MediaBlock block, Event evt) ``` #### Parameters Parameters: - block (MediaBlock): The MediaBlock whose underlying element should receive the event. - evt (Event): The GStreamer event to send to the element. #### Returns Parameters: - (bool): True if the event was successfully sent and processed; false if the block has no element or event sending failed. ### SetState(MediaBlock, State) Sets the GStreamer state of the underlying element for the specified MediaBlock. This extension method provides direct access to GStreamer state management for advanced control. ```csharp public static bool SetState(this MediaBlock block, State state) ``` #### Parameters Parameters: - block (MediaBlock): The MediaBlock whose underlying element state should be changed. - state (State): The target GStreamer state (Null, Ready, Paused, Playing). #### Returns Parameters: - (bool): True if the state change was successful; false if the block has no element or state change failed. --- # Class MediaBlockPad Link: api/VisioForge.Core.MediaBlocks.MediaBlockPad.html # Class MediaBlockPad # Class MediaBlockPad **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Represents a connection point (pad) on a MediaBlock that enables data flow between blocks in the pipeline. Pads can be input (sink) or output (source) and are typed by media content (video, audio, subtitles, data). This class manages the underlying GStreamer pad, connection state, and provides methods for dynamic linking/unlinking during pipeline execution. Essential for building flexible media processing workflows. ```csharp public class MediaBlockPad : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MediaBlockPad(MediaBlock, MediaBlockPadDirection, MediaBlockPadMediaType, bool) Initializes a new instance of the class with the specified parameters. Creates a connection point for the given block with the specified data flow direction and media type. ```csharp public MediaBlockPad(MediaBlock block, MediaBlockPadDirection direction, MediaBlockPadMediaType mediaType, bool onDemandConnect = false) ``` #### Parameters Parameters: - block (MediaBlock): The MediaBlock that owns this pad. - direction (MediaBlockPadDirection): The data flow direction (input/sink or output/source). - mediaType (MediaBlockPadMediaType): The type of media content this pad will handle (video, audio, subtitles, data). - onDemandConnect (bool): If true, the pad will connect dynamically after pipeline start; if false, connects during pipeline construction. ## Properties ### Block Gets the MediaBlock that owns this pad. This provides access to the parent block for logging, context, and lifecycle management. ```csharp public MediaBlock Block { get; } ``` #### Property Value Parameters: - (MediaBlock): ### Direction Gets the direction of data flow for this pad (input/sink or output/source). Determines whether this pad receives data from other blocks or sends data to them. ```csharp public MediaBlockPadDirection Direction { get; } ``` #### Property Value Parameters: - (MediaBlockPadDirection): ### MediaType Gets the type of media content that flows through this pad (video, audio, subtitles, or data). This determines what kind of media streams can be connected to this pad. ```csharp public MediaBlockPadMediaType MediaType { get; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): ### OnDemandConnect Gets or sets a value indicating whether this pad will establish its connection dynamically after the pipeline starts. When true, the pad connection is deferred until runtime rather than being established during pipeline construction. ```csharp public bool OnDemandConnect { get; set; } ``` #### Property Value Parameters: - (bool): ### Tag Gets or sets a custom tag object that can be used to associate additional data with this pad. This is typically used for internal bookkeeping or storing pad-specific metadata. ```csharp public object Tag { get; set; } ``` #### Property Value Parameters: - (object): ## Methods ### BlockPadLive() Blocks data flow through this pad in a running pipeline. This temporarily stops media data from flowing through the pad without disconnecting it. ```csharp public bool BlockPadLive() ``` #### Returns Parameters: - (bool): True if the pad was successfully blocked; false if blocking failed. ### Connect(MediaBlockPad) Establishes a logical connection between this pad and another MediaBlockPad. This creates a high-level connection relationship that will be used for pipeline construction. ```csharp public void Connect(MediaBlockPad pad) ``` #### Parameters Parameters: - pad (MediaBlockPad): The target MediaBlockPad to connect to. ### ConnectLive(MediaBlockPad) Dynamically links this source pad to a sink pad in a running or paused pipeline. This allows for runtime connection changes without stopping the pipeline. ```csharp public bool ConnectLive(MediaBlockPad sinkPad) ``` #### Parameters Parameters: - sinkPad (MediaBlockPad): The target sink MediaBlockPad to link to. #### Returns Parameters: - (bool): True if the pads were successfully linked; false if linking failed. ### Disconnect() Disconnects this pad from its currently connected MediaBlockPad. This performs actual GStreamer pad unlinking and clears the logical connection on both sides. ```csharp public void Disconnect() ``` ### DisconnectLive(MediaBlockPad) Dynamically unlinks this source pad from a sink pad in a running or paused pipeline. This allows for runtime disconnection without stopping the pipeline. ```csharp public bool DisconnectLive(MediaBlockPad sinkPad) ``` #### Parameters Parameters: - sinkPad (MediaBlockPad): The sink MediaBlockPad to unlink from. #### Returns Parameters: - (bool): True if the pads were successfully unlinked; false if unlinking failed. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~MediaBlockPad() Finalizes an instance of the class. ```csharp protected ~MediaBlockPad() ``` ### GetConnectedToPad() Gets the MediaBlockPad that this pad is currently connected to. Returns the logical connection established through the Connect method. ```csharp public MediaBlockPad GetConnectedToPad() ``` #### Returns Parameters: - (MediaBlockPad): The connected MediaBlockPad, or null if not connected. ### GetInternalPad() Gets the underlying GStreamer pad object associated with this MediaBlockPad. Provides access to the low-level GStreamer pad for advanced operations. ```csharp public Pad GetInternalPad() ``` #### Returns Parameters: - (Pad): The GStreamer Pad object, or null if not yet assigned. ### IsActive() Determines whether the underlying GStreamer pad is in an active state. An active pad is ready to process media data and participate in pipeline operations. ```csharp public bool IsActive() ``` #### Returns Parameters: - (bool): True if the pad is active and ready for media processing; otherwise, false. ### IsConnected() Determines whether this pad has a logical connection to another MediaBlockPad. This checks the high-level connection established through the Connect method. ```csharp public bool IsConnected() ``` #### Returns Parameters: - (bool): True if this pad is connected to another MediaBlockPad; otherwise, false. ### IsConnectedLive() Determines whether the underlying GStreamer pad is actively linked in a running pipeline. This checks the actual GStreamer-level connection status, not just the logical MediaBlocks connection. ```csharp public bool IsConnectedLive() ``` #### Returns Parameters: - (bool): True if the GStreamer pad is actively linked; otherwise, false. ### IsInternalPadNull() Determines whether the underlying GStreamer pad has been assigned to this MediaBlockPad. Used to check if the pad is ready for media operations. ```csharp public bool IsInternalPadNull() ``` #### Returns Parameters: - (bool): True if the internal GStreamer pad is null (not assigned); otherwise, false. ### SetInternalPad(Pad) Associates this MediaBlockPad with the underlying GStreamer pad object. This establishes the connection between the high-level MediaBlocks pad and the low-level GStreamer pad. ```csharp public void SetInternalPad(Pad pad) ``` #### Parameters Parameters: - pad (Pad): The GStreamer pad object that will handle the actual media data flow. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ### UnblockPadLive() Unblocks data flow through this pad in a running pipeline. This resumes media data flow through a previously blocked pad. ```csharp public bool UnblockPadLive() ``` #### Returns Parameters: - (bool): True if the pad was successfully unblocked; false if unblocking failed. ### OnEOS Event that is raised when an End-of-Stream (EOS) event is detected on this pad. This indicates that no more data will flow through the pad. Event handlers should be assigned before starting the pipeline. ```csharp public event EventHandler OnEOS ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Enum MediaBlockPadDirection Link: api/VisioForge.Core.MediaBlocks.MediaBlockPadDirection.html # Enum MediaBlockPadDirection # Enum MediaBlockPadDirection **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Specifies the data flow direction for a MediaBlockPad, determining whether it receives or sends media data. This enumeration defines the role of a pad in the MediaBlocks pipeline system. ```csharp public enum MediaBlockPadDirection ``` ## Fields Parameters: - In (): Input (sink) pad that receives media data from other blocks. Data flows INTO the block through this pad. - Out (): Output (source) pad that sends media data to other blocks. Data flows OUT OF the block through this pad. --- # Enum MediaBlockPadMediaType Link: api/VisioForge.Core.MediaBlocks.MediaBlockPadMediaType.html # Enum MediaBlockPadMediaType # Enum MediaBlockPadMediaType **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Specifies the type of media content that flows through a MediaBlockPad. This enumeration determines what kind of media streams can be connected and processed by the pad. ```csharp public enum MediaBlockPadMediaType ``` ## Fields Parameters: - Video (): Video media content including raw video frames, compressed video streams, and image data. Used for pads that handle visual media processing and rendering. - Audio (): Audio media content including raw audio samples, compressed audio streams, and audio data. Used for pads that handle audio processing, mixing, and playback operations. - Subtitle (): Subtitle and caption data including text overlays, closed captions, and subtitle streams. Used for pads that handle text-based content for accessibility and localization. - Metadata (): Metadata and auxiliary data streams that accompany primary media content. Used for pads that handle timestamps, tags, chapter information, and other descriptive data. - Auto (): Automatic media type detection that allows the pad to handle any supported media type. The actual media type is determined dynamically based on the connected content. --- # Class MediaBlocksPipeline Link: api/VisioForge.Core.MediaBlocks.MediaBlocksPipeline.html # Class MediaBlocksPipeline # Class MediaBlocksPipeline **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll MediaBlocks pipeline bus message handling implementation. This partial class contains all message bus processing, event handling, and pipeline state management. Handles video overlay setup, stream collection detection, specialized block messaging, and pipeline lifecycle events. ```csharp public class MediaBlocksPipeline : IMediaBlocksPipeline, IDisposable, IAsyncDisposable, INotifyPropertyChanged ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The MediaBlocksPipeline serves as the container and coordinator for media blocks. Key responsibilities include: - Managing the collection of media blocks and their connections - Building and initializing the media pipeline infrastructure - Controlling pipeline state (Free, Playing, Paused) - Processing bus messages and translating them to .NET events - Handling errors and providing diagnostic information - Managing resource cleanup and disposal This is the foundation class for the MediaBlocks SDK, which represents the most flexible and powerful approach to media processing in the VisioForge Media Framework. ## Constructors ### MediaBlocksPipeline(string, ContextX) Initializes a new instance of the class with optional name and logging context. This constructor creates a new pipeline instance ready to accept media blocks and build processing workflows. ```csharp public MediaBlocksPipeline(string name = null, ContextX context = null) ``` #### Parameters Parameters: - name (string): Optional pipeline name for identification in logs and debugging. If not provided, a random name will be auto-generated. - context (ContextX): Optional logging context for centralized logging. If not provided, a new context will be created automatically. #### Remarks The constructor performs essential initialization: - Loads the multimedia framework libraries and initializes the system - Sets up logging infrastructure (Serilog) - Configures local library redistribution paths (Windows only) - Creates the internal media pipeline object - Sets up error handling callbacks After construction, add media blocks using AddBlock() and connect them before calling Build() and Start(). ## Properties ### Debug_Dir Gets or sets the directory path where debug files (logs, pipeline graphs) will be saved. Changing this property reconfigures the logger to write to the new directory. ```csharp public string Debug_Dir { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Debug files include: - Log files with detailed pipeline operations - DOT graph files showing pipeline structure - Error diagnostics and telemetry data Ensure the application has write permissions to the specified directory. ### Debug_DisableMessageDialogs Gets or sets a value indicating whether error message dialogs are suppressed when OnError event is not handled. When true, errors are logged but no UI dialogs are shown, useful for headless or service applications. ```csharp public bool Debug_DisableMessageDialogs { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Set this to true in scenarios where UI dialogs are inappropriate: - Background services - Console applications - Automated testing - Applications with custom error handling UI Always handle the OnError event for production applications rather than relying on default dialogs. ### Debug_Mode Gets or sets a value indicating whether debug mode is enabled for detailed logging and diagnostics. When enabled, the pipeline generates comprehensive log files and saves pipeline graph visualizations. ```csharp public bool Debug_Mode { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Debug mode features: - Detailed log files with all operations and state changes - Pipeline graph DOT files for visualization - More verbose console output - Performance may be slightly reduced due to additional logging Recommended for development and troubleshooting. Disable in production for optimal performance. ### Debug_Telemetry Gets or sets a value indicating whether anonymous error telemetry is sent to VisioForge during Visual Studio debugging sessions. This helps improve SDK quality by reporting errors encountered during development. No personal data is transmitted. ```csharp public bool Debug_Telemetry { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Telemetry information includes: - Exception messages and stack traces - Pipeline configuration (anonymized) - SDK version and platform information - Media element usage patterns Telemetry is only active when debugging in Visual Studio and is automatically disabled in production builds. No personal information, file paths, or media content is transmitted. ### Loop Gets or sets a value indicating whether playback automatically restarts from the beginning when the end is reached. Enables continuous looping playback for presentations, kiosks, or background video displays. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the OnLoop event is fired each time the media restarts. The OnStop event will not be fired during loop restarts, only when Stop() is called explicitly. Loop mode works with seekable sources (files) but not with live streams. ### Name Gets or sets the name of this pipeline instance for identification in logs and debugging output. Provides a human-readable identifier to distinguish between multiple pipeline instances. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### PauseOnStop Gets or sets a value indicating whether the pipeline seeks to the beginning and pauses when playback completes. When enabled, reaching the end of media results in a paused state at the start position instead of stopping. ```csharp public bool PauseOnStop { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks This property affects End-of-Stream (EOS) behavior: - When true: Pipeline seeks to start and enters paused state (ready to play again) - When false: Pipeline stops and enters Free state (requires full restart) Useful for video preview scenarios where quick replay is desired without full pipeline restart overhead. ### SDK_BuildDate Gets the SDK build date indicating when this version of the MediaBlocks framework was compiled. Useful for version verification and support inquiries. ```csharp public static DateTime SDK_BuildDate { get; } ``` #### Property Value Parameters: - (DateTime): ### SDK_Version Gets the semantic version number of the MediaBlocks SDK indicating feature set and compatibility level. Use this for version checks and compatibility verification in your application. ```csharp public static Version SDK_Version { get; } ``` #### Property Value Parameters: - (Version): ### StartPosition Gets or sets the time position where playback should begin for seekable media sources. When set before starting, the pipeline will automatically seek to this position after initialization. ```csharp public TimeSpan? StartPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): #### Remarks This property only affects seekable sources like media files. It has no effect on live sources. The actual seek operation occurs during the pipeline state transition to Paused. For precise seeking, consider using seekToKeyframe parameter based on your accuracy requirements. ### State Gets the current playback state of the pipeline (Free, Play, Pause, etc.). This property reflects the real-time status of media processing operations. ```csharp public PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): ### StopPosition Gets or sets the time position where playback should stop for seekable media sources. When set along with StartPosition, defines a segment of media to play or process. ```csharp public TimeSpan? StopPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): #### Remarks This property enables segment playback by defining the end boundary. Both StartPosition and StopPosition must be set to create a valid segment. The pipeline will automatically stop or loop (if Loop is enabled) when reaching this position. Useful for previewing specific portions of media or processing media segments. ## Methods ### AddBlock(IMediaBlock) Adds a media processing block to the pipeline. The block will be included in the pipeline's processing chain and can be connected to other blocks. This method is thread-safe and can only be called when the pipeline is in the Free state. ```csharp public bool AddBlock(IMediaBlock block) ``` #### Parameters Parameters: - block (IMediaBlock): The media block to add to the pipeline. Cannot be null. #### Returns Parameters: - (bool): true if the block was successfully added; false if the operation failed (e.g., null block, pipeline not in Free state, or block already exists). #### Examples
var sourceBlock = new UniversalSourceBlock(sourceSettings);
bool success = pipeline.AddBlock(sourceBlock);
if (success)
{
    Console.WriteLine("Block added successfully");
}
#### Remarks Special blocks like barcode detectors, face detection, and VU meters are automatically tracked separately for event handling. The pipeline must be in Free state to add blocks. Attempting to add the same block twice will result in a warning but return true. ### Build() Builds and prepares the media pipeline for execution. This method configures the internal pipeline structure, initializes logging and telemetry, and prepares all added media blocks for connection and playback. ```csharp public bool Build() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully built; false if the build process failed. #### Examples
// Add blocks to pipeline
pipeline.AddBlock(sourceBlock);
pipeline.AddBlock(encoderBlock);

// Build the pipeline
if (pipeline.Build())
{
    await pipeline.StartAsync();
}
#### Remarks This method should be called after adding all required media blocks but before starting playback. It performs essential initialization including Sentry telemetry configuration for error reporting. The pipeline must be successfully built before calling Start() or other playback methods. ### ClearBlocks() Removes all media blocks from the pipeline. This method clears both regular media blocks and special blocks (detectors, analyzers). The pipeline must be in the Free state to perform this operation. ```csharp public void ClearBlocks() ``` #### Examples
// Stop the pipeline first
await pipeline.StopAsync();

// Clear all blocks
pipeline.ClearBlocks();

// Add new blocks for different processing
pipeline.AddBlock(newSourceBlock);
#### Remarks This method is thread-safe and will only execute if the pipeline state is Free. Both the main media blocks collection and special blocks collection are cleared. Use this method to reset the pipeline before adding a new set of blocks. ### Close() Closes the pipeline and releases all resources including media elements and bus connections. This method transitions the pipeline to a stopped state and performs cleanup operations. ```csharp public void Close() ``` #### Remarks This method: - Disconnects bus message handlers to prevent memory leaks - Marks the pipeline context as closed - Clears internal data structures - Transitions the pipeline state to Free Consider using Dispose() or DisposeAsync() instead for complete resource cleanup. ### Connect(MediaBlockPad, MediaBlockPad) Connects two media blocks by linking an output pad to an input pad. This method establishes a data flow connection between blocks, automatically adding blocks to the pipeline if needed. The connection enables media data to flow from the output block to the input block during processing. ```csharp public bool Connect(MediaBlockPad output, MediaBlockPad input) ``` #### Parameters Parameters: - output (MediaBlockPad): The source pad that will provide media data. - input (MediaBlockPad): The destination pad that will receive media data. #### Returns Parameters: - (bool): true if the connection was successfully established; false if the operation failed due to null pads, null blocks, or connection errors. ### Connect(MediaBlock, MediaBlock) Connects two media blocks using their default output and input pads. This is a convenience method that automatically uses the primary output pad of the source block and the primary input pad of the destination block to establish the connection. ```csharp public bool Connect(MediaBlock output, MediaBlock input) ``` #### Parameters Parameters: - output (MediaBlock): The source media block that will provide data from its default output pad. - input (MediaBlock): The destination media block that will receive data on its default input pad. #### Returns Parameters: - (bool): true if the blocks were successfully connected; false if the operation failed due to null blocks or connection errors. ### Connect(MediaBlockPad[][]) Connects multiple media block pad pairs in a batch operation. This method allows connecting several output pads to input pads in a single call, useful for establishing multiple connections efficiently in complex pipelines. ```csharp public bool Connect(MediaBlockPad[][] pairs) ``` #### Parameters Parameters: - pairs (MediaBlockPad [ ] [ ]): An array of pad pair arrays, where each inner array contains exactly 2 elements: [output_pad, input_pad]. #### Returns Parameters: - (bool): true if all connections were successful; false if any connection failed. #### Exceptions Parameters: - (Exception): Thrown when any pad pair array does not contain exactly 2 elements. ### ConnectLive(MediaBlockPad, MediaBlockPad) Dynamically connects two media block pads while the pipeline is already running (live connection). This method enables runtime modification of the pipeline by establishing new connections between blocks without stopping playback. Useful for dynamic routing scenarios like switching between video sources. ```csharp public bool ConnectLive(MediaBlockPad output, MediaBlockPad input) ``` #### Parameters Parameters: - output (MediaBlockPad): The source pad that will provide media data. - input (MediaBlockPad): The destination pad that will receive media data. #### Returns Parameters: - (bool): true if the live connection was successfully established; false if the operation failed. #### Remarks Live connections allow for dynamic pipeline reconfiguration without interrupting playback. This is more complex than pre-built connections and may cause brief disruptions in data flow. Both pads must be in a compatible state for live linking to succeed. ### CreateEditingPipeline(string, ContextX) Creates a specialized MediaBlocksPipeline configured for non-linear video editing workflows. This factory method initializes a pipeline with timeline editing engine support for timeline-based editing. ```csharp public static MediaBlocksPipeline CreateEditingPipeline(string name = null, ContextX context = null) ``` #### Parameters Parameters: - name (string): Optional pipeline name for identification in logs and debugging. - context (ContextX): Optional logging context for centralized logging. #### Returns Parameters: - (MediaBlocksPipeline): A new MediaBlocksPipeline instance configured with editing capabilities. #### Remarks The editing pipeline uses the timeline editing engine which provides: - Timeline-based editing with multiple layers - Non-linear editing capabilities - Transition and effect support - Project management This is distinct from the standard playback/recording pipeline and is intended for video editing applications. ### Debug_GetPipeline() Gets the current media pipeline structure as a DOT format string for programmatic analysis or visualization. This method returns the raw DOT graph data without writing to a file. ```csharp public string Debug_GetPipeline() ``` #### Returns Parameters: - (string): DOT format string representing the complete pipeline structure with all elements, pads, and connections, or empty string if the pipeline is not available or DOT generation fails. #### Remarks The returned DOT string includes: - All media elements with their properties - Pad connections and caps - Element states - Data flow directions Use this method when you need to: - Programmatically analyze pipeline structure - Send pipeline graphs over network - Store graphs in databases - Generate custom visualizations The DOT format can be processed by Graphviz or other graph visualization libraries. ### Debug_SavePipeline(string) Saves the current media pipeline structure to a DOT file for visualization and debugging. The DOT file can be rendered into a graph image using Graphviz tools to visualize the complete pipeline structure. ```csharp public void Debug_SavePipeline(string name) ``` #### Parameters Parameters: - name (string): The base filename for the DOT file (without extension). The .dot extension will be added automatically. The file will be saved to the Debug_Dir directory. #### Remarks Pipeline graphs show: - All media elements in the pipeline - Pad connections between elements - Element properties and states - Caps (capabilities) negotiated between elements To view the graph: 1. Install Graphviz (https://graphviz.org/) 2. Run: dot -Tpng graph.dot -o graph.png 3. Open the resulting PNG file This is invaluable for debugging pad linking issues, caps negotiation problems, and understanding pipeline structure. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### DisposeAsync() Disposes the asynchronous. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): System.Threading.Tasks.ValueTask. ### Duration() Gets the total duration of the media content in the pipeline. This method queries the pipeline for the total duration of the media being processed. Duration is only available for seekable sources like files; live sources will return TimeSpan.Zero. ```csharp public TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): A representing the total duration of the media, or if duration cannot be determined. #### Examples
var duration = pipeline.Duration();
if (duration > TimeSpan.Zero)
{
    Console.WriteLine($"Media duration: {duration:hh\\:mm\\:ss}");
}
else
{
    Console.WriteLine("Duration not available (live source)");
}
#### Remarks Duration information is only available for seekable sources such as media files. Live sources (cameras, network streams) typically return TimeSpan.Zero as they have no defined end. The pipeline must be in a playing or paused state for duration queries to be reliable. This method performs a duration query internally. ### DurationAsync() Asynchronously queries the total duration of the media content in the pipeline without blocking the calling thread. This is the recommended method for duration queries from UI threads. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A Task that completes with a TimeSpan representing the total duration, or TimeSpan.Zero if unavailable. ### ~MediaBlocksPipeline() Finalizes an instance of the class. ```csharp protected ~MediaBlocksPipeline() ``` ### ForceGPUDecodersUsage(bool) Forces the pipeline to prioritize GPU hardware decoders over software decoders. This method adjusts decoder element rankings to prefer hardware-accelerated decoding for better performance. Note: Hardware decoder availability varies by platform and installed drivers. ```csharp public static void ForceGPUDecodersUsage(bool value = true) ``` #### Parameters Parameters: - value (bool): True to force GPU decoders to high priority; false to restore default rankings. ### GetBlock(string) Retrieves a media block from the pipeline by its name. The search is case-insensitive and returns the first block with a matching name. This method is thread-safe and can be called at any time. ```csharp public IMediaBlock GetBlock(string name) ``` #### Parameters Parameters: - name (string): The name of the block to retrieve. Cannot be null or empty. #### Returns Parameters: - (IMediaBlock): The with the specified name, or null if no block is found or the name is invalid. #### Examples
var sourceBlock = pipeline.GetBlock("VideoSource");
if (sourceBlock != null)
{
    // Use the retrieved block
    Console.WriteLine($"Found block: {sourceBlock.Name}");
}
#### Remarks Block names are assigned when creating media blocks and should be unique within a pipeline for best results. This method performs a case-insensitive string comparison to find the matching block. ### GetBlock(MediaBlockType) Retrieves the first media block from the pipeline that matches the specified block type. This method is useful for finding blocks by their functional type when the exact name is unknown. This method is thread-safe and can be called at any time. ```csharp public IMediaBlock GetBlock(MediaBlockType type_) ``` #### Parameters Parameters: - type_ (MediaBlockType): The to search for (e.g., VideoRenderer, AudioEncoder, etc.). #### Returns Parameters: - (IMediaBlock): The first of the specified type, or null if no matching block is found. #### Examples
var videoRenderer = pipeline.GetBlock(MediaBlockType.VideoRenderer);
if (videoRenderer is VideoRendererBlock renderer)
{
    // Configure the video renderer
    renderer.SetOutputSize(1920, 1080);
}
#### Remarks If multiple blocks of the same type exist in the pipeline, this method returns the first one found. For pipelines with multiple blocks of the same type, consider using GetBlock(string name) with specific names. ### GetContext() Gets the logging context that provides centralized logging services for this pipeline instance. The context manages the Serilog logger and provides structured logging methods for all pipeline operations. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The ContextX instance containing the configured logger and logging infrastructure. #### Remarks The logging context provides: - Structured logging with Serilog - Log level filtering (Debug, Info, Warning, Error) - File output when debug mode is enabled - Observable logging for event processing Blocks and pipeline components use this context for consistent logging throughout the framework. ### GetHardwareDecoders(string[]) Retrieves a list of available hardware decoders filtered by the specified criteria. This method queries the media framework registry for hardware-accelerated decoder elements that match the given filters. ```csharp public static Tuple[] GetHardwareDecoders(string[] filters) ``` #### Parameters Parameters: - filters (string [ ]): Array of filter strings to match against decoder names (e.g., "H264", "H265", "VP9"). #### Returns Parameters: - (Tuple < string , string > [ ]): Array of tuples containing decoder element names and their descriptions for matching hardware decoders. ### GetPipelineContext() Gets the internal pipeline context containing low-level media pipeline infrastructure and shared resources. This method provides access to the underlying pipeline implementation for advanced scenarios that require direct interaction with media components. ```csharp public BlockPipelineContext GetPipelineContext() ``` #### Returns Parameters: - (BlockPipelineContext): The BlockPipelineContext instance containing the media pipeline, callbacks, and pipeline-wide state. #### Remarks The pipeline context includes: - The media pipeline instance - Pipeline-wide callbacks and error handlers - Shared resources accessible by all media blocks - Pipeline state information This is intended for advanced scenarios. Most applications should use the higher-level MediaBlocksPipeline API. ### GetSoftwareH264Decoders() Gets the list of available software-based H.264 decoders. Returns the standard FFmpeg-based H.264 decoder that provides reliable software decoding capabilities. ```csharp public static Tuple[] GetSoftwareH264Decoders() ``` #### Returns Parameters: - (Tuple < string , string > [ ]): Array of tuples containing H.264 software decoder element names and descriptions. ### GetSoftwareH265Decoders() Gets the list of available software-based H.265/HEVC decoders. Returns the standard FFmpeg-based H.265 decoder that provides reliable software decoding capabilities. ```csharp public static Tuple[] GetSoftwareH265Decoders() ``` #### Returns Parameters: - (Tuple < string , string > [ ]): Array of tuples containing H.265 software decoder element names and descriptions. ### GetVRVideoControl() Gets the VR (Virtual Reality) video control interface for 360-degree or stereoscopic video playback. This method searches for VR-capable components in the pipeline and returns the control interface if available. ```csharp public IVRVideoControl GetVRVideoControl() ``` #### Returns Parameters: - (IVRVideoControl): An IVRVideoControl interface for controlling VR video features (projection mode, viewing angle, etc.), or null if no VR-capable component is found in the pipeline. #### Remarks The method searches for VR support in the following order: 1. The video view component 2. Media blocks implementing IVRVideoControl 3. Video renderer blocks with VR-capable video views VR video control enables features like equirectangular projection, viewing angle adjustment, and stereoscopic modes. ### NextFrame() Advances video playback by one frame in frame-by-frame stepping mode. This method pauses the pipeline and then steps forward by exactly one video frame, useful for precise video analysis, editing, or frame extraction scenarios. ```csharp public bool NextFrame() ``` #### Returns Parameters: - (bool): true if the frame step was successful; false if the operation failed or video renderer is unavailable. #### Remarks Frame stepping requires a video renderer to be present in the pipeline. The pipeline will be automatically paused before stepping to the next frame. Frame stepping precision depends on the video codec and whether frames are keyframes or predictive frames. ### OnPropertyChanged(string) Raises the PropertyChanged event for the specified property. This method is called automatically when properties are modified to notify listeners of changes. ```csharp protected virtual void OnPropertyChanged(string propertyName = null) ``` #### Parameters Parameters: - propertyName (string): The name of the property that changed. This is automatically populated by the CallerMemberName attribute. ### Pause() Pauses the media pipeline playback. This method transitions the pipeline from playing state to paused state, maintaining the current position. Playback can be resumed later using Resume() or ResumeAsync() methods. ```csharp public bool Pause() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully paused; false if the operation failed or the pipeline is not available. #### Examples
if (pipeline.Pause())
{
    Console.WriteLine("Pipeline paused successfully");
    // Later resume playback
    pipeline.Resume();
}
#### Remarks This method immediately changes the pipeline state to Pause and pauses the media pipeline. The method will return false if the pipeline is null or not properly initialized. Use PauseAsync() for asynchronous pause operations. ### PauseAsync() Asynchronously pauses the media pipeline playback without blocking the calling thread. This is the recommended method for pausing from UI threads to maintain responsiveness. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task): A Task that represents the asynchronous pause operation. ### Position_Get() Gets the current playback position in the media timeline. This method queries the pipeline for the current position during playback or recording. Position information is only meaningful for seekable sources like media files. ```csharp public TimeSpan Position_Get() ``` #### Returns Parameters: - (TimeSpan): A representing the current position, or if position cannot be determined or pipeline is not available. #### Remarks Position queries work best with seekable sources like local files. Live sources and non-seekable network streams may return zero or invalid positions. For UI progress bars or time displays, consider calling this method periodically (e.g., every 100-500ms) rather than on every frame. ### Position_GetAsync() Asynchronously queries the current playback position in the media timeline without blocking the calling thread. This is the recommended method for position queries from UI threads. ```csharp public Task Position_GetAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A Task that completes with a TimeSpan representing the current position, or TimeSpan.Zero if unavailable. ### Position_Set(TimeSpan, bool) Sets the playback position in the media timeline (seeking operation). This method performs a seek operation to jump to a specific time position in the media. Seeking is only supported for seekable sources like media files, not live streams. ```csharp public void Position_Set(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target position to seek to in the media timeline. - seekToKeyframe (bool): If set to true, seeks to the nearest keyframe for faster seeking but potentially less precise positioning. If false, seeks to the exact position which may be slower but more accurate. ### Position_SetAsync(TimeSpan, bool) Asynchronously sets the playback position (seeking) without blocking the calling thread. This is the recommended method for seeking from UI threads to maintain responsiveness. ```csharp public Task Position_SetAsync(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target position to seek to in the media timeline. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for faster seeking but potentially less precise positioning. If false, seeks to the exact position which may be slower but more accurate. #### Returns Parameters: - (Task): A Task representing the asynchronous seek operation. ### Position_SetRange(TimeSpan, TimeSpan, bool) Sets the playback range by seeking to a specific start and stop position in the media. This method performs a segment seek operation to limit playback to the specified time range. ```csharp public void Position_SetRange(TimeSpan startPosition, TimeSpan stopPosition, bool seekToKeyframe = false) ``` #### Parameters Parameters: - startPosition (TimeSpan): The position where playback should begin. - stopPosition (TimeSpan): The position where playback should end. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for more accurate positioning; if false, seeks to exact position. ### Position_SetRangeAsync(TimeSpan, TimeSpan, bool) Asynchronously sets the playback range by seeking to a specific start and stop position in the media. This method performs a segment seek operation to limit playback to the specified time range without blocking the calling thread. ```csharp public Task Position_SetRangeAsync(TimeSpan startPosition, TimeSpan stopPosition, bool seekToKeyframe = false) ``` #### Parameters Parameters: - startPosition (TimeSpan): The position where playback should begin. - stopPosition (TimeSpan): The position where playback should end. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for more accurate positioning; if false, seeks to exact position. #### Returns Parameters: - (Task): A Task representing the asynchronous seek operation. ### Rate_Get() Gets the current playback rate (speed) of the media pipeline. The rate determines how fast the media plays relative to normal speed (1.0 = normal, 2.0 = double speed, 0.5 = half speed). ```csharp public double Rate_Get() ``` #### Returns Parameters: - (double): A value representing the current playback rate, where 1.0 is normal speed. ### Rate_GetAsync() Asynchronously gets the current playback rate (speed) without blocking the calling thread. ```csharp public Task Rate_GetAsync() ``` #### Returns Parameters: - (Task < double >): A Task that completes with a double value representing the playback rate (1.0 = normal speed). ### Rate_Set(double) Sets the playback rate (speed) of the media pipeline. This method changes how fast the media plays back relative to normal speed. Rate changes require a video renderer to be present in the pipeline. ```csharp public bool Rate_Set(double rate) ``` #### Parameters Parameters: - rate (double): The playback rate where 1.0 is normal speed, values greater than 1.0 are faster, and values less than 1.0 are slower. Negative values enable reverse playback if supported. #### Returns Parameters: - (bool): true if the rate was successfully changed; false if the operation failed due to missing video renderer or other errors. ### Rate_SetAsync(double) Asynchronously sets the playback rate (speed) without blocking the calling thread. This is the recommended method for rate changes from UI threads to maintain responsiveness. ```csharp public Task Rate_SetAsync(double rate) ``` #### Parameters Parameters: - rate (double): The playback rate where 1.0 is normal speed, values greater than 1.0 are faster, and values less than 1.0 are slower. Negative values enable reverse playback if supported by the media format. #### Returns Parameters: - (Task < bool >): A Task that completes with true if the rate change was successful, false otherwise. ### Resume() Resumes media pipeline playback from a paused state. This method transitions the pipeline from paused state back to playing state, continuing from the current position without seeking. ```csharp public bool Resume() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully resumed; false if the operation failed or the pipeline is not available. #### Examples
// Pause the pipeline
pipeline.Pause();

// Later resume from the same position
if (pipeline.Resume())
{
    Console.WriteLine("Playback resumed successfully");
}
#### Remarks This method immediately changes the pipeline state to Play and resumes the media pipeline. The method will return false if the pipeline is null or not properly initialized. Use ResumeAsync() for asynchronous resume operations that return a Task. ### ResumeAsync() Asynchronously resumes media pipeline playback from a paused state without blocking the calling thread. This is the recommended method for resuming from UI threads to maintain responsiveness. ```csharp public Task ResumeAsync() ``` #### Returns Parameters: - (Task < bool >): A Task that completes with a boolean value: true if resume was successful, false otherwise. ### SendEOS() Sends an End-of-Stream (EOS) event to the pipeline for graceful playback termination. This method allows the pipeline to finish processing any remaining data before stopping, ensuring proper file closure and resource cleanup. This is the recommended way to stop recording or playback. ```csharp public void SendEOS() ``` #### Examples
// Gracefully stop recording to ensure file integrity
pipeline.SendEOS();

// Wait for the pipeline to finish processing
await pipeline.WaitForStateChangeAsync(PlaybackState.Stop);
#### Remarks The EOS event propagates through the entire pipeline, allowing each element to flush remaining data. This is particularly important for file outputs to ensure proper file structure and prevent corruption. After sending EOS, the pipeline will transition to the stopped state once all data is processed. Use this method instead of Stop() when you need to ensure all data is properly written. ### SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler) Sets a custom error handler to process pipeline errors before the default error handling logic. The custom handler receives priority and can choose to suppress default error processing. ```csharp public void SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler errorHandler) ``` #### Parameters Parameters: - errorHandler (IMediaBlocksPipelineCustomErrorHandler): The custom error handler implementation, or null to remove custom handling and restore default behavior. #### Remarks Custom error handlers enable application-specific error processing such as: - Custom error recovery strategies - Specialized error logging or reporting - Suppressing specific error types - Translating media framework errors to application-specific error codes The handler's ErrorHandler method receives the message bus, message, and pipeline, allowing low-level inspection of the error. Return true to suppress default handling, false to allow it. ### SetLicenseKey(string, string, string) Activates the SDK with the provided license credentials to remove trial limitations. This method must be called with valid license information obtained from VisioForge to unlock the full functionality of the SDK and remove any trial restrictions or nag screens. ```csharp public void SetLicenseKey(string licenseKey, string username, string email) ``` #### Parameters Parameters: - licenseKey (string): The license key string provided by VisioForge after purchase. - username (string): The username associated with the license purchase (currently not used but required for future compatibility). - email (string): The email address associated with the license purchase (currently not used but required for future compatibility). #### Examples
pipeline.SetLicenseKey("your_license_key_here", "username", "email@example.com");
### Start(bool) Starts this instance. ```csharp public bool Start(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): if set to true only preload and set to Pause. #### Returns Parameters: - (bool): true if successfull, false otherwise. ### StartAsync(bool) Starts the media pipeline asynchronously for playback or recording. This method builds the media pipeline, connects all media blocks, and transitions to the playing state. Optionally, the pipeline can be preloaded to a paused state for faster subsequent playback. ```csharp public Task StartAsync(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, the pipeline will be built and preloaded but remain in paused state instead of playing. This allows for faster playback startup later. #### Returns Parameters: - (Task < bool >): A that represents the asynchronous start operation. The task result is true if the pipeline started successfully; otherwise, false. #### Examples
// Standard playback start
bool started = await pipeline.StartAsync();
if (started)
{
    Console.WriteLine("Pipeline started successfully");
}

// Preload for faster subsequent playback
bool preloaded = await pipeline.StartAsync(onlyPreload: true);
if (preloaded)
{
    // Later start actual playback quickly
    await pipeline.ResumeAsync();
}
#### Remarks This method handles the complete pipeline initialization process: - Validates pipeline state and prevents multiple simultaneous start operations - Builds the internal media pipeline from added media blocks - Connects all block inputs and outputs according to their media types - Configures bus message handling for events and errors - Transitions the pipeline to playing state (or paused if onlyPreload is true) If the pipeline is already in paused state, this method will resume playback instead of rebuilding. The method is thread-safe and prevents concurrent start operations. ### Stop(bool) Stops the media pipeline and halts all processing operations. This method brings the pipeline to a complete stop and transitions to the Free state. Source blocks are stopped first, followed by pipeline state transition and resource cleanup. ```csharp public bool Stop(bool force = false) ``` #### Parameters Parameters: - force (bool): If set to true, forces immediate pipeline shutdown without waiting for graceful EOS processing. For file outputs, this may cause incomplete frames or file corruption. Use graceful shutdown (false) for production recording scenarios. #### Returns Parameters: - (bool): true if the pipeline was successfully stopped; false if the operation failed or stop was already in progress. ### StopAsync(bool) Asynchronously stops the media pipeline and halts all processing operations without blocking the calling thread. This is the recommended method for stopping from UI threads to maintain responsiveness. ```csharp public Task StopAsync(bool force = false) ``` #### Parameters Parameters: - force (bool): If set to true, forces immediate pipeline shutdown without waiting for graceful EOS (End-of-Stream) processing. For file outputs, this may cause incomplete frames or file corruption. Use graceful shutdown (false) for production recording scenarios to ensure proper file finalization. #### Returns Parameters: - (Task < bool >): A Task that completes with a boolean value: true if stop was successful, false if already stopped. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ### WaitForStop() Synchronously waits for the pipeline to reach the stopped (Free) state, blocking the calling thread. This method polls the pipeline state and returns when playback has fully stopped. ```csharp public void WaitForStop() ``` #### Remarks This method blocks the calling thread while waiting for the pipeline to stop. It polls the State property every 50 milliseconds until PlaybackState.Free is reached. For UI applications, consider using WaitForStopAsync() instead to avoid blocking the UI thread. ### WaitForStopAsync() Asynchronously waits for the pipeline to reach the stopped (Free) state without blocking the calling thread. This method polls the pipeline state and completes when playback has fully stopped. ```csharp public Task WaitForStopAsync() ``` #### Returns Parameters: - (Task): A Task that completes when the pipeline transitions to the Free state. #### Remarks This method is useful for coordinating pipeline shutdown with other application logic. It polls the State property every 50 milliseconds until PlaybackState.Free is reached. For applications that need to perform cleanup after the pipeline stops, await this method before proceeding with cleanup operations. ### OnBusStreamCollection Event raised when stream collection information becomes available from the pipeline bus. Provides detailed information about all video, audio, and subtitle streams in the media content. ```csharp public event EventHandler> OnBusStreamCollection ``` #### Event Type Parameters: - (EventHandler < Tuple < VideoStreamInfo [ ] , AudioStreamInfo [ ] , SubtitleStreamInfo [ ] > >): ### OnError Event raised when an error occurs during pipeline operation. Provides detailed error information including severity level and descriptive message. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): ### OnLoop Event raised when the pipeline completes processing and automatically restarts due to the Loop property being enabled. This allows for continuous playback of media content. ```csharp public event EventHandler OnLoop ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnPause Event raised when the pipeline is paused, temporarily suspending media processing. The pipeline can be resumed from the current position without losing state. ```csharp public event EventHandler OnPause ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnReady Event raised when the pipeline has completed initialization and is ready for operation. This indicates that all blocks have been configured and the pipeline is prepared to start. ```csharp public event EventHandler OnReady ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnResume Event raised when the pipeline resumes processing after being paused. Media processing continues from the position where it was paused. ```csharp public event EventHandler OnResume ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStart Event raised when the pipeline successfully starts media processing. This indicates that all blocks are initialized and data flow has begun. ```csharp public event EventHandler OnStart ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStop Event raised when the pipeline stops media processing, either normally or due to an error. Provides information about the final position and reason for stopping. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): ### PropertyChanged Event raised when any pipeline property value changes. Supports data binding and property change notifications in UI frameworks. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): ## See Also --- # Enum MediaBlockType Link: api/VisioForge.Core.MediaBlocks.MediaBlockType.html # Enum MediaBlockType # Enum MediaBlockType **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Enumeration defining the types of media processing blocks available in the MediaBlocks pipeline system. This includes sources (file, camera, stream), processors (effects, converters, mixers), encoders (H.264, AAC, etc.), and sinks (file writers, streamers, hardware outputs). Each type represents a specific functional category that determines how the block processes and routes media data within the pipeline. ```csharp public enum MediaBlockType ``` ## Fields Parameters: - UniversalSource (): Universal media source block that can handle various file formats and includes built-in decoders for automatic format detection and decoding of audio/video streams. - DemuxerSource (): Demultiplexer source block that separates audio/video streams from container formats without performing decoding, providing raw encoded streams for custom processing. - PlayBinSource (): Comprehensive playback source using GStreamer's playbin element, providing automatic format detection, demuxing, and decoding in a single high-level component. - BasicFileSource (): Basic file source block for reading raw media data from files without format detection or decoding, typically used for pre-processed or elementary streams. - RTSPSource (): Real-Time Streaming Protocol (RTSP) source block for receiving video/audio streams from IP cameras, streaming servers, and other RTSP-compliant sources over networks. - RTSPRAWSource (): Raw RTSP source block that provides unprocessed RTSP stream data without automatic demuxing or decoding, useful for custom processing or analysis of RTSP packets. - RTMPSource (): Real Time Messaging Protocol (RTMP) source block for receiving video/audio streams from RTMP servers, CDNs, and live streaming platforms over networks. - VirtualVideoSource (): Virtual video source block that generates synthetic video frames programmatically, useful for test patterns, blank frames, or custom generated video content. - VirtualAudioSource (): Virtual audio source block that generates synthetic audio signals programmatically, useful for test tones, silence generation, or custom audio synthesis. - SystemVideoSource (): System video source block that captures video from platform-specific video devices such as webcams, capture cards, and other system-recognized video input hardware. - SystemAudioSource (): System audio source block that captures audio from platform-specific audio devices such as microphones, line inputs, and other system-recognized audio input hardware. - PulseAudioSource (): PulseAudio source block that captures audio from PulseAudio sound server on Linux systems. Uses the pulsesrc GStreamer element for audio capture from PulseAudio devices. - DecklinkVideoSource (): Blackmagic Design DeckLink video capture source block for professional video input. Captures video from DeckLink capture cards supporting SDI, HDMI, and analog interfaces. - DecklinkAudioSource (): Blackmagic Design DeckLink audio capture source block for professional audio input. Captures audio from DeckLink capture cards with support for embedded and analog audio. - DecklinkVideoAudioSource (): Blackmagic Design DeckLink combined video and audio capture source block. Simultaneously captures synchronized video and audio from DeckLink capture cards. - ScreenSource (): Screen capture source block that records the desktop screen, specific windows, or screen regions, including support for multi-monitor setups and cursor capture. - StreamSource (): Generic stream source block that reads media data from .NET Stream objects, enabling playback from memory streams, network streams, or custom stream implementations. - StreamSourceWithDecoding (): Stream source block with integrated decoding capabilities for .NET Stream objects. Automatically demuxes and decodes media streams for immediate playback or processing. - ImageVideoSource (): Image-to-video source block that converts static images or image sequences into video streams, supporting various image formats and frame rate configurations. - ImageSequenceSource (): Image sequence source block that reads a sequence of images from a folder and outputs them as a video stream. Uses the GStreamer imagesequencesrc element to create video from image sequences with configurable frame rate. - VideoRenderer (): Video rendering block that displays video frames on screen using platform-specific rendering technologies, with support for various UI frameworks and display surfaces. - AudioRenderer (): Audio playback block that outputs audio to system sound devices, supporting various audio formats, sample rates, and multi-channel configurations. - VideoSampleGrabber (): Video sample grabber block that intercepts and captures individual video frames from the pipeline. Useful for frame analysis, thumbnail extraction, or custom video processing without stopping playback. - AudioSampleGrabber (): Audio sample grabber block that intercepts and captures audio samples from the pipeline. Enables audio level monitoring, waveform display, or custom audio analysis during playback. - DataSampleGrabber (): Generic data sample grabber block for capturing arbitrary media data from the pipeline. Used for intercepting and analyzing non-audio/video streams such as metadata or custom data types. - DebugTimestamp (): Debug timestamp block that logs timing information for media buffers passing through the pipeline. Helps diagnose synchronization issues, performance bottlenecks, and timing-related problems. - ImageOverlay (): Image overlay block that composites static images or logos onto video frames. Supports positioning, transparency, scaling, and animation for watermarking and branding. - SVGOverlay (): Scalable Vector Graphics (SVG) overlay block for rendering resolution-independent vector graphics onto video. Ideal for dynamic, high-quality logos, icons, and graphics that scale without quality loss. - Interlace (): Interlace block that converts progressive video to interlaced format for broadcast and legacy systems. Combines alternating fields for compatibility with interlaced display standards like PAL and NTSC. - TextOverlay (): Text overlay block that renders dynamic text onto video frames with customizable fonts, colors, and positioning. Supports timestamps, captions, titles, and real-time text updates for video annotation. - VideoResize (): Video resize block that scales video frames to different resolutions using various interpolation algorithms. Supports upscaling, downscaling, and aspect ratio adjustment for format conversion and optimization. - VideoCrop (): Video crop block that removes unwanted edges from video frames by specifying crop boundaries. Useful for removing black bars, focusing on regions of interest, or changing aspect ratios. - VideoAspectRatioCrop (): Video aspect ratio crop block that automatically crops video to a target aspect ratio. Intelligently removes edges while maintaining the center focus to achieve desired aspect ratios like 16:9 or 4:3. - VideoBox (): Video box block that adds colored borders or letterboxing around video frames. Useful for adding black bars, changing aspect ratios, or creating picture-in-picture effects with borders. - VideoPaddingChanger (): Video padding changer block that modifies or adds padding around video frames. Adjusts frame padding for alignment, format conversion, or memory layout requirements. - NVVideoResize (): NVIDIA hardware-accelerated video resize block using GPU for high-performance scaling. Provides faster video resizing on NVIDIA GPUs compared to CPU-based resizing. - NVDSDewarp (): NVIDIA DeepStream dewarp block for correcting lens distortion from fisheye and wide-angle cameras. GPU-accelerated dewarping for surveillance and automotive camera applications. - VideoMixer (): Video mixer block that composites multiple video streams into a single output. Supports picture-in-picture, split-screen, and multi-source video composition with configurable layouts. - VideoMixerSource (): Video mixer source block representing an individual input to a video mixer. Configures position, size, z-order, and transparency for a single stream in the mixer composition. - FlipRotate (): Flip and rotate block that transforms video orientation by flipping horizontally/vertically or rotating. Supports 90/180/270 degree rotations and mirror effects for correcting camera orientations. - FishEye (): Fisheye distortion effect block that applies or corrects fisheye lens distortion. Creates artistic fisheye effects or corrects wide-angle camera distortion. - ColorEffects (): Color effects block that applies color transformations and adjustments to video. Provides sepia, negative, color isolation, and other artistic color manipulation effects. - GaussianBlur (): Gaussian blur block that applies blur effects to video frames using Gaussian algorithms. Creates smooth blur effects for privacy masking, backgrounds, or artistic purposes. - Deinterlace (): Deinterlace block that converts interlaced video to progressive format. Removes comb artifacts from interlaced content for improved quality on progressive displays. - AutoDeinterlace (): Auto deinterlace block that automatically detects and deinterlaces interlaced content. Intelligently processes interlaced frames only when needed, preserving progressive content. - Gamma (): Gamma correction block that adjusts the gamma value of video for brightness and contrast enhancement. Corrects video brightness levels and improves visibility of dark or bright areas. - VideoBalance (): Video balance block for adjusting brightness, contrast, saturation, and hue of video. Provides comprehensive color and luminance correction for video quality enhancement. - Grayscale (): The grayscale video effect block. - ChromaKey (): The chroma key video effect block. - Bayer2RGB (): The Bayer to RGB conversion block. - Amplify (): Audio amplifier block that increases or decreases audio volume levels. Provides simple gain adjustment for boosting weak signals or reducing loud audio. - AudioBalance (): Audio balance block for adjusting left/right channel balance in stereo audio. Controls the distribution of audio between left and right speakers or channels. - CompressorExpander (): Compressor/expander block for dynamic range control of audio signals. Reduces loud sounds and amplifies quiet sounds for consistent audio levels and broadcasting. - Echo (): Echo effect block that adds delayed and attenuated copies of audio for echo and reverb effects. Creates spatial depth and ambience by simulating sound reflections. - Equalizer10 (): 10-band equalizer block for precise frequency-specific audio adjustment. Provides control over 10 frequency bands for detailed audio tone shaping and enhancement. - EqualizerParametric (): Parametric equalizer block with fully configurable center frequency, gain, and bandwidth. Offers professional-grade frequency control for precise audio correction and enhancement. - ScaleTempo (): Scale tempo block that changes audio playback speed without affecting pitch. Enables time-stretching for slow-motion or fast-forward effects while preserving audio quality. - Pitch (): The pitch shift block for audio pitch adjustment. - Volume (): Volume adjustment block for controlling overall audio loudness levels. Provides fine-grained volume control with mute capability for audio mixing and playback. - VUMeter (): VU (Volume Unit) meter block for real-time audio level monitoring and visualization. Measures and reports peak and RMS audio levels for monitoring and metering applications. - NullRenderer (): Null renderer block that consumes media data without displaying or outputting it. Useful for testing pipelines, driving playback, or discarding unwanted streams. - SuperBlock (): SuperBlock container that encapsulates multiple MediaBlocks into a single reusable component. Enables creating complex, pre-configured processing chains as modular, reusable units. - BarcodeDetector (): Barcode detector block that identifies and decodes 1D barcodes (UPC, EAN, Code128, etc.) from video frames. Enables real-time barcode scanning for inventory, retail, and logistics applications. - DataMatrixDecoder (): The DataMatrix decoder block for detecting and decoding DataMatrix 2D barcodes. - Tee (): Tee block that splits a single media stream into multiple identical output streams. Enables sending the same data to multiple destinations for parallel processing or redundancy. - Queue (): Queue block that provides buffering and decoupling between pipeline elements. Smooths data flow, prevents stalling, and enables multi-threaded pipeline execution. - LiveSync (): The livesync block for live stream synchronization. - ParseBin (): Parse bin block that automatically detects and parses elementary streams without decoding. Identifies stream format and prepares it for decoding or direct processing. - DecodeBin (): Decode bin block that automatically selects and configures appropriate decoders for media streams. Provides automatic codec detection and decoding for various audio and video formats. - SubtitleOverlay (): Subtitle overlay block that renders subtitle text onto video frames. Supports various subtitle formats (SRT, ASS, SSA) with customizable styling and positioning. - SubtitleSource (): Subtitle source block that reads subtitle files and provides subtitle streams. Loads and parses subtitle files for synchronization with video content. - H264Encoder (): H.264/AVC video encoder block for high-quality, efficient video compression. Industry-standard codec for video streaming, broadcasting, and file storage with wide compatibility. - HEVCEncoder (): H.265/HEVC video encoder block for next-generation video compression with improved efficiency. Provides up to 50% better compression than H.264 while maintaining quality, ideal for 4K and HDR content. - AACEncoder (): AAC (Advanced Audio Coding) encoder block for high-quality, efficient audio compression. Modern audio codec providing superior quality to MP3 at similar bitrates, widely used in streaming and broadcasting. - ADPCMCEncoder (): ADPCM audio encoder block for compressed audio with low computational requirements. Useful for embedded systems, telephony, and applications requiring simple, fast audio compression. - ALAWEncoder (): A-law/G.711 audio encoder block for telephony and voice communication applications. Standard codec for PSTN and VoIP systems with 8-bit logarithmic compression. - AptXEncoder (): The AptX encoder block for Bluetooth audio encoding. - AptXDecoder (): The AptX decoder block for Bluetooth audio decoding. - MP4Sink (): MP4/MPEG-4 container sink block for creating MP4 video files. Widely compatible container format supporting H.264, HEVC, AAC, and multiple streams for web, mobile, and desktop playback. - MXFSink (): MXF (Material Exchange Format) container sink block for professional broadcast and post-production workflows. Industry-standard format for archiving, editing, and exchanging professional media content. - MPEGTSSink (): MPEG-TS (Transport Stream) container sink block for broadcast and streaming applications. Standard format for digital television broadcasting, IPTV, and live streaming with error resilience. - MPEGPSSink (): MPEG-PS (Program Stream) container sink block for DVD and similar applications. Container format designed for reliable media storage with multiplexed audio and video streams. - ASFSink (): ASF/WMV container sink block for creating Windows Media files. Microsoft's container format supporting WMV video and WMA audio for Windows-based applications. - AVISink (): The AVI sink block. - RTMPSink (): The RTMP sink block. - MP2Encoder (): The MP2 encoder block. - MP3Encoder (): The MP3 encoder block. - MKVSink (): The MKV sink block. - WebMSink (): The WebM sink block. - WAVSink (): The WAV sink block. - VPXEncoder (): The VP8/VP9 encoder block. - AV1Encoder (): AV1 encoder block. - MJPEGEncoder (): The MJPEG encoder block. - GIFEncoder (): The GIF encoder block. - PNGEncoder (): The PNG encoder block based on rspngenc for high-quality PNG image compression. - DVEncoder (): The DV encoder block. - DNxHDEncoder (): The DNxHD encoder. - MPEG2VideoEncoder (): The MPEG-2 video encoder. - MPEG4VideoEncoder (): The MPEG-4 (H263) video encoder. - TheoraEncoder (): The Theora encoder block. - VorbisEncoder (): The Vorbis encoder block. - SpeexEncoder (): The Speex encoder. - OGGSink (): The OGG sink block. - OPUSEncoder (): The OPUS audio encoder block. - AudioMixer (): The audio mixer block. - DecklinkAudioSink (): The Decklink audio sink block. - DecklinkVideoSink (): The Decklink video sink block. - DecklinkVideoAudioSink (): The Decklink video+audio sink block. - MOVSink (): The MOV sink block. - WMVEncoder (): The WMV encoder block. - FileSink (): The file sink block. - BufferSink (): The buffer sink block. - StreamSink (): The stream sink block. - FLACEncoder (): The FLAC encoder block. - WavpackEncoder (): The Wavpack encoder block. - WAVEncoder (): The WAV encoder block. - WMAEncoder (): The WMA encoder. - Mirror (): The video mirror block. - Perspective (): The perspective transform block. - Pinch (): The pinch transform block. - Rotate (): The video rotate transform block. - Sphere (): The sphere transform block. - Square (): The square transform block. - Stretch (): The stretch block. - Smooth (): The smooth block. - Tunnel (): The tunnel block. - Twirl (): The twirl block. - PushVideoSource (): The push video source. - PushAudioSource (): The push audio source. - VideoConverter (): The video converter block. - NVVideoConverter (): The Nvidia video converter block. - NVDataDownload (): The Nvidia data download block. - NVDataUpload (): The Nvidia data upload block. - NVH264Decoder (): The Nvidia H264 decoder. - NVH265Decoder (): The Nvidia H265 decoder. - NVVP8Decoder (): The Nvidia VP8 decoder. - NVVP9Decoder (): The Nvidia VP9 decoder. - NVAV1Decoder (): The Nvidia AV1 decoder. - NVMPEG1Decoder (): The Nvidia MPEG-1 decoder. - NVMPEG2Decoder (): The Nvidia MPEG-2 decoder. - NVMPEG4Decoder (): The Nvidia MPEG-4 decoder. - NVJPEGDecoder (): The Nvidia JPEG decoder. - AudioConverter (): The audio converter block. - AudioTimestampCorrector (): The audio timestamp corrector block. - AudioResampler (): The audio resampler block. - VideoRate (): The video rate. - QRCodeOverlay (): The QR code overlay block. - MPEG12Encoder (): The MPEG-1/MPEG-2 video encoder block. - BridgeAudioSink (): The bridge audio sink block. - BridgeAudioSource (): The bridge audio source block. - BridgeVideoSink (): The bridge video sink block. - BridgeVideoSource (): The bridge video source block. - BridgeSubtitleSink (): The bridge subtitle sink block. - BridgeSubtitleSource (): The bridge subtitle source block. - ProxySource (): The proxy source block. - ProxySink (): The proxy sink block. - BridgeBufferSink (): The bridge buffer sink block. - BridgeBufferSource (): The bridge buffer source block. - InterPipeSink (): The InterPipe sink. - InterPipeSource (): The InterPipe source. - Encryptor (): The encryptor block. - Decryptor (): The decryptor block. - DecryptorPlayer (): The decryptor player block. - MPEGTSDemux (): The MPEG-TS demux block. - QTDemux (): The QT (MP4/MOV) demux block. - UniversalDemux (): The Universal demux block. - AV1Parse (): The AV1 parse block. - H263Parse (): The H263 parse block. - H264Parse (): The H264 parse block. - H265Parse (): The H265 parse block. - JPEG2000Parse (): The JPEG2000 parse block. - MPEG12VideoParse (): The MPEG-1/2 video parse block. - MPEG4Parse (): The MPEG-4 parse block. - PNGParse (): The PNG parse block. - VC1Parse (): The VC1 parse block. - VP8Parse (): The VP8 parse block. - VP9Parse (): The VP9 parse block. - H264Decoder (): The H264 decoder block. - HEVCDecoder (): The HEVC decoder block supporting multiple implementations (FFmpeg, NVIDIA, QSV, AMF, D3D11, VAAPI). - VP8Decoder (): The VP8 decoder block. - VP9Decoder (): The VP9 decoder block. - AV1Decoder (): The AV1 decoder block supporting multiple implementations (dav1d, av1dec, hardware). - Aging (): Aging video effect block. - Dice (): The dice video effect block. - Edge (): The edge video effect block. - Quark (): The quark video effects filter. - OpticalAnimationBW (): The optical animation video effect block. - MovingBlur (): The moving blur video effect block. - Pseudo3D (): The pseudo 3D video effect block. - MovingEcho (): The moving echo effect block. - MovingZoomEcho (): The moving-zoom echo effect block. - Warp (): The warp video effect block. - WaterRipple (): The water ripple video effect block. - Ripple (): The ripple video effect block. - WideStereo (): Wide stereo audio effect block. - ChebyshevBandPassReject (): Chebyshev band pass and band reject audio effect block. - ChebyshevLimit (): Chebyshev low pass and high pass audio effect block. - Karaoke (): Karaoke audio effect block. - Reverberation (): Reverberation audio effect block. - RemoveSilence (): Remove silence audio effect block that detects and removes silent sections from audio. - SilenceDetector (): Silence detector block that analyzes audio streams to detect and report silence periods with configurable threshold and duration settings. Provides real-time callbacks and JSON export of detected silence periods with timestamps. - CsoundFilter (): Csound audio filter block for advanced audio synthesis and processing using Csound DSP engine. - Wavescope (): Wavescope audio visualizer block. - Synaescope (): Synaescope audio visualizer block. - Spectrascope (): Spectrascope audio visualizer block. - Spacescope (): Spacescope audio visualizer block. - LibVisualCorona (): LibVisual Corona audio visualizer block that creates sun-like corona effects synchronized to audio. - LibVisualInfinite (): LibVisual Infinite audio visualizer block that creates flowing infinite patterns synchronized to audio. - LibVisualJakdaw (): LibVisual Jakdaw audio visualizer block that creates Jakdaw-style visualization patterns synchronized to audio. - LibVisualJess (): LibVisual Jess audio visualizer block that creates Jess-style visualization patterns synchronized to audio. - LibVisualLVAnalyzer (): LibVisual LV Analyzer audio visualizer block that creates analyzer-style frequency display synchronized to audio. - LibVisualLVScope (): LibVisual LV Scope audio visualizer block that creates scope-style waveform display synchronized to audio. - LibVisualOinksie (): LibVisual Oinksie audio visualizer block that creates Oinksie-style visualization patterns synchronized to audio. - LibVisualBumpscope (): LibVisual Bumpscope audio visualizer block that creates bump scope visualization patterns synchronized to audio. - GLAlpha (): The alpha OpenGL block. - GLColorBalance (): The color balance OpenGL block. - GLGrayscale (): The grayscale OpenGL block. - GLResize (): The resize OpenGL block. - GLDeinterlace (): The deinterlace OpenGL block. - GLFlip (): The flip OpenGL block. - GLBlur (): Blur with 9x9 separable convolution OpenGL block. - GLFishEye (): The fish eye OpenGL block. - GLGlowLighting (): The glow lighting OpenGL block. - GLHeat (): The heat signature OpenGL block. - GLLumaCrossProcessing (): The luma cross processing OpenGL block. - GLMirror (): The mirror OpenGL block. - GLSepia (): The sepia OpenGL block. - GLSquare (): The square OpenGL block. - GLXRay (): The X-ray OpenGL block. - GLStretch (): The stretch OpenGL block. - GLLightTunnel (): The light tunnel OpenGL block. - GLTwirl (): The twirl OpenGL block. - GLSqueeze (): The squeeze OpenGL block. - GLSinCity (): The sin city movie gray-red OpenGL block. - GLBulge (): The bulge OpenGL block. - GLSobel (): The sobel OpenGL block. - GLLaplacian (): The laplacian OpenGL block. - GLDownload (): The OpenGL downloader block. - GLUpload (): The OpenGL uploader block. - GLOverlay (): The OpenGL overlay block. - GLVideoConverter (): The OpenGL video format converter block. - GLVirtualVideoSource (): The virtual video source block (OpenGL). - GLVideoRenderer (): The video renderer block (OpenGL). - GLVideoMixer (): The OpenGL video mixer block. - GLTransformation (): The OpenGL transformation block. - GLShader (): The OpenGL shader. - GLEquirectangularView (): The equirectangular view (OpenGL) block. - OSXAudioSink (): MacOS audio sink. - iOSAudioSink (): The iOS audio sink block. - OSXAudioSource (): MacOS audio source. - IOSVideoSource (): The iOS video source block. - AppleH264Encoder (): The Apple H264 encoder block. - AppleProResEncoder (): The Apple ProRes encoder block. - VideoEffects (): The video effects block. - AudioEffects (): The audio effects. - SqueezebackBlock (): The squeezeback block. - YouTubeSink (): YouTube sink block. - FacebookLiveSink (): The Facebook live sink block. - MP4Output (): The MP4 output block. - MP3Output (): The MP3 output. - YouTubeOutput (): YouTube output block. - FacebookLiveOutput (): The Facebook Live output block. - WebMOutput (): The WebM output. - HTTPMJPEGLiveSink (): The HTTP MJPEG sink block. - SeparateOutput (): The separate output block. - NDISink (): The NDI sink block. - NDISource (): The NDI source block. - NDISourceX (): The NDI source block (alternative). - FaceDetector (): The face detector block. - OpenCVTextOverlay (): The OpenCV text overlay block. - OpenCVDewarp (): The OpenCV dewarp block. - OpenCVFaceDetect (): The OpenCV face detect block. - OpenCVFaceBlur (): The OpenCV face blur block. - OpenCVDilate (): The OpenCV dilate block. - OpenCVErode (): The OpenCV erode block. - OpenCVEqualizeHistogram (): The OpenCV equalize histogram block. - OpenCVLaplace (): The OpenCV laplace block. - OpenCVSmooth (): The OpenCV smooth block. - OpenCVSobel (): The OpenCV sobel block. - OpenCVEdgeDetect (): The OpenCV edge detect block. - OpenCVHandDetect (): The OpenCV hand detect block. - OpenCVTracker (): The OpenCV tracker block. - OpenCVMotionCells (): The OpenCV motion cells. - OpenCVTemplateMatch (): The OpenCV template match block. - DVBSource (): The DVB source. - OverlayManager (): The overlay manager. - KLVFileSink (): The KLV metadata file sink. - VNCSource (): The VNC/RFB source. - CDGSource (): The CDG source. - HTTPSource (): The HTTP source. - HTTPMJPEGSource (): The HTTP MJPEG source. - JPEGDecoder (): The JPEG decoder. - Custom (): The custom media block. - CustomVideoEncoder (): The custom video encoder block. - CustomAudioEncoder (): The custom audio encoder block. - GenICamSource (): The GenICam camera source block. - BaslerSource (): The Basler camera source. - AlliedVisionSource (): The Allied Vision camera source. - SpinnakerSource (): The Spinnaker cameras (FLIR) source (available as plugin and custom redist). - SourceSwitch (): The source switch block. - LiveSourceSwitch (): The live source switch block. - MultiQueue (): The multi-queue block. - AWSS3Sink (): The AWS S3 sink block. - AWSS3Source (): The AWS S3 source block. - AWSS3HLSSink (): The AWS S3 HLS sink block. - HLSSink (): The HLS sink block. - DASHSink (): The DASH sink block. - SRTSource (): The SRT source block - SRTRAWSource (): The SRT RAW source block - SRTSink (): The SRT sink block. - SRTMPEGTSSource (): The SRT MPEG-TS source block. - SRTMPEGTSSink (): The SRT MPEG-TS sink block. - RaspberryPiSource (): The Raspberry Pi camera source block using rpicamsrc. - PushSource (): The push source block. - MKVOutput (): The MKV output block. - CascadeFaceDetector (): The cascade face detector block. - DNNFaceDetector (): The DNN face detector block. - AVIOutput (): The AVI output block. - M4AOutput (): M4A output block. - VAAPIH264Decoder (): VAAPI H264 decoder. - VAAPIHEVCDecoder (): VAAPI HEVC decoder. - VAAPIJPEGDecoder (): VAAPI JPEG decoder. - VAAPIVC1Decoder (): VAAPI VC1 decoder. - FaceDetectorMLKit (): The ML Kit face detector block. - FDSink (): The File Descriptor sink block. - KeyFrameDetector (): The key frame detector block. - RSInterSink (): RS inter sink block. - RSInterSource (): The RS inter source block. - MPEGAudioParse (): The MPEG audio parse block. - OGGVorbisOutput (): The OGG Vorbis output block. - FLACOutput (): The FLAC output block. - WMVOutput (): The WMV output block. - RTSPServer (): The RTSP server block. - OGGOpusOutput (): The OGG Opus output block. - LUTProcessor (): The LUT processor block. - VR360 (): The VR 360 block. - ShoutcastSink (): The shoutcast sink block. - OGGSpeexOutput (): The Ogg Speex output block. - AnimatedGIFSource (): Animated GIF source block. - DataProcessor (): Data processor block. - CustomTransform (): Custom transform block. - VideoScale (): Video scale block that resizes video frames with various scaling methods. - UniversalSourceBlockV2 (): Universal source block with custom pipeline creation. - SimpleVideoMark (): Simple video mark block that embeds invisible watermarks into video streams for identification and tracking. Uses GStreamer's simplevideomark element to insert digital marks that can be detected later. - SimpleVideoMarkDetect (): Simple video mark detect block that identifies and extracts watermarks from video streams. Uses GStreamer's simplevideomarkdetect element to detect marks embedded by SimpleVideoMark. - SMPTE (): SMPTE transition effect block that creates wipe transitions between two video sources. Uses GStreamer's smpte element to perform standard SMPTE transition patterns. - SMPTEAlpha (): SMPTE alpha transition effect block that creates wipe transitions with alpha channel support. Uses GStreamer's smptealpha element to perform SMPTE transitions with transparency. - RSAudioEcho (): RS Audio Echo effect block using rsaudioecho from rsaudiofx plugin. - AudioLoudNorm (): Audio loudness normalization block using audioloudnorm from rsaudiofx plugin. - AudioRNNoise (): RNN-based audio noise reduction block using audiornnoise from rsaudiofx plugin. - EbuR128Level (): EBU R128 loudness level measurement block using ebur128level from rsaudiofx plugin. - HRTFRender (): Head-Related Transfer Function spatial audio rendering block using hrtfrender from rsaudiofx plugin. - VP8AlphaDecodeBin (): VP8 alpha decode bin block that automatically decodes VP8 video streams with alpha channel. - VP9AlphaDecodeBin (): VP9 alpha decode bin block that automatically decodes VP9 video streams with alpha channel. - CodecAlphaDemux (): Codec alpha demultiplexer block that separates VP8/VP9 streams with alpha into color and alpha streams. - AlphaCombine (): Alpha combine block that merges color and alpha streams into RGBA/YUVA video. - RoundedCorners (): Rounded corners video effect block that adds rounded corners to video frames. - SRTPEncryptor (): SRTP (Secure Real-time Transport Protocol) encryptor block for encrypting RTP streams. - SRTPDecryptor (): SRTP (Secure Real-time Transport Protocol) decryptor block for decrypting SRTP streams. - PanZoom (): Pan and zoom video effect block that applies zoom and pan transformations to video frames using Cairo. --- # Class NVDataDownloadBlock Link: api/VisioForge.Core.MediaBlocks.Nvidia.NVDataDownloadBlock.html # Class NVDataDownloadBlock # Class NVDataDownloadBlock **Namespace**: VisioForge.Core.MediaBlocks.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA data download block for transferring video data from GPU to system memory. This block efficiently downloads video frames from NVIDIA GPU memory (CUDA) back to system memory for further processing or output. It's an essential component in GPU-accelerated pipelines where data needs to be transferred from GPU after hardware processing. Supports high-performance memory transfers with minimal CPU overhead, optimized for NVIDIA CUDA architecture. Commonly used after GPU-based video processing, encoding, or effects to bring data back for CPU processing or display. Implements the . Implements the . Implements the . ```csharp public class NVDataDownloadBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVDataDownloadBlock() Initializes a new instance of the class. Creates a GPU-to-CPU memory transfer block for NVIDIA hardware acceleration. ```csharp public NVDataDownloadBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the NVIDIA data download element within the pipeline. This method creates the GPU download element, establishes input and output pads, and prepares the block for high-performance GPU-to-CPU memory transfers. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the download element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this NVIDIA data download block. This method disposes of the GPU download element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the NVIDIA data download element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GPU download element. ### GetElement() Gets the underlying GStreamer element that performs the GPU memory download. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the NVIDIA data downloader. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for NVIDIA GPU hardware and required CUDA libraries. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA hardware acceleration is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this NVIDIA data download block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class NVDataUploadBlock Link: api/VisioForge.Core.MediaBlocks.Nvidia.NVDataUploadBlock.html # Class NVDataUploadBlock # Class NVDataUploadBlock **Namespace**: VisioForge.Core.MediaBlocks.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA data upload block for transferring video data from system memory to GPU. This block efficiently uploads video frames from system memory (CPU) to NVIDIA GPU memory (CUDA) for hardware-accelerated processing. It's the entry point for GPU acceleration in video pipelines, enabling subsequent GPU-based operations like encoding, decoding, effects, and transformations. Supports high-performance memory transfers with minimal CPU overhead, optimized for NVIDIA CUDA architecture. Essential for leveraging NVIDIA hardware acceleration in video processing workflows. Implements the . Implements the . Implements the . ```csharp public class NVDataUploadBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVDataUploadBlock() Initializes a new instance of the class. Creates a CPU-to-GPU memory transfer block for NVIDIA hardware acceleration. ```csharp public NVDataUploadBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the NVIDIA data upload element within the pipeline. This method creates the GPU upload element, establishes input and output pads, and prepares the block for high-performance CPU-to-GPU memory transfers. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the upload element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this NVIDIA data upload block. This method disposes of the GPU upload element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the NVIDIA data upload element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GPU upload element. ### GetElement() Gets the underlying GStreamer element that performs the GPU memory upload. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the NVIDIA data uploader. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for NVIDIA GPU hardware and required CUDA libraries. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA hardware acceleration is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this NVIDIA data upload block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class NVDSDewarpBlock Link: api/VisioForge.Core.MediaBlocks.Nvidia.NVDSDewarpBlock.html # Class NVDSDewarpBlock # Class NVDSDewarpBlock **Namespace**: VisioForge.Core.MediaBlocks.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA DeepStream dewarp block for GPU-accelerated fisheye image dewarping. This block performs high-performance fisheye lens distortion correction using NVIDIA CUDA, supporting real-time dewarping of camera feeds from fisheye lenses. Essential for security camera systems, automotive applications, and panoramic video processing where fisheye cameras provide wide field-of-view but require geometric correction. Leverages NVIDIA DeepStream SDK for optimal GPU performance and memory management. Implements the . Implements the . Implements the . ```csharp public class NVDSDewarpBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVDSDewarpBlock(NVDSDewarpSettings) Initializes a new instance of the class with the specified dewarp settings. ```csharp public NVDSDewarpBlock(NVDSDewarpSettings settings) ``` #### Parameters Parameters: - settings (NVDSDewarpSettings): The dewarp configuration settings containing GPU and calibration parameters. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the dewarp settings for this block. ```csharp public NVDSDewarpSettings Settings { get; set; } ``` #### Property Value Parameters: - (NVDSDewarpSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the NVIDIA DeepStream dewarp element within the pipeline. This method creates the dewarp filter with the specified configuration settings, establishes input and output pads, and prepares the block for fisheye correction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the dewarp element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this NVIDIA DeepStream dewarp block. This method disposes of the GPU dewarp filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the NVIDIA DeepStream dewarp element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the dewarp functionality. ### GetElement() Gets the underlying GStreamer element that performs the GPU dewarp operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the NVIDIA DeepStream dewarp filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for NVIDIA GPU hardware and required DeepStream libraries. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA DeepStream dewarp functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this NVIDIA DeepStream dewarp block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class NVVideoConverterBlock Link: api/VisioForge.Core.MediaBlocks.Nvidia.NVVideoConverterBlock.html # Class NVVideoConverterBlock # Class NVVideoConverterBlock **Namespace**: VisioForge.Core.MediaBlocks.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA video converter block for GPU-accelerated format conversion and color space transformation. This block performs high-performance video format conversions entirely on NVIDIA GPU hardware, supporting various pixel formats (YUV, RGB, NV12, etc.) and color space transformations. Leverages CUDA cores for parallel processing, achieving real-time conversion speeds even for high-resolution video. Essential for GPU-accelerated pipelines where format compatibility is required between different processing stages. Minimizes CPU usage and memory bandwidth by keeping data on the GPU throughout the conversion process. Implements the . Implements the . Implements the . ```csharp public class NVVideoConverterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVVideoConverterBlock() Initializes a new instance of the class. Creates a GPU-accelerated video format converter for NVIDIA hardware. ```csharp public NVVideoConverterBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the NVIDIA video converter element within the pipeline. This method creates the GPU converter element, establishes input and output pads, and prepares the block for high-performance format conversion on NVIDIA hardware. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the converter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this NVIDIA video converter block. This method disposes of the GPU converter element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the NVIDIA video converter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GPU converter. ### GetElement() Gets the underlying GStreamer element that performs the GPU format conversion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the NVIDIA video converter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for NVIDIA GPU hardware and required CUDA libraries. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA hardware acceleration is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this NVIDIA video converter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class NVVideoResizeBlock Link: api/VisioForge.Core.MediaBlocks.Nvidia.NVVideoResizeBlock.html # Class NVVideoResizeBlock # Class NVVideoResizeBlock **Namespace**: VisioForge.Core.MediaBlocks.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA video resize block for GPU-accelerated video scaling and resolution conversion. This block performs high-performance video resizing entirely on NVIDIA GPU hardware, supporting upscaling and downscaling with various interpolation algorithms optimized for CUDA. Achieves real-time performance even for 4K/8K video processing by leveraging parallel GPU cores. Essential for resolution adaptation, multi-resolution encoding, video wall applications, and any scenario requiring efficient video scaling. Maintains video quality through advanced GPU-based filtering while minimizing latency. Implements the . Implements the . Implements the . ```csharp public class NVVideoResizeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVVideoResizeBlock(Size) Initializes a new instance of the class with the specified target resolution. ```csharp public NVVideoResizeBlock(Size resolution) ``` #### Parameters Parameters: - resolution (Size): The target resolution for video output. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Resolution Gets or sets the target resolution for video resizing. Specifies the output width and height in pixels. ```csharp public Size Resolution { get; set; } ``` #### Property Value Parameters: - (Size): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the NVIDIA video resize filter within the pipeline. This method creates the GPU resize filter with the specified resolution settings, establishes input and output pads, and prepares the block for high-performance scaling. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the resize filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this NVIDIA video resize block. This method disposes of the GPU resize filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the NVIDIA video resize filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GPU resize filter. ### GetElement() Gets the underlying GStreamer element that performs the GPU video resizing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the NVIDIA resize filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for NVIDIA GPU hardware and required CUDA libraries. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA hardware acceleration is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this NVIDIA video resize block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Nvidia Link: api/VisioForge.Core.MediaBlocks.Nvidia.html # Namespace VisioForge.Core.MediaBlocks.Nvidia # Namespace VisioForge.Core.MediaBlocks.Nvidia ### Classes Parameters: - (): NVIDIA DeepStream dewarp block for GPU-accelerated fisheye image dewarping. This block performs high-performance fisheye lens distortion correction using NVIDIA CUDA, supporting real-time dewarping of camera feeds from fisheye lenses. Essential for security camera systems, automotive applications, and panoramic video processing where fisheye cameras provide wide field-of-view but require geometric correction. Leverages NVIDIA DeepStream SDK for optimal GPU performance and memory management. Implements the . Implements the . Implements the . - (): NVIDIA data download block for transferring video data from GPU to system memory. This block efficiently downloads video frames from NVIDIA GPU memory (CUDA) back to system memory for further processing or output. It's an essential component in GPU-accelerated pipelines where data needs to be transferred from GPU after hardware processing. Supports high-performance memory transfers with minimal CPU overhead, optimized for NVIDIA CUDA architecture. Commonly used after GPU-based video processing, encoding, or effects to bring data back for CPU processing or display. Implements the . Implements the . Implements the . - (): NVIDIA data upload block for transferring video data from system memory to GPU. This block efficiently uploads video frames from system memory (CPU) to NVIDIA GPU memory (CUDA) for hardware-accelerated processing. It's the entry point for GPU acceleration in video pipelines, enabling subsequent GPU-based operations like encoding, decoding, effects, and transformations. Supports high-performance memory transfers with minimal CPU overhead, optimized for NVIDIA CUDA architecture. Essential for leveraging NVIDIA hardware acceleration in video processing workflows. Implements the . Implements the . Implements the . - (): NVIDIA video converter block for GPU-accelerated format conversion and color space transformation. This block performs high-performance video format conversions entirely on NVIDIA GPU hardware, supporting various pixel formats (YUV, RGB, NV12, etc.) and color space transformations. Leverages CUDA cores for parallel processing, achieving real-time conversion speeds even for high-resolution video. Essential for GPU-accelerated pipelines where format compatibility is required between different processing stages. Minimizes CPU usage and memory bandwidth by keeping data on the GPU throughout the conversion process. Implements the . Implements the . Implements the . - (): NVIDIA video resize block for GPU-accelerated video scaling and resolution conversion. This block performs high-performance video resizing entirely on NVIDIA GPU hardware, supporting upscaling and downscaling with various interpolation algorithms optimized for CUDA. Achieves real-time performance even for 4K/8K video processing by leveraging parallel GPU cores. Essential for resolution adaptation, multi-resolution encoding, video wall applications, and any scenario requiring efficient video scaling. Maintains video quality through advanced GPU-based filtering while minimizing latency. Implements the . Implements the . Implements the . --- # Class CVDewarpBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVDewarpBlock.html # Class CVDewarpBlock # Class CVDewarpBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV dewarp block for geometric distortion correction in video streams. This block performs lens distortion correction, perspective transformation, and barrel/pincushion distortion removal using OpenCV's computer vision algorithms. Essential for correcting footage from wide-angle lenses, fisheye cameras, or action cameras that produce geometric distortions. Supports various distortion models including radial and tangential distortion correction. Commonly used in surveillance systems, automotive applications, and 360-degree video processing. Implements the . Implements the . Implements the . ```csharp public class CVDewarpBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVDewarpBlock(CVDewarpSettings) Initializes a new instance of the class with the specified distortion correction settings. ```csharp public CVDewarpBlock(CVDewarpSettings settings) ``` #### Parameters Parameters: - settings (CVDewarpSettings): The dewarp configuration settings containing distortion correction parameters. ## Properties ### Input Gets the input pad for connecting distorted video sources. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this dewarp block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this dewarp block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the dewarp configuration settings. Defines distortion correction parameters, transformation matrices, and calibration data. ```csharp public CVDewarpSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVDewarpSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV dewarp element within the pipeline. This method creates the dewarp filter with the specified distortion correction settings, establishes input and output pads, and prepares the block for geometric transformation. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the dewarp element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV dewarp block. This method disposes of the dewarp element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV dewarp element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the dewarp functionality. ### GetElement() Gets the underlying GStreamer element that performs the dewarp operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV dewarp filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and geometric transformation support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV dewarp functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV dewarp block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVDilateBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVDilateBlock.html # Class CVDilateBlock # Class CVDilateBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV dilate block for morphological image processing operations. This block performs dilation, a fundamental morphological operation that expands white regions (foreground objects) in binary or grayscale images. Dilation is commonly used for noise removal, object enhancement, filling gaps in contours, and connecting nearby objects. The operation uses a structuring element (kernel) that defines the shape and size of the dilation. Essential for image preprocessing in computer vision applications, medical imaging, and object detection. Implements the . Implements the . Implements the . ```csharp public class CVDilateBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVDilateBlock() Initializes a new instance of the class. Creates a morphological dilation block with default kernel settings. ```csharp public CVDilateBlock() ``` ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this dilate block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this dilate block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV dilate element within the pipeline. This method creates the dilate filter with default morphological settings, establishes input and output pads, and prepares the block for image processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the dilate element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV dilate block. This method disposes of the dilate element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV dilate element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the dilate functionality. ### GetElement() Gets the underlying GStreamer element that performs the dilate operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV dilate filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and morphological operations support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV dilate functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV dilate block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVEdgeDetectBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVEdgeDetectBlock.html # Class CVEdgeDetectBlock # Class CVEdgeDetectBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV edge detection block for identifying boundaries and contours in video streams. This block performs edge detection using various computer vision algorithms including Canny, Sobel, Laplacian, and Scharr operators. Edge detection is fundamental for object recognition, feature extraction, image segmentation, and computer vision applications. The block provides configurable threshold parameters, gradient calculations, and noise reduction capabilities. Essential for medical imaging, industrial inspection, autonomous vehicles, and surveillance systems. Implements the . Implements the . Implements the . ```csharp public class CVEdgeDetectBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVEdgeDetectBlock(CVEdgeDetectSettings) Initializes a new instance of the class with the specified edge detection settings. ```csharp public CVEdgeDetectBlock(CVEdgeDetectSettings settings) ``` #### Parameters Parameters: - settings (CVEdgeDetectSettings): The edge detection configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this edge detection block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this edge detection block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the edge detection configuration settings. Defines algorithm selection, threshold parameters, and detection sensitivity. ```csharp public CVEdgeDetectSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVEdgeDetectSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV edge detection element within the pipeline. This method creates the edge detection filter with the specified algorithm settings, establishes input and output pads, and prepares the block for computer vision processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the edge detection element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV edge detection block. This method disposes of the edge detection element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV edge detection element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the edge detection functionality. ### GetElement() Gets the underlying GStreamer element that performs the edge detection operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV edge detection filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and edge detection algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV edge detection functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV edge detection block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVEqualizeHistogramBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVEqualizeHistogramBlock.html # Class CVEqualizeHistogramBlock # Class CVEqualizeHistogramBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV histogram equalization block for automatic image contrast enhancement. This block performs histogram equalization to improve image contrast by redistributing pixel intensities across the full dynamic range. The algorithm analyzes the image histogram and applies a transformation that spreads out the most frequent intensity values, resulting in enhanced visual quality. Essential for medical imaging, surveillance systems, and low-light video enhancement where contrast improvement is critical for analysis. Implements the . Implements the . Implements the . ```csharp public class CVEqualizeHistogramBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVEqualizeHistogramBlock() Initializes a new instance of the class. Creates a histogram equalization block with default contrast enhancement settings. ```csharp public CVEqualizeHistogramBlock() ``` ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this histogram equalization block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this histogram equalization block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV histogram equalization element within the pipeline. This method creates the histogram equalization filter with default settings, establishes input and output pads, and prepares the block for contrast enhancement. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the histogram equalization element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV histogram equalization block. This method disposes of the histogram equalization element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV histogram equalization element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the histogram equalization functionality. ### GetElement() Gets the underlying GStreamer element that performs the histogram equalization operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV histogram equalization filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and histogram processing support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV histogram equalization functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV histogram equalization block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVErodeBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVErodeBlock.html # Class CVErodeBlock # Class CVErodeBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV erode block for morphological image processing operations. This block performs erosion, a fundamental morphological operation that shrinks white regions (foreground objects) in binary or grayscale images. Erosion is commonly used for noise removal, thin line detection, separating connected objects, and removing small artifacts. The operation uses a structuring element (kernel) that defines the shape and size of the erosion. Often paired with dilation for opening/closing operations in computer vision preprocessing. Implements the . Implements the . Implements the . ```csharp public class CVErodeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVErodeBlock() Initializes a new instance of the class. Creates a morphological erosion block with default kernel settings. ```csharp public CVErodeBlock() ``` ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this erode block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this erode block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV erode element within the pipeline. This method creates the erode filter with default morphological settings, establishes input and output pads, and prepares the block for image processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the erode element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV erode block. This method disposes of the erode element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV erode element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the erode functionality. ### GetElement() Gets the underlying GStreamer element that performs the erode operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV erode filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and morphological operations support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV erode functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV erode block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVFaceBlurBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVFaceBlurBlock.html # Class CVFaceBlurBlock # Class CVFaceBlurBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face blur block for automatic privacy protection in video streams. This block combines face detection with blur effects to automatically obscure faces for privacy compliance. Uses machine learning algorithms to detect human faces in real-time and applies configurable blur effects to protect individual privacy. Essential for surveillance systems, social media platforms, and video conferencing applications where privacy regulations require face anonymization. Supports multiple blur algorithms and adjustable detection sensitivity for various lighting conditions. Implements the . Implements the . Implements the . ```csharp public class CVFaceBlurBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVFaceBlurBlock(CVFaceBlurSettings) Initializes a new instance of the class with the specified face detection and blurring settings. ```csharp public CVFaceBlurBlock(CVFaceBlurSettings settings) ``` #### Parameters Parameters: - settings (CVFaceBlurSettings): The face blur configuration settings containing detection and privacy parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this face blur block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this face blur block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the face blur configuration settings. Defines detection sensitivity, blur parameters, and privacy protection options. ```csharp public CVFaceBlurSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVFaceBlurSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV face blur element within the pipeline. This method creates the face blur filter with the specified detection and blurring settings, establishes input and output pads, and prepares the block for privacy protection processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the face blur element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV face blur block. This method disposes of the face blur element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV face blur element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the face blur functionality. ### GetElement() Gets the underlying GStreamer element that performs the face blur operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV face blur filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and face detection/blurring support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV face blur functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV face blur block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVFaceDetectBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVFaceDetectBlock.html # Class CVFaceDetectBlock # Class CVFaceDetectBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face detection block for identifying and tracking human faces in video streams. This block uses advanced computer vision algorithms including Haar cascades, LBP (Local Binary Patterns), and deep learning models to detect faces in real-time. Provides configurable detection parameters, face tracking capabilities, and event notifications when faces are found. Essential for security systems, attendance tracking, emotion recognition, and interactive applications. Supports multiple face detection simultaneously with bounding box coordinates and confidence scores. Implements the . Implements the . Implements the . ```csharp public class CVFaceDetectBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVFaceDetectBlock(CVFaceDetectSettings) Initializes a new instance of the class with the specified face detection settings. ```csharp public CVFaceDetectBlock(CVFaceDetectSettings settings) ``` #### Parameters Parameters: - settings (CVFaceDetectSettings): The face detection configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this face detection block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this face detection block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the face detection configuration settings. Defines detection algorithms, sensitivity parameters, and output options. ```csharp public CVFaceDetectSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVFaceDetectSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV face detection element within the pipeline. This method creates the face detection filter with the specified algorithm settings, establishes input and output pads, and prepares the block for computer vision processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the face detection element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV face detection block. This method disposes of the face detection element, unsubscribes from events, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV face detection element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the face detection functionality. ### GetElement() Gets the underlying GStreamer element that performs the face detection operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV face detection filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and face detection algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV face detection functionality is available; otherwise, false. ### ProcessBusMessage(Structure) Processes GStreamer bus messages for face detection events and notifications. This method handles internal communication and triggers face detection events. ```csharp public void ProcessBusMessage(Structure data) ``` #### Parameters Parameters: - data (Structure): The GStreamer message data containing detection information. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV face detection block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### FaceDetected Event raised when faces are detected in the video stream. Provides face coordinates, confidence scores, and detection metadata. ```csharp public event EventHandler FaceDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): ## See Also --- # Class CVHandDetectBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVHandDetectBlock.html # Class CVHandDetectBlock # Class CVHandDetectBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV hand detection block for identifying and tracking human hands in video streams. This block uses computer vision algorithms to detect hand positions, gestures, and movements in real-time video. Supports gesture recognition, hand tracking for interactive applications, sign language processing, and touchless user interfaces. Uses machine learning models trained on hand features to provide accurate detection across various lighting conditions and hand poses. Essential for gesture-controlled systems, accessibility applications, and human-computer interaction. Implements the . Implements the . Implements the . ```csharp public class CVHandDetectBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVHandDetectBlock(CVHandDetectSettings) Initializes a new instance of the class with the specified hand detection settings. ```csharp public CVHandDetectBlock(CVHandDetectSettings settings) ``` #### Parameters Parameters: - settings (CVHandDetectSettings): The hand detection configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this hand detection block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this hand detection block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the hand detection configuration settings. Defines detection algorithms, sensitivity parameters, and tracking options. ```csharp public CVHandDetectSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVHandDetectSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV hand detection element within the pipeline. This method creates the hand detection filter with the specified algorithm settings, establishes input and output pads, and prepares the block for gesture recognition processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hand detection element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV hand detection block. This method disposes of the hand detection element, unsubscribes from events, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV hand detection element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the hand detection functionality. ### GetElement() Gets the underlying GStreamer element that performs the hand detection operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV hand detection filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and hand detection algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV hand detection functionality is available; otherwise, false. ### ProcessBusMessage(Structure) Processes GStreamer bus messages for hand detection events and notifications. This method handles internal communication and triggers hand detection events. ```csharp public void ProcessBusMessage(Structure data) ``` #### Parameters Parameters: - data (Structure): The GStreamer message data containing detection information. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV hand detection block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### HandDetected Event raised when hands are detected in the video stream. Provides hand coordinates, gesture information, and detection metadata. ```csharp public event EventHandler HandDetected ``` #### Event Type Parameters: - (EventHandler < CVHandDetectedEventArgs >): ## See Also --- # Class CVLaplaceBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVLaplaceBlock.html # Class CVLaplaceBlock # Class CVLaplaceBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV Laplacian edge detection block for advanced image analysis and feature extraction. This block applies the Laplacian operator to detect edges and rapid intensity changes in video frames. The Laplacian is a second-order derivative operator that's particularly effective at finding edge discontinuities and fine details. Often used in image sharpening, blob detection, and computer vision applications where edge definition is critical. Provides configurable kernel sizes and normalization options for different image types and analysis requirements. Implements the . Implements the . Implements the . ```csharp public class CVLaplaceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVLaplaceBlock(CVLaplaceSettings) Initializes a new instance of the class with the specified Laplacian edge detection settings. ```csharp public CVLaplaceBlock(CVLaplaceSettings settings) ``` #### Parameters Parameters: - settings (CVLaplaceSettings): The Laplacian configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this Laplacian block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this Laplacian block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Laplacian configuration settings. Defines kernel parameters, normalization options, and edge detection sensitivity. ```csharp public CVLaplaceSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVLaplaceSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV Laplacian element within the pipeline. This method creates the Laplacian filter with the specified edge detection settings, establishes input and output pads, and prepares the block for image analysis. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Laplacian element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV Laplacian block. This method disposes of the Laplacian element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV Laplacian element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the Laplacian functionality. ### GetElement() Gets the underlying GStreamer element that performs the Laplacian operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV Laplacian filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and Laplacian operator support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV Laplacian functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV Laplacian block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVMotionCellsBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVMotionCellsBlock.html # Class CVMotionCellsBlock # Class CVMotionCellsBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV motion detection block for intelligent surveillance and movement analysis. This block divides the video frame into a grid of cells and detects motion within each cell, providing fine-grained motion analysis capabilities. Uses background subtraction and frame differencing algorithms to identify moving objects and track motion patterns. Essential for security systems, traffic monitoring, and automated surveillance applications. Provides configurable sensitivity, region-of-interest selection, and motion event notifications. Implements the . Implements the . Implements the . ```csharp public class CVMotionCellsBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVMotionCellsBlock(CVMotionCellsSettings) Initializes a new instance of the class with the specified motion detection settings. ```csharp public CVMotionCellsBlock(CVMotionCellsSettings settings) ``` #### Parameters Parameters: - settings (CVMotionCellsSettings): The motion detection configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this motion detection block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this motion detection block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the motion detection configuration settings. Defines cell grid parameters, sensitivity thresholds, and detection algorithms. ```csharp public CVMotionCellsSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVMotionCellsSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV motion detection element within the pipeline. This method creates the motion detection filter with the specified algorithm settings, establishes input and output pads, and prepares the block for surveillance processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the motion detection element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV motion detection block. This method disposes of the motion detection element, unsubscribes from events, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV motion detection element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the motion detection functionality. ### GetElement() Gets the underlying GStreamer element that performs the motion detection operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV motion detection filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and motion detection algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV motion detection functionality is available; otherwise, false. ### ProcessBusMessage(Structure) Processes GStreamer bus messages for motion detection events and notifications. This method handles internal communication and triggers motion detection events. ```csharp public void ProcessBusMessage(Structure data) ``` #### Parameters Parameters: - data (Structure): The GStreamer message data containing detection information. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV motion detection block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### MotionDetected Event raised when motion is detected in the video stream. Provides motion cell coordinates, intensity levels, and detection metadata. ```csharp public event EventHandler MotionDetected ``` #### Event Type Parameters: - (EventHandler < CVMotionCellsEventArgs >): ## See Also --- # Class CVSmoothBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVSmoothBlock.html # Class CVSmoothBlock # Class CVSmoothBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV smoothing block for image noise reduction and blur effects. This block applies various smoothing algorithms including Gaussian blur, box filter, bilateral filter, and median blur to reduce noise and soften image details. Essential for preprocessing operations in computer vision pipelines, medical imaging, and artistic effects. Provides configurable kernel sizes, sigma values, and edge preservation options. Commonly used to reduce sensor noise, prepare images for edge detection, or create aesthetic blur effects in video production. Implements the . Implements the . Implements the . ```csharp public class CVSmoothBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVSmoothBlock(CVSmoothSettings) Initializes a new instance of the class with the specified smoothing settings. ```csharp public CVSmoothBlock(CVSmoothSettings settings) ``` #### Parameters Parameters: - settings (CVSmoothSettings): The smoothing configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this smoothing block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this smoothing block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the smoothing configuration settings. Defines blur algorithms, kernel parameters, and noise reduction options. ```csharp public CVSmoothSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVSmoothSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV smoothing element within the pipeline. This method creates the smoothing filter with the specified algorithm settings, establishes input and output pads, and prepares the block for noise reduction processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the smoothing element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV smoothing block. This method disposes of the smoothing element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV smoothing element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the smoothing functionality. ### GetElement() Gets the underlying GStreamer element that performs the smoothing operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV smoothing filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and smoothing algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV smoothing functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV smoothing block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVSobelBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVSobelBlock.html # Class CVSobelBlock # Class CVSobelBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV Sobel edge detection block for gradient-based image analysis. This block applies the Sobel operator to detect edges by calculating image gradients in horizontal and vertical directions. The Sobel filter is particularly effective for edge detection in noisy images due to its built-in smoothing capabilities. Provides separate X and Y gradient calculations, magnitude computation, and directional filtering options. Essential for computer vision applications, feature extraction, and image preprocessing where robust edge detection is required. Implements the . Implements the . Implements the . ```csharp public class CVSobelBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVSobelBlock(CVSobelSettings) Initializes a new instance of the class with the specified Sobel edge detection settings. ```csharp public CVSobelBlock(CVSobelSettings settings) ``` #### Parameters Parameters: - settings (CVSobelSettings): The Sobel configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this Sobel block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this Sobel block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Sobel configuration settings. Defines gradient calculation parameters, directional options, and edge detection sensitivity. ```csharp public CVSobelSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVSobelSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV Sobel element within the pipeline. This method creates the Sobel filter with the specified edge detection settings, establishes input and output pads, and prepares the block for gradient analysis. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Sobel element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV Sobel block. This method disposes of the Sobel element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV Sobel element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the Sobel functionality. ### GetElement() Gets the underlying GStreamer element that performs the Sobel operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV Sobel filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and Sobel operator support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV Sobel functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV Sobel block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVTemplateMatchBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVTemplateMatchBlock.html # Class CVTemplateMatchBlock # Class CVTemplateMatchBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV template matching block for object detection and pattern recognition. This block searches for specific template images within the video stream using various correlation algorithms including normalized cross-correlation, squared difference, and correlation coefficient methods. Essential for automated inspection, object tracking, quality control, and computer vision applications where specific patterns or objects need to be located. Provides configurable matching algorithms, threshold settings, and multiple match detection capabilities. Implements the . Implements the . Implements the . ```csharp public class CVTemplateMatchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVTemplateMatchBlock(CVTemplateMatchSettings) Initializes a new instance of the class with the specified template matching settings. ```csharp public CVTemplateMatchBlock(CVTemplateMatchSettings settings) ``` #### Parameters Parameters: - settings (CVTemplateMatchSettings): The template matching configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this template matching block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this template matching block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the template matching configuration settings. Defines template image path, matching algorithms, and detection thresholds. ```csharp public CVTemplateMatchSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVTemplateMatchSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV template matching element within the pipeline. This method validates the template image file, creates the matching filter with the specified settings, establishes input and output pads, and prepares the block for pattern recognition processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the template matching element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV template matching block. This method disposes of the template matching element, unsubscribes from events, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV template matching element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the template matching functionality. ### GetElement() Gets the underlying GStreamer element that performs the template matching operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV template matching filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and template matching algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV template matching functionality is available; otherwise, false. ### ProcessBusMessage(Structure) Processes GStreamer bus messages for template matching events and notifications. This method handles internal communication and triggers template matching events. ```csharp public void ProcessBusMessage(Structure data) ``` #### Parameters Parameters: - data (Structure): The GStreamer message data containing detection information. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV template matching block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### TemplateMatch Event raised when template matches are found in the video stream. Provides match coordinates, confidence scores, and detection metadata. ```csharp public event EventHandler TemplateMatch ``` #### Event Type Parameters: - (EventHandler < CVTemplateMatchEventArgs >): ## See Also --- # Class CVTextOverlayBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVTextOverlayBlock.html # Class CVTextOverlayBlock # Class CVTextOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV text overlay block for advanced text rendering and annotation in video streams. This block provides sophisticated text overlay capabilities using OpenCV's text rendering functions, supporting various fonts, styles, colors, and positioning options. Offers anti-aliasing, outline effects, shadow rendering, and Unicode text support. Essential for video annotation, subtitles, watermarking, and information display applications. Provides real-time text updates, dynamic positioning, and professional-quality typography. Implements the . Implements the . Implements the . ```csharp public class CVTextOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVTextOverlayBlock(CVTextOverlaySettings) Initializes a new instance of the class with the specified text overlay settings. ```csharp public CVTextOverlayBlock(CVTextOverlaySettings settings) ``` #### Parameters Parameters: - settings (CVTextOverlaySettings): The text overlay configuration settings containing rendering parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this text overlay block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this text overlay block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the text overlay configuration settings. Defines text content, font properties, positioning, and visual styling options. ```csharp public CVTextOverlaySettings Settings { get; set; } ``` #### Property Value Parameters: - (CVTextOverlaySettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV text overlay element within the pipeline. This method creates the text overlay filter with the specified typography settings, establishes input and output pads, and prepares the block for text rendering. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the text overlay element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV text overlay block. This method disposes of the text overlay element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV text overlay element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the text overlay functionality. ### GetElement() Gets the underlying GStreamer element that performs the text overlay operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV text overlay filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and text rendering support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV text overlay functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV text overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CVTrackerBlock Link: api/VisioForge.Core.MediaBlocks.OpenCV.CVTrackerBlock.html # Class CVTrackerBlock # Class CVTrackerBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenCV **Assembly**: VisioForge.Core.dll OpenCV object tracking block for continuous monitoring of moving objects in video streams. This block implements advanced tracking algorithms including KCF (Kernelized Correlation Filters), CSRT (Channel and Spatial Reliability Tracker), Median Flow, and MIL (Multiple Instance Learning) trackers. Provides robust object tracking capabilities for surveillance, sports analysis, autonomous vehicles, and interactive applications. Supports initialization from bounding boxes, adaptive model updates, and tracking confidence reporting. Essential for maintaining object identity across frames despite occlusions, scale changes, and appearance variations. Implements the . Implements the . Implements the . ```csharp public class CVTrackerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CVTrackerBlock(CVTrackerSettings) Initializes a new instance of the class with the specified tracking settings. ```csharp public CVTrackerBlock(CVTrackerSettings settings) ``` #### Parameters Parameters: - settings (CVTrackerSettings): The tracking configuration settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this tracking block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this tracking block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the tracking configuration settings. Defines tracking algorithms, initialization parameters, and tracking behavior options. ```csharp public CVTrackerSettings Settings { get; set; } ``` #### Property Value Parameters: - (CVTrackerSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenCV tracking element within the pipeline. This method creates the tracking filter with the specified algorithm settings, establishes input and output pads, and prepares the block for object tracking. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the tracking element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenCV tracking block. This method disposes of the tracking element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenCV tracking element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the tracking functionality. ### GetElement() Gets the underlying GStreamer element that performs the tracking operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenCV tracking filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenCV library availability and object tracking algorithm support. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenCV tracking functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenCV tracking block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.OpenCV Link: api/VisioForge.Core.MediaBlocks.OpenCV.html # Namespace VisioForge.Core.MediaBlocks.OpenCV # Namespace VisioForge.Core.MediaBlocks.OpenCV ### Classes Parameters: - (): OpenCV dewarp block for geometric distortion correction in video streams. This block performs lens distortion correction, perspective transformation, and barrel/pincushion distortion removal using OpenCV's computer vision algorithms. Essential for correcting footage from wide-angle lenses, fisheye cameras, or action cameras that produce geometric distortions. Supports various distortion models including radial and tangential distortion correction. Commonly used in surveillance systems, automotive applications, and 360-degree video processing. Implements the . Implements the . Implements the . - (): OpenCV dilate block for morphological image processing operations. This block performs dilation, a fundamental morphological operation that expands white regions (foreground objects) in binary or grayscale images. Dilation is commonly used for noise removal, object enhancement, filling gaps in contours, and connecting nearby objects. The operation uses a structuring element (kernel) that defines the shape and size of the dilation. Essential for image preprocessing in computer vision applications, medical imaging, and object detection. Implements the . Implements the . Implements the . - (): OpenCV edge detection block for identifying boundaries and contours in video streams. This block performs edge detection using various computer vision algorithms including Canny, Sobel, Laplacian, and Scharr operators. Edge detection is fundamental for object recognition, feature extraction, image segmentation, and computer vision applications. The block provides configurable threshold parameters, gradient calculations, and noise reduction capabilities. Essential for medical imaging, industrial inspection, autonomous vehicles, and surveillance systems. Implements the . Implements the . Implements the . - (): OpenCV histogram equalization block for automatic image contrast enhancement. This block performs histogram equalization to improve image contrast by redistributing pixel intensities across the full dynamic range. The algorithm analyzes the image histogram and applies a transformation that spreads out the most frequent intensity values, resulting in enhanced visual quality. Essential for medical imaging, surveillance systems, and low-light video enhancement where contrast improvement is critical for analysis. Implements the . Implements the . Implements the . - (): OpenCV erode block for morphological image processing operations. This block performs erosion, a fundamental morphological operation that shrinks white regions (foreground objects) in binary or grayscale images. Erosion is commonly used for noise removal, thin line detection, separating connected objects, and removing small artifacts. The operation uses a structuring element (kernel) that defines the shape and size of the erosion. Often paired with dilation for opening/closing operations in computer vision preprocessing. Implements the . Implements the . Implements the . - (): OpenCV face blur block for automatic privacy protection in video streams. This block combines face detection with blur effects to automatically obscure faces for privacy compliance. Uses machine learning algorithms to detect human faces in real-time and applies configurable blur effects to protect individual privacy. Essential for surveillance systems, social media platforms, and video conferencing applications where privacy regulations require face anonymization. Supports multiple blur algorithms and adjustable detection sensitivity for various lighting conditions. Implements the . Implements the . Implements the . - (): OpenCV face detection block for identifying and tracking human faces in video streams. This block uses advanced computer vision algorithms including Haar cascades, LBP (Local Binary Patterns), and deep learning models to detect faces in real-time. Provides configurable detection parameters, face tracking capabilities, and event notifications when faces are found. Essential for security systems, attendance tracking, emotion recognition, and interactive applications. Supports multiple face detection simultaneously with bounding box coordinates and confidence scores. Implements the . Implements the . Implements the . - (): OpenCV hand detection block for identifying and tracking human hands in video streams. This block uses computer vision algorithms to detect hand positions, gestures, and movements in real-time video. Supports gesture recognition, hand tracking for interactive applications, sign language processing, and touchless user interfaces. Uses machine learning models trained on hand features to provide accurate detection across various lighting conditions and hand poses. Essential for gesture-controlled systems, accessibility applications, and human-computer interaction. Implements the . Implements the . Implements the . - (): OpenCV Laplacian edge detection block for advanced image analysis and feature extraction. This block applies the Laplacian operator to detect edges and rapid intensity changes in video frames. The Laplacian is a second-order derivative operator that's particularly effective at finding edge discontinuities and fine details. Often used in image sharpening, blob detection, and computer vision applications where edge definition is critical. Provides configurable kernel sizes and normalization options for different image types and analysis requirements. Implements the . Implements the . Implements the . - (): OpenCV motion detection block for intelligent surveillance and movement analysis. This block divides the video frame into a grid of cells and detects motion within each cell, providing fine-grained motion analysis capabilities. Uses background subtraction and frame differencing algorithms to identify moving objects and track motion patterns. Essential for security systems, traffic monitoring, and automated surveillance applications. Provides configurable sensitivity, region-of-interest selection, and motion event notifications. Implements the . Implements the . Implements the . - (): OpenCV smoothing block for image noise reduction and blur effects. This block applies various smoothing algorithms including Gaussian blur, box filter, bilateral filter, and median blur to reduce noise and soften image details. Essential for preprocessing operations in computer vision pipelines, medical imaging, and artistic effects. Provides configurable kernel sizes, sigma values, and edge preservation options. Commonly used to reduce sensor noise, prepare images for edge detection, or create aesthetic blur effects in video production. Implements the . Implements the . Implements the . - (): OpenCV Sobel edge detection block for gradient-based image analysis. This block applies the Sobel operator to detect edges by calculating image gradients in horizontal and vertical directions. The Sobel filter is particularly effective for edge detection in noisy images due to its built-in smoothing capabilities. Provides separate X and Y gradient calculations, magnitude computation, and directional filtering options. Essential for computer vision applications, feature extraction, and image preprocessing where robust edge detection is required. Implements the . Implements the . Implements the . - (): OpenCV template matching block for object detection and pattern recognition. This block searches for specific template images within the video stream using various correlation algorithms including normalized cross-correlation, squared difference, and correlation coefficient methods. Essential for automated inspection, object tracking, quality control, and computer vision applications where specific patterns or objects need to be located. Provides configurable matching algorithms, threshold settings, and multiple match detection capabilities. Implements the . Implements the . Implements the . - (): OpenCV text overlay block for advanced text rendering and annotation in video streams. This block provides sophisticated text overlay capabilities using OpenCV's text rendering functions, supporting various fonts, styles, colors, and positioning options. Offers anti-aliasing, outline effects, shadow rendering, and Unicode text support. Essential for video annotation, subtitles, watermarking, and information display applications. Provides real-time text updates, dynamic positioning, and professional-quality typography. Implements the . Implements the . Implements the . - (): OpenCV object tracking block for continuous monitoring of moving objects in video streams. This block implements advanced tracking algorithms including KCF (Kernelized Correlation Filters), CSRT (Channel and Spatial Reliability Tracker), Median Flow, and MIL (Multiple Instance Learning) trackers. Provides robust object tracking capabilities for surveillance, sports analysis, autonomous vehicles, and interactive applications. Supports initialization from bounding boxes, adaptive model updates, and tracking confidence reporting. Essential for maintaining object identity across frames despite occlusions, scale changes, and appearance variations. Implements the . Implements the . Implements the . --- # Class GLAlphaBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLAlphaBlock.html # Class GLAlphaBlock # Class GLAlphaBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL alpha blending block for advanced transparency and compositing effects. This block provides GPU-accelerated alpha channel manipulation using OpenGL shaders for high-performance video compositing. Supports various alpha blending modes, transparency gradients, and real-time alpha channel modifications. Essential for creating professional video overlays, chroma key effects, and complex multi-layer compositions. Leverages GPU parallel processing for smooth real-time alpha blending even with high-resolution video streams. Implements the . Implements the . Implements the . ```csharp public class GLAlphaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLAlphaBlock(GLAlphaVideoEffect) Initializes a new instance of the class with the specified alpha blending settings. ```csharp public GLAlphaBlock(GLAlphaVideoEffect settings) ``` #### Parameters Parameters: - settings (GLAlphaVideoEffect): The alpha video effect settings containing blending parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this alpha block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this alpha block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the alpha blending configuration settings. Defines transparency parameters, blending modes, and alpha channel modifications. ```csharp public GLAlphaVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLAlphaVideoEffect): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenGL alpha element within the pipeline. This method creates the alpha filter with the specified blending settings, establishes input and output pads, and prepares the block for GPU-accelerated processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the alpha element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenGL alpha block. This method disposes of the alpha filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenGL alpha filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the alpha functionality. ### GetElement() Gets the underlying GStreamer element that performs the alpha blending operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenGL alpha filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenGL support and GPU shader capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL alpha functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenGL alpha block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GLBlurBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLBlurBlock.html # Class GLBlurBlock # Class GLBlurBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL blur block for GPU-accelerated image smoothing and blur effects. This block provides high-performance blur processing using OpenGL shaders and GPU parallel processing capabilities. Supports various blur algorithms including Gaussian, box blur, and motion blur with configurable intensity and direction parameters. Essential for creating cinematic effects, depth-of-field simulation, background defocusing, and artistic video treatments. Achieves real-time performance even with high-resolution video through efficient GPU computation. Implements the . Implements the . Implements the . ```csharp public class GLBlurBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLBlurBlock() Initializes a new instance of the class. Creates a GPU-accelerated blur effect block with default settings. ```csharp public GLBlurBlock() ``` ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this blur block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this blur block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenGL blur element within the pipeline. This method creates the blur filter with default settings, establishes input and output pads, and prepares the block for GPU-accelerated processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the blur element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenGL blur block. This method disposes of the blur filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenGL blur filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the blur functionality. ### GetElement() Gets the underlying GStreamer element that performs the blur operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenGL blur filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenGL support and GPU shader capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL blur functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenGL blur block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GLBulgeBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLBulgeBlock.html # Class GLBulgeBlock # Class GLBulgeBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL bulge effect block for spherical geometric distortion and lens simulation. This block creates a bulge or bubble effect that simulates looking through a convex lens or magnifying glass. Uses GPU-accelerated OpenGL shaders to perform real-time geometric transformation that expands the center of the image while compressing the edges. Essential for creating artistic visual effects, lens simulation, virtual reality content, and creative video transformations. Provides configurable bulge intensity and center positioning. Implements the . Implements the . Implements the . ```csharp public class GLBulgeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLBulgeBlock() Initializes a new instance of the class. Creates a GPU-accelerated bulge effect block with default distortion settings. ```csharp public GLBulgeBlock() ``` ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this bulge block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this bulge block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenGL bulge element within the pipeline. This method creates the bulge filter with default geometric distortion settings, establishes input and output pads, and prepares the block for GPU-accelerated processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the bulge element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenGL bulge block. This method disposes of the bulge filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenGL bulge filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the bulge functionality. ### GetElement() Gets the underlying GStreamer element that performs the bulge operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenGL bulge filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenGL support and GPU shader capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL bulge functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenGL bulge block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GLColorBalanceBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLColorBalanceBlock.html # Class GLColorBalanceBlock # Class GLColorBalanceBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL color balance block for professional color correction and grading. This block provides GPU-accelerated color adjustment capabilities including hue, saturation, brightness, contrast, gamma correction, and white balance adjustments. Uses OpenGL shaders for real-time color manipulation with professional-grade precision. Essential for broadcast video production, color grading workflows, and correcting color cast issues. Supports RGB channel-specific adjustments and maintains color accuracy throughout the processing pipeline. Implements the . Implements the . Implements the . ```csharp public class GLColorBalanceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLColorBalanceBlock(GLColorBalanceVideoEffect) Initializes a new instance of the class with the specified color correction settings. ```csharp public GLColorBalanceBlock(GLColorBalanceVideoEffect settings) ``` #### Parameters Parameters: - settings (GLColorBalanceVideoEffect): The color balance video effect settings containing color grading parameters. ## Properties ### Input Gets the input pad for connecting video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this color balance block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this color balance block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the color balance configuration settings. Defines color correction parameters including hue, saturation, brightness, and contrast adjustments. ```csharp public GLColorBalanceVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLColorBalanceVideoEffect): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenGL color balance element within the pipeline. This method creates the color balance filter with the specified correction settings, establishes input and output pads, and prepares the block for GPU-accelerated processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the color balance element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenGL color balance block. This method disposes of the color balance filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenGL color balance filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the color balance functionality. ### GetElement() Gets the underlying GStreamer element that performs the color balance operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenGL color balance filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenGL support and GPU shader capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL color balance functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenGL color balance block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GLDeinterlaceBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLDeinterlaceBlock.html # Class GLDeinterlaceBlock # Class GLDeinterlaceBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL deinterlace block for GPU-accelerated interlaced video conversion. This block converts interlaced video (where odd and even lines are captured at different times) into progressive video using advanced OpenGL shader algorithms. Essential for processing legacy broadcast content, security camera footage, and older video formats. Provides multiple deinterlacing algorithms including line doubling, motion-adaptive, and temporal interpolation methods. Achieves superior quality and performance compared to CPU-based deinterlacing through GPU parallel processing. Implements the . Implements the . Implements the . ```csharp public class GLDeinterlaceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLDeinterlaceBlock(GLDeinterlaceVideoEffect) Initializes a new instance of the class with the specified deinterlacing settings. ```csharp public GLDeinterlaceBlock(GLDeinterlaceVideoEffect settings) ``` #### Parameters Parameters: - settings (GLDeinterlaceVideoEffect): The deinterlace video effect settings containing algorithm parameters. ## Properties ### Input Gets the input pad for connecting interlaced video sources to be processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for this deinterlace block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for connecting to downstream processing blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this deinterlace block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the deinterlace configuration settings. Defines deinterlacing algorithms, field order, and processing parameters. ```csharp public GLDeinterlaceVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLDeinterlaceVideoEffect): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the OpenGL deinterlace element within the pipeline. This method creates the deinterlace filter with the specified algorithm settings, establishes input and output pads, and prepares the block for GPU-accelerated processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the deinterlace element was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this OpenGL deinterlace block. This method disposes of the deinterlace filter and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the OpenGL deinterlace filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the deinterlace functionality. ### GetElement() Gets the underlying GStreamer element that performs the deinterlace operation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the OpenGL deinterlace filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for OpenGL support and GPU shader capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL deinterlace functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this OpenGL deinterlace block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GLDownloadBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLDownloadBlock.html # Class GLDownloadBlock # Class GLDownloadBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL GPU to system memory download block for transferring video frames from GPU memory to system memory. This block is essential for retrieving processed video data from GPU-accelerated OpenGL operations back to system memory for further CPU-based processing, encoding, or output operations. Implements the . Implements the . Implements the . ```csharp public class GLDownloadBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLDownloadBlock() Initializes a new instance of the class for GPU to system memory transfers. Creates the necessary input and output pads for handling the memory transfer operation. ```csharp public GLDownloadBlock() ``` ## Properties ### Input Gets the primary input pad for receiving OpenGL video frames from GPU memory. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for GPU frames). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing video frames in system memory. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for system memory frames). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL download operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL download block within the pipeline context. Creates the GStreamer download element and establishes the necessary pad connections for transferring video frames from GPU memory to system memory. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the download block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL download operation, including GStreamer elements and GPU memory allocations. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL download block. Properly disposes of GStreamer elements and GPU memory resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer download element. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the OpenGL download operation. ### IsAvailable() Determines whether OpenGL download functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OpenGL download operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL download block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this download block. ## See Also --- # Class GLEquirectangularViewBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLEquirectangularViewBlock.html # Class GLEquirectangularViewBlock # Class GLEquirectangularViewBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated equirectangular view block for immersive 360-degree and VR video processing. Provides GPU-accelerated transformation of equirectangular (spherical) video content into perspective views with interactive controls for yaw, pitch, roll, and field of view, enabling VR video playback and immersive media experiences. Implements the . Implements the . Implements the . ```csharp public class GLEquirectangularViewBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IVRVideoControl ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLEquirectangularViewBlock(GLEquirectangularViewSettings) Initializes a new instance of the class with the specified VR view settings. Creates the necessary input and output pads for processing 360-degree video with interactive perspective control. ```csharp public GLEquirectangularViewBlock(GLEquirectangularViewSettings settings) ``` #### Parameters Parameters: - settings (GLEquirectangularViewSettings): The equirectangular view settings that define the VR transformation and interaction parameters. ## Properties ### FieldOfView Gets or sets the field of view angle in degrees for zoom and perspective control. ```csharp public float FieldOfView { get; set; } ``` #### Property Value Parameters: - (float): ### Input Gets the primary input pad for receiving equirectangular video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Mode Gets or sets the VR viewing mode for different immersive display configurations. ```csharp public VRMode Mode { get; set; } ``` #### Property Value Parameters: - (VRMode): ### Output Gets the primary output pad for providing perspective-transformed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Pitch Gets or sets the pitch rotation angle in degrees for vertical orientation control. ```csharp public float Pitch { get; set; } ``` #### Property Value Parameters: - (float): ### Roll Gets or sets the roll rotation angle in degrees for rotational orientation control. ```csharp public float Roll { get; set; } ``` #### Property Value Parameters: - (float): ### Settings Gets the equirectangular view settings that control VR perspective transformations and view parameters. ```csharp public GLEquirectangularViewSettings Settings { get; } ``` #### Property Value Parameters: - (GLEquirectangularViewSettings): ### Type Gets the media block type identifier for OpenGL equirectangular view operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### Yaw Gets or sets the yaw rotation angle in degrees for horizontal orientation control. ```csharp public float Yaw { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### Build() Builds and initializes the OpenGL equirectangular view block within the pipeline context. Creates the GStreamer VR view element, applies the transformation settings, and establishes the necessary pad connections for processing 360-degree video with interactive perspective control. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the equirectangular view block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL equirectangular view operations, including GStreamer elements and GPU VR shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL equirectangular view block. Properly disposes of GStreamer elements and GPU VR transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer equirectangular view element. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the equirectangular VR view filter. ### IsAvailable() Determines whether OpenGL equirectangular view functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL VR transformation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if 360-degree VR view operations are supported; otherwise, false. ### IsModeSupported(VRMode) Checks if a specific VR mode is supported by the implementing component (e.g., video block, effect, or renderer). ```csharp public bool IsModeSupported(VRMode mode) ``` #### Parameters Parameters: - mode (VRMode): The to check for support. #### Returns Parameters: - (bool): true if the mode is supported; otherwise, false. ### Update() Updates the VR view settings dynamically, applying new perspective parameters and view controls in real-time. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL equirectangular view block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this equirectangular view block. ### SettingsChanged Occurs when VR view settings are changed, providing notification for dynamic view parameter updates. ```csharp public event EventHandler SettingsChanged ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ## See Also --- # Class GLFishEyeBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLFishEyeBlock.html # Class GLFishEyeBlock # Class GLFishEyeBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated fish eye lens effect block for creating spherical barrel distortion video effects. Simulates the characteristic distortion pattern of wide-angle fish eye camera lenses, creating a dramatic curved perspective that maps the entire scene onto a circular frame with maximum distortion at the edges. Implements the . Implements the . Implements the . ```csharp public class GLFishEyeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLFishEyeBlock() Initializes a new instance of the class for fish eye lens distortion effects. Creates the necessary input and output pads for video processing with spherical distortion. ```csharp public GLFishEyeBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be distorted. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing fish eye distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL fish eye effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL fish eye effect block within the pipeline context. Creates the GStreamer fish eye filter and establishes the necessary pad connections for processing video frames with spherical barrel distortion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the fish eye effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL fish eye effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL fish eye effect block. Properly disposes of GStreamer elements and GPU shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer fish eye filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the fish eye distortion filter. ### IsAvailable() Determines whether OpenGL fish eye effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if fish eye distortion effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL fish eye effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this fish eye effect block. ## See Also --- # Class GLFlipBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLFlipBlock.html # Class GLFlipBlock # Class GLFlipBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video flip transformation block for horizontal and vertical mirroring operations. Provides GPU-accelerated flipping capabilities including horizontal flip (mirror), vertical flip, and combined transformations for creating mirror effects and correcting camera orientations. Implements the . Implements the . Implements the . ```csharp public class GLFlipBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLFlipBlock(GLFlipVideoEffect) Initializes a new instance of the class with the specified flip transformation settings. Creates the necessary input and output pads for video processing with the configured flip operations. ```csharp public GLFlipBlock(GLFlipVideoEffect settings) ``` #### Parameters Parameters: - settings (GLFlipVideoEffect): The flip effect settings that define the transformation parameters. ## Properties ### Input Gets the primary input pad for receiving video frames to be transformed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing flipped video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the flip transformation settings that control the type and direction of the flip operation. ```csharp public GLFlipVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLFlipVideoEffect): ### Type Gets the media block type identifier for OpenGL flip operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL flip transformation block within the pipeline context. Creates the GStreamer flip filter, applies the transformation settings, and establishes the necessary pad connections for processing video frames with the specified flip operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the flip transformation block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL flip transformation, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL flip transformation block. Properly disposes of GStreamer elements and GPU transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer flip filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the flip transformation filter. ### IsAvailable() Determines whether OpenGL flip transformation functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL transformation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if flip transformation operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL flip transformation block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this flip transformation block. ## See Also --- # Class GLGlowLightingBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLGlowLightingBlock.html # Class GLGlowLightingBlock # Class GLGlowLightingBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated glow lighting effect block for creating atmospheric luminous effects around bright areas. Produces cinematic glow and bloom effects by detecting bright regions in the video and extending their luminosity with soft, diffused light halos that create dramatic lighting atmospheres and enhanced visual impact. Implements the . Implements the . Implements the . ```csharp public class GLGlowLightingBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLGlowLightingBlock() Initializes a new instance of the class for glow and bloom lighting effects. Creates the necessary input and output pads for video processing with atmospheric lighting enhancements. ```csharp public GLGlowLightingBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be enhanced with glow effects. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing glow-enhanced video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL glow lighting effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL glow lighting effect block within the pipeline context. Creates the GStreamer glow lighting filter and establishes the necessary pad connections for processing video frames with atmospheric bloom and luminous effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the glow lighting effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL glow lighting effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL glow lighting effect block. Properly disposes of GStreamer elements and GPU lighting shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer glow lighting filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the glow lighting effect filter. ### IsAvailable() Determines whether OpenGL glow lighting effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL lighting effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if glow lighting effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL glow lighting effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this glow lighting effect block. ## See Also --- # Class GLGrayscaleBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLGrayscaleBlock.html # Class GLGrayscaleBlock # Class GLGrayscaleBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated grayscale conversion block for transforming color video into monochrome output. Provides GPU-accelerated color-to-grayscale conversion using luminance-based algorithms that maintain proper brightness levels and contrast while removing color information for artistic or technical purposes. Implements the . Implements the . Implements the . ```csharp public class GLGrayscaleBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLGrayscaleBlock() Initializes a new instance of the class for color-to-grayscale conversion. Creates the necessary input and output pads for video processing with monochrome transformation. ```csharp public GLGrayscaleBlock() ``` ## Properties ### Input Gets the primary input pad for receiving color video frames to be converted. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing grayscale converted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL grayscale conversion. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL grayscale conversion block within the pipeline context. Creates the GStreamer grayscale filter and establishes the necessary pad connections for processing video frames with color-to-monochrome conversion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the grayscale conversion block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL grayscale conversion, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL grayscale conversion block. Properly disposes of GStreamer elements and GPU color conversion resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer grayscale filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the grayscale conversion filter. ### IsAvailable() Determines whether OpenGL grayscale conversion functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL color conversion plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if grayscale conversion operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL grayscale conversion block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this grayscale conversion block. ## See Also --- # Class GLHeatBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLHeatBlock.html # Class GLHeatBlock # Class GLHeatBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated heat shimmer effect block for creating thermal distortion and atmospheric heat wave effects. Simulates the visual distortion seen when looking through hot air, such as heat rising from pavement or fire, creating dynamic wavering and shimmering effects that add realism to hot environments and thermal scenarios. Implements the . Implements the . Implements the . ```csharp public class GLHeatBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLHeatBlock() Initializes a new instance of the class for heat shimmer and thermal distortion effects. Creates the necessary input and output pads for video processing with atmospheric heat wave simulation. ```csharp public GLHeatBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be distorted with heat effects. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing heat-distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL heat effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL heat effect block within the pipeline context. Creates the GStreamer heat filter and establishes the necessary pad connections for processing video frames with thermal shimmer and atmospheric distortion effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the heat effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL heat effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL heat effect block. Properly disposes of GStreamer elements and GPU distortion shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer heat effect filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the heat distortion effect filter. ### IsAvailable() Determines whether OpenGL heat effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL distortion effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if heat distortion effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL heat effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this heat effect block. ## See Also --- # Class GLLaplacianBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLLaplacianBlock.html # Class GLLaplacianBlock # Class GLLaplacianBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated Laplacian edge detection filter block for advanced image processing and edge enhancement. Implements the Laplacian operator, a second-order derivative filter that detects edges and fine details by highlighting areas of rapid intensity change, commonly used for sharpening and feature detection in computer vision applications. Implements the . Implements the . Implements the . ```csharp public class GLLaplacianBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLLaplacianBlock(GLLaplacianVideoEffect) Initializes a new instance of the class with the specified Laplacian filter settings. Creates the necessary input and output pads for video processing with edge detection and enhancement. ```csharp public GLLaplacianBlock(GLLaplacianVideoEffect settings) ``` #### Parameters Parameters: - settings (GLLaplacianVideoEffect): The Laplacian effect settings that define the edge detection parameters. ## Properties ### Input Gets the primary input pad for receiving video frames to be edge-detected. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing Laplacian-processed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Laplacian filter settings that control the edge detection parameters and intensity. ```csharp public GLLaplacianVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLLaplacianVideoEffect): ### Type Gets the media block type identifier for OpenGL Laplacian operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL Laplacian edge detection block within the pipeline context. Creates the GStreamer Laplacian filter, applies the edge detection settings, and establishes the necessary pad connections for processing video frames with second-order derivative edge enhancement. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Laplacian edge detection block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL Laplacian edge detection, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL Laplacian edge detection block. Properly disposes of GStreamer elements and GPU image processing shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer Laplacian filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the Laplacian edge detection filter. ### IsAvailable() Determines whether OpenGL Laplacian edge detection functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL image processing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Laplacian edge detection operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL Laplacian edge detection block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Laplacian edge detection block. ## See Also --- # Class GLLightTunnelBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLLightTunnelBlock.html # Class GLLightTunnelBlock # Class GLLightTunnelBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated light tunnel effect block for creating dramatic radial lighting and tunnel vision effects. Generates dynamic tunnel-like light patterns that draw the viewer's attention to the center of the frame, creating cinematic depth effects and dramatic visual focus with customizable radial light distribution. Implements the . Implements the . Implements the . ```csharp public class GLLightTunnelBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLLightTunnelBlock() Initializes a new instance of the class for radial light tunnel effects. Creates the necessary input and output pads for video processing with dramatic tunnel lighting and visual focus. ```csharp public GLLightTunnelBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be enhanced with tunnel lighting. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing light tunnel enhanced video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL light tunnel effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL light tunnel effect block within the pipeline context. Creates the GStreamer light tunnel filter and establishes the necessary pad connections for processing video frames with radial lighting and tunnel vision effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the light tunnel effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL light tunnel effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL light tunnel effect block. Properly disposes of GStreamer elements and GPU lighting shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer light tunnel filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the light tunnel effect filter. ### IsAvailable() Determines whether OpenGL light tunnel effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL lighting effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if light tunnel effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL light tunnel effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this light tunnel effect block. ## See Also --- # Class GLLumaCrossProcessingBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLLumaCrossProcessingBlock.html # Class GLLumaCrossProcessingBlock # Class GLLumaCrossProcessingBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated luma cross processing effect block for creating stylized color grading and film-look effects. Applies cross-channel processing to the luminance component, creating distinctive color shifts and tonal adjustments that simulate various film stocks and artistic color grading techniques for cinematic visual enhancement. Implements the . Implements the . Implements the . ```csharp public class GLLumaCrossProcessingBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLLumaCrossProcessingBlock() Initializes a new instance of the class for luma cross processing color effects. Creates the necessary input and output pads for video processing with advanced color grading and film-look enhancement. ```csharp public GLLumaCrossProcessingBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be color graded. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing luma cross processed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL luma cross processing effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL luma cross processing block within the pipeline context. Creates the GStreamer luma cross processing filter and establishes the necessary pad connections for processing video frames with advanced color grading and luminance-based effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the luma cross processing block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL luma cross processing, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL luma cross processing block. Properly disposes of GStreamer elements and GPU color processing shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer luma cross processing filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the luma cross processing filter. ### IsAvailable() Determines whether OpenGL luma cross processing functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL color processing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if luma cross processing operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL luma cross processing block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this luma cross processing block. ## See Also --- # Class GLMirrorBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLMirrorBlock.html # Class GLMirrorBlock # Class GLMirrorBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated mirror reflection effect block for creating symmetrical video reflections and kaleidoscope patterns. Provides GPU-accelerated mirroring capabilities that can reflect video content along horizontal, vertical, or diagonal axes, creating artistic mirror effects, symmetrical compositions, and kaleidoscopic visual patterns for creative video processing. Implements the . Implements the . Implements the . ```csharp public class GLMirrorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLMirrorBlock() Initializes a new instance of the class for mirror reflection effects. Creates the necessary input and output pads for video processing with symmetrical reflections and mirroring. ```csharp public GLMirrorBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be mirrored. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing mirror-reflected video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL mirror effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL mirror reflection block within the pipeline context. Creates the GStreamer mirror filter and establishes the necessary pad connections for processing video frames with symmetrical reflection and mirroring effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the mirror reflection block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL mirror reflection, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL mirror reflection block. Properly disposes of GStreamer elements and GPU transformation shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer mirror filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the mirror reflection filter. ### IsAvailable() Determines whether OpenGL mirror reflection functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL transformation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if mirror reflection operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL mirror reflection block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this mirror reflection block. ## See Also --- # Class GLOverlayBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLOverlayBlock.html # Class GLOverlayBlock # Class GLOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated image overlay block for compositing static images and graphics onto video streams. Provides GPU-accelerated overlay capabilities with alpha blending, positioning, scaling, and rotation support for watermarks, logos, graphics overlays, and picture-in-picture compositions with real-time performance. Implements the . Implements the . Implements the . ```csharp public class GLOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLOverlayBlock(GLOverlaySettings) Initializes a new instance of the class with the specified overlay settings. Creates the necessary input and output pads for video processing with image overlay composition. ```csharp public GLOverlayBlock(GLOverlaySettings settings) ``` #### Parameters Parameters: - settings (GLOverlaySettings): The overlay settings that define the image source, positioning, and blending parameters. ## Properties ### Input Gets the primary input pad for receiving base video frames for overlay composition. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing overlay-composited video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the overlay settings that control image positioning, scaling, alpha blending, and transformation parameters. ```csharp public GLOverlaySettings Settings { get; set; } ``` #### Property Value Parameters: - (GLOverlaySettings): ### Type Gets the media block type identifier for OpenGL overlay operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL overlay block within the pipeline context. Creates the GStreamer overlay element, configures the overlay settings, and establishes the necessary pad connections for processing video frames with image composition. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the overlay block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL overlay operation, including GStreamer elements and GPU compositing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL overlay block. Properly disposes of GStreamer elements and GPU compositing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer overlay element. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the image overlay compositor. ### IsAvailable() Determines whether OpenGL overlay functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL compositing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if overlay composition operations are supported; otherwise, false. ### UpdateSettings() Updates the overlay settings in real-time, allowing dynamic changes to image position, scale, rotation, and alpha blending. ```csharp public void UpdateSettings() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL overlay block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this overlay block. ## See Also --- # Class GLResizeBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLResizeBlock.html # Class GLResizeBlock # Class GLResizeBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video resize block for high-performance video scaling and resolution transformation. Provides GPU-accelerated resizing capabilities with various interpolation algorithms, aspect ratio control, and optimized scaling operations for real-time video processing with minimal CPU overhead. Implements the . Implements the . Implements the . ```csharp public class GLResizeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLResizeBlock(GLResizeVideoEffect) Initializes a new instance of the class with the specified resize settings. Creates the necessary input and output pads for video processing with scaling and resolution transformation. ```csharp public GLResizeBlock(GLResizeVideoEffect settings) ``` #### Parameters Parameters: - settings (GLResizeVideoEffect): The resize effect settings that define the target dimensions and scaling parameters. ## Properties ### Input Gets the primary input pad for receiving video frames to be resized. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing resized video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the resize settings that control the target dimensions, scaling algorithm, and aspect ratio behavior. ```csharp public GLResizeVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLResizeVideoEffect): ### Type Gets the media block type identifier for OpenGL resize operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL video resize block within the pipeline context. Creates the GStreamer resize filter, applies the scaling settings, and establishes the necessary pad connections for processing video frames with resolution transformation. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the video resize block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL video resize operation, including GStreamer elements and GPU processing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL video resize block. Properly disposes of GStreamer elements and GPU scaling resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer video resize filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the video resize filter. ### IsAvailable() Determines whether OpenGL video resize functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL video processing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video resize operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL video resize block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this video resize block. ## See Also --- # Class GLSepiaBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLSepiaBlock.html # Class GLSepiaBlock # Class GLSepiaBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated sepia tone effect block for creating vintage and nostalgic visual aesthetics. Applies warm brown and golden color tones that simulate the appearance of aged photographs, creating classic vintage effects commonly used in artistic video processing and retro styling. Implements the . Implements the . Implements the . ```csharp public class GLSepiaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLSepiaBlock() Initializes a new instance of the class for sepia tone vintage effects. Creates the necessary input and output pads for video processing with warm, nostalgic color transformation. ```csharp public GLSepiaBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be sepia-toned. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing sepia-toned video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL sepia effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL sepia tone effect block within the pipeline context. Creates the GStreamer sepia filter and establishes the necessary pad connections for processing video frames with vintage brown and golden color tones. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sepia tone effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL sepia tone effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL sepia tone effect block. Properly disposes of GStreamer elements and GPU color processing shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer sepia filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the sepia tone effect filter. ### IsAvailable() Determines whether OpenGL sepia tone effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL color effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if sepia tone effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL sepia tone effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this sepia tone effect block. ## See Also --- # Class GLShaderBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLShaderBlock.html # Class GLShaderBlock # Class GLShaderBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated programmable shader block for custom GPU-based video processing and effects. Provides high-performance custom shader execution capabilities using GLSL vertex and fragment shaders to create custom visual effects, color transformations, and advanced video processing operations with full GPU acceleration. Implements the . Implements the . Implements the . ```csharp public class GLShaderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLShaderBlock(GLShaderSettings) Initializes a new instance of the class with the specified shader settings. Creates the necessary input and output pads for video processing with custom GLSL shader programs. ```csharp public GLShaderBlock(GLShaderSettings settings) ``` #### Parameters Parameters: - settings (GLShaderSettings): The shader settings that define the GLSL source code and execution parameters. ## Properties ### Input Gets the primary input pad for receiving video frames to be shader processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing shader-processed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the shader settings that control GLSL shader programs, uniforms, and rendering parameters. ```csharp public GLShaderSettings Settings { get; set; } ``` #### Property Value Parameters: - (GLShaderSettings): ### Type Gets the media block type identifier for OpenGL shader operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL shader block within the pipeline context. Creates the GStreamer shader filter, compiles the GLSL shader programs, applies the shader settings, and establishes the necessary pad connections for processing video frames with custom GPU shaders. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the shader block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL shader operations, including GStreamer elements and compiled GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL shader block. Properly disposes of GStreamer elements and GPU shader program resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer shader filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the custom shader filter. ### IsAvailable() Determines whether OpenGL shader functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL shader execution plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if custom shader operations are supported; otherwise, false. ### Update() Updates the shader programs and uniform variables with the current settings. Recompiles and reloads GLSL shader code and applies new uniform variable values for dynamic shader effects. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL shader block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this shader block. ## See Also --- # Class GLSinCityBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLSinCityBlock.html # Class GLSinCityBlock # Class GLSinCityBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated Sin City noir effect block for creating dramatic black and white compositions with selective color. Implements the distinctive film noir visual style with high contrast monochrome imagery and selective color preservation, creating cinematic effects reminiscent of graphic novel aesthetics and dramatic storytelling visuals. Implements the . Implements the . Implements the . ```csharp public class GLSinCityBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLSinCityBlock() Initializes a new instance of the class for Sin City noir visual effects. Creates the necessary input and output pads for video processing with dramatic black and white styling and selective color. ```csharp public GLSinCityBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be noir-styled. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing Sin City noir-styled video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL Sin City effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL Sin City noir effect block within the pipeline context. Creates the GStreamer Sin City filter and establishes the necessary pad connections for processing video frames with dramatic noir-style contrast and selective color effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Sin City noir effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL Sin City noir effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL Sin City noir effect block. Properly disposes of GStreamer elements and GPU color processing shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer Sin City filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the Sin City noir effect filter. ### IsAvailable() Determines whether OpenGL Sin City noir effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL color processing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Sin City noir effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL Sin City noir effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Sin City noir effect block. ## See Also --- # Class GLSobelBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLSobelBlock.html # Class GLSobelBlock # Class GLSobelBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated Sobel edge detection filter block for advanced computer vision and image analysis. Implements the Sobel operator, a first-order derivative filter that detects edges by computing gradients in horizontal and vertical directions, widely used for edge detection, feature extraction, and image sharpening in computer vision applications. Implements the . Implements the . Implements the . ```csharp public class GLSobelBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLSobelBlock(GLSobelVideoEffect) Initializes a new instance of the class with the specified Sobel filter settings. Creates the necessary input and output pads for video processing with edge detection and gradient analysis. ```csharp public GLSobelBlock(GLSobelVideoEffect settings) ``` #### Parameters Parameters: - settings (GLSobelVideoEffect): The Sobel effect settings that define the edge detection parameters and gradient computation. ## Properties ### Input Gets the primary input pad for receiving video frames to be edge-detected. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing Sobel-processed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Sobel filter settings that control the edge detection sensitivity and gradient computation parameters. ```csharp public GLSobelVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLSobelVideoEffect): ### Type Gets the media block type identifier for OpenGL Sobel operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL Sobel edge detection block within the pipeline context. Creates the GStreamer Sobel filter, applies the edge detection settings, and establishes the necessary pad connections for processing video frames with gradient-based edge enhancement. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Sobel edge detection block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL Sobel edge detection, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL Sobel edge detection block. Properly disposes of GStreamer elements and GPU image processing shader resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer Sobel filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the Sobel edge detection filter. ### IsAvailable() Determines whether OpenGL Sobel edge detection functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL image processing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Sobel edge detection operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL Sobel edge detection block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Sobel edge detection block. ## See Also --- # Class GLSquareBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLSquareBlock.html # Class GLSquareBlock # Class GLSquareBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated square geometric distortion effect block for creating angular and pixelated visual effects. Applies square-based geometric transformations that create blocky, angular distortions and pixelation effects, useful for creating retro gaming aesthetics, digital art effects, and stylized geometric video processing. Implements the . Implements the . Implements the . ```csharp public class GLSquareBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLSquareBlock() Initializes a new instance of the class for square geometric distortion effects. Creates the necessary input and output pads for video processing with angular and blocky transformations. ```csharp public GLSquareBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be geometrically distorted. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing square-distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL square effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL square geometric effect block within the pipeline context. Creates the GStreamer square filter and establishes the necessary pad connections for processing video frames with angular and blocky geometric distortions. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the square geometric effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL square geometric effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL square geometric effect block. Properly disposes of GStreamer elements and GPU geometric transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer square filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the square geometric effect filter. ### IsAvailable() Determines whether OpenGL square geometric effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL geometric transformation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if square geometric effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL square geometric effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this square geometric effect block. ## See Also --- # Class GLSqueezeBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLSqueezeBlock.html # Class GLSqueezeBlock # Class GLSqueezeBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated squeeze geometric distortion effect block for creating compression and pinch visual effects. Applies radial compression transformations that squeeze or pinch portions of the video towards a central point, creating dramatic perspective distortions, focus effects, and artistic geometric manipulations for visual impact. Implements the . Implements the . Implements the . ```csharp public class GLSqueezeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLSqueezeBlock() Initializes a new instance of the class for squeeze compression distortion effects. Creates the necessary input and output pads for video processing with radial compression and pinch transformations. ```csharp public GLSqueezeBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be compressed and squeezed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing squeeze-distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL squeeze effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL squeeze compression effect block within the pipeline context. Creates the GStreamer squeeze filter and establishes the necessary pad connections for processing video frames with radial compression and pinch distortions. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the squeeze compression effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL squeeze compression effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL squeeze compression effect block. Properly disposes of GStreamer elements and GPU geometric transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer squeeze filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the squeeze compression effect filter. ### IsAvailable() Determines whether OpenGL squeeze compression effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL geometric distortion plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if squeeze compression effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL squeeze compression effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this squeeze compression effect block. ## See Also --- # Class GLStretchBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLStretchBlock.html # Class GLStretchBlock # Class GLStretchBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated stretch geometric distortion effect block for creating expansion and stretching visual effects. Applies radial expansion transformations that stretch or expand portions of the video away from a central point, creating dramatic perspective distortions, magnification effects, and artistic geometric manipulations for dynamic visual impact. Implements the . Implements the . Implements the . ```csharp public class GLStretchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLStretchBlock() Initializes a new instance of the class for stretch expansion distortion effects. Creates the necessary input and output pads for video processing with radial expansion and stretching transformations. ```csharp public GLStretchBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be expanded and stretched. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing stretch-distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL stretch effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL stretch expansion effect block within the pipeline context. Creates the GStreamer stretch filter and establishes the necessary pad connections for processing video frames with radial expansion and stretching distortions. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the stretch expansion effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL stretch expansion effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL stretch expansion effect block. Properly disposes of GStreamer elements and GPU geometric transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer stretch filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the stretch expansion effect filter. ### IsAvailable() Determines whether OpenGL stretch expansion effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL geometric distortion plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if stretch expansion effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL stretch expansion effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this stretch expansion effect block. ## See Also --- # Class GLTransformationBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLTransformationBlock.html # Class GLTransformationBlock # Class GLTransformationBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated comprehensive video transformation block for advanced geometric and spatial video manipulations. Provides GPU-accelerated transformation capabilities including rotation, scaling, translation, perspective correction, and complex matrix-based transformations for professional video processing, motion graphics, and geometric corrections. Implements the . Implements the . Implements the . ```csharp public class GLTransformationBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLTransformationBlock(GLTransformationVideoEffect) Initializes a new instance of the class with the specified transformation settings. Creates the necessary input and output pads for video processing with comprehensive geometric transformations. ```csharp public GLTransformationBlock(GLTransformationVideoEffect settings) ``` #### Parameters Parameters: - settings (GLTransformationVideoEffect): The transformation effect settings that define the geometric operation parameters and transformation matrices. ## Properties ### Input Gets the primary input pad for receiving video frames to be geometrically transformed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing geometrically transformed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the transformation settings that control rotation, scaling, translation, and matrix-based geometric operations. ```csharp public GLTransformationVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (GLTransformationVideoEffect): ### Type Gets the media block type identifier for OpenGL transformation operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL transformation block within the pipeline context. Creates the GStreamer transformation filter, applies the geometric settings, and establishes the necessary pad connections for processing video frames with comprehensive spatial transformations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the transformation block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL transformation operations, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL transformation block. Properly disposes of GStreamer elements and GPU transformation matrix resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer transformation filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the comprehensive transformation filter. ### IsAvailable() Determines whether OpenGL transformation functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL geometric transformation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if transformation operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL transformation block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this transformation block. ## See Also --- # Class GLTwirlBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLTwirlBlock.html # Class GLTwirlBlock # Class GLTwirlBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated twirl swirl distortion effect block for creating spiral and rotational geometric effects. Applies radial twisting transformations that rotate portions of the video around a central point in a spiral pattern, creating dynamic swirl effects, vortex distortions, and artistic spiral manipulations for dramatic visual impact. Implements the . Implements the . Implements the . ```csharp public class GLTwirlBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLTwirlBlock() Initializes a new instance of the class for twirl swirl distortion effects. Creates the necessary input and output pads for video processing with radial spiral and rotational transformations. ```csharp public GLTwirlBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be twisted and swirled. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing twirl-distorted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL twirl effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL twirl swirl effect block within the pipeline context. Creates the GStreamer twirl filter and establishes the necessary pad connections for processing video frames with radial spiral and rotational distortions. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the twirl swirl effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL twirl swirl effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL twirl swirl effect block. Properly disposes of GStreamer elements and GPU geometric transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer twirl filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the twirl swirl effect filter. ### IsAvailable() Determines whether OpenGL twirl swirl effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL geometric distortion plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if twirl swirl effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL twirl swirl effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this twirl swirl effect block. ## See Also --- # Class GLUploadBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLUploadBlock.html # Class GLUploadBlock # Class GLUploadBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video data upload block for transferring video frames from system memory to GPU memory. Provides high-performance video frame upload operations that transfer video data from CPU memory to OpenGL textures on the GPU, enabling GPU-accelerated video processing, effects, and transformations within the OpenGL pipeline. Implements the . Implements the . Implements the . ```csharp public class GLUploadBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLUploadBlock() Initializes a new instance of the class for GPU memory upload operations. Creates the necessary input and output pads for transferring video frames from system memory to GPU memory. ```csharp public GLUploadBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames from system memory. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing video frames in GPU memory. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL upload operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL upload block within the pipeline context. Creates the GStreamer upload element and establishes the necessary pad connections for transferring video frames from system memory to GPU memory. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the upload block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL upload operations, including GStreamer elements and GPU memory allocations. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL upload block. Properly disposes of GStreamer elements and GPU memory transfer resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer upload element. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the OpenGL upload filter. ### IsAvailable() Determines whether OpenGL upload functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL memory transfer plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if upload operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL upload block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this upload block. ## See Also --- # Class GLVideoConverterBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLVideoConverterBlock.html # Class GLVideoConverterBlock # Class GLVideoConverterBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video format conversion block for high-performance pixel format and colorspace transformations. Provides GPU-accelerated video conversion capabilities including pixel format changes, colorspace transformations, chroma subsampling conversions, and color depth adjustments optimized for OpenGL pipeline processing. Implements the . Implements the . Implements the . ```csharp public class GLVideoConverterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLVideoConverterBlock() Initializes a new instance of the class for GPU-accelerated video format conversion. Creates the necessary input and output pads for processing video with high-performance format transformations. ```csharp public GLVideoConverterBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be format converted. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing format-converted video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL video conversion operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL video converter block within the pipeline context. Creates the GStreamer video converter element and establishes the necessary pad connections for processing video frames with GPU-accelerated format transformations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the video converter block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL video conversion operations, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL video converter block. Properly disposes of GStreamer elements and GPU format conversion resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer video converter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the OpenGL video converter filter. ### IsAvailable() Determines whether OpenGL video conversion functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL video conversion plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video conversion operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL video converter block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this video converter block. ## See Also --- # Class GLVideoMixerBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLVideoMixerBlock.html # Class GLVideoMixerBlock # Class GLVideoMixerBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video mixer block for high-performance multi-stream video compositing and blending. Provides GPU-accelerated video mixing capabilities with multiple input streams, real-time positioning, scaling, rotation, alpha blending, chroma key effects, and advanced compositing operations for live streaming and video production. Implements the . Implements the . Implements the . ```csharp public class GLVideoMixerBlock : MediaBlock, IMediaBlock, IDisposable, IVideoMixerControl, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLVideoMixerBlock(GLVideoMixerSettings) Initializes a new instance of the class with the specified mixer settings. Creates the necessary input and output pads for multi-stream video compositing with GPU-accelerated blending. ```csharp public GLVideoMixerBlock(GLVideoMixerSettings settings) ``` #### Parameters Parameters: - settings (GLVideoMixerSettings): The video mixer settings that define the stream configuration and compositing parameters. ## Properties ### Input Gets the primary input pad (first of multiple mixer inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (multiple inputs for video mixing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing the composited video result. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for composited video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video mixer settings that control compositing behavior, stream configurations, and blending parameters. ```csharp public GLVideoMixerSettings Settings { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerSettings): ### Type Gets the media block type identifier for OpenGL video mixer operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL video mixer block within the pipeline context. Creates the GStreamer video mixer element, configures multiple input streams, applies the mixer settings, and establishes the necessary pad connections for multi-stream video compositing with GPU acceleration. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the video mixer block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL video mixer operations, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL video mixer block. Properly disposes of GStreamer elements and GPU compositing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer video mixer. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the OpenGL video mixer filter. ### Input_Get(Guid) Gets the video mixer input stream configuration by its unique identifier. ```csharp public VideoMixerStream Input_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream. #### Returns Parameters: - (VideoMixerStream): The VideoMixerStream configuration for the specified input stream. ### Input_List() Gets all configured input stream configurations for the video mixer. ```csharp public VideoMixerStream[] Input_List() ``` #### Returns Parameters: - (VideoMixerStream [ ]): An array of VideoMixerStream configurations for all input streams. ### Input_Move(Guid, Rect, TimeSpan, double?, double?) Animates the position and opacity of a specific input stream over time with smooth transitions. ```csharp public void Input_Move(Guid id, Rect rect, TimeSpan duration, double? startAlpha, double? endAlpha) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to animate. - rect (Rect): The target rectangle position and size for the animation. - duration (TimeSpan): The duration of the animation transition. - startAlpha (double ?): The starting alpha opacity value (optional, null to use current). - endAlpha (double ?): The ending alpha opacity value (optional, null to use current). ### Input_SetChromaKeyEnabled(Guid, bool) Enables or disables chroma key (green screen) processing for a specific input stream. ```csharp public void Input_SetChromaKeyEnabled(Guid id, bool enabled) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to modify. - enabled (bool): True to enable chroma key transparency, false to disable. ### Input_Update(VideoMixerStream) Updates the configuration of a specific input stream with new positioning, scaling, and blending parameters. ```csharp public void Input_Update(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The VideoMixerStream configuration with updated parameters for the input stream. ### Input_UpdateChromaKeySettings(Guid, ChromaKeySettingsX) Updates the chroma key (green screen) settings for a specific input stream, configuring color-based transparency. ```csharp public void Input_UpdateChromaKeySettings(Guid id, ChromaKeySettingsX settings) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to update. - settings (ChromaKeySettingsX): The new chroma key settings defining the color range and transparency parameters. ### IsAvailable() Determines whether OpenGL video mixer functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL video compositing plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video mixing operations are supported; otherwise, false. ### SetSettings(VideoMixerBaseSettings) Updates the video mixer settings with new configuration parameters for compositing behavior. ```csharp public void SetSettings(VideoMixerBaseSettings settings) ``` #### Parameters Parameters: - settings (VideoMixerBaseSettings): The new video mixer base settings to apply to the compositing operation. ### StartFadeIn(Guid, TimeSpan) Starts a fade-in animation for a specific input stream, gradually increasing opacity from transparent to opaque. ```csharp public void StartFadeIn(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to fade in. - duration (TimeSpan): The duration of the fade-in animation. ### StartFadeOut(Guid, TimeSpan) Starts a fade-out animation for a specific input stream, gradually decreasing opacity from opaque to transparent. ```csharp public void StartFadeOut(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to fade out. - duration (TimeSpan): The duration of the fade-out animation. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL video mixer block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this video mixer block. ## See Also --- # Class GLVideoRendererBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLVideoRendererBlock.html # Class GLVideoRendererBlock # Class GLVideoRendererBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated video renderer block for high-performance video display and presentation. Provides GPU-accelerated video rendering capabilities with direct OpenGL texture rendering to display surfaces, enabling hardware-accelerated video playback, real-time preview, and efficient video output with cross-platform support. Implements the . Implements the . Implements the . ```csharp public class GLVideoRendererBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockRenderer ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLVideoRendererBlock(IVideoView) Initializes a new instance of the class with the specified video view. Creates the necessary input pad for receiving video frames and associates the renderer with the provided display surface. ```csharp public GLVideoRendererBlock(IVideoView videoView) ``` #### Parameters Parameters: - videoView (IVideoView): The video view control that provides the display surface for rendering. ## Properties ### Input Gets the primary input pad for receiving video frames to be displayed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether to synchronize video frames with the pipeline clock. True for playback applications to maintain proper timing, false for transcoding applications where speed is prioritized. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ### Output Gets the primary output pad (none for renderer blocks that display content). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for renderer blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video renderer settings that control display properties, aspect ratio, and rendering behavior. ```csharp public GLVideoRendererSettings Settings { get; set; } ``` #### Property Value Parameters: - (GLVideoRendererSettings): ### Type Gets the media block type identifier for OpenGL video renderer operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL video renderer block within the pipeline context. Creates the GStreamer video renderer element, configures the display surface, applies the renderer settings, and establishes the necessary input pad connections for receiving video frames to display. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the video renderer block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL video renderer, including GStreamer elements and display surface connections. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL video renderer block. Properly disposes of GStreamer elements and GPU rendering resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer video renderer. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the OpenGL video renderer. ### GetVideoView() Gets the video view control that provides the display surface for video rendering. ```csharp public IVideoView GetVideoView() ``` #### Returns Parameters: - (IVideoView): The IVideoView interface for the associated display surface. ### IsAvailable() Determines whether OpenGL video renderer functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL video rendering plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video rendering operations are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL video renderer block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this video renderer block. ## See Also --- # Class GLVirtualVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLVirtualVideoSourceBlock.html # Class GLVirtualVideoSourceBlock # Class GLVirtualVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated virtual video source block for generating programmable GPU-based video content. Provides high-performance virtual video generation capabilities using OpenGL shaders and GPU rendering to create synthetic video content, test patterns, procedural animations, and custom graphics for pipeline processing. Implements the . Implements the . Implements the . ```csharp public class GLVirtualVideoSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLVirtualVideoSourceBlock(GLVirtualVideoSourceSettings) Initializes a new instance of the class with the specified generation settings. Creates the necessary output pad for providing virtual video content generated using OpenGL GPU rendering. ```csharp public GLVirtualVideoSourceBlock(GLVirtualVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (GLVirtualVideoSourceSettings): The virtual video source settings that define the content generation and rendering parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that generate content). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing generated virtual video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for generated video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the virtual video source settings that control content generation, resolution, frame rate, and rendering parameters. ```csharp public GLVirtualVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (GLVirtualVideoSourceSettings): ### Type Gets the media block type identifier for OpenGL virtual video source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL virtual video source block within the pipeline context. Creates the GStreamer virtual video source, applies the generation settings, configures the video queue, and establishes the necessary output pad connections for providing generated virtual video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the virtual video source block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL virtual video source, including GStreamer elements and GPU rendering contexts. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL virtual video source block. Properly disposes of GStreamer elements and GPU rendering resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the virtual video source. ### IsAvailable() Determines whether OpenGL virtual video source functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL video generation plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if virtual video generation is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL virtual video source block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this virtual video source block. ## See Also --- # Class GLXRayBlock Link: api/VisioForge.Core.MediaBlocks.OpenGL.GLXRayBlock.html # Class GLXRayBlock # Class GLXRayBlock **Namespace**: VisioForge.Core.MediaBlocks.OpenGL **Assembly**: VisioForge.Core.dll OpenGL-accelerated X-ray visual effect block for creating medical imaging and skeletal visualization effects. Applies GPU-accelerated X-ray transformations that invert colors, enhance edges, and create high-contrast skeletal imagery simulating medical X-ray imaging, with artistic applications for dramatic visual effects and scientific visualizations. Implements the . Implements the . Implements the . ```csharp public class GLXRayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GLXRayBlock() Initializes a new instance of the class for X-ray imaging effects. Creates the necessary input and output pads for video processing with medical imaging and skeletal visualization transformations. ```csharp public GLXRayBlock() ``` ## Properties ### Input Gets the primary input pad for receiving video frames to be X-ray processed. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single input for video processing). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for providing X-ray processed video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for processed video). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OpenGL X-ray effects. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OpenGL X-ray imaging effect block within the pipeline context. Creates the GStreamer X-ray filter and establishes the necessary pad connections for processing video frames with medical imaging and skeletal visualization effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the X-ray imaging effect block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OpenGL X-ray imaging effect, including GStreamer elements and GPU shader programs. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OpenGL X-ray imaging effect block. Properly disposes of GStreamer elements and GPU imaging transformation resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper providing access to the underlying GStreamer X-ray filter. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native Gst.Element representing the X-ray imaging effect filter. ### IsAvailable() Determines whether OpenGL X-ray effect functionality is available on the current system. Requires OpenGL support and appropriate GStreamer OpenGL imaging effect plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if X-ray imaging effects are supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OpenGL X-ray imaging effect block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this X-ray imaging effect block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.OpenGL Link: api/VisioForge.Core.MediaBlocks.OpenGL.html # Namespace VisioForge.Core.MediaBlocks.OpenGL # Namespace VisioForge.Core.MediaBlocks.OpenGL ### Classes Parameters: - (): OpenGL alpha blending block for advanced transparency and compositing effects. This block provides GPU-accelerated alpha channel manipulation using OpenGL shaders for high-performance video compositing. Supports various alpha blending modes, transparency gradients, and real-time alpha channel modifications. Essential for creating professional video overlays, chroma key effects, and complex multi-layer compositions. Leverages GPU parallel processing for smooth real-time alpha blending even with high-resolution video streams. Implements the . Implements the . Implements the . - (): OpenGL blur block for GPU-accelerated image smoothing and blur effects. This block provides high-performance blur processing using OpenGL shaders and GPU parallel processing capabilities. Supports various blur algorithms including Gaussian, box blur, and motion blur with configurable intensity and direction parameters. Essential for creating cinematic effects, depth-of-field simulation, background defocusing, and artistic video treatments. Achieves real-time performance even with high-resolution video through efficient GPU computation. Implements the . Implements the . Implements the . - (): OpenGL bulge effect block for spherical geometric distortion and lens simulation. This block creates a bulge or bubble effect that simulates looking through a convex lens or magnifying glass. Uses GPU-accelerated OpenGL shaders to perform real-time geometric transformation that expands the center of the image while compressing the edges. Essential for creating artistic visual effects, lens simulation, virtual reality content, and creative video transformations. Provides configurable bulge intensity and center positioning. Implements the . Implements the . Implements the . - (): OpenGL color balance block for professional color correction and grading. This block provides GPU-accelerated color adjustment capabilities including hue, saturation, brightness, contrast, gamma correction, and white balance adjustments. Uses OpenGL shaders for real-time color manipulation with professional-grade precision. Essential for broadcast video production, color grading workflows, and correcting color cast issues. Supports RGB channel-specific adjustments and maintains color accuracy throughout the processing pipeline. Implements the . Implements the . Implements the . - (): OpenGL deinterlace block for GPU-accelerated interlaced video conversion. This block converts interlaced video (where odd and even lines are captured at different times) into progressive video using advanced OpenGL shader algorithms. Essential for processing legacy broadcast content, security camera footage, and older video formats. Provides multiple deinterlacing algorithms including line doubling, motion-adaptive, and temporal interpolation methods. Achieves superior quality and performance compared to CPU-based deinterlacing through GPU parallel processing. Implements the . Implements the . Implements the . - (): OpenGL GPU to system memory download block for transferring video frames from GPU memory to system memory. This block is essential for retrieving processed video data from GPU-accelerated OpenGL operations back to system memory for further CPU-based processing, encoding, or output operations. Implements the . Implements the . Implements the . - (): OpenGL-accelerated equirectangular view block for immersive 360-degree and VR video processing. Provides GPU-accelerated transformation of equirectangular (spherical) video content into perspective views with interactive controls for yaw, pitch, roll, and field of view, enabling VR video playback and immersive media experiences. Implements the . Implements the . Implements the . - (): OpenGL-accelerated fish eye lens effect block for creating spherical barrel distortion video effects. Simulates the characteristic distortion pattern of wide-angle fish eye camera lenses, creating a dramatic curved perspective that maps the entire scene onto a circular frame with maximum distortion at the edges. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video flip transformation block for horizontal and vertical mirroring operations. Provides GPU-accelerated flipping capabilities including horizontal flip (mirror), vertical flip, and combined transformations for creating mirror effects and correcting camera orientations. Implements the . Implements the . Implements the . - (): OpenGL-accelerated glow lighting effect block for creating atmospheric luminous effects around bright areas. Produces cinematic glow and bloom effects by detecting bright regions in the video and extending their luminosity with soft, diffused light halos that create dramatic lighting atmospheres and enhanced visual impact. Implements the . Implements the . Implements the . - (): OpenGL-accelerated grayscale conversion block for transforming color video into monochrome output. Provides GPU-accelerated color-to-grayscale conversion using luminance-based algorithms that maintain proper brightness levels and contrast while removing color information for artistic or technical purposes. Implements the . Implements the . Implements the . - (): OpenGL-accelerated heat shimmer effect block for creating thermal distortion and atmospheric heat wave effects. Simulates the visual distortion seen when looking through hot air, such as heat rising from pavement or fire, creating dynamic wavering and shimmering effects that add realism to hot environments and thermal scenarios. Implements the . Implements the . Implements the . - (): OpenGL-accelerated Laplacian edge detection filter block for advanced image processing and edge enhancement. Implements the Laplacian operator, a second-order derivative filter that detects edges and fine details by highlighting areas of rapid intensity change, commonly used for sharpening and feature detection in computer vision applications. Implements the . Implements the . Implements the . - (): OpenGL-accelerated light tunnel effect block for creating dramatic radial lighting and tunnel vision effects. Generates dynamic tunnel-like light patterns that draw the viewer's attention to the center of the frame, creating cinematic depth effects and dramatic visual focus with customizable radial light distribution. Implements the . Implements the . Implements the . - (): OpenGL-accelerated luma cross processing effect block for creating stylized color grading and film-look effects. Applies cross-channel processing to the luminance component, creating distinctive color shifts and tonal adjustments that simulate various film stocks and artistic color grading techniques for cinematic visual enhancement. Implements the . Implements the . Implements the . - (): OpenGL-accelerated mirror reflection effect block for creating symmetrical video reflections and kaleidoscope patterns. Provides GPU-accelerated mirroring capabilities that can reflect video content along horizontal, vertical, or diagonal axes, creating artistic mirror effects, symmetrical compositions, and kaleidoscopic visual patterns for creative video processing. Implements the . Implements the . Implements the . - (): OpenGL-accelerated image overlay block for compositing static images and graphics onto video streams. Provides GPU-accelerated overlay capabilities with alpha blending, positioning, scaling, and rotation support for watermarks, logos, graphics overlays, and picture-in-picture compositions with real-time performance. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video resize block for high-performance video scaling and resolution transformation. Provides GPU-accelerated resizing capabilities with various interpolation algorithms, aspect ratio control, and optimized scaling operations for real-time video processing with minimal CPU overhead. Implements the . Implements the . Implements the . - (): OpenGL-accelerated sepia tone effect block for creating vintage and nostalgic visual aesthetics. Applies warm brown and golden color tones that simulate the appearance of aged photographs, creating classic vintage effects commonly used in artistic video processing and retro styling. Implements the . Implements the . Implements the . - (): OpenGL-accelerated programmable shader block for custom GPU-based video processing and effects. Provides high-performance custom shader execution capabilities using GLSL vertex and fragment shaders to create custom visual effects, color transformations, and advanced video processing operations with full GPU acceleration. Implements the . Implements the . Implements the . - (): OpenGL-accelerated Sin City noir effect block for creating dramatic black and white compositions with selective color. Implements the distinctive film noir visual style with high contrast monochrome imagery and selective color preservation, creating cinematic effects reminiscent of graphic novel aesthetics and dramatic storytelling visuals. Implements the . Implements the . Implements the . - (): OpenGL-accelerated Sobel edge detection filter block for advanced computer vision and image analysis. Implements the Sobel operator, a first-order derivative filter that detects edges by computing gradients in horizontal and vertical directions, widely used for edge detection, feature extraction, and image sharpening in computer vision applications. Implements the . Implements the . Implements the . - (): OpenGL-accelerated square geometric distortion effect block for creating angular and pixelated visual effects. Applies square-based geometric transformations that create blocky, angular distortions and pixelation effects, useful for creating retro gaming aesthetics, digital art effects, and stylized geometric video processing. Implements the . Implements the . Implements the . - (): OpenGL-accelerated squeeze geometric distortion effect block for creating compression and pinch visual effects. Applies radial compression transformations that squeeze or pinch portions of the video towards a central point, creating dramatic perspective distortions, focus effects, and artistic geometric manipulations for visual impact. Implements the . Implements the . Implements the . - (): OpenGL-accelerated stretch geometric distortion effect block for creating expansion and stretching visual effects. Applies radial expansion transformations that stretch or expand portions of the video away from a central point, creating dramatic perspective distortions, magnification effects, and artistic geometric manipulations for dynamic visual impact. Implements the . Implements the . Implements the . - (): OpenGL-accelerated comprehensive video transformation block for advanced geometric and spatial video manipulations. Provides GPU-accelerated transformation capabilities including rotation, scaling, translation, perspective correction, and complex matrix-based transformations for professional video processing, motion graphics, and geometric corrections. Implements the . Implements the . Implements the . - (): OpenGL-accelerated twirl swirl distortion effect block for creating spiral and rotational geometric effects. Applies radial twisting transformations that rotate portions of the video around a central point in a spiral pattern, creating dynamic swirl effects, vortex distortions, and artistic spiral manipulations for dramatic visual impact. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video data upload block for transferring video frames from system memory to GPU memory. Provides high-performance video frame upload operations that transfer video data from CPU memory to OpenGL textures on the GPU, enabling GPU-accelerated video processing, effects, and transformations within the OpenGL pipeline. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video format conversion block for high-performance pixel format and colorspace transformations. Provides GPU-accelerated video conversion capabilities including pixel format changes, colorspace transformations, chroma subsampling conversions, and color depth adjustments optimized for OpenGL pipeline processing. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video mixer block for high-performance multi-stream video compositing and blending. Provides GPU-accelerated video mixing capabilities with multiple input streams, real-time positioning, scaling, rotation, alpha blending, chroma key effects, and advanced compositing operations for live streaming and video production. Implements the . Implements the . Implements the . - (): OpenGL-accelerated video renderer block for high-performance video display and presentation. Provides GPU-accelerated video rendering capabilities with direct OpenGL texture rendering to display surfaces, enabling hardware-accelerated video playback, real-time preview, and efficient video output with cross-platform support. Implements the . Implements the . Implements the . - (): OpenGL-accelerated virtual video source block for generating programmable GPU-based video content. Provides high-performance virtual video generation capabilities using OpenGL shaders and GPU rendering to create synthetic video content, test patterns, procedural animations, and custom graphics for pipeline processing. Implements the . Implements the . Implements the . - (): OpenGL-accelerated X-ray visual effect block for creating medical imaging and skeletal visualization effects. Applies GPU-accelerated X-ray transformations that invert colors, enhance edges, and create high-contrast skeletal imagery simulating medical X-ray imaging, with artistic applications for dramatic visual effects and scientific visualizations. Implements the . Implements the . Implements the . --- # Class AV1ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.AV1ParseBlock.html # Class AV1ParseBlock # Class AV1ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses AV1 (AOMedia Video 1) bitstreams for frame boundary detection and metadata extraction. ```csharp public class AV1ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The AV1ParseBlock analyzes AV1 bitstreams to identify frame boundaries, extract metadata, and prepare the stream for further processing. AV1 uses OBU (Open Bitstream Unit) structures to organize video data, including sequence headers, frame headers, and tile data.

Key features: - OBU parsing and validation - Frame boundary detection for proper packetization - Sequence and frame header extraction - Temporal unit and frame group identification - Profile and level verification - HDR metadata extraction when present

Common use cases: - Streaming: Preparing AV1 streams for RTP/WebRTC transmission - Muxing: Packaging AV1 video into container formats (MP4, WebM, MKV) - Analysis: Extracting codec configuration and stream properties - Transcoding: Providing properly parsed frames to decoders

The parser handles both Annex B format (with temporal unit delimiters) and raw OBU streams, automatically detecting the input format and processing accordingly.

## Constructors ### AV1ParseBlock() Initializes a new instance of the class. ```csharp public AV1ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect the AV1 stream format (Annex B or raw OBU) during processing. ## Properties ### Input Gets the primary input pad for receiving AV1 bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed AV1 frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the AV1 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer AV1 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing data once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for AV1 parsing. ### IsAvailable() Determines whether the AV1 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the AV1 parser plugin is available; otherwise, false. This requires the GStreamer libav or bad plugins to be installed. #### Remarks The AV1 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class H263ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.H263ParseBlock.html # Class H263ParseBlock # Class H263ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses H.263 video bitstreams for frame boundary detection and header analysis. ```csharp public class H263ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The H263ParseBlock processes H.263 encoded video streams, identifying picture start codes, extracting picture headers, and ensuring proper frame alignment. H.263 is a legacy video codec primarily used in video conferencing and older mobile video applications.

Key features: - Picture start code (PSC) detection and validation - GOB (Group of Blocks) header parsing - Picture type identification (I, P, PB frames) - Optional modes detection (Annex D, F, I, J, T) - Frame boundary detection for proper segmentation - Temporal reference extraction

Common use cases: - Video conferencing: Processing H.263 streams from legacy endpoints - Streaming: Preparing H.263 video for RTP transmission (RFC 2190) - Transcoding: Converting H.263 to modern codecs - File conversion: Extracting H.263 from 3GP containers

The parser handles both baseline H.263 and H.263+ (H.263v2) formats, automatically detecting optional features and annexes used in the stream.

## Constructors ### H263ParseBlock() Initializes a new instance of the class. ```csharp public H263ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will detect H.263 baseline or H.263+ format and optional annexes during processing. ## Properties ### Input Gets the primary input pad for receiving H.263 bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed H.263 frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the H.263 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer H.263 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing data once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for H.263 parsing. ### IsAvailable() Determines whether the H.263 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the H.263 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The H.263 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class H264ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.H264ParseBlock.html # Class H264ParseBlock # Class H264ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses H.264/AVC (Advanced Video Coding) bitstreams for NAL unit processing and frame boundary detection. ```csharp public class H264ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The H264ParseBlock processes H.264 encoded video streams, parsing NAL (Network Abstraction Layer) units, extracting SPS/PPS parameters, and ensuring proper access unit boundaries. H.264 is the most widely adopted video codec for streaming, broadcasting, and video storage.

Key features: - NAL unit parsing and validation (start codes and length-prefixed) - SPS (Sequence Parameter Set) and PPS (Picture Parameter Set) extraction - Access unit boundary detection based on H.264 specification - SEI (Supplemental Enhancement Information) message parsing - Slice header analysis for frame type detection - Support for both Annex B (start codes) and AVCC (length-prefixed) formats

Common use cases: - Streaming: Preparing H.264 for HLS, DASH, or RTP transmission - Muxing: Packaging H.264 into MP4, MKV, or TS containers - Analysis: Extracting codec parameters and stream properties - Transcoding: Providing properly parsed NAL units to decoders - Video editing: Frame-accurate cutting and splicing

The parser handles various H.264 profiles (Baseline, Main, High) and levels, automatically adapting to the stream's characteristics and ensuring compliance with the H.264 specification (ITU-T H.264 / ISO/IEC 14496-10).

## Constructors ### H264ParseBlock() Initializes a new instance of the class. ```csharp public H264ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect the H.264 stream format (Annex B with start codes or AVCC with length prefixes) and handle it appropriately. ## Properties ### Input Gets the primary input pad for receiving H.264 bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed H.264 access units. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the H.264 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer H.264 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing NAL units once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for H.264 NAL unit parsing. ### IsAvailable() Determines whether the H.264 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the H.264 parser plugin is available; otherwise, false. This requires the GStreamer base plugins to be installed. #### Remarks The H.264 parser is provided by the GStreamer base plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class H265ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.H265ParseBlock.html # Class H265ParseBlock # Class H265ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses H.265/HEVC (High Efficiency Video Coding) bitstreams for NAL unit processing and frame boundary detection. ```csharp public class H265ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The H265ParseBlock processes H.265/HEVC encoded video streams, parsing NAL (Network Abstraction Layer) units, extracting VPS/SPS/PPS parameters, and ensuring proper access unit boundaries. H.265 offers approximately 50% better compression than H.264 while maintaining similar video quality.

Key features: - NAL unit parsing with support for multi-layer extensions - VPS (Video Parameter Set), SPS, and PPS extraction - Access unit boundary detection per HEVC specification - Temporal layer identification and scalability support - SEI message parsing including HDR metadata (HDR10, HLG) - Support for both Annex B and HVCC (length-prefixed) formats - Slice segment header analysis for frame type detection

Common use cases: - Streaming: Preparing HEVC for HLS, DASH, or RTP transmission - Muxing: Packaging HEVC into MP4, MKV, or TS containers - HDR processing: Extracting and preserving HDR metadata - Transcoding: Providing properly parsed NAL units to HEVC decoders - 4K/8K video: Handling high-resolution video streams efficiently

The parser handles various HEVC profiles including Main, Main 10, Main Still Picture, and Range Extensions. It automatically detects stream characteristics including bit depth, chroma format, and HDR signaling.

## Constructors ### H265ParseBlock() Initializes a new instance of the class. ```csharp public H265ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect the H.265 stream format (Annex B with start codes or HVCC with length prefixes) and handle HDR metadata when present. ## Properties ### Input Gets the primary input pad for receiving H.265/HEVC bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed H.265/HEVC access units. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the H.265/HEVC parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer H.265 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing NAL units once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for H.265/HEVC NAL unit parsing. ### IsAvailable() Determines whether the H.265/HEVC parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the H.265 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The H.265 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class JPEG2000ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.JPEG2000ParseBlock.html # Class JPEG2000ParseBlock # Class JPEG2000ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses JPEG 2000 codestreams and JP2 file format for frame boundary detection and metadata extraction. ```csharp public class JPEG2000ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The JPEG2000ParseBlock processes JPEG 2000 encoded image and video streams, identifying codestream markers, extracting header information, and ensuring proper frame segmentation. JPEG 2000 is a wavelet-based image compression standard offering superior compression and quality scalability compared to traditional JPEG.

Key features: - Codestream marker detection (SOC, SOT, SOD, EOC) - Main header and tile-part header parsing - Component information extraction - Resolution level and quality layer identification - JP2 box structure parsing for file format compliance - Support for both raw codestreams and JP2 container format - Progressive decoding metadata extraction

Common use cases: - Digital cinema: Processing DCI-compliant JPEG 2000 streams - Medical imaging: Handling DICOM JPEG 2000 compressed images - Archival systems: Working with lossless JPEG 2000 content - Broadcasting: Processing JPEG 2000 video sequences - Geospatial imaging: Handling large satellite imagery

The parser supports both lossy and lossless compression modes, multiple component images (including arbitrary color spaces), and can handle very large image resolutions common in professional applications.

## Constructors ### JPEG2000ParseBlock() Initializes a new instance of the class. ```csharp public JPEG2000ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will detect whether the input is a raw JPEG 2000 codestream or JP2 file format and process it accordingly. ## Properties ### Input Gets the primary input pad for receiving JPEG 2000 data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed JPEG 2000 frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the JPEG 2000 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer JPEG 2000 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing data once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for JPEG 2000 parsing. ### IsAvailable() Determines whether the JPEG 2000 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the JPEG 2000 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The JPEG 2000 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class MPEG12VideoParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.MPEG12VideoParseBlock.html # Class MPEG12VideoParseBlock # Class MPEG12VideoParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses MPEG-1 and MPEG-2 video elementary streams for picture boundary detection and header analysis. ```csharp public class MPEG12VideoParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MPEG12VideoParseBlock processes MPEG-1 and MPEG-2 video elementary streams, identifying picture start codes, extracting sequence and picture headers, and ensuring proper GOP (Group of Pictures) alignment. These formats are foundational video compression standards used in DVD, digital TV broadcasting, and legacy video systems.

Key features: - Start code detection and validation (picture, sequence, GOP) - Sequence header parsing (resolution, frame rate, aspect ratio) - Picture header analysis (I, P, B frame types) - GOP structure identification and temporal reference - Extension header parsing for MPEG-2 features - Progressive and interlaced content handling - Closed caption data extraction when present

Common use cases: - DVD playback: Processing MPEG-2 video from DVD sources - Broadcasting: Handling MPEG-2 streams from DVB/ATSC systems - Legacy conversion: Transcoding MPEG-1/2 to modern formats - Video analysis: Extracting GOP structure and frame types - Muxing: Preparing elementary streams for program streams or transport streams

The parser supports various MPEG-2 profiles and levels including Main Profile @ Main Level (MP@ML) for SD content and Main Profile @ High Level (MP@HL) for HD content. It handles both MPEG-1 constrained parameters and full MPEG-2 feature sets.

## Constructors ### MPEG12VideoParseBlock() Initializes a new instance of the class. ```csharp public MPEG12VideoParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect MPEG-1 or MPEG-2 format based on the stream headers and handle progressive or interlaced content appropriately. ## Properties ### Input Gets the primary input pad for receiving MPEG-1/2 video elementary stream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed MPEG video pictures. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MPEG-1/2 video parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer MPEG video parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing data once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for MPEG-1/2 video parsing. ### IsAvailable() Determines whether the MPEG-1/2 video parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the MPEG video parser plugin is available; otherwise, false. This requires the GStreamer base plugins to be installed. #### Remarks The MPEG-1/2 video parser is provided by the GStreamer base plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class MPEG4ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.MPEG4ParseBlock.html # Class MPEG4ParseBlock # Class MPEG4ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses MPEG-4 Part 2 (MPEG-4 Visual) bitstreams for VOP boundary detection and codec parameter extraction. ```csharp public class MPEG4ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MPEG4ParseBlock processes MPEG-4 Part 2 encoded video streams, parsing Visual Object Sequences (VOS), Visual Object Layer (VOL) headers, and Video Object Planes (VOPs) to ensure proper frame boundaries. MPEG-4 Part 2 includes profiles like Simple Profile, Advanced Simple Profile (ASP), and others used in formats like DivX, Xvid, and early MP4 videos.

Key features: - Visual Object Sequence (VOS) header parsing for profile/level detection - Visual Object Layer (VOL) processing for resolution and timing info - Video Object Plane (VOP) boundary detection and type identification (I, P, B, S) - Support for rectangular and arbitrary shaped video objects - Handles packed bitstream mode and B-frame processing - Interlaced content support with field-based processing - Sprite (S-VOP) and GMC (Global Motion Compensation) support

Common use cases: - Streaming: Processing MPEG-4 content for adaptive streaming - Muxing: Packaging MPEG-4 Visual into MP4, AVI, or MKV containers - Transcoding: Providing properly parsed VOPs to MPEG-4 decoders - Legacy support: Handling DivX/Xvid content in media players - Video analysis: Extracting codec parameters and stream properties

The parser handles various MPEG-4 Visual profiles including Simple Profile (SP), Advanced Simple Profile (ASP), Core Profile, and Main Profile, automatically detecting stream characteristics and ensuring compliance with ISO/IEC 14496-2.

## Constructors ### MPEG4ParseBlock() Initializes a new instance of the class. ```csharp public MPEG4ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect the MPEG-4 Visual profile and features (packed bitstream, B-frames, GMC, etc.) upon receiving the VOS/VOL headers. ## Properties ### Input Gets the primary input pad for receiving MPEG-4 Visual bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed MPEG-4 VOPs. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MPEG-4 Visual parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer MPEG-4 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing VOPs once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for MPEG-4 Visual VOP parsing. ### IsAvailable() Determines whether the MPEG-4 Visual parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the MPEG-4 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The MPEG-4 Visual parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class MPEGAudioParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.MPEGAudioParseBlock.html # Class MPEGAudioParseBlock # Class MPEGAudioParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses MPEG Audio (MP1/MP2/MP3) bitstreams for frame boundary detection and audio parameter extraction. ```csharp public class MPEGAudioParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MPEGAudioParseBlock processes MPEG-1 Audio Layer I/II/III and MPEG-2 Audio bitstreams, parsing frame headers to ensure proper frame boundaries and extract audio properties. This includes the widely-used MP3 format as well as MP2 (used in broadcasting) and MP1.

Key features: - Frame header parsing for all MPEG audio layers (I, II, III) - Bitrate detection (CBR and VBR with Xing/VBRI headers) - Sample rate and channel configuration extraction - CRC error detection for protected frames - ID3v1 and ID3v2 tag preservation - Gapless playback support via LAME/encoder delay info - Free format bitstream support

Common use cases: - Streaming: Preparing MP3/MP2 for HTTP Live Streaming or Icecast - Muxing: Packaging MPEG audio into containers like MP4, MKV, or TS - Transcoding: Providing properly framed audio to MPEG audio decoders - Broadcasting: Processing MP2 audio in DVB and DAB applications - Audio analysis: Extracting bitrate, duration, and encoding parameters

The parser handles various MPEG audio versions and layers: - MPEG-1 Audio Layer I (MP1): 32-448 kbps - MPEG-1 Audio Layer II (MP2): 32-384 kbps - MPEG-1 Audio Layer III (MP3): 32-320 kbps - MPEG-2 LSF (Lower Sampling Frequencies) extensions - MPEG-2.5 unofficial extension for very low bitrates

## Constructors ### MPEGAudioParseBlock() Initializes a new instance of the class. ```csharp public MPEGAudioParseBlock() ``` #### Remarks Creates input and output pads configured for audio media type. The parser will automatically detect the MPEG audio layer (I, II, or III) and version (MPEG-1, MPEG-2, or MPEG-2.5) from the frame headers. ## Properties ### Input Gets the primary input pad for receiving MPEG audio bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed MPEG audio frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MPEG audio parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer MPEG audio parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing audio frames once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for MPEG audio frame parsing. ### IsAvailable() Determines whether the MPEG audio parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the MPEG audio parser plugin is available; otherwise, false. This requires the GStreamer good plugins to be installed. #### Remarks The MPEG audio parser is provided by the GStreamer good plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class PNGParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.PNGParseBlock.html # Class PNGParseBlock # Class PNGParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses PNG (Portable Network Graphics) image streams for chunk validation and metadata extraction. ```csharp public class PNGParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The PNGParseBlock processes PNG image streams, parsing the chunk-based structure to validate image integrity and extract metadata. PNG is a lossless image format widely used for web graphics, screenshots, and images requiring transparency support.

Key features: - PNG signature validation (89 50 4E 47 0D 0A 1A 0A) - Critical chunk parsing: IHDR, PLTE, IDAT, IEND - Ancillary chunk support: tEXt, iTXt, gAMA, cHRM, sRGB, etc. - CRC-32 validation for each chunk - Interlaced PNG support (Adam7 interlacing) - Color type detection (grayscale, RGB, palette, alpha) - Bit depth validation (1, 2, 4, 8, 16 bits per channel) - APNG (Animated PNG) frame detection

Common use cases: - Image processing: Validating PNG files before decoding - Streaming: Extracting PNG images from video or data streams - Metadata extraction: Reading text chunks and color space information - Format conversion: Preparing PNG data for transcoding - Web applications: Processing uploaded PNG images - Animation: Handling APNG sequences

The parser ensures PNG specification compliance (ISO/IEC 15948:2003) and handles various PNG variants including standard PNG, APNG (animated), and PNG with extensive metadata. It validates chunk ordering and detects malformed files.

## Constructors ### PNGParseBlock() Initializes a new instance of the class. ```csharp public PNGParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will validate PNG signatures and chunk structure, supporting both standard PNG images and APNG (Animated PNG) sequences. ## Properties ### Input Gets the primary input pad for receiving PNG image data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed PNG images. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the PNG parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer PNG parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin validating PNG chunks once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for PNG chunk parsing. ### IsAvailable() Determines whether the PNG parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the PNG parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The PNG parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class VC1ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.VC1ParseBlock.html # Class VC1ParseBlock # Class VC1ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses VC-1/WMV3 (Windows Media Video) bitstreams for frame boundary detection and codec parameter extraction. ```csharp public class VC1ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The VC1ParseBlock processes VC-1 encoded video streams, parsing Sequence Layer Headers, Entry Point Headers, and Picture Headers to ensure proper frame boundaries. VC-1 is Microsoft's video codec standard (SMPTE 421M) used in WMV9, HD DVD, and Blu-ray.

Key features: - Sequence Layer Header parsing for codec profile and level detection - Entry Point Header processing for display parameters - Picture Header analysis for frame type determination (I, P, B, BI) - Support for Simple, Main, and Advanced Profiles - Handles both ASF encapsulated and raw VC-1 bitstreams - Frame boundary detection based on VC-1 specification - Interlaced and progressive content support

Common use cases: - Streaming: Processing WMV content for adaptive streaming - Muxing: Packaging VC-1 into ASF, MP4, or MKV containers - Transcoding: Providing properly parsed frames to VC-1 decoders - Broadcast: Handling VC-1 streams in broadcast applications - Media analysis: Extracting codec parameters and stream properties

The parser handles all VC-1 profiles including Simple Profile (WMV9 Simple), Main Profile (WMV9 Main), and Advanced Profile (WVC1), automatically adapting to the stream characteristics and ensuring compliance with SMPTE 421M.

## Constructors ### VC1ParseBlock() Initializes a new instance of the class. ```csharp public VC1ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect the VC-1 profile (Simple, Main, or Advanced) and stream format (raw or ASF-encapsulated) upon receiving data. ## Properties ### Input Gets the primary input pad for receiving VC-1 bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed VC-1 frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VC-1 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer VC-1 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing VC-1 frames once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for VC-1 bitstream parsing. ### IsAvailable() Determines whether the VC-1 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the VC-1 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The VC-1 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Class VP9ParseBlock Link: api/VisioForge.Core.MediaBlocks.Parsers.VP9ParseBlock.html # Class VP9ParseBlock # Class VP9ParseBlock **Namespace**: VisioForge.Core.MediaBlocks.Parsers **Assembly**: VisioForge.Core.dll Parses VP9 video bitstreams for superframe boundary detection and codec parameter extraction. ```csharp public class VP9ParseBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The VP9ParseBlock processes VP9 encoded video streams, parsing frame headers and superframe structures to ensure proper frame boundaries. VP9 is Google's open-source video codec offering efficient compression for web video, competing with H.265/HEVC while remaining royalty-free.

Key features: - Superframe parsing and frame boundary detection - Profile detection (0-3) including high bit depth support - Frame header parsing for resolution and reference frame info - Temporal and spatial scalability layer identification - Color space and HDR metadata extraction (BT.709, BT.2020, etc.) - Lossless compression mode detection - Show existing frame and invisible frame handling - Segmentation and tile boundary processing

Common use cases: - Streaming: Preparing VP9 for WebM/DASH adaptive streaming - Muxing: Packaging VP9 into WebM, MP4, or MKV containers - Web video: Processing VP9 content for HTML5 video playback - Transcoding: Providing properly parsed frames to VP9 decoders - YouTube: Handling VP9 streams from YouTube and similar platforms - WebRTC: Processing VP9 in real-time communication applications

The parser supports all VP9 profiles: - Profile 0: 8-bit 4:2:0 (most common) - Profile 1: 8-bit 4:2:2, 4:4:4 - Profile 2: 10/12-bit 4:2:0 - Profile 3: 10/12-bit 4:2:2, 4:4:4 It handles both traditional frame-based streams and superframe-packed formats commonly used in WebM containers.

## Constructors ### VP9ParseBlock() Initializes a new instance of the class. ```csharp public VP9ParseBlock() ``` #### Remarks Creates input and output pads configured for video media type. The parser will automatically detect VP9 profile, bit depth, and color space information from the bitstream headers and handle superframe structures when present. ## Properties ### Input Gets the primary input pad for receiving VP9 bitstream data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides parsed VP9 frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### OutputPad ```csharp public MediaBlockPad OutputPad { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VP9 parser element within the media pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the parser was successfully created and configured; false if initialization failed or required plugins are missing. #### Remarks This method creates the GStreamer VP9 parser element, initializes it within the pipeline context, and connects the input/output pads. The parser will begin processing VP9 frames and superframes once the pipeline transitions to the playing state. ### CleanUp() Performs cleanup of the parser resources and resets the build state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the GStreamer element and resets internal state. It is called during disposal to ensure proper resource cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapper providing access to common GStreamer functionality. ### GetElement() Gets the underlying native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element instance used for VP9 frame parsing. ### IsAvailable() Determines whether the VP9 parser is available in the current GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the VP9 parser plugin is available; otherwise, false. This requires the GStreamer bad plugins to be installed. #### Remarks The VP9 parser is provided by the GStreamer bad plugins collection. Ensure the appropriate VisioForge SDK redistribution package is included in your project. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this parser block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Parsers Link: api/VisioForge.Core.MediaBlocks.Parsers.html # Namespace VisioForge.Core.MediaBlocks.Parsers # Namespace VisioForge.Core.MediaBlocks.Parsers ### Classes Parameters: - (): Parses AV1 (AOMedia Video 1) bitstreams for frame boundary detection and metadata extraction. - (): Parses H.263 video bitstreams for frame boundary detection and header analysis. - (): Parses H.264/AVC (Advanced Video Coding) bitstreams for NAL unit processing and frame boundary detection. - (): Parses H.265/HEVC (High Efficiency Video Coding) bitstreams for NAL unit processing and frame boundary detection. - (): Parses JPEG 2000 codestreams and JP2 file format for frame boundary detection and metadata extraction. - (): Parses MPEG-1 and MPEG-2 video elementary streams for picture boundary detection and header analysis. - (): Parses MPEG-4 Part 2 (MPEG-4 Visual) bitstreams for VOP boundary detection and codec parameter extraction. - (): Parses MPEG Audio (MP1/MP2/MP3) bitstreams for frame boundary detection and audio parameter extraction. - (): Parses PNG (Portable Network Graphics) image streams for chunk validation and metadata extraction. - (): Parses VC-1/WMV3 (Windows Media Video) bitstreams for frame boundary detection and codec parameter extraction. - (): Parses VP9 video bitstreams for superframe boundary detection and codec parameter extraction. --- # Class ASFSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.ASFSinkBlock.html # Class ASFSinkBlock # Class ASFSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll ASF (Advanced Systems Format) sink block for writing media streams to ASF/WMV/WMA container files. ```csharp public class ASFSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The ASF sink block supports writing audio and video streams to the Advanced Systems Format container, commonly used for Windows Media files (.wmv for video, .wma for audio, .asf for generic content). This format is optimized for streaming and supports advanced features like DRM, multiple bitrates, and metadata embedding.

Key Features:

  • Support for multiple audio and video streams
  • Windows Media Video (WMV) and Windows Media Audio (WMA) codec support
  • Metadata and tagging support
  • Suitable for both local file storage and streaming scenarios
  • Compatible with Windows Media Player and other ASF-compliant players

Typical Use Cases:

  • Creating Windows Media files for playback on Windows systems
  • Recording video content for streaming over Windows Media Services
  • Archiving media in a format with good compression and quality balance
  • Creating content for legacy Windows-based media systems

Limitations:

  • Limited codec support (primarily WMV/WMA codecs)
  • Less universal playback support compared to MP4 or MKV
  • Proprietary format with potential licensing considerations

## Constructors ### ASFSinkBlock(ASFSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public ASFSinkBlock(ASFSinkSettings settings) ``` #### Parameters Parameters: - settings (ASFSinkSettings): The object containing configuration for the ASF output, including the target filename, encoding parameters, and metadata options. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the ASF sink configuration settings. ```csharp public ASFSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (ASFSinkSettings): ### Type Gets the media block type identifier for the ASF sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the ASF sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and all requested input pads were created; false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer ASF muxer element and configures input pads for each media stream that was previously added via . The method is idempotent and will return immediately if already built. ### CleanUp() Cleans up resources and resets the sink block to an unbuilt state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer element and resets the build state, allowing the block to be rebuilt with new settings if needed. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept on this input pad. Supported types include: for video streams and for audio streams. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, which can be used to connect upstream media sources or processing blocks. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper that provides access to the underlying GStreamer ASF muxer element for advanced configuration and pipeline operations. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the ASF muxer, allowing direct access to GStreamer properties and methods when needed. ### GetFilenameOrURL() Gets the output filename or URL where the ASF file will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string specified in the settings. For local files, this should be an absolute or relative file path. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output filename or URL for the ASF file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path or URL where the ASF file should be written. For local files, use a standard file path. The directory must exist. #### Remarks This method updates both the settings and the underlying GStreamer element if the sink has already been built. Changing the filename during recording may not be supported and could cause errors. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class AVIOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.AVIOutputBlock.html # Class AVIOutputBlock # Class AVIOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll AVI multimedia container output block for creating AVI video files with integrated encoding and file writing capabilities. Provides comprehensive AVI file creation with configurable video and audio encoders, supporting H.264/AAC and H.264/MP3 combinations for professional video production, archival storage, and multimedia content creation with industry-standard AVI container format. Implements the . Implements the . Implements the . ```csharp public class AVIOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AVIOutputBlock(string) Initializes a new instance of the class with default H.264 and AAC encoders. Creates an AVI output block configured for high-quality video production with industry-standard codecs. ```csharp public AVIOutputBlock(string filename) ``` #### Parameters Parameters: - filename (string): The output AVI file path where the encoded multimedia content will be written. ### AVIOutputBlock(AVISinkSettings, IH264EncoderSettings, IAACEncoderSettings) Initializes a new instance of the class with custom H.264 and AAC encoder settings. Provides full control over video and audio compression parameters for professional AVI file creation. ```csharp public AVIOutputBlock(AVISinkSettings sinkSettings, IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (AVISinkSettings): The AVI container sink settings defining output file configuration. - h264settings (IH264EncoderSettings): The H.264 video encoder settings controlling video compression quality and parameters. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings controlling audio compression quality and parameters. ### AVIOutputBlock(AVISinkSettings, IH264EncoderSettings, MP3EncoderSettings) Initializes a new instance of the class with H.264 video and MP3 audio encoders. Provides widely compatible AVI output with H.264 video compression and MP3 audio for broad device support. ```csharp public AVIOutputBlock(AVISinkSettings sinkSettings, IH264EncoderSettings h264settings, MP3EncoderSettings mp3Settings) ``` #### Parameters Parameters: - sinkSettings (AVISinkSettings): The AVI container sink settings defining output file configuration. - h264settings (IH264EncoderSettings): The H.264 video encoder settings controlling video compression quality and parameters. - mp3Settings (MP3EncoderSettings): The MP3 audio encoder settings controlling audio compression quality and parameters. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for AVI output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the AVI output block within the pipeline context. Creates the AVI sink, video and audio encoders, and establishes all necessary connections for encoding and writing multimedia content to the AVI file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the AVI output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the AVI output operations, including encoders, sink, and file handles. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the AVI output block. Properly disposes of GStreamer elements, encoders, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the AVI content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the AVI output destination. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IH264EncoderSettings, IAACEncoderSettings) Determines whether AVI output functionality is available on the current system with the specified encoder settings. Requires GStreamer AVI muxer and the specified video and audio encoder plugins to be installed and functional. ```csharp public static bool IsAvailable(IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - h264settings (IH264EncoderSettings): The H.264 video encoder settings to validate for availability. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings to validate for availability. #### Returns Parameters: - (bool): true if AVI output with the specified encoders is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the AVI file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where AVI content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this AVI output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this AVI output block. ## See Also --- # Class AVISinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.AVISinkBlock.html # Class AVISinkBlock # Class AVISinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for writing media data to AVI (Audio Video Interleave) container files. Supports multiple audio and video streams with configurable encoding parameters. AVI is a multimedia container format that stores audio and video data in a file container that allows synchronous audio-with-video playback. ```csharp public class AVISinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The AVISinkBlock provides functionality to write media streams to AVI files, supporting: - Multiple video streams with different codecs - Multiple audio streams with various encoders - Configurable container and codec settings - Frame-accurate synchronization

This block accepts dynamic inputs for video and audio streams, which must be added before building the pipeline. Each stream can have its own encoding configuration.

Common use cases include: - Recording video from cameras to AVI files - Converting media to AVI format - Creating multi-stream AVI files - Archiving video content

## Constructors ### AVISinkBlock(AVISinkSettings) Initializes a new instance of the class. ```csharp public AVISinkBlock(AVISinkSettings settings) ``` #### Parameters Parameters: - settings (AVISinkSettings): The configuration settings for the AVI sink, including filename and codec parameters. #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ### AVISinkBlock(string) Initializes a new instance of the class. ```csharp public AVISinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Input Gets the first input pad from the collection of inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available for this sink. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the AVI sink configuration settings. ```csharp public AVISinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (AVISinkSettings): #### Remarks These settings control various aspects of the AVI file creation including: - Output filename and path - Video codec settings (resolution, bitrate, framerate) - Audio codec settings (sample rate, channels, bitrate) - Container-specific parameters ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the AVI sink block and prepares it for operation. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; otherwise, false. #### Remarks This method: - Creates the underlying AVI sink element - Configures it with the provided settings - Sets up input pads for all added streams - Validates that all components are properly initialized ### CleanUp() Performs cleanup of resources used by the AVI sink. ```csharp public void CleanUp() ``` #### Remarks This method releases the underlying GStreamer element and resets the build state. It is called during disposal to ensure proper resource cleanup. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media this input will accept (video, audio, etc.). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. #### Remarks Use this method to add inputs for each stream you want to include in the AVI file. Multiple video and audio streams can be added, but subtitle streams are not supported by AVI. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the AVI file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the output AVI file. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for. #### Returns Parameters: - (MediaBlockPad): The first input pad matching the media type; null if no match is found. #### Remarks This method is useful when you need to connect to an existing input pad rather than creating a new one. ### IsAvailable() Determines whether the AVI sink functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if AVI sink is available; otherwise, false. Availability depends on GStreamer plugins and platform support. #### Remarks This method checks for the presence of required GStreamer plugins (avimux, filesink) and should be called before attempting to create an AVISinkBlock instance. ### SetFilenameOrURL(string) Sets the output filename for the AVI file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the AVI file should be written. #### Remarks The directory must exist and be writable. The file will be overwritten if it already exists. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class BufferSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.BufferSinkBlock.html # Class BufferSinkBlock # Class BufferSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block that captures media data into memory buffers for processing or analysis. Provides frame-by-frame access to video, audio, or raw data through event callbacks. ```csharp public class BufferSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The BufferSinkBlock is designed for scenarios where you need direct access to media frames in memory rather than writing to a file. It supports: - Video frame capture with format conversion - Audio frame capture with resampling - Raw data capture for custom media types - Frame dropping for performance optimization - Synchronization control for playback vs transcoding

Frame data is delivered through event callbacks, allowing real-time processing, analysis, or custom rendering. The block can be configured to drop frames when the processing cannot keep up with the media rate.

Common use cases include: - Video frame analysis and processing - Audio visualization - Custom rendering implementations - Media stream monitoring - Frame extraction for thumbnails

## Constructors ### BufferSinkBlock(VideoFormatX, bool) Initializes a new instance of the class for video capture. ```csharp public BufferSinkBlock(VideoFormatX videoFormat, bool allowFrameDrop = false) ``` #### Parameters Parameters: - videoFormat (VideoFormatX): The desired video format for captured frames. Format conversion will be applied if needed. - allowFrameDrop (bool): If set to true, allows dropping frames when processing cannot keep up. #### Remarks Use this constructor when you know you'll be capturing video frames and want to specify the output format. The sink will automatically convert incoming video to the specified format. ### BufferSinkBlock(AudioFormatX, bool) Initializes a new instance of the class for audio capture. ```csharp public BufferSinkBlock(AudioFormatX audioFormat, bool allowFrameDrop = false) ``` #### Parameters Parameters: - audioFormat (AudioFormatX): The desired audio format for captured frames. Resampling will be applied if needed. - allowFrameDrop (bool): If set to true, allows dropping frames when processing cannot keep up. #### Remarks Use this constructor when you know you'll be capturing audio frames and want to specify the output format. The sink will automatically resample incoming audio to the specified format. ### BufferSinkBlock() Initializes a new instance of the class with automatic format detection. ```csharp public BufferSinkBlock() ``` #### Remarks Use this constructor when the media type is unknown or when you want to preserve the original format of the incoming media. The sink will adapt to whatever media type is connected to its input. ## Fields ### TAG The logging tag used for error reporting and diagnostics. ```csharp protected const string TAG = "BufferSinkBlock" ``` #### Field Value Parameters: - (string): ## Properties ### AllowFrameDrop Gets or sets a value indicating whether frames can be dropped when processing cannot keep up. ```csharp public bool AllowFrameDrop { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Enable frame dropping when real-time processing is more important than capturing every frame. This is useful for live preview scenarios or when processing is computationally expensive. ### Input Gets the input pad for this sink. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether media streams should be synchronized to real-time. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

When enabled, media is processed at its natural rate, maintaining proper timing for playback. When disabled, media is processed as fast as possible, which is ideal for transcoding or analysis.

Typical settings: - Playback/Preview: true (maintains proper frame timing) - Transcoding: false (processes as fast as possible) - Live capture: true (follows real-time constraints)

### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the buffer sink block and prepares it for capturing media frames. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; otherwise, false. #### Remarks This method: - Creates the appropriate buffer sink based on the media format - Registers event handlers for frame callbacks - Configures synchronization and frame dropping settings - Initializes the input pad for media reception ### CleanUp() Performs cleanup of resources used by the buffer sink. ```csharp public void CleanUp() ``` #### Remarks This method releases the underlying GStreamer element and resets the build state. Any pending frames are discarded during cleanup. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the filename or URL for this sink. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): Always returns null as buffer sinks don't write to files. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the filename or URL for this sink. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The value to set (ignored). #### Remarks This method has no effect as buffer sinks capture to memory, not files. It exists to satisfy the IMediaBlockSink interface. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ### OnAudioFrameBuffer Occurs when a new audio frame is captured and ready for processing. ```csharp public event EventHandler OnAudioFrameBuffer ``` #### Event Type Parameters: - (EventHandler < AudioFrameBufferEventArgs >): #### Remarks The event provides access to the audio frame data in the specified format. Frame data includes audio samples, channel layout, sample rate, and timestamp. This event is only raised when the input is audio and OnSample is not subscribed. ### OnDataFrameBuffer Occurs when a new data frame is captured for non-audio/video media types. ```csharp public event EventHandler OnDataFrameBuffer ``` #### Event Type Parameters: - (EventHandler < DataFrameEventArgs >): #### Remarks This event is used for custom media types like metadata, subtitles, or other data streams. The event provides raw access to the data buffer and timestamp information. This event is only raised when OnSample is not subscribed. ### OnSample Occurs when a new GStreamer sample is received, providing raw access to the media data. ```csharp public event EventHandler OnSample ``` #### Event Type Parameters: - (EventHandler < Sample >): #### Remarks

This is a low-level event that provides direct access to GStreamer samples. When this event is subscribed, the higher-level events (OnVideoFrameBuffer, OnAudioFrameBuffer, OnDataFrameBuffer) will not be raised.

IMPORTANT: The sample must be disposed after processing to prevent memory leaks. Use this event only when you need direct GStreamer sample manipulation.

### OnVideoFrameBuffer Occurs when a new video frame is captured and ready for processing. ```csharp public event EventHandler OnVideoFrameBuffer ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): #### Remarks The event provides access to the video frame data in the specified format. Frame data includes pixel buffer, dimensions, format, and timestamp information. This event is only raised when the input is video and OnSample is not subscribed. ## See Also --- # Class DASHSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.DASHSinkBlock.html # Class DASHSinkBlock # Class DASHSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll DASH (Dynamic Adaptive Streaming over HTTP) sink block for creating adaptive streaming content. ```csharp public class DASHSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The DASH sink block generates MPEG-DASH content, an international standard for adaptive bitrate streaming. DASH works by breaking the overall stream into a sequence of small HTTP-based file segments, each representing a short interval of playback time. This enables adaptive streaming, VOD, and live broadcasts.

Key Features:

  • Adaptive bitrate streaming support
  • Automatic generation of MPD (Media Presentation Description) manifest files
  • Configurable segment duration and buffering parameters
  • Support for both live and on-demand content
  • Compatible with all major browsers and streaming platforms
  • Multi-period support for different quality levels

Typical Use Cases:

  • Live streaming to browsers and mobile devices
  • Creating VOD content for web-based video players
  • Building adaptive streaming solutions
  • Streaming to smart TVs and set-top boxes
  • CDN-friendly content distribution

Technical Specifications:

  • Segment format: ISO BMFF (fragmented MP4) files
  • Video codecs: H.264/AVC, H.265/HEVC, VP9, AV1
  • Audio codecs: AAC, MP3, Opus
  • Manifest format: MPD (Media Presentation Description) XML
  • Default segment duration: 5 seconds (configurable)

Output Structure: The sink creates a directory structure with an MPD manifest file and segment files. For live streaming, old segments are automatically removed based on time shift buffer settings.

## Constructors ### DASHSinkBlock(DASHSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public DASHSinkBlock(DASHSinkSettings settings) ``` #### Parameters Parameters: - settings (DASHSinkSettings): The object containing configuration for DASH output, including the target directory, segment parameters, and manifest options. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the DASH sink configuration settings. ```csharp public DASHSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (DASHSinkSettings): ### Type Gets the media block type identifier for the DASH sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DASH sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and configured; false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer DASH sink element and configures separate video and audio input pads. The sink will create the output directory structure and begin generating manifest files when the pipeline starts. ### CleanUp() Cleans up resources and resets the sink block to an unbuilt state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer DASH sink element. Any incomplete segments may be finalized and the manifest updated before cleanup. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. DASH supports: for video streams (H.264/H.265/VP9/AV1) and for audio streams (AAC/MP3/Opus). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to receive encoded streams for DASH segmentation. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer DASH sink element for advanced configuration. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the DASH sink, allowing direct access to properties like segment duration and manifest settings. ### GetFilenameOrURL() Gets the output location where DASH segments and manifest will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The MPD filename path specified in the settings. This location will contain the master manifest and segment files. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output location for DASH manifest. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path where the MPD manifest should be written. The directory will be created if it doesn't exist. #### Exceptions Parameters: - (NotImplementedException): This method is not currently implemented. Configure the location through settings instead. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class FacebookLiveOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.FacebookLiveOutputBlock.html # Class FacebookLiveOutputBlock # Class FacebookLiveOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Facebook Live streaming output block for real-time broadcast to Facebook Live platform with integrated encoding capabilities. Provides professional live streaming functionality with H.264 video and AAC audio encoding optimized for Facebook's RTMP streaming requirements, enabling content creators to broadcast high-quality live video content directly to Facebook audiences with low-latency streaming protocols. Implements the . Implements the . Implements the . ```csharp public class FacebookLiveOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FacebookLiveOutputBlock(FacebookLiveSinkSettings, IH264EncoderSettings, IAACEncoderSettings) Initializes a new instance of the class with custom encoder settings. Provides full control over video and audio compression parameters for professional Facebook Live streaming. ```csharp public FacebookLiveOutputBlock(FacebookLiveSinkSettings sinkSettings, IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (FacebookLiveSinkSettings): The Facebook Live streaming settings including RTMP URL, stream key, and connection parameters. - h264settings (IH264EncoderSettings): The H.264 video encoder settings optimized for Facebook Live streaming quality and bandwidth. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings optimized for Facebook Live streaming quality and bandwidth. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for streaming blocks that broadcast to services). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for streaming blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for Facebook Live streaming operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the Facebook Live streaming block within the pipeline context. Creates the RTMP streaming sink, H.264 and AAC encoders, and establishes all necessary connections for encoding and streaming multimedia content to Facebook Live platform. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Facebook Live streaming block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the Facebook Live streaming operations, including encoders, sink, and network connections. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams for live streaming. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the Facebook Live streaming block. Properly disposes of GStreamer elements, encoders, and network streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite streaming blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite streaming blocks with multiple internal elements. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable() Determines whether Facebook Live streaming functionality is available on the current system. Requires GStreamer RTMP streaming plugins and network connectivity for Facebook Live platform access. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Facebook Live streaming is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this Facebook Live streaming block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Facebook Live streaming block. ## See Also --- # Class FacebookLiveSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.FacebookLiveSinkBlock.html # Class FacebookLiveSinkBlock # Class FacebookLiveSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for streaming live video and audio to Facebook Live. Enables real-time broadcasting to Facebook's streaming platform using RTMP protocol. ```csharp public class FacebookLiveSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The FacebookLiveSinkBlock provides functionality to stream media content directly to Facebook Live. It supports: - H.264 video streaming with configurable bitrate and resolution - AAC audio streaming with adjustable quality - RTMP/RTMPS protocol for secure streaming - Multiple stream quality settings - Automatic reconnection on network failures

To use this block, you need: - A Facebook Live stream key from your Facebook account - Properly encoded video (H.264) and audio (AAC) streams - Stable internet connection with sufficient upload bandwidth

Common use cases include: - Live event broadcasting - Gaming streams - Educational content streaming - Live product demonstrations

## Constructors ### FacebookLiveSinkBlock(FacebookLiveSinkSettings) Initializes a new instance of the class. ```csharp public FacebookLiveSinkBlock(FacebookLiveSinkSettings settings) ``` #### Parameters Parameters: - settings (FacebookLiveSinkSettings): The Facebook Live streaming configuration including stream key and quality settings. #### Remarks The stream key must be obtained from your Facebook Live Producer page. Ensure your account has live streaming permissions enabled. #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Facebook Live streaming configuration. ```csharp public FacebookLiveSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (FacebookLiveSinkSettings): #### Remarks The settings include: - Stream key: Your unique Facebook Live stream key - Server URL: Facebook's RTMP ingest server (usually automatic) - Video settings: Resolution, framerate, bitrate - Audio settings: Sample rate, channels, bitrate - Network settings: Buffer sizes, timeout values ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Performs cleanup of resources used by the Facebook Live sink. ```csharp public void CleanUp() ``` #### Remarks This method releases the underlying streaming element and resets the build state. Any active stream connection will be terminated. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream (video or audio only). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. #### Remarks Facebook Live supports one video stream and one audio stream. Video must be H.264 encoded and audio must be AAC encoded. Subtitle streams are not supported. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the stream key or URL for Facebook Live streaming. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The Facebook Live stream key. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether Facebook Live streaming functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Facebook Live sink is available; otherwise, false. Requires RTMP support and appropriate GStreamer plugins. #### Remarks This method checks for the presence of required GStreamer plugins (rtmpsink, flvmux) and network capabilities needed for Facebook Live streaming. ### SetFilenameOrURL(string) Sets the stream key or URL for Facebook Live streaming. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The stream key value. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented. Use Settings.Key instead. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class FDSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.FDSinkBlock.html # Class FDSinkBlock # Class FDSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block that writes media data to a file descriptor (Unix-style file handle). Enables writing to pipes, sockets, or other file descriptor-based outputs. ```csharp public class FDSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The FDSinkBlock provides low-level output capabilities by writing directly to file descriptors. This is particularly useful for: - Inter-process communication via pipes - Network streaming via sockets - Integration with external processes - Writing to special device files

File descriptors are integer values that reference open files, pipes, or sockets in Unix-like operating systems. Standard descriptors include: - 0: Standard input (stdin) - 1: Standard output (stdout) - 2: Standard error (stderr) - 3+: Custom file descriptors

The block can optionally add a queue before the sink to handle buffering and prevent blocking in the main pipeline thread.

## Constructors ### FDSinkBlock(int, bool) Initializes a new instance of the class. ```csharp public FDSinkBlock(int descriptor, bool addQueue = true) ``` #### Parameters Parameters: - descriptor (int): The file descriptor number to write to. Must be a valid open descriptor. - addQueue (bool): If set to true, adds a queue element for buffering to prevent blocking. #### Remarks Adding a queue is recommended for most use cases to prevent the sink from blocking the pipeline if the file descriptor write operations are slow. ## Properties ### Descriptor Gets or sets the file descriptor number to write to. ```csharp public int Descriptor { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks The file descriptor must be open and writable before starting the pipeline. Writing to a closed descriptor will cause pipeline errors. ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Performs cleanup of resources used by the file descriptor sink. ```csharp public void CleanUp() ``` #### Remarks This method releases the underlying GStreamer element and resets the build state. Note that it does not close the file descriptor itself, which remains the responsibility of the code that opened it. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad (returns the existing single input pad). ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type (ignored as FD sink accepts any data). #### Returns Parameters: - (MediaBlockPad): The single input pad of this sink. #### Remarks FD sink has only one input pad that accepts any media type. This method always returns the same pad regardless of the media type parameter. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the filename or URL for this sink. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): Always returns an empty string as FD sinks use descriptors, not filenames. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether file descriptor sink functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if FD sink is available; otherwise, false. Typically available on Unix-like systems (Linux, macOS) but limited on Windows. #### Remarks File descriptor support varies by platform. On Windows, this may only work with certain types of handles that can be treated as file descriptors. ### SetFilenameOrURL(string) Sets the filename or URL for this sink. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The value to set (ignored). #### Remarks This method has no effect as FD sinks use file descriptors, not filenames. It exists to satisfy the IMediaBlockSink interface. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class FileSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.FileSinkBlock.html # Class FileSinkBlock # Class FileSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block that writes raw media data directly to a file without any container format. Suitable for writing elementary streams or raw data that will be processed later. ```csharp public class FileSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The FileSinkBlock provides basic file writing functionality for media streams. Unlike container-based sinks (MP4, AVI, etc.), this sink writes raw data directly to disk without any file structure or metadata. This makes it suitable for: - Elementary video streams (raw H.264, HEVC) - Raw audio data (PCM, compressed audio frames) - Intermediate processing files - Custom data formats

The sink accepts any type of media data and writes it sequentially to the specified file. An optional queue can be added to prevent the file I/O from blocking the pipeline.

Common use cases include: - Debugging pipeline output - Creating raw stream files for analysis - Temporary storage during multi-pass processing - Writing custom binary formats

## Constructors ### FileSinkBlock(string, bool) Initializes a new instance of the class. ```csharp public FileSinkBlock(string filename, bool addQueue = true) ``` #### Parameters Parameters: - filename (string): The full path to the output file where data will be written. - addQueue (bool): If true, adds a queue element for buffering to prevent blocking. #### Remarks Adding a queue is recommended to prevent file I/O operations from blocking the pipeline, especially when writing to slow storage devices. ## Properties ### Filename Gets or sets the output filename where data will be written. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks If the file already exists, it will be overwritten. Ensure the directory exists before starting the pipeline. ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Performs cleanup of resources used by the file sink. ```csharp public void CleanUp() ``` #### Remarks This method releases the underlying GStreamer element and resets the build state. Any buffered data is flushed to disk before cleanup. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad (returns the existing single input pad). ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type (ignored as file sink accepts any data). #### Returns Parameters: - (MediaBlockPad): The single input pad of this sink. #### Remarks File sink has only one input pad that accepts any media type. This method always returns the same pad regardless of the media type parameter. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for this sink. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the output file. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether file sink functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if file sink is available; otherwise, false. This basic functionality is typically available on all platforms. #### Remarks File sink is a core GStreamer element and should be available on all platforms where GStreamer is properly installed. ### SetFilenameOrURL(string) Sets the output filename for this sink. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the file should be written. #### Remarks Changing the filename after the pipeline has started may not take effect until the pipeline is restarted. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class FLACOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.FLACOutputBlock.html # Class FLACOutputBlock # Class FLACOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll FLAC (Free Lossless Audio Codec) output block for creating high-quality lossless audio files with professional audio encoding. Provides uncompressed audio archival and professional audio production with configurable FLAC encoding for music production, audio mastering, and high-fidelity audio content creation with industry-standard lossless compression for audiophile-quality audio preservation. Implements the . Implements the . Implements the . ```csharp public class FLACOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FLACOutputBlock(string, FLACEncoderSettings) Initializes a new instance of the class with custom FLAC encoder settings. Provides full control over lossless audio compression parameters for professional FLAC file creation. ```csharp public FLACOutputBlock(string filename, FLACEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The output FLAC file path where the lossless audio content will be written. - settings (FLACEncoderSettings): The FLAC encoder settings controlling lossless compression quality and parameters. ## Properties ### Input Gets the audio input pad for receiving audio streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single audio input for FLAC encoding). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for FLAC output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the FLAC output block within the pipeline context. Creates the file sink, FLAC encoder, and establishes all necessary connections for lossless encoding and writing audio content to the FLAC file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the FLAC output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the FLAC output operations, including encoder, sink, and file handles. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the FLAC output block. Properly disposes of GStreamer elements, encoder, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the FLAC content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the FLAC output destination. ### IsAvailable() Determines whether FLAC output functionality is available on the current system. Requires GStreamer FLAC encoder and file sink plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if FLAC output is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the FLAC file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where FLAC content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this FLAC output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this FLAC output block. ## See Also --- # Class HLSSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.HLSSinkBlock.html # Class HLSSinkBlock # Class HLSSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll HLS (HTTP Live Streaming) sink block for creating segmented streaming content. ```csharp public class HLSSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The HLS sink block generates HTTP Live Streaming content, Apple's adaptive bitrate streaming protocol that has become an industry standard. HLS works by breaking the overall stream into a sequence of small HTTP-based file downloads, each containing a segment of the stream. This enables adaptive streaming, VOD, and live broadcasts.

Key Features:

  • Adaptive bitrate streaming support
  • Automatic generation of .m3u8 playlist files
  • Configurable segment duration and playlist length
  • Support for encrypted segments (AES-128)
  • Compatible with all major browsers and devices
  • Live streaming and VOD (Video on Demand) modes
  • Multi-variant playlist support for different quality levels

Typical Use Cases:

  • Live streaming to iOS devices and Safari browsers
  • Creating VOD content for web-based video players
  • Building adaptive streaming solutions
  • Streaming to smart TVs and set-top boxes
  • CDN-friendly content distribution

Technical Specifications:

  • Segment format: MPEG-TS (.ts files) or fragmented MP4 (.m4s files)
  • Video codecs: H.264/AVC, H.265/HEVC
  • Audio codecs: AAC, MP3
  • Playlist format: M3U8 (Extended M3U)
  • Default segment duration: 10 seconds (configurable)

Output Structure: The sink creates a directory structure with playlist files (.m3u8) and segment files (.ts/.m4s). For live streaming, old segments are automatically removed based on playlist settings.

## Constructors ### HLSSinkBlock(HLSSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public HLSSinkBlock(HLSSinkSettings settings) ``` #### Parameters Parameters: - settings (HLSSinkSettings): The object containing configuration for HLS output, including the target directory, segment parameters, and playlist options. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the HLS sink configuration settings. ```csharp public HLSSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (HLSSinkSettings): ### Type Gets the media block type identifier for the HLS sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the HLS sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and configured; false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer HLS sink element and configures separate video and audio input pads. The sink will create the output directory structure and begin generating playlist files when the pipeline starts. ### CleanUp() Cleans up resources and resets the sink block to an unbuilt state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer HLS sink element. Any incomplete segments may be finalized and the playlist updated before cleanup. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. HLS supports: for video streams (H.264/H.265) and for audio streams (AAC/MP3). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to receive encoded streams for HLS segmentation. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer HLS sink element for advanced configuration. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the HLS sink, allowing direct access to properties like segment duration and playlist settings. ### GetFilenameOrURL() Gets the output location where HLS segments and playlists will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The directory path or URL prefix specified in the settings. This location will contain the master playlist and segment files. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output location for HLS segments and playlists. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The directory path where HLS files should be written. The directory will be created if it doesn't exist. #### Exceptions Parameters: - (NotImplementedException): This method is not currently implemented. Configure the location through settings instead. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class HTTPMJPEGLiveSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.HTTPMJPEGLiveSinkBlock.html # Class HTTPMJPEGLiveSinkBlock # Class HTTPMJPEGLiveSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block that streams video as Motion JPEG (MJPEG) over HTTP. Creates a simple HTTP server that clients can connect to for viewing live video streams. ```csharp public class HTTPMJPEGLiveSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The HTTPMJPEGLiveSinkBlock provides a lightweight video streaming solution using the Motion JPEG format over HTTP. Key features include: - Simple HTTP server on a specified port - MJPEG stream compatible with web browsers - Multiple simultaneous client connections - No special client software required - Low latency streaming

MJPEG streams each video frame as a separate JPEG image, making it: - Easy to implement and decode - Compatible with most browsers and devices - Suitable for local network streaming - Higher bandwidth than modern codecs but simpler

Common use cases include: - Security camera viewing - Local network video distribution - Simple web-based video monitoring - Development and testing of video pipelines

Clients can view the stream by navigating to: http://[server-ip]:[port]/ in a web browser

## Constructors ### HTTPMJPEGLiveSinkBlock(int) Initializes a new instance of the class. ```csharp public HTTPMJPEGLiveSinkBlock(int port) ``` #### Parameters Parameters: - port (int): The TCP port number on which to serve the MJPEG stream. #### Remarks The HTTP server will start listening on the specified port when the pipeline begins. Ensure the port is not already in use by another application. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when port is not between 1 and 65535. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Port Gets the TCP port number on which the HTTP server listens. ```csharp public int Port { get; } ``` #### Property Value Parameters: - (int): #### Remarks Common ports include 8080, 8081, or any available port above 1024. Ports below 1024 may require administrator privileges. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Performs cleanup of resources used by the HTTP MJPEG sink. ```csharp public void CleanUp() ``` #### Remarks This method stops the HTTP server, closes all client connections, and releases the underlying GStreamer element. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad (returns the existing video input pad). ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type (should be video for MJPEG streaming). #### Returns Parameters: - (MediaBlockPad): The video input pad of this sink. #### Remarks HTTP MJPEG sink only accepts video input. The video frames will be automatically converted to JPEG format for streaming. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the URL where the MJPEG stream can be accessed. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): Not implemented for HTTP MJPEG sink. #### Exceptions Parameters: - (NotImplementedException): This method is not applicable for HTTP streaming. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether HTTP MJPEG streaming functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if HTTP MJPEG sink is available; otherwise, false. Requires GStreamer's multipartmux and souphttpsrc plugins. #### Remarks This functionality requires specific GStreamer plugins for HTTP serving and MJPEG multiplexing. Availability may vary by platform. ### SetFilenameOrURL(string) Sets the filename or URL for this sink. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The value to set (not applicable). #### Remarks HTTP MJPEG sink uses a port number, not a filename or URL. The URL is determined by the server's IP address and port. #### Exceptions Parameters: - (NotImplementedException): This method is not applicable for HTTP streaming. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class KLVFileSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.KLVFileSinkBlock.html # Class KLVFileSinkBlock # Class KLVFileSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for writing KLV (Key-Length-Value) metadata to files. Supports MISB standards for metadata encoding used in surveillance and aerospace applications. ```csharp public class KLVFileSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The KLVFileSinkBlock specializes in handling KLV-encoded metadata streams, which are widely used in defense, surveillance, and aerospace industries. Key features: - MISB (Motion Imagery Standards Board) compliant metadata handling - STANAG 4609 compatible encoding - Synchronous metadata storage with video streams - Support for various KLV data types and structures

KLV metadata typically includes: - GPS coordinates and altitude - Camera orientation (pan, tilt, roll) - Platform information (aircraft, drone, vehicle) - Timestamp and synchronization data - Target tracking information - Environmental data (weather, visibility)

Common use cases: - UAV/Drone video metadata recording - Surveillance system metadata storage - Military and defense applications - Geospatial video indexing - Compliance with government standards

The sink writes raw KLV data that can be multiplexed with video or stored separately for later synchronization.

## Constructors ### KLVFileSinkBlock(string) Initializes a new instance of the class. ```csharp public KLVFileSinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The full path to the output file for KLV metadata storage. #### Remarks The output file will contain MISB-compliant KLV metadata packets. Ensure the directory exists and is writable before starting the pipeline. #### Exceptions Parameters: - (ArgumentNullException): Thrown when filename is null or empty. ## Properties ### Filename Gets or sets the output filename for KLV metadata storage. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks The file will contain raw KLV packets that can be parsed by KLV-aware applications or multiplexed with corresponding video streams. ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Performs cleanup of resources used by the KLV file sink. ```csharp public void CleanUp() ``` #### Remarks This method ensures all KLV packets are written to disk, closes the file, and releases the underlying GStreamer element. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for KLV metadata storage. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the KLV output file. ### IsAvailable() Determines whether KLV file sink functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if KLV sink is available; otherwise, false. Requires specialized KLV handling plugins. #### Remarks KLV support requires specific GStreamer plugins that may not be available in standard distributions. Professional or specialized builds may be required. ### SetFilenameOrURL(string) Sets the output filename for KLV metadata storage. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the KLV file should be written. #### Remarks Changing the filename after the pipeline has started may not take effect until the pipeline is restarted. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class M4AOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.M4AOutputBlock.html # Class M4AOutputBlock # Class M4AOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll M4A audio container output block for creating high-quality AAC audio files with MP4 container format. Provides professional audio file creation with configurable AAC encoding for music production, podcasting, and audio content distribution with industry-standard M4A format supporting metadata and chapter information. Implements the . Implements the . Implements the . ```csharp public class M4AOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### M4AOutputBlock(string) Initializes a new instance of the class with default AAC encoder settings. Creates an M4A output block configured for high-quality audio production with industry-standard AAC compression. ```csharp public M4AOutputBlock(string filename) ``` #### Parameters Parameters: - filename (string): The output M4A file path where the encoded audio content will be written. ### M4AOutputBlock(string, MediaFileTags) Initializes a new instance of the class with default AAC encoder settings and metadata tags. Creates an M4A output block configured for high-quality audio production with industry-standard AAC compression and tag support. ```csharp public M4AOutputBlock(string filename, MediaFileTags tags) ``` #### Parameters Parameters: - filename (string): The output M4A file path where the encoded audio content will be written. - tags (MediaFileTags): The metadata tags to be written to the M4A file, including title, artist, album, and other information. ### M4AOutputBlock(MP4SinkSettings, IAACEncoderSettings) Initializes a new instance of the class with custom AAC encoder settings. Provides full control over audio compression parameters for professional M4A audio file creation. ```csharp public M4AOutputBlock(MP4SinkSettings sinkSettings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining M4A output file configuration and metadata options. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings controlling audio compression quality and parameters. ### M4AOutputBlock(MP4SinkSettings, IAACEncoderSettings, MediaFileTags) Initializes a new instance of the class with custom AAC encoder settings and metadata tags. Provides full control over audio compression parameters for professional M4A audio file creation with tag support. ```csharp public M4AOutputBlock(MP4SinkSettings sinkSettings, IAACEncoderSettings aacSettings, MediaFileTags tags) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining M4A output file configuration and metadata options. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings controlling audio compression quality and parameters. - tags (MediaFileTags): The metadata tags to be written to the M4A file, including title, artist, album, and other information. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for audio streams). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Tags Gets or sets the metadata tags to be written to the M4A file. These tags include information such as title, artist, album, year, and other audio metadata. Tags can be set before building the pipeline and will be applied during the encoding process. ```csharp public MediaFileTags Tags { get; set; } ``` #### Property Value Parameters: - (MediaFileTags): ### Type Gets the media block type identifier for M4A audio output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the M4A output block within the pipeline context. Creates the MP4 sink, AAC audio encoder, and establishes all necessary connections for encoding and writing audio content to the M4A file with metadata tags. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the M4A output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the M4A output operations, including encoder, sink, and file handles. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of audio streams. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (typically Audio) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the M4A output block. Properly disposes of GStreamer elements, encoder, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the M4A content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the M4A output destination. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (typically Audio) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IAACEncoderSettings) Determines whether M4A output functionality is available on the current system with the specified encoder settings. Requires GStreamer MP4 muxer and AAC audio encoder plugins to be installed and functional. ```csharp public static bool IsAvailable(IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - aacSettings (IAACEncoderSettings): The AAC audio encoder settings to validate for availability. #### Returns Parameters: - (bool): true if M4A output with AAC encoding is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the M4A file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where M4A content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this M4A output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this M4A output block. ## See Also --- # Class MKVOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MKVOutputBlock.html # Class MKVOutputBlock # Class MKVOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll MKV (Matroska Video) multimedia container output block for creating versatile video files with advanced encoding capabilities. Provides comprehensive MKV file creation with support for multiple video encoders (H.264, HEVC, VP8/VP9, AV1) and audio encoders (AAC, MP3, Vorbis, OPUS, Speex) for professional video production, streaming content preparation, and multimedia archival storage with industry-leading container format flexibility. Implements the . Implements the . Implements the . ```csharp public class MKVOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MKVOutputBlock(MKVSinkSettings, IVideoEncoder, IAudioEncoder) Initializes a new instance of the class with custom video and audio encoder settings. Provides full control over video and audio compression parameters for professional MKV file creation. ```csharp public MKVOutputBlock(MKVSinkSettings sinkSettings, IVideoEncoder videoSettings, IAudioEncoder audioSettings) ``` #### Parameters Parameters: - sinkSettings (MKVSinkSettings): The MKV container sink settings defining output file configuration. - videoSettings (IVideoEncoder): The video encoder settings controlling video compression quality and parameters. - audioSettings (IAudioEncoder): The audio encoder settings controlling audio compression quality and parameters. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for MKV output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MKV output block within the pipeline context. Creates the MKV sink, video and audio encoders, and establishes all necessary connections for encoding and writing multimedia content to the MKV file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the MKV output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the MKV output operations, including encoders, sink, and file handles. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the MKV output block. Properly disposes of GStreamer elements, encoders, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the MKV content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the MKV output destination. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IH264EncoderSettings, IAACEncoderSettings) Determines whether MKV output functionality is available on the current system with the specified encoder settings. Requires GStreamer MKV muxer and the specified video and audio encoder plugins to be installed and functional. ```csharp public static bool IsAvailable(IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - h264settings (IH264EncoderSettings): The H.264 video encoder settings to validate for availability. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings to validate for availability. #### Returns Parameters: - (bool): true if MKV output with the specified encoders is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the MKV file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where MKV content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this MKV output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this MKV output block. ## See Also --- # Class MKVSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MKVSinkBlock.html # Class MKVSinkBlock # Class MKVSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll MKV (Matroska) sink block for creating highly flexible multimedia container files. ```csharp public class MKVSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MKV sink block creates Matroska files, one of the most flexible and feature-rich multimedia container formats available. Matroska is an open-source format that can hold an unlimited number of video, audio, subtitle, and metadata tracks in a single file. It's particularly popular for high-quality video archiving and distribution.

Key Features:

  • Support for virtually any video and audio codec
  • Multiple video, audio, and subtitle tracks in one file
  • Chapter markers and navigation menus
  • Metadata and tag support (title, artist, etc.)
  • Error recovery features for damaged files
  • Variable framerate support
  • Attachments (fonts, images, etc.)
  • Streaming capability over HTTP

Typical Use Cases:

  • High-quality video archiving and preservation
  • Multi-language video distribution (multiple audio/subtitle tracks)
  • Anime and foreign film distribution with subtitles
  • Professional video production workflows
  • Creating files with multiple camera angles
  • Long-duration recordings that may need error recovery

Technical Specifications:

  • Based on EBML (Extensible Binary Meta Language)
  • No inherent resolution or bitrate limitations
  • Supports all common codecs: H.264, H.265, VP9, AV1, AAC, FLAC, etc.
  • Subtitle formats: SRT, SSA/ASS, VobSub, and more
  • Precise timestamp handling with nanosecond accuracy

Advantages over other containers: MKV offers more features than MP4 but may have less universal playback support. It's ideal when flexibility and features are more important than compatibility. Modern players and devices increasingly support MKV natively.

## Constructors ### MKVSinkBlock(MKVSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public MKVSinkBlock(MKVSinkSettings settings) ``` #### Parameters Parameters: - settings (MKVSinkSettings): The object containing configuration for the MKV output, including filename, metadata, and any specific Matroska features to enable. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MKV sink configuration settings. ```csharp public MKVSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (MKVSinkSettings): ### Type Gets the media block type identifier for the MKV sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MKV sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and all requested input pads were created; false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer Matroska muxer and configures input pads for video, audio, and subtitle streams. MKV's flexibility means it can accept multiple streams of each type, creating a multi-track output file. ### CleanUp() Cleans up resources and finalizes the MKV file. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer Matroska muxer and ensures the MKV file is properly finalized with all necessary headers, indexes, and seek tables for optimal playback. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. MKV supports: for any video codec, for any audio codec, and for subtitle tracks. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. MKV's flexibility means it can accept almost any properly formatted stream. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer Matroska muxer for advanced configuration and feature control. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the Matroska muxer, typically 'matroskamux' in GStreamer. ### GetFilenameOrURL() Gets the output filename where the MKV file will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path specified in the settings. MKV files typically use the .mkv extension, though .mka (audio only) and .mks (subtitles only) are also valid. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. Note that MKV can have multiple pads of the same type for multi-track files. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output filename for the MKV file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path where the MKV file should be written. The directory must exist. Use the .mkv extension for video files. #### Remarks This method only updates the settings. The filename cannot be changed once the pipeline is running and writing has begun. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class MOVSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MOVSinkBlock.html # Class MOVSinkBlock # Class MOVSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for writing media to QuickTime MOV container files. Supports multiple video and audio tracks with Apple-compatible codecs. ```csharp public class MOVSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MOVSinkBlock creates QuickTime movie files (.mov), Apple's multimedia container format. Key features include: - Multiple video tracks with various codecs (H.264, ProRes, etc.) - Multiple audio tracks with different formats (AAC, PCM, etc.) - Chapter markers and metadata support - Fast-start optimization for web streaming - Professional video editing compatibility

MOV files are preferred for: - macOS and iOS compatibility - Professional video editing workflows - ProRes video storage - Multi-track editing projects - Broadcast and production environments

The sink supports various Apple-specific features: - Timecode tracks - Color space metadata - HDR information - Professional codec support

Common use cases: - Final Cut Pro compatible exports - Professional video archiving - Multi-angle video projects - High-quality video distribution

## Constructors ### MOVSinkBlock(MOVSinkSettings) Initializes a new instance of the class. ```csharp public MOVSinkBlock(MOVSinkSettings settings) ``` #### Parameters Parameters: - settings (MOVSinkSettings): The MOV file configuration including output path and encoding parameters. #### Remarks Ensure the output directory exists and has write permissions. Configure track settings before adding input pads. #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MOV file creation settings. ```csharp public MOVSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (MOVSinkSettings): #### Remarks Settings control: - Output filename and location - Fast-start mode for progressive download - Fragment duration for streaming - Metadata and tagging options - Codec-specific parameters for each track ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Performs cleanup of resources used by the MOV sink. ```csharp public void CleanUp() ``` #### Remarks This method finalizes the MOV file structure, writes all indexes, and ensures the file is properly closed for playback compatibility. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for adding a media track to the MOV file. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media track to add (video or audio). #### Returns Parameters: - (MediaBlockPad): A new for connecting the media stream. #### Remarks Each input pad represents a separate track in the MOV file. Video tracks should use compatible codecs like H.264, HEVC, or ProRes. Audio tracks typically use AAC, PCM, or Apple Lossless. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the MOV file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the output MOV file. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether MOV file creation functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if MOV sink is available; otherwise, false. Requires GStreamer's qtmux element and compatible codecs. #### Remarks MOV support requires the GStreamer good plugins package. Some professional codecs like ProRes may require additional plugins. ### SetFilenameOrURL(string) Sets the output filename for the MOV file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the MOV file should be written. #### Remarks The file extension should be .mov for proper format recognition. Changing the filename after pipeline start requires a restart. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class MP3OutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MP3OutputBlock.html # Class MP3OutputBlock # Class MP3OutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll MP3 audio output block for creating widely compatible compressed audio files with professional encoding capabilities. Provides industry-standard MP3 audio file creation with configurable lossy compression for music distribution, podcasting, and audio content creation with broad device compatibility and efficient file sizes for streaming and storage optimization. Implements the . Implements the . Implements the . ```csharp public class MP3OutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MP3OutputBlock(string, MP3EncoderSettings) Initializes a new instance of the class with custom MP3 encoder settings. Provides full control over audio compression parameters for professional MP3 file creation. ```csharp public MP3OutputBlock(string filename, MP3EncoderSettings mp3Settings) ``` #### Parameters Parameters: - filename (string): The output MP3 file path where the compressed audio content will be written. - mp3Settings (MP3EncoderSettings): The MP3 encoder settings controlling compression quality, bitrate, and parameters. ### MP3OutputBlock(string, MP3EncoderSettings, MediaFileTags) Initializes a new instance of the class with custom MP3 encoder settings and metadata tags. Provides full control over audio compression parameters and metadata for professional MP3 file creation with tag support. ```csharp public MP3OutputBlock(string filename, MP3EncoderSettings mp3Settings, MediaFileTags tags) ``` #### Parameters Parameters: - filename (string): The output MP3 file path where the compressed audio content will be written. - mp3Settings (MP3EncoderSettings): The MP3 encoder settings controlling compression quality, bitrate, and parameters. - tags (MediaFileTags): The metadata tags to be written to the MP3 file, including title, artist, album, and other information. ## Properties ### Input Gets the audio input pad for receiving audio streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single audio input for MP3 encoding). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Tags Gets or sets the metadata tags to be written to the MP3 file. These tags include information such as title, artist, album, year, and other audio metadata. Tags can be set before building the pipeline and will be applied during the encoding process. ```csharp public MediaFileTags Tags { get; set; } ``` #### Property Value Parameters: - (MediaFileTags): ### Type Gets the media block type identifier for MP3 output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MP3 output block within the pipeline context. Creates the file sink, MP3 encoder, ID3 tag muxer, and establishes all necessary connections for encoding and writing audio content to the MP3 file with metadata tags. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the MP3 output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the MP3 output operations, including encoder, sink, and file handles. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the MP3 output block. Properly disposes of GStreamer elements, encoder, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the MP3 content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the MP3 output destination. ### IsAvailable() Determines whether MP3 output functionality is available on the current system. Requires GStreamer MP3 encoder and file sink plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if MP3 output is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the MP3 file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where MP3 content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this MP3 output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this MP3 output block. ## See Also --- # Class MP4OutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MP4OutputBlock.html # Class MP4OutputBlock # Class MP4OutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll MP4 multimedia container output block for creating industry-standard MP4 video files with integrated encoding capabilities. Provides comprehensive MP4 file creation with configurable video and audio encoders, supporting H.264/H.265 video with AAC/MP3 audio for professional video production, streaming content preparation, and multimedia distribution with broad device compatibility. Implements the . Implements the . Implements the . ```csharp public class MP4OutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MP4OutputBlock(string) Initializes a new instance of the class with default H.264 and AAC encoders. Creates an MP4 output block configured for high-quality video production with industry-standard codecs. ```csharp public MP4OutputBlock(string filename) ``` #### Parameters Parameters: - filename (string): The output MP4 file path where the encoded multimedia content will be written. ### MP4OutputBlock(MP4SinkSettings, IH264EncoderSettings, IAACEncoderSettings) Initializes a new instance of the class with custom H.264 and AAC encoder settings. Provides full control over video and audio compression parameters for professional MP4 file creation. ```csharp public MP4OutputBlock(MP4SinkSettings sinkSettings, IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining output file configuration. - h264settings (IH264EncoderSettings): The H.264 video encoder settings controlling video compression quality and parameters. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings controlling audio compression quality and parameters. ### MP4OutputBlock(MP4SinkSettings, IH264EncoderSettings, MP3EncoderSettings) Initializes a new instance of the class with H.264 video and MP3 audio encoders. Provides widely compatible MP4 output with H.264 video compression and MP3 audio for broad device support. ```csharp public MP4OutputBlock(MP4SinkSettings sinkSettings, IH264EncoderSettings h264settings, MP3EncoderSettings mp3Settings) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining output file configuration. - h264settings (IH264EncoderSettings): The H.264 video encoder settings controlling video compression quality and parameters. - mp3Settings (MP3EncoderSettings): The MP3 audio encoder settings controlling audio compression quality and parameters. ### MP4OutputBlock(MP4SinkSettings, IHEVCEncoderSettings, IAACEncoderSettings) Initializes a new instance of the class with HEVC/H.265 video and AAC audio encoders. Provides next-generation video compression with HEVC for superior quality at lower bitrates with AAC audio. ```csharp public MP4OutputBlock(MP4SinkSettings sinkSettings, IHEVCEncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining output file configuration. - h264settings (IHEVCEncoderSettings): The HEVC/H.265 video encoder settings controlling advanced video compression quality and parameters. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings controlling audio compression quality and parameters. ### MP4OutputBlock(MP4SinkSettings, IHEVCEncoderSettings, MP3EncoderSettings) Initializes a new instance of the class with HEVC/H.265 video and MP3 audio encoders. Provides next-generation video compression with HEVC for superior quality at lower bitrates with MP3 audio. ```csharp public MP4OutputBlock(MP4SinkSettings sinkSettings, IHEVCEncoderSettings h264settings, MP3EncoderSettings mp3Settings) ``` #### Parameters Parameters: - sinkSettings (MP4SinkSettings): The MP4 container sink settings defining output file configuration. - h264settings (IHEVCEncoderSettings): The HEVC/H.265 video encoder settings controlling advanced video compression quality and parameters. - mp3Settings (MP3EncoderSettings): The MP3 audio encoder settings controlling audio compression quality and parameters. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for MP4 output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MP4 output block within the pipeline context. Creates the MP4 sink, video and audio encoders, and establishes all necessary connections for encoding and writing multimedia content to the MP4 file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the MP4 output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the MP4 output operations, including encoders, sink, and file handles. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the MP4 output block. Properly disposes of GStreamer elements, encoders, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the MP4 content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the MP4 output destination. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IH264EncoderSettings, IAACEncoderSettings) Determines whether MP4 output functionality is available on the current system with the specified encoder settings. Requires GStreamer MP4 muxer and the specified video and audio encoder plugins to be installed and functional. ```csharp public static bool IsAvailable(IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - h264settings (IH264EncoderSettings): The H.264 video encoder settings to validate for availability. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings to validate for availability. #### Returns Parameters: - (bool): true if MP4 output with the specified encoders is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the MP4 file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where MP4 content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this MP4 output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this MP4 output block. ## See Also --- # Class MP4SinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MP4SinkBlock.html # Class MP4SinkBlock # Class MP4SinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll MP4 (MPEG-4 Part 14) sink block for writing media streams to MP4 container files. ```csharp public class MP4SinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MP4 sink block provides comprehensive support for creating MP4 files, the industry-standard container format for digital multimedia. MP4 files can contain video, audio, subtitles, and metadata tracks, making it ideal for a wide range of applications from video recording to streaming content preparation.

Key Features:

  • Support for multiple video and audio tracks
  • Compatible with H.264/AVC, H.265/HEVC, AAC, MP3, and other codecs
  • Fast-start support for progressive download/streaming
  • Fragmented MP4 support for live streaming scenarios
  • Metadata and chapter support
  • Mux-only mode for remuxing pre-encoded streams
  • Split recording capability for file size management

Typical Use Cases:

  • Recording camera feeds to standard video files
  • Creating content for web streaming platforms
  • Producing files for mobile device playback
  • Archiving video content in a universally compatible format
  • Preparing content for video editing workflows

Technical Specifications:

  • Compliant with ISO/IEC 14496-14 standard
  • Maximum file size: Limited by filesystem (typically 4GB on FAT32)
  • Supports both constant and variable bitrate encoding
  • Compatible with all major media players and editing software

## Constructors ### MP4SinkBlock(MP4SinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public MP4SinkBlock(MP4SinkSettings settings) ``` #### Parameters Parameters: - settings (MP4SinkSettings): The object containing configuration for the MP4 output. When MuxOnly is true in settings, an output pad will be created for passing the muxed stream to downstream elements instead of writing directly to a file. ### MP4SinkBlock(string) Initializes a new instance of the class with a simple filename. ```csharp public MP4SinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path where the MP4 file will be written. The directory must exist and be writable. This constructor uses default MP4 settings suitable for most recording scenarios. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MP4 sink configuration settings. ```csharp public MP4SinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (MP4SinkSettings): ### Type Gets the media block type identifier for the MP4 sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MP4 sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built, all requested input pads were created, and output pad was configured (if in mux-only mode); false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer MP4 muxer (qtmux) element and configures input pads for each media stream. For split sink configurations, it uses specialized pad templates. The method is idempotent and will return immediately if already built. ### CleanUp() Cleans up resources and resets the sink block to an unbuilt state. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer MP4 muxer element and resets the build state. After cleanup, the block can be rebuilt with new settings if needed. Any ongoing file writing will be terminated. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept on this input pad. MP4 supports: for video streams, for audio streams, and for subtitle tracks (though GStreamer support may vary). #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to be connected to an upstream media source or processing block. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer MP4 muxer element for advanced configuration and pipeline operations. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the MP4 muxer (qtmux), allowing direct access to GStreamer properties and methods when needed. ### GetFilenameOrURL() Gets the output filename or URL where the MP4 file will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path specified in the settings. For split recording scenarios, this returns the base filename template that will be used to generate individual segment filenames. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. Use to create a new pad if needed. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output filename or URL for the MP4 file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path where the MP4 file should be written. For standard recording, this should be a complete filename. For split recording, use a template with format specifiers (e.g., "video_%05d.mp4") to generate sequential filenames. #### Remarks This method updates both the settings and the underlying GStreamer element if the sink has already been built. Changing the filename during active recording is not recommended and may cause unexpected behavior. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class MPEGPSSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MPEGPSSinkBlock.html # Class MPEGPSSinkBlock # Class MPEGPSSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for creating MPEG Program Stream (MPEG-PS) files. Generates DVD-compatible video files and supports legacy MPEG-1/2 workflows. ```csharp public class MPEGPSSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MPEGPSSinkBlock creates MPEG Program Stream files, a container format primarily used for: - DVD-Video authoring and playback - MPEG-1 and MPEG-2 video storage - Legacy video archiving systems - Standalone media player compatibility

MPEG-PS characteristics: - Designed for reliable storage media (DVDs, hard drives) - Contains timing information for synchronized playback - Supports multiple video and audio streams - Variable bitrate encoding support - System clock reference (SCR) for timing

Typical stream configurations: - Video: MPEG-2 (DVD), MPEG-1 (VCD) - Audio: MPEG-1 Layer II (MP2), AC-3, PCM - Subtitles: DVD subpicture format - Maximum bitrate: 10.08 Mbps for DVD compliance

Common use cases: - DVD authoring and production - Legacy video system compatibility - Archival storage of MPEG content - Set-top box and hardware player support

## Constructors ### MPEGPSSinkBlock(string) Initializes a new instance of the class. ```csharp public MPEGPSSinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The full path to the output MPEG-PS file. #### Remarks Use .mpg or .mpeg extension for general use, or .vob for DVD-Video files. Ensure the output directory exists and has write permissions. #### Exceptions Parameters: - (ArgumentNullException): Thrown when filename is null or empty. ## Properties ### Filename Gets or sets the output filename for the MPEG-PS file. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks For DVD compliance, ensure the filename follows DVD naming conventions (e.g., VTS_01_1.VOB for DVD-Video). ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the MPEG-PS sink and prepares it for multiplexing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; otherwise, false. #### Remarks This method creates the MPEG-PS muxer and configures input pads for all connected streams. The muxer will handle proper packet interleaving and timing information generation. ### CleanUp() Performs cleanup of resources used by the MPEG-PS sink. ```csharp public void CleanUp() ``` #### Remarks This method finalizes the MPEG-PS file structure, ensures all packets are written, and releases the underlying muxer element. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for adding a stream to the MPEG-PS file. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of stream to add (video, audio, or subtitle). #### Returns Parameters: - (MediaBlockPad): A new for connecting the media stream. #### Remarks For DVD compliance: - Video: MPEG-2 at 720x480 (NTSC) or 720x576 (PAL) - Audio: AC-3, MP2, or PCM - Subtitles: DVD subpicture format ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the MPEG-PS file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the output MPEG-PS file. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether MPEG-PS muxing functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if MPEG-PS sink is available; otherwise, false. Requires GStreamer's mpegpsmux element. #### Remarks MPEG-PS support is typically available in GStreamer's bad plugins package. DVD-compliant muxing may require additional configuration. ### SetFilenameOrURL(string) Sets the output filename for the MPEG-PS file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the MPEG-PS file should be written. #### Remarks Changing the filename after the pipeline has started requires a pipeline restart. For DVD authoring, follow proper naming conventions. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class MPEGTSSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MPEGTSSinkBlock.html # Class MPEGTSSinkBlock # Class MPEGTSSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Implements a sink block for creating MPEG Transport Stream (MPEG-TS) files or streams. Supports broadcasting, streaming, and digital TV distribution formats. ```csharp public class MPEGTSSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The MPEGTSSinkBlock creates MPEG Transport Streams, the standard format for: - Digital television broadcasting (DVB, ATSC, ISDB) - IPTV and streaming services - Blu-ray disc video - Network streaming protocols (HLS, MPEG-DASH)

MPEG-TS characteristics: - Fixed-size 188-byte packets for error resilience - Designed for unreliable transmission (broadcast, network) - Program Association Table (PAT) and Program Map Table (PMT) - Support for multiple programs in a single stream - PCR (Program Clock Reference) for synchronization

Key features: - Multiple video/audio/data streams per program - Service information (SI) tables - Conditional access support (encryption) - Time-stamped packets for live streaming - Can output to file or network stream

Common use cases: - Live TV broadcasting and recording - HLS streaming preparation - Network video distribution - Set-top box recording format - Professional broadcast workflows

## Constructors ### MPEGTSSinkBlock(MPEGTSSinkSettings) Initializes a new instance of the class. ```csharp public MPEGTSSinkBlock(MPEGTSSinkSettings settings) ``` #### Parameters Parameters: - settings (MPEGTSSinkSettings): The MPEG-TS configuration including output mode and muxing parameters. #### Remarks If FileOutput is false in settings, an output pad will be created for streaming the MPEG-TS data to another pipeline element (e.g., for network streaming). #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the MPEG-TS sink and configures it for operation. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; otherwise, false. #### Remarks This method: - Creates the MPEG-TS muxer with specified settings - Configures input pads for all elementary streams - Sets up output (file or streaming pad) - Initializes program tables and PIDs ### CleanUp() Performs cleanup of resources used by the MPEG-TS sink. ```csharp public void CleanUp() ``` #### Remarks This method ensures all packets are written, finalizes the transport stream structure, and releases the underlying muxer element. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for adding an elementary stream to the transport stream. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of elementary stream (video, audio, or data). #### Returns Parameters: - (MediaBlockPad): A new for connecting the media stream. #### Remarks Common stream types: - Video: H.264/AVC, H.265/HEVC, MPEG-2 - Audio: AAC, MP3, AC-3, DTS - Data: Teletext, subtitles, metadata Each stream is assigned a unique PID (Packet Identifier) in the transport stream. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the MPEG-TS file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The full path to the output file, or null if configured for streaming output. ### GetInput(MediaBlockPadMediaType) Gets the existing input. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): Type of the media. #### Returns Parameters: - (MediaBlockPad): MediaBlockPad. ### IsAvailable() Determines whether MPEG-TS muxing functionality is available on the current platform. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if MPEG-TS sink is available; otherwise, false. Requires GStreamer's mpegtsmux element. #### Remarks MPEG-TS support is part of GStreamer's bad plugins package. This is a widely supported format across all platforms. ### SetFilenameOrURL(string) Sets the output filename for the MPEG-TS file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The full path where the MPEG-TS file should be written. #### Remarks This only applies when the sink is configured for file output. For streaming output, use the output pad instead. Common extensions are .ts, .mts, or .m2ts. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class MXFSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.MXFSinkBlock.html # Class MXFSinkBlock # Class MXFSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink for writing MXF (Material eXchange Format) files with professional broadcast features. ```csharp public class MXFSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Create MXF sink for broadcast-quality recording
var settings = new MXFSinkSettings
{
    Filename = "output.mxf",
    VideoStreamType = MXFVideoStreamType.DNxHD,
    AudioStreamType = MXFAudioStreamType.Uncompressed
};

var mxfSink = new MXFSinkBlock(settings);

// Create inputs for video and audio
var videoInput = mxfSink.CreateNewInput(MediaBlockPadMediaType.Video);
var audioInput = mxfSink.CreateNewInput(MediaBlockPadMediaType.Audio);

// Connect to pipeline
pipeline.Connect(videoEncoder.Output, videoInput);
pipeline.Connect(audioSource.Output, audioInput);
## Remarks

The MXFSinkBlock enables recording of audio and video content to MXF files, a professional format widely used in broadcast and post-production workflows. It supports multiple video and audio stream types with broadcast-quality encoding options.

Key features include:

  • Support for multiple video codecs: DV, JPEG2000, MPEG (1/2/4), H.264, DNxHD, and uncompressed
  • Support for multiple audio formats: ALAW, MPEG, and uncompressed BWF
  • Dynamic input creation for multi-track recording
  • Professional broadcast metadata support
  • Industry-standard MXF operational patterns

Common use cases:

  • Professional video production and archiving
  • Broadcast content creation and delivery
  • Post-production interchange format
  • Long-term media preservation
  • Multi-track recording workflows

The block automatically selects appropriate pad templates based on the configured video and audio stream types in the settings. Multiple streams can be multiplexed into a single MXF container.

## Constructors ### MXFSinkBlock(MXFSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public MXFSinkBlock(MXFSinkSettings settings) ``` #### Parameters Parameters: - settings (MXFSinkSettings): The MXF sink configuration settings that define output format and encoding options. #### Remarks The settings must specify valid output filename and desired stream types before building the block. The block name is automatically set to "MXFSink". #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MXF sink configuration settings. ```csharp public MXFSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (MXFSinkSettings): #### Remarks The settings determine which video and audio stream types are supported and how the MXF container is structured. Changes to settings after building the block will not take effect. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the MXF sink block and configures input pads based on stream type settings. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying GStreamer MXF muxer element and creates appropriate input pads based on the configured video and audio stream types. Each input pad is matched to a specific pad template that corresponds to the desired codec format.

Pad template mapping:

  • DV video: "dv_dif_video_sink_%u"
  • JPEG2000 video: "jpeg2000_video_sink_%u"
  • MPEG video: "mpeg_video_sink_%u" (for MPEG-1/2/4 and H.264)
  • Uncompressed video: "up_video_sink_%u"
  • DNxHD video: "vc3_video_sink_%u"
  • ALAW audio: "alaw_audio_sink_%u"
  • MPEG audio: "mpeg_audio_sink_%u"
  • Uncompressed audio: "bwf_audio_sink_%u"

The method will skip any input pads that don't have a corresponding template for the configured stream type. Subtitle inputs are currently not processed.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type to support multi-stream recording. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream (video, audio, or subtitle) for the new input. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. #### Remarks

This method enables dynamic creation of inputs for multi-track MXF files. Each input corresponds to a separate stream in the output file. The actual pad template used depends on the stream type configured in the settings.

Multiple inputs of the same type can be created for multi-track scenarios (e.g., multiple audio tracks for different languages).

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the MXF file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The configured output filename path. #### Remarks This method implements the IMediaBlockSink interface requirement and returns the filename specified in the settings. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad of the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for. #### Returns Parameters: - (MediaBlockPad): The first matching the specified type, or null if none exists. #### Remarks This method returns the first input pad that matches the requested media type. If multiple inputs of the same type exist, only the first one is returned. Use to access all input pads. ### IsAvailable() Determines whether the MXF sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if MXF writing is supported; otherwise, false. #### Remarks Availability depends on the presence of required GStreamer plugins (mxf muxer) and appropriate codec support. The correct NuGet SDK redistribution package must be included in your project for this block to function. ### SetFilenameOrURL(string) Sets the output filename for the MXF file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new output filename path. #### Remarks

This method updates the filename in the settings. Changes made after the block is built will not take effect until the block is rebuilt.

The filename should include the full path and use the .mxf extension for proper file type identification.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class NDISinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.NDISinkBlock.html # Class NDISinkBlock # Class NDISinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll NDI (Network Device Interface) sink block for broadcasting video over IP networks. ```csharp public class NDISinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockInternals2, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The NDI sink block enables high-quality, low-latency video transmission over standard Ethernet networks using NewTek's NDI protocol. NDI has become the de facto standard for IP video production, allowing multiple video systems to identify and communicate with one another over IP, and to encode, transmit, and receive high-quality video with minimal latency.

Key Features:

  • Ultra-low latency transmission (typically 1 frame)
  • Automatic network discovery of NDI sources
  • Support for full resolution video with alpha channel
  • Multi-channel audio support
  • Bi-directional metadata communication
  • Multicast and unicast transmission modes
  • Hardware acceleration support on compatible systems

Typical Use Cases:

  • Live production workflows in broadcast environments
  • Multi-camera productions without physical SDI/HDMI cables
  • Remote production and contribution feeds
  • Virtual sets and augmented reality applications
  • Video conferencing and collaboration systems
  • Digital signage and display walls

Technical Requirements:

  • NDI Runtime (v5 or v6) must be installed on the system
  • Gigabit Ethernet network recommended (100 Mbps minimum)
  • Video formats: Various resolutions up to 4K and beyond
  • Audio: Up to 16 channels of float32 audio
  • Color formats: UYVY, BGRA, RGBA with optional alpha

Platform Notes: The implementation differs between platforms. On Windows, it may use direct NDI SDK integration, while on other platforms it uses GStreamer's NDI plugin. The NDI_RUNTIME_DIR_V5 or NDI_RUNTIME_DIR_V6 environment variable must be set.

## Constructors ### NDISinkBlock(NDISinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public NDISinkBlock(NDISinkSettings settings) ``` #### Parameters Parameters: - settings (NDISinkSettings): The object containing configuration for the NDI output, primarily the source name that will identify this sender on the network. ### NDISinkBlock(string) Initializes a new instance of the class with a simple name. ```csharp public NDISinkBlock(string name) ``` #### Parameters Parameters: - name (string): The NDI source name that will be visible to other NDI devices on the network. This name should be descriptive and unique within your network environment. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the NDI sink configuration settings. ```csharp public NDISinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (NDISinkSettings): ### Type Gets the media block type identifier for the NDI sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up resources and stops NDI transmission. ```csharp public void CleanUp() ``` #### Remarks This method stops the NDI sender, disposes of buffer sinks (on Windows), or the GStreamer element (on other platforms), and resets the build state. The NDI source will disappear from the network after cleanup. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. NDI supports: for video streams and for audio streams. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to receive streams for NDI network transmission. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Returns null as the NDI sink uses either platform-specific implementations or direct GStreamer elements without a wrapper. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Returns null as the NDI sink implementation varies by platform and may not expose a single GStreamer element. ### GetFilenameOrURL() Gets the NDI source name that identifies this sender on the network. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The NDI source name as configured in the settings. This name is what other NDI devices will see when discovering sources. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### PostConnect() Called after all input pads have been connected to perform post-connection setup. ```csharp public bool PostConnect() ``` #### Returns Parameters: - (bool): true if post-connection setup succeeded; false on Windows platforms where this step is not needed, or if the setup failed on other platforms. #### Remarks This method is part of the IMediaBlockInternals2 interface and handles platform-specific initialization that must occur after pad connections are established. ### SetFilenameOrURL(string) Sets the NDI source name for network identification. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new NDI source name. This should be descriptive and unique to help users identify this source among other NDI sources on the network. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class OGGOpusOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.OGGOpusOutputBlock.html # Class OGGOpusOutputBlock # Class OGGOpusOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll OGG Opus audio container output block for creating high-quality compressed audio files with modern codec technology. Provides professional audio file creation with configurable OPUS encoding within OGG container for superior audio quality at low bitrates, optimized for voice communication, music streaming, and modern web audio applications with royalty-free codec advantages. Implements the . Implements the . Implements the . ```csharp public class OGGOpusOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OGGOpusOutputBlock(string, OPUSEncoderSettings) Initializes a new instance of the class with custom OPUS encoder settings. Provides full control over audio compression parameters for professional OGG Opus file creation. ```csharp public OGGOpusOutputBlock(string filename, OPUSEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The output OGG file path where the OPUS-encoded audio content will be written. - settings (OPUSEncoderSettings): The OPUS encoder settings controlling compression quality and parameters. ## Properties ### Input Gets the audio input pad for receiving audio streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (single audio input for OPUS encoding). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for OGG Opus output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OGG Opus output block within the pipeline context. Creates the OGG sink, OPUS encoder, and establishes all necessary connections for encoding and writing audio content to the OGG file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the OGG Opus output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the OGG Opus output operations, including encoder, sink, and file handles. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the OGG Opus output block. Properly disposes of GStreamer elements, encoder, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the OGG Opus content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the OGG Opus output destination. ### IsAvailable() Determines whether OGG Opus output functionality is available on the current system. Requires GStreamer OGG muxer, OPUS encoder, and file sink plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OGG Opus output is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the OGG file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where OGG Opus content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this OGG Opus output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this OGG Opus output block. ## See Also --- # Class OGGSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.OGGSinkBlock.html # Class OGGSinkBlock # Class OGGSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink for writing OGG container files with Vorbis audio and Theora video streams. ```csharp public class OGGSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Create OGG sink for recording
var settings = new OGGSinkSettings
{
    Filename = "output.ogg",
    EnableMetadata = true
};

var oggSink = new OGGSinkBlock(settings);

// Create inputs for video and audio
var videoInput = oggSink.CreateNewInput(MediaBlockPadMediaType.Video);
var audioInput = oggSink.CreateNewInput(MediaBlockPadMediaType.Audio);

// Connect encoded streams
pipeline.Connect(theoraEncoder.Output, videoInput);
pipeline.Connect(vorbisEncoder.Output, audioInput);
## Remarks

The OGGSinkBlock enables recording of audio and video content to OGG files, an open-source container format commonly used with Vorbis audio and Theora video codecs. It supports multiplexing multiple audio and video streams into a single container file.

Key features include:

  • Support for multiple video streams (Theora codec)
  • Support for multiple audio streams (Vorbis codec)
  • Dynamic input creation for multi-stream recording
  • Royalty-free, open-source format
  • Streaming-friendly container structure

Common use cases:

  • Web video streaming with open formats
  • Audio podcast recording and distribution
  • Cross-platform media archiving
  • Open-source media production workflows
  • Educational and non-commercial content

The block expects pre-encoded Theora video and Vorbis audio streams. Encoding must be performed by upstream encoder blocks before connecting to this sink.

## Constructors ### OGGSinkBlock(OGGSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public OGGSinkBlock(OGGSinkSettings settings) ``` #### Parameters Parameters: - settings (OGGSinkSettings): The OGG sink configuration settings that define output options. #### Remarks The settings must specify a valid output filename before building the block. The block name is automatically set to "OGGSink". #### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the OGG sink configuration settings. ```csharp public OGGSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (OGGSinkSettings): #### Remarks The settings determine the output filename and various OGG container options. Changes to settings after building the block will not take effect. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the OGG sink block and configures input pads for video and audio streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying GStreamer OGG muxer element and creates appropriate input pads for each configured stream. The muxer uses specific pad templates for different stream types:

  • Video streams: "video_%u" template (expects Theora-encoded data)
  • Audio streams: "audio_%u" template (expects Vorbis-encoded data)

Subtitle inputs are currently not supported by the OGG format and will be skipped. Each successfully created pad is assigned to its corresponding input in the block.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type to support multi-stream OGG files. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream (video or audio) for the new input. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. #### Remarks

This method enables dynamic creation of inputs for multi-stream OGG files. Video inputs expect Theora-encoded streams, while audio inputs expect Vorbis-encoded streams.

Multiple streams of the same type can be created (e.g., multiple audio tracks for different languages or commentary tracks).

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the output filename for the OGG file. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The configured output filename path. #### Remarks This method implements the IMediaBlockSink interface requirement and returns the filename specified in the settings. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad of the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for. #### Returns Parameters: - (MediaBlockPad): The first matching the specified type, or null if none exists. #### Remarks This method returns the first input pad that matches the requested media type. If multiple inputs of the same type exist, only the first one is returned. Use to access all input pads. ### IsAvailable() Determines whether the OGG sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OGG muxing is supported; otherwise, false. #### Remarks Availability depends on the presence of required GStreamer plugins (oggmux) and the correct NuGet SDK redistribution package must be included in your project. ### SetFilenameOrURL(string) Sets the output filename for the OGG file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new output filename path. #### Remarks

This method updates the filename in the settings. Changes made after the block is built will not take effect until the block is rebuilt.

The filename should include the full path and use the .ogg or .ogv extension for proper file type identification.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class OGGSpeexOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.OGGSpeexOutputBlock.html # Class OGGSpeexOutputBlock # Class OGGSpeexOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll OGG Speex output block for creating compressed voice audio files optimized for speech content. This block combines Speex audio encoding with OGG container packaging, providing an efficient solution for voice recording, VoIP applications, and speech archival. Speex is specifically designed for speech compression, offering superior quality at low bitrates compared to general-purpose audio codecs. The OGG container provides an open, patent-free format with excellent streaming capabilities and metadata support. Key features: - Ultra-efficient speech compression (2-44 kbps) - Voice Activity Detection (VAD) for silence suppression - Variable bitrate (VBR) encoding for optimal quality/size ratio - Wideband (16 kHz) and ultra-wideband (32 kHz) support - Acoustic echo cancellation compatibility - Packet loss concealment for streaming applications Common use cases: - Voice recording and dictation systems - Podcast production with speech-only content - VoIP and telecommunication applications - Audio books and spoken word archives - Voice memo and note-taking applications - Language learning materials While Speex has been largely superseded by Opus for new applications, it remains valuable for legacy system compatibility and specific speech-only scenarios where its optimizations provide benefits. Implements the . Implements the . Implements the . ```csharp public class OGGSpeexOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OGGSpeexOutputBlock(string, SpeexEncoderSettings) Initializes a new instance of the class. Creates an output block configured for speech compression using Speex codec in an OGG container, ideal for voice recording and telecommunication applications. ```csharp public OGGSpeexOutputBlock(string filename, SpeexEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The output file path for the OGG Speex audio file. - settings (SpeexEncoderSettings): The Speex encoder settings defining quality, bitrate, and speech optimization parameters. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Always null for file output blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Empty for file output blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for the OGG Speex output. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OGG Speex output pipeline. Creates the Speex encoder, OGG muxer, and file sink, then connects them to form a complete speech encoding and packaging pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the output pipeline was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the OGG Speex output. Disposes the encoder, sink, and releases file handles. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of encoder, muxer, and file resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element. Not applicable for composite blocks. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple elements. ### GetElement() Gets the underlying GStreamer element. Not applicable for composite blocks. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple elements. ### GetFilenameOrURL() Gets the current output filename where the OGG Speex audio is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path for the OGG Speex output. ### IsAvailable() Determines whether OGG Speex output functionality is available on the current system. Requires the GStreamer Speex plugin and OGG muxer to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OGG Speex encoding is supported; otherwise, false. ### SetFilenameOrURL(string) Sets a new output filename for the OGG Speex file. Allows changing the output destination during pipeline operation. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path for OGG Speex output. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this output block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class OGGVorbisOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.OGGVorbisOutputBlock.html # Class OGGVorbisOutputBlock # Class OGGVorbisOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll OGG Vorbis output block for creating high-quality compressed audio files using the open-source Vorbis codec. This block combines Vorbis audio encoding with OGG container packaging, providing an excellent solution for music distribution, streaming audio, and multimedia content creation. Vorbis offers superior audio quality compared to MP3 at similar bitrates, making it ideal for applications where audio fidelity is paramount. The OGG container provides a patent-free, open standard format with robust streaming capabilities and comprehensive metadata support. Key features: - High-quality lossy audio compression (45-500 kbps) - Superior sound quality at low to medium bitrates - Variable bitrate (VBR) encoding for optimal quality/size ratio - Support for sample rates up to 192 kHz - Multi-channel audio support (mono to 7.1 surround) - Comprehensive metadata tagging (Vorbis comments) - Streaming-optimized container format Common use cases: - Music distribution and archival - Game audio assets and soundtracks - Podcast and audiobook production - Web audio streaming applications - Open-source multimedia projects - Cross-platform audio solutions Vorbis remains an excellent choice for applications requiring patent-free, high-quality audio compression with broad platform support and superior performance at medium bitrates. Implements the . Implements the . Implements the . ```csharp public class OGGVorbisOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OGGVorbisOutputBlock(string, VorbisEncoderSettings) Initializes a new instance of the class. Creates an output block configured for high-quality audio compression using the Vorbis codec in an OGG container, ideal for music and multimedia applications. ```csharp public OGGVorbisOutputBlock(string filename, VorbisEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The output file path for the OGG Vorbis audio file. - settings (VorbisEncoderSettings): The Vorbis encoder settings defining quality, bitrate, and compression parameters. ### OGGVorbisOutputBlock(string, VorbisEncoderSettings, MediaFileTags) Initializes a new instance of the class. Creates an output block configured for high-quality audio compression using the Vorbis codec in an OGG container, ideal for music and multimedia applications. ```csharp public OGGVorbisOutputBlock(string filename, VorbisEncoderSettings settings, MediaFileTags tags) ``` #### Parameters Parameters: - filename (string): The output file path for the OGG Vorbis audio file. - settings (VorbisEncoderSettings): The Vorbis encoder settings defining quality, bitrate, and compression parameters. - tags (MediaFileTags): The metadata tags to be written to the OGG Vorbis file, including title, artist, album, and other information. ### OGGVorbisOutputBlock(string) Initializes a new instance of the class. Creates an output block configured for high-quality audio compression using the Vorbis codec in an OGG container, ideal for music and multimedia applications. ```csharp public OGGVorbisOutputBlock(string filename) ``` #### Parameters Parameters: - filename (string): The output file path for the OGG Vorbis audio file. ## Properties ### Input Gets the primary input pad for audio data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Always null for file output blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Empty for file output blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Tags Gets or sets the metadata tags to be written to the OGG Vorbis file. These tags include information such as title, artist, album, year, and other audio metadata. Tags can be set before building the pipeline and will be applied during the encoding process. ```csharp public MediaFileTags Tags { get; set; } ``` #### Property Value Parameters: - (MediaFileTags): ### Type Gets the block type identifier for the OGG Vorbis output. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the OGG Vorbis output pipeline. Creates the Vorbis encoder, OGG muxer, and file sink, then connects them to form a complete audio encoding and packaging pipeline with metadata tags. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the output pipeline was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the OGG Vorbis output. Disposes the encoder, sink, and releases file handles. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of encoder, muxer, and file resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element. Not applicable for composite blocks. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple elements. ### GetElement() Gets the underlying GStreamer element. Not applicable for composite blocks. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple elements. ### GetFilenameOrURL() Gets the current output filename where the OGG Vorbis audio is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path for the OGG Vorbis output. ### IsAvailable() Determines whether OGG Vorbis output functionality is available on the current system. Requires the GStreamer Vorbis plugin and OGG muxer to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if OGG Vorbis encoding is supported; otherwise, false. ### SetFilenameOrURL(string) Sets a new output filename for the OGG Vorbis file. Allows changing the output destination during pipeline operation. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path for OGG Vorbis output. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this output block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class RTMPSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.RTMPSinkBlock.html # Class RTMPSinkBlock # Class RTMPSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll RTMP (Real-Time Messaging Protocol) sink block for streaming media to RTMP servers. ```csharp public class RTMPSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The RTMP sink block enables live streaming of audio and video content to RTMP-compatible streaming servers and platforms. RTMP is the de facto standard for live streaming, supported by major platforms like YouTube Live, Facebook Live, Twitch, and custom streaming servers like Wowza, nginx-rtmp, and Adobe Media Server.

Key Features:

  • Real-time streaming with low latency
  • Support for H.264 video and AAC/MP3 audio codecs
  • Authentication support for secure streaming
  • Automatic reconnection capabilities
  • Compatible with all major streaming platforms
  • Support for custom RTMP server implementations

Typical Use Cases:

  • Live streaming to YouTube, Facebook, Twitch, etc.
  • Broadcasting events, gaming sessions, or presentations
  • Setting up private streaming servers for internal use
  • Multi-platform simultaneous streaming
  • Professional broadcast workflows

Technical Requirements:

  • Video: H.264/AVC codec (baseline, main, or high profile)
  • Audio: AAC or MP3 codec
  • Stable network connection with sufficient upload bandwidth
  • RTMP URL format: rtmp://server:port/app/streamkey

Limitations:

  • Limited to H.264 video (no H.265/HEVC support in standard RTMP)
  • Maximum resolution depends on server and bandwidth
  • Requires pre-encoded streams (not a transcoding block)

## Constructors ### RTMPSinkBlock(RTMPSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public RTMPSinkBlock(RTMPSinkSettings settings) ``` #### Parameters Parameters: - settings (RTMPSinkSettings): The object containing the RTMP server URL, authentication details, and streaming parameters. The Location property must contain a valid RTMP URL in the format: rtmp://server:port/app/streamkey ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the RTMP sink configuration settings. ```csharp public RTMPSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (RTMPSinkSettings): ### Type Gets the media block type identifier for the RTMP sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the RTMP sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and configured for streaming; false if initialization failed, the RTMP URL is invalid, or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer RTMP sink element and configures it with the provided server URL and settings. It also sets up input pads for video and audio streams. The sink will attempt to connect to the RTMP server when the pipeline starts playing. ### CleanUp() Cleans up resources and disconnects from the RTMP server. ```csharp public void CleanUp() ``` #### Remarks This method closes any active RTMP connection, disposes of the underlying GStreamer element, and resets the build state. The sink can be rebuilt with new settings after cleanup if needed. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. RTMP supports: for H.264 encoded video streams and for AAC or MP3 encoded audio streams. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type, ready to receive pre-encoded streams for RTMP transmission. #### Remarks RTMP has specific codec requirements. Ensure your streams are properly encoded before connecting to this sink (H.264 for video, AAC/MP3 for audio). ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer RTMP sink element for advanced configuration and error handling. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the RTMP sink, allowing direct access to GStreamer properties like location, timeout settings, etc. ### GetFilenameOrURL() Gets the RTMP server URL where the stream is being sent. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The complete RTMP URL including server, application, and stream key. Format: rtmp://server:port/application/streamkey ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the RTMP server URL for streaming. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The RTMP URL where the stream should be sent. Must be in the format: rtmp://server:port/application/streamkey. For example: rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx #### Remarks Changing the URL during an active stream is not supported and will likely cause connection errors. Stop the pipeline before changing the destination. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class RTSPServerBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.RTSPServerBlock.html # Class RTSPServerBlock # Class RTSPServerBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll RTSP (Real-Time Streaming Protocol) server sink block that streams audio/video content over a network. This block creates an RTSP server endpoint that clients can connect to for receiving live or recorded media streams. It supports H.264/H.265 video and various audio codecs, providing standard-compliant RTSP streaming with RTP/RTCP transport protocols. The server handles multiple client connections simultaneously, supports RTSP authentication, and provides low-latency streaming suitable for security cameras, live broadcasting, and media distribution. Features include configurable port binding, custom mount points, multicast support, bandwidth management, and client session tracking. Compatible with standard RTSP clients including VLC, FFmpeg, GStreamer, and IP camera viewers. Implements the . Implements the . Implements the . ```csharp public class RTSPServerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RTSPServerBlock(RTSPServerSettings) Initializes a new instance of the class. Creates an RTSP server that will listen on the specified port and serve streams at the configured mount point. The server starts accepting connections once the pipeline is playing. ```csharp public RTSPServerBlock(RTSPServerSettings settings) ``` #### Parameters Parameters: - settings (RTSPServerSettings): The RTSP server configuration including port, mount point, authentication settings, and streaming parameters. ## Properties ### AudioInput Gets the audio input pad for connecting audio encoders. This pad accepts pre-encoded audio streams (AAC, MP3, Opus) for RTSP distribution. ```csharp public MediaBlockPad AudioInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (video input) for the RTSP server. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads (video and audio) for the RTSP server. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. RTSP server is a sink block with no output pads. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. RTSP server has no outputs as it streams over network. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the RTSP server configuration settings. Contains server port, mount point, authentication credentials, multicast settings, and streaming parameters that control server behavior and client access. ```csharp public RTSPServerSettings Settings { get; set; } ``` #### Property Value Parameters: - (RTSPServerSettings): ### Type Gets the block type identifier for the RTSP server. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoInput Gets the video input pad for connecting video encoders. This pad accepts pre-encoded video streams (H.264, H.265) for RTSP distribution. ```csharp public MediaBlockPad VideoInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the RTSP server block. Creates the server instance, binds to the specified port, configures the mount point, sets up authentication if required, and prepares input pads for media streams. The server begins accepting client connections once the pipeline starts playing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the server was successfully initialized and bound to the port; false if initialization failed due to port conflicts or configuration errors. ### CleanUp() Performs cleanup of RTSP server resources and resets to uninitialized state. Stops the server, closes all client connections, releases the network port, and disposes of all server-related resources. Essential for proper shutdown and allowing the port to be reused. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Stops the RTSP server, disconnects all clients, releases network ports, and cleans up server resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core RTSP server element wrapper. Provides access to the underlying server for advanced configuration of RTSP-specific features and session management. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the RTSP server instance. ### GetElement() Gets the raw GStreamer element for the RTSP server. This provides direct access to the GStreamer RTSP server element for advanced configuration of server properties. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element implementing RTSP server functionality. ### GetFilenameOrURL() Gets the RTSP server URL that clients can connect to. Returns the full RTSP URL including protocol, server address, port, and mount point (e.g., "rtsp://localhost:8554/stream"). ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The complete RTSP URL for client connections. ### IsAvailable() Determines whether RTSP server functionality is available on the current system. Checks for required GStreamer RTSP server plugins and network capabilities. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if RTSP server is supported with required plugins installed; false if missing GStreamer RTSP server components or network restrictions. ### SetFilenameOrURL(string) Sets the filename or URL. Not supported for RTSP server. RTSP server configuration should be done through the Settings property. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The value (ignored for RTSP server). ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this RTSP server block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SeparateOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.SeparateOutputBlock.html # Class SeparateOutputBlock # Class SeparateOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Separate output block for independent recording with custom video and audio encoder configuration. Provides isolated recording pipeline with bridge source connections allowing independent recording operations from preview pipeline, enabling simultaneous preview display and background recording with custom encoder blocks and flexible output configuration. Implements the . Implements the . Implements the . ```csharp public class SeparateOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SeparateOutputBlock(MediaBlocksPipeline, SeparateOutput, BridgeVideoSourceSettings, BridgeAudioSourceSettings) Initializes a new instance of the class with custom pipeline configuration. Creates an independent recording pipeline with bridge sources for receiving data from the main pipeline. ```csharp public SeparateOutputBlock(MediaBlocksPipeline pipeline, SeparateOutput settings, BridgeVideoSourceSettings bridgeVideoSourceSettings, BridgeAudioSourceSettings bridgeAudioSourceSettings) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this separate output block. - settings (SeparateOutput): The separate output configuration settings defining encoders and processing blocks. - bridgeVideoSourceSettings (BridgeVideoSourceSettings): The bridge video source settings for receiving video data from main pipeline. - bridgeAudioSourceSettings (BridgeAudioSourceSettings): The bridge audio source settings for receiving audio data from main pipeline. #### Exceptions Parameters: - (ArgumentNullException): _sink. - (ArgumentException): Sink must support dynamic inputs interface (IMediaBlockDynamicInputs). ## Properties ### Input Gets the primary input pad (none for separate output blocks that use bridge sources). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for separate output blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to destinations). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for separate output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the separate output block within the pipeline context. Creates all encoder blocks, source bridges, and establishes connections for independent recording operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the separate output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the separate output operations, including bridge sources and encoder blocks. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the separate output block. Properly disposes of bridge sources, encoders, and pipeline connections. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the separate recording is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the separate recording destination. ### SetFilenameOrURL(string) Updates the output filename or URL for the separate recording destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string filename) ``` #### Parameters Parameters: - filename (string): The new file path or URL where the separate recording should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this separate output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this separate output block. ## See Also --- # Class ShoutcastSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.ShoutcastSinkBlock.html # Class ShoutcastSinkBlock # Class ShoutcastSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink for streaming audio to Shoutcast/Icecast servers. ```csharp public class ShoutcastSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Create Shoutcast sink for internet radio
var settings = new ShoutcastSinkSettings
{
    URL = "http://streaming.server.com:8000/stream",
    Password = "hackme",
    Mount = "/live.mp3",
    StreamName = "My Radio Station",
    StreamGenre = "Rock",
    StreamDescription = "24/7 Rock Music"
};

var shoutcastSink = new ShoutcastSinkBlock(settings);

// Connect MP3 encoded audio
pipeline.Connect(mp3Encoder.Output, shoutcastSink.Input);
## Remarks

The ShoutcastSinkBlock enables live audio streaming to Shoutcast or Icecast servers, supporting internet radio broadcasting and audio distribution. It accepts encoded audio streams and transmits them to the server using the Shoutcast/Icecast protocol.

Key features include:

  • Support for Shoutcast v1/v2 and Icecast servers
  • MP3 and OGG Vorbis audio format support
  • Metadata streaming for track information
  • Automatic reconnection on connection loss
  • Server authentication support
  • Real-time streaming with minimal latency

Common use cases:

  • Internet radio station broadcasting
  • Live event audio streaming
  • Podcast live streaming
  • Background music distribution
  • Multi-channel audio broadcasting

The block expects pre-encoded audio (MP3 or Vorbis) on its input. Raw audio must be encoded by an upstream encoder block before streaming.

## Constructors ### ShoutcastSinkBlock(ShoutcastSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public ShoutcastSinkBlock(ShoutcastSinkSettings settings) ``` #### Parameters Parameters: - settings (ShoutcastSinkSettings): The Shoutcast sink configuration settings that define server connection and stream properties. #### Remarks

The settings must specify a valid server URL and authentication credentials before building the block. The block name is automatically set to "ShoutcastSink".

The input pad is configured to accept only audio streams, as Shoutcast/Icecast servers are designed for audio broadcasting.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Shoutcast sink configuration settings. ```csharp public ShoutcastSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (ShoutcastSinkSettings): #### Remarks The settings include server URL, authentication credentials, mount point, and stream metadata like name, genre, and description. Changes to settings after building the block will not take effect. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the Shoutcast sink block and configures the streaming connection. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying GStreamer Shoutcast sink element (shout2send) with the configured server settings. The sink accepts encoded audio through its single "sink" pad.

The build process:

  1. Creates the Shoutcast sink element
  2. Configures server URL, authentication, and metadata
  3. Retrieves and assigns the static sink pad

The element will attempt to connect to the server when the pipeline starts playing. Connection failures will be reported through the pipeline's error handling mechanism.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the Shoutcast/Icecast server URL. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The configured server URL including mount point. #### Remarks

This method implements the IMediaBlockSink interface requirement and returns the server URL from the settings. The URL typically includes the server address, port, and mount point.

Example: "http://server.com:8000/stream.mp3"

### IsAvailable() Determines whether the Shoutcast sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Shoutcast/Icecast streaming is supported; otherwise, false. #### Remarks Availability depends on the presence of the required GStreamer plugin (shout2send). The correct NuGet SDK redistribution package must be included in your project for this block to function. ### SetFilenameOrURL(string) Sets the Shoutcast/Icecast server URL. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new server URL including mount point. #### Remarks

This method updates the URL in the settings. Changes made after the block is built will not take effect until the block is rebuilt.

The URL should include:

  • Protocol (http:// or https://)
  • Server address and port
  • Mount point (e.g., /stream.mp3)

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class SRTMPEGTSSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.SRTMPEGTSSinkBlock.html # Class SRTMPEGTSSinkBlock # Class SRTMPEGTSSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink for streaming MPEG-TS content over SRT (Secure Reliable Transport) protocol. ```csharp public class SRTMPEGTSSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Create SRT MPEG-TS sink for streaming
var settings = new SRTSinkSettings
{
    Uri = "srt://192.168.1.100:9000",
    Mode = SRTMode.Caller,
    Latency = 120,  // milliseconds
    Passphrase = "secretkey"  // Optional encryption
};

var srtSink = new SRTMPEGTSSinkBlock(settings);

// Create inputs for streams
var videoInput = srtSink.CreateNewInput(MediaBlockPadMediaType.Video);
var audioInput = srtSink.CreateNewInput(MediaBlockPadMediaType.Audio);

// Connect encoded streams
pipeline.Connect(h264Encoder.Output, videoInput);
pipeline.Connect(aacEncoder.Output, audioInput);
## Remarks

The SRTMPEGTSSinkBlock combines MPEG-TS multiplexing with SRT streaming to enable low-latency, secure, and reliable media transport over unreliable networks. It multiplexes audio and video streams into MPEG-TS format and transmits them using the SRT protocol.

Key features include:

  • Low-latency streaming with SRT protocol benefits
  • Automatic packet loss recovery and retransmission
  • AES encryption support for secure transmission
  • Dynamic input creation for multiple streams
  • Firewall and NAT traversal capabilities
  • Bandwidth efficiency with ARQ (Automatic Repeat Request)

Common use cases:

  • Live broadcast contribution over public internet
  • Remote production and cloud-based workflows
  • Point-to-point video transport with security
  • Low-latency streaming for interactive applications
  • Reliable media delivery over unpredictable networks

The block expects pre-encoded streams compatible with MPEG-TS format (H.264/H.265 video, AAC/MP3 audio). It first multiplexes streams into MPEG-TS, then transmits via SRT.

## Constructors ### SRTMPEGTSSinkBlock(SRTSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public SRTMPEGTSSinkBlock(SRTSinkSettings settings) ``` #### Parameters Parameters: - settings (SRTSinkSettings): The SRT sink configuration settings that define connection and streaming parameters. #### Remarks

The settings must specify a valid SRT URI and connection mode before building the block. The block name is automatically set to "SRTMPEGTSSinkBlock".

This sink combines MPEG-TS multiplexing with SRT transport, making it suitable for professional streaming applications requiring reliability and low latency.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the SRT MPEG-TS sink block and configures input pads for streaming. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying GStreamer pipeline that combines MPEG-TS multiplexing with SRT output. The pipeline structure is:

[inputs] -> mpegtsmux -> srtsink

All input pads use the "sink_%d" template from the MPEG-TS muxer, which accepts various elementary stream formats. The muxer output is then sent to the SRT sink for network transmission.

If the internal element's input is null, the build will fail with an appropriate error message logged to the context.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type to support multi-stream MPEG-TS. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream (video, audio, or subtitle) for the new input. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. #### Remarks

This method enables dynamic creation of inputs for multi-stream MPEG-TS multiplexing. All inputs share the same "sink_%d" pad template, allowing flexible stream configuration.

The MPEG-TS format supports multiple elementary streams, making it suitable for multi-language audio, multiple video angles, or subtitle tracks.

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the SRT streaming URI. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The configured SRT URI as a string. #### Remarks

This method implements the IMediaBlockSink interface requirement and returns the SRT URI from the settings. The URI typically follows the format:

srt://hostname:port?options
### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad of the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for. #### Returns Parameters: - (MediaBlockPad): The first matching the specified type, or null if none exists. #### Remarks This method returns the first input pad that matches the requested media type. If multiple inputs of the same type exist, only the first one is returned. Use to access all input pads. ### IsAvailable() Determines whether the SRT MPEG-TS sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRT streaming with MPEG-TS is supported; otherwise, false. #### Remarks Availability depends on the presence of required GStreamer plugins (mpegtsmux, srtsink) and the correct NuGet SDK redistribution package must be included in your project. Both MPEG-TS multiplexing and SRT protocol support are required. ### SetFilenameOrURL(string) Sets the SRT streaming URI. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new SRT URI string. #### Remarks

This method updates the URI in the settings. Changes made after the block is built will not take effect until the block is rebuilt.

The URI should follow the SRT protocol format:

srt://hostname:port?param1=value1&param2=value2

Common parameters include mode (caller/listener), latency, passphrase, and streamid.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class SRTSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.SRTSinkBlock.html # Class SRTSinkBlock # Class SRTSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink for streaming raw data over SRT (Secure Reliable Transport) protocol. ```csharp public class SRTSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Create SRT sink for direct streaming
var settings = new SRTSinkSettings
{
    Uri = "srt://streaming.server.com:9000",
    Mode = SRTMode.Caller,
    Latency = 80,  // milliseconds
    Passphrase = "mySecureKey",
    StreamId = "live/channel1"
};

var srtSink = new SRTSinkBlock(settings);

// Connect a muxed stream
pipeline.Connect(mpegtsMuxer.Output, srtSink.Input);
## Remarks

The SRTSinkBlock enables direct streaming of any media data over the SRT protocol, providing low-latency, secure, and reliable transport over unreliable networks. Unlike SRTMPEGTSSinkBlock, this sink transmits raw data without MPEG-TS multiplexing.

Key features include:

  • Ultra-low latency streaming (as low as 60ms)
  • Automatic packet loss recovery with ARQ
  • AES-128/256 encryption for secure transmission
  • Firewall and NAT traversal support
  • Bandwidth-adaptive streaming
  • Connection bonding for redundancy

Common use cases:

  • Live event streaming and contribution
  • Remote production over public internet
  • First-mile contribution from field to studio
  • Cloud-based video workflows
  • Low-latency streaming for gaming and esports

The block accepts any type of data stream through its single input pad. For typical video streaming, the input should be a properly formatted stream (e.g., MPEG-TS) created by an upstream muxer.

## Constructors ### SRTSinkBlock(SRTSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public SRTSinkBlock(SRTSinkSettings settings) ``` #### Parameters Parameters: - settings (SRTSinkSettings): The SRT sink configuration settings that define connection and streaming parameters. #### Remarks

The settings must specify a valid SRT URI and connection mode before building the block. The block name is automatically set to "SRTSink".

The input pad is configured to accept any media type, providing flexibility for different streaming scenarios.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. ## Properties ### Input Gets the first input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SRT sink configuration settings. ```csharp public SRTSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (SRTSinkSettings): #### Remarks The settings include URI, connection mode, latency, encryption, and other SRT-specific parameters. Changes to settings after building the block will not take effect. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the SRT sink block and configures the streaming endpoint. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying GStreamer SRT sink element with the configured settings. The sink accepts any type of data through its single "sink" pad.

The build process:

  1. Creates the SRT sink element
  2. Initializes it with connection settings
  3. Retrieves and assigns the static sink pad

Failure to get the sink pad will result in an error being logged and the method returning false.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the SRT streaming URI. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The configured SRT URI as a string. #### Remarks

This method implements the IMediaBlockSink interface requirement and returns the SRT URI from the settings. The URI format is:

srt://hostname:port?param1=value1&param2=value2
### IsAvailable() Determines whether the SRT sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRT streaming is supported; otherwise, false. #### Remarks Availability depends on the presence of the required GStreamer SRT plugin (srtsink). The correct NuGet SDK redistribution package must be included in your project for this block to function. ### SetFilenameOrURL(string) Sets the SRT streaming URI. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new SRT URI string. #### Remarks

This method updates the URI in the settings. Changes made after the block is built will not take effect until the block is rebuilt.

The URI should follow the SRT protocol format with optional parameters:

  • mode: caller or listener
  • latency: target latency in milliseconds
  • passphrase: encryption key
  • streamid: stream identifier

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class StreamSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.StreamSinkBlock.html # Class StreamSinkBlock # Class StreamSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll Provides a media sink that writes data directly to a .NET Stream object. ```csharp public class StreamSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Write to memory stream
var memoryStream = new MemoryStream();
var streamSink = new StreamSinkBlock(memoryStream);

// Write to file stream with buffering
var fileStream = new FileStream("output.data", FileMode.Create, 
    FileAccess.Write, FileShare.None, 4096, useAsync: true);
var streamSink = new StreamSinkBlock(fileStream);

// Write to network stream
var tcpClient = new TcpClient("server.com", 8080);
var networkStream = tcpClient.GetStream();
var streamSink = new StreamSinkBlock(networkStream);

// Connect to pipeline
pipeline.Connect(encoder.Output, streamSink.Input);
## Remarks

The StreamSinkBlock enables writing media data to any .NET Stream implementation, providing flexible output options for custom storage, network transmission, or in-memory processing. It bridges the GStreamer pipeline with .NET I/O abstractions.

Key features include:

  • Direct writing to any Stream implementation
  • Support for memory streams, file streams, network streams
  • Zero-copy data transfer when possible
  • Automatic buffer management
  • Thread-safe stream writing
  • Compatible with any media format

Common use cases:

  • Writing to cloud storage via stream APIs
  • In-memory media processing and analysis
  • Custom network protocols via NetworkStream
  • Encrypted storage via CryptoStream
  • Compressed output via compression streams

Important: The provided stream must remain valid and writable throughout the pipeline's lifetime. The stream is not disposed by this block - the caller is responsible for proper stream lifecycle management.

## Constructors ### StreamSinkBlock(Stream) Initializes a new instance of the class with the specified stream. ```csharp public StreamSinkBlock(Stream stream) ``` #### Parameters Parameters: - stream (Stream): The writable stream to which media data will be written. #### Remarks

The provided stream must support writing and remain valid throughout the pipeline's lifetime. The stream will not be disposed by this block - the caller retains ownership and must handle proper disposal.

The input pad is configured to accept any media type, allowing flexible use with different data formats. The block name is automatically set to "StreamSink".

#### Exceptions Parameters: - (ArgumentNullException): Thrown when stream is null. - (ArgumentException): Thrown when stream is not writable. ## Fields ### TAG The tag. ```csharp protected const string TAG = "StreamSinkBlock" ``` #### Field Value Parameters: - (string): ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the stream sink block and configures the stream output. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. #### Remarks

This method initializes the underlying custom GStreamer sink element that writes data to the provided .NET Stream. The sink implements efficient data transfer from GStreamer buffers to the stream.

The build process:

  1. Creates the custom stream sink element
  2. Associates it with the provided stream
  3. Retrieves and assigns the static sink pad

Data written to the stream is buffered internally by GStreamer and flushed according to the pipeline's data flow. The stream should support asynchronous writes for optimal performance.

### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### GetFilenameOrURL() Gets the filename or URL for this stream sink. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): Always returns null as stream sinks do not have associated filenames. #### Remarks This method implements the IMediaBlockSink interface requirement. Since StreamSinkBlock writes to an arbitrary stream rather than a file, it returns null to indicate no filename is applicable. ### IsAvailable() Determines whether the stream sink functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if stream output is supported; otherwise, false. #### Remarks Availability depends on the presence of required GStreamer components for custom sink implementations. The correct NuGet SDK redistribution package must be included in your project for this block to function. ### SetFilenameOrURL(string) Sets the filename or URL for this stream sink. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The filename value (ignored). #### Remarks This method implements the IMediaBlockSink interface requirement but has no effect for StreamSinkBlock, as the output destination is determined by the stream provided in the constructor. The stream cannot be changed after construction. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class WAVSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.WAVSinkBlock.html # Class WAVSinkBlock # Class WAVSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll WAV sink block for writing uncompressed audio data to WAV (Waveform Audio File Format) files. ```csharp public class WAVSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The WAV sink block creates standard WAV files containing uncompressed PCM audio data. WAV is the de facto standard for high-quality audio storage on Windows systems and is widely supported across all platforms. It provides perfect audio fidelity at the cost of larger file sizes compared to compressed formats.

Key Features:

  • Uncompressed PCM audio for perfect quality
  • Support for various bit depths (8, 16, 24, 32-bit)
  • Multiple sample rates (8kHz to 192kHz and beyond)
  • Mono, stereo, and multi-channel support
  • Standard RIFF/WAV file structure
  • Metadata support through INFO chunks
  • No quality loss or compression artifacts

Typical Use Cases:

  • Professional audio recording and production
  • Audio archiving with maximum quality
  • Intermediate format for audio processing workflows
  • Voice recording for transcription or analysis
  • Scientific audio data capture
  • Audio mastering and post-production

Technical Specifications:

  • Container: RIFF (Resource Interchange File Format)
  • Audio format: Linear PCM (uncompressed)
  • Bit depths: 8, 16, 24, or 32-bit integer; 32-bit float
  • Channels: 1 (mono), 2 (stereo), or more for surround
  • Maximum file size: 4GB (due to 32-bit RIFF header)
  • Byte order: Little-endian

Limitations: Standard WAV files are limited to 4GB due to the 32-bit file size field in the RIFF header. For larger files, consider using RF64/WAV64 format or splitting into multiple files. The lack of compression means significantly larger file sizes compared to formats like MP3 or AAC.

## Constructors ### WAVSinkBlock(string) Initializes a new instance of the class with the specified filename. ```csharp public WAVSinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path where the WAV file will be written. The directory must exist. Use the .wav extension for proper file association. The file will be created or overwritten when the pipeline starts. ## Properties ### Filename Gets or sets the output filename for the WAV file. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Input Gets the audio input pad for this sink. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for this sink. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for the WAV sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the WAV sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and the audio input pad was configured; false if initialization failed or the file couldn't be opened for writing. #### Remarks This method creates the underlying GStreamer WAV encoder and file writer elements. It configures a single audio input pad that accepts PCM audio data in various formats (different sample rates, bit depths, and channel configurations). ### CleanUp() Cleans up resources and finalizes the WAV file. ```csharp public void CleanUp() ``` #### Remarks This method ensures the WAV file is properly finalized with correct headers, including the accurate file size and data chunk size. It then disposes of the underlying GStreamer elements. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer WAV encoder element. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the WAV encoder, typically 'wavenc' paired with 'filesink' in GStreamer. ### GetFilenameOrURL() Gets the output filename where the WAV file will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path for the WAV output file. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output filename for the WAV file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path where the WAV file should be written. The directory must exist. Use the .wav extension. #### Remarks This method only updates the filename property. The actual file location cannot be changed once the pipeline is running and writing has begun. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class WebMOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.WebMOutputBlock.html # Class WebMOutputBlock # Class WebMOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll WebM multimedia container output block for creating modern web-optimized video files with integrated encoding capabilities. Provides comprehensive WebM file creation with VP8/VP9 video encoding and Vorbis audio compression optimized for web streaming, HTML5 video playback, and browser compatibility with royalty-free codec support for modern web applications and content delivery. Implements the . Implements the . Implements the . ```csharp public class WebMOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WebMOutputBlock(WebMSinkSettings, IVPXEncoderSettings, VorbisEncoderSettings) Initializes a new instance of the class with custom VP8/VP9 and Vorbis encoder settings. Provides full control over video and audio compression parameters for professional WebM file creation optimized for web delivery. ```csharp public WebMOutputBlock(WebMSinkSettings sinkSettings, IVPXEncoderSettings videoEncoderSettings, VorbisEncoderSettings vorbisSettings) ``` #### Parameters Parameters: - sinkSettings (WebMSinkSettings): The WebM container sink settings defining output file configuration and metadata options. - videoEncoderSettings (IVPXEncoderSettings): The VP8/VP9 video encoder settings controlling video compression quality and web optimization parameters. - vorbisSettings (VorbisEncoderSettings): The Vorbis audio encoder settings controlling audio compression quality and web streaming parameters. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for output blocks that write to files). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for output blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for WebM output operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the WebM output block within the pipeline context. Creates the WebM sink, VP8/VP9 and Vorbis encoders, and establishes all necessary connections for encoding and writing multimedia content to the WebM file. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the WebM output block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the WebM output operations, including encoders, sink, and file handles. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the WebM output block. Properly disposes of GStreamer elements, encoders, and file writing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple internal elements. ### GetFilenameOrURL() Gets the current output filename or URL where the WebM content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path or URL string for the WebM output destination. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video, Audio, or Subtitle) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IVPXEncoderSettings) Determines whether WebM output functionality is available on the current system with the specified encoder settings. Requires GStreamer WebM muxer and VP8/VP9 video encoder with Vorbis audio encoder plugins to be installed and functional. ```csharp public static bool IsAvailable(IVPXEncoderSettings videoEncoderSettings) ``` #### Parameters Parameters: - videoEncoderSettings (IVPXEncoderSettings): The VP8/VP9 video encoder settings to validate for availability. #### Returns Parameters: - (bool): true if WebM output with the specified encoders is supported; otherwise, false. ### SetFilenameOrURL(string) Updates the output filename or URL for the WebM file destination, allowing dynamic output redirection. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path or URL where WebM content should be written. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this WebM output block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this WebM output block. ## See Also --- # Class WebMSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.WebMSinkBlock.html # Class WebMSinkBlock # Class WebMSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll WebM sink block for creating WebM container files with VP8/VP9 video and Vorbis/Opus audio. ```csharp public class WebMSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The WebM sink block creates WebM files, an open-source multimedia container format designed specifically for the web. WebM is based on a subset of the Matroska (MKV) container and is optimized for streaming over the internet. It's particularly popular for HTML5 video delivery due to its royalty-free codecs and broad browser support.

Key Features:

  • Support for VP8 and VP9 video codecs
  • Support for Vorbis and Opus audio codecs
  • Optimized for web streaming and HTML5 video
  • Royalty-free format with no licensing fees
  • Metadata and chapter support
  • Efficient compression with good quality
  • Native browser support in Chrome, Firefox, Opera, and Edge

Typical Use Cases:

  • Creating video content for web platforms
  • HTML5 video embedding without plugin requirements
  • Open-source video distribution
  • Streaming video content with adaptive bitrate
  • Creating royalty-free video archives

Technical Specifications:

  • Container: Based on Matroska (MKV) format
  • Video codecs: VP8 (older), VP9 (recommended for better compression)
  • Audio codecs: Vorbis (older), Opus (recommended for better quality)
  • Maximum resolution: No inherent limit (4K and beyond supported)
  • Streaming: Supports progressive download and adaptive streaming

Browser Compatibility: WebM is natively supported in most modern browsers without plugins. For maximum compatibility, consider providing fallback formats like MP4.

## Constructors ### WebMSinkBlock(WebMSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public WebMSinkBlock(WebMSinkSettings settings) ``` #### Parameters Parameters: - settings (WebMSinkSettings): The object containing configuration for the WebM output, including the target filename and any specific muxing parameters. ### WebMSinkBlock(string) Initializes a new instance of the class with a simple filename. ```csharp public WebMSinkBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path where the WebM file will be written. The file extension should be .webm. The directory must exist and be writable. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting multiple media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the WebM sink configuration settings. ```csharp public WebMSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (WebMSinkSettings): ### Type Gets the media block type identifier for the WebM sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the WebM sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and all requested input pads were created; false if initialization failed or required pads couldn't be allocated. #### Remarks This method creates the underlying GStreamer WebM muxer element and configures input pads for each media stream. The muxer expects VP8/VP9 video and/or Vorbis/Opus audio streams. ### CleanUp() Cleans up resources and finalizes the WebM file. ```csharp public void CleanUp() ``` #### Remarks This method disposes of the underlying GStreamer WebM muxer element and ensures the WebM file is properly finalized with correct headers and indexes. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. WebM supports: for VP8/VP9 video streams and for Vorbis/Opus audio streams. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. Ensure connected streams use WebM-compatible codecs. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying GStreamer WebM muxer for advanced configuration. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the WebM muxer, typically 'webmmux' in GStreamer. ### GetFilenameOrURL() Gets the output filename where the WebM file will be written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path specified in the settings. WebM files typically use the .webm extension. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the output filename for the WebM file. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The file path where the WebM file should be written. The directory must exist. Use the .webm extension for proper file association. #### Remarks This method only updates the settings. The actual file location cannot be changed once the pipeline is running. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class WMVOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.WMVOutputBlock.html # Class WMVOutputBlock # Class WMVOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll WMV output block for creating Windows Media Video files with integrated WMV video and WMA audio encoding. This block provides comprehensive Windows Media Format support, combining Microsoft's proprietary video and audio codecs in an ASF container. WMV offers excellent compression efficiency and is widely supported on Windows platforms, making it ideal for Windows-centric workflows, corporate environments, and legacy system compatibility. Key features: - WMV video compression (VC-1 codec) with multiple profiles - WMA audio compression with various quality levels - ASF container with rich metadata support - DRM (Digital Rights Management) capability - Variable bitrate (VBR) and constant bitrate (CBR) encoding - Multiple video profiles (Simple, Main, Advanced) - Support for HD content up to 1080p Common use cases: - Windows Media Player content distribution - Corporate video presentations and training - Silverlight streaming applications - Xbox and Windows device playback - Legacy Windows media workflows - Protected content distribution with DRM While newer formats like H.264/MP4 have largely superseded WMV, it remains valuable for Windows-specific applications and legacy system compatibility where Windows Media support is guaranteed. Implements the . Implements the . Implements the . ```csharp public class WMVOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WMVOutputBlock(string) Initializes a new instance of the class with default settings. Creates a WMV output configured with standard quality settings suitable for general-purpose Windows Media content creation. ```csharp public WMVOutputBlock(string filename) ``` #### Parameters Parameters: - filename (string): The output file path for the WMV file. ### WMVOutputBlock(string, MediaFileTags) Initializes a new instance of the class with default settings and metadata tags. Creates a WMV output configured with standard quality settings suitable for general-purpose Windows Media content creation with tag support. ```csharp public WMVOutputBlock(string filename, MediaFileTags tags) ``` #### Parameters Parameters: - filename (string): The output file path for the WMV file. - tags (MediaFileTags): The metadata tags to be written to the WMV file, including title, artist, album, and other information. ### WMVOutputBlock(ASFSinkSettings, WMVEncoderSettings, WMAEncoderSettings) Initializes a new instance of the class with custom encoder settings. Provides full control over video and audio compression parameters for professional Windows Media content creation. ```csharp public WMVOutputBlock(ASFSinkSettings sinkSettings, WMVEncoderSettings videoSettings, WMAEncoderSettings audioSettings) ``` #### Parameters Parameters: - sinkSettings (ASFSinkSettings): The ASF container settings including output file path and metadata. - videoSettings (WMVEncoderSettings): The WMV video encoder settings defining quality and compression parameters. - audioSettings (WMAEncoderSettings): The WMA audio encoder settings controlling audio compression. ### WMVOutputBlock(ASFSinkSettings, WMVEncoderSettings, WMAEncoderSettings, MediaFileTags) Initializes a new instance of the class with custom encoder settings and metadata tags. Provides full control over video and audio compression parameters for professional Windows Media content creation with tag support. ```csharp public WMVOutputBlock(ASFSinkSettings sinkSettings, WMVEncoderSettings videoSettings, WMAEncoderSettings audioSettings, MediaFileTags tags) ``` #### Parameters Parameters: - sinkSettings (ASFSinkSettings): The ASF container settings including output file path and metadata. - videoSettings (WMVEncoderSettings): The WMV video encoder settings defining quality and compression parameters. - audioSettings (WMAEncoderSettings): The WMA audio encoder settings controlling audio compression. - tags (MediaFileTags): The metadata tags to be written to the WMV file, including title, artist, album, and other information. ## Properties ### Input Gets the primary input pad for receiving media streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. Always null for file output blocks. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. Empty for file output blocks. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Tags Gets or sets the metadata tags to be written to the WMV/ASF file. These tags include information such as title, artist, album, year, and other media metadata. Tags can be set before building the pipeline and will be applied during the encoding process. ```csharp public MediaFileTags Tags { get; set; } ``` #### Property Value Parameters: - (MediaFileTags): ### Type Gets the block type identifier for the WMV output. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the WMV output pipeline. Creates the ASF sink, WMV video encoder, and WMA audio encoder, then connects them to form a complete Windows Media encoding pipeline with metadata tags. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the output pipeline was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the WMV output. Disposes the ASF sink, video encoder, and audio encoder. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type. Enables dynamic addition of video and audio streams to the WMV output. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Ensures proper cleanup of encoders, muxer, and file resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element. Not applicable for composite blocks. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite output blocks with multiple elements. ### GetElement() Gets the underlying GStreamer element. Not applicable for composite blocks. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite output blocks with multiple elements. ### GetFilenameOrURL() Gets the current output filename where the WMV content is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path for the WMV output. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad for the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable() Determines whether WMV output functionality is available on the current system. Requires the GStreamer ASF muxer and Windows Media encoders to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if WMV encoding is supported; otherwise, false. ### SetFilenameOrURL(string) Sets a new output filename for the WMV file. Allows changing the output destination during pipeline operation. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path for WMV output. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this output block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Sinks Link: api/VisioForge.Core.MediaBlocks.Sinks.html # Namespace VisioForge.Core.MediaBlocks.Sinks # Namespace VisioForge.Core.MediaBlocks.Sinks ### Classes Parameters: - (): ASF (Advanced Systems Format) sink block for writing media streams to ASF/WMV/WMA container files. - (): AVI multimedia container output block for creating AVI video files with integrated encoding and file writing capabilities. Provides comprehensive AVI file creation with configurable video and audio encoders, supporting H.264/AAC and H.264/MP3 combinations for professional video production, archival storage, and multimedia content creation with industry-standard AVI container format. Implements the . Implements the . Implements the . - (): Implements a sink block for writing media data to AVI (Audio Video Interleave) container files. Supports multiple audio and video streams with configurable encoding parameters. AVI is a multimedia container format that stores audio and video data in a file container that allows synchronous audio-with-video playback. - (): Implements a sink block that captures media data into memory buffers for processing or analysis. Provides frame-by-frame access to video, audio, or raw data through event callbacks. - (): DASH (Dynamic Adaptive Streaming over HTTP) sink block for creating adaptive streaming content. - (): Implements a sink block that writes media data to a file descriptor (Unix-style file handle). Enables writing to pipes, sockets, or other file descriptor-based outputs. - (): FLAC (Free Lossless Audio Codec) output block for creating high-quality lossless audio files with professional audio encoding. Provides uncompressed audio archival and professional audio production with configurable FLAC encoding for music production, audio mastering, and high-fidelity audio content creation with industry-standard lossless compression for audiophile-quality audio preservation. Implements the . Implements the . Implements the . - (): Facebook Live streaming output block for real-time broadcast to Facebook Live platform with integrated encoding capabilities. Provides professional live streaming functionality with H.264 video and AAC audio encoding optimized for Facebook's RTMP streaming requirements, enabling content creators to broadcast high-quality live video content directly to Facebook audiences with low-latency streaming protocols. Implements the . Implements the . Implements the . - (): Implements a sink block for streaming live video and audio to Facebook Live. Enables real-time broadcasting to Facebook's streaming platform using RTMP protocol. - (): Implements a sink block that writes raw media data directly to a file without any container format. Suitable for writing elementary streams or raw data that will be processed later. - (): HLS (HTTP Live Streaming) sink block for creating segmented streaming content. - (): Implements a sink block that streams video as Motion JPEG (MJPEG) over HTTP. Creates a simple HTTP server that clients can connect to for viewing live video streams. - (): Implements a sink block for writing KLV (Key-Length-Value) metadata to files. Supports MISB standards for metadata encoding used in surveillance and aerospace applications. - (): M4A audio container output block for creating high-quality AAC audio files with MP4 container format. Provides professional audio file creation with configurable AAC encoding for music production, podcasting, and audio content distribution with industry-standard M4A format supporting metadata and chapter information. Implements the . Implements the . Implements the . - (): MKV (Matroska Video) multimedia container output block for creating versatile video files with advanced encoding capabilities. Provides comprehensive MKV file creation with support for multiple video encoders (H.264, HEVC, VP8/VP9, AV1) and audio encoders (AAC, MP3, Vorbis, OPUS, Speex) for professional video production, streaming content preparation, and multimedia archival storage with industry-leading container format flexibility. Implements the . Implements the . Implements the . - (): MKV (Matroska) sink block for creating highly flexible multimedia container files. - (): Implements a sink block for writing media to QuickTime MOV container files. Supports multiple video and audio tracks with Apple-compatible codecs. - (): MP3 audio output block for creating widely compatible compressed audio files with professional encoding capabilities. Provides industry-standard MP3 audio file creation with configurable lossy compression for music distribution, podcasting, and audio content creation with broad device compatibility and efficient file sizes for streaming and storage optimization. Implements the . Implements the . Implements the . - (): MP4 multimedia container output block for creating industry-standard MP4 video files with integrated encoding capabilities. Provides comprehensive MP4 file creation with configurable video and audio encoders, supporting H.264/H.265 video with AAC/MP3 audio for professional video production, streaming content preparation, and multimedia distribution with broad device compatibility. Implements the . Implements the . Implements the . - (): MP4 (MPEG-4 Part 14) sink block for writing media streams to MP4 container files. - (): Implements a sink block for creating MPEG Program Stream (MPEG-PS) files. Generates DVD-compatible video files and supports legacy MPEG-1/2 workflows. - (): Implements a sink block for creating MPEG Transport Stream (MPEG-TS) files or streams. Supports broadcasting, streaming, and digital TV distribution formats. - (): Provides a media sink for writing MXF (Material eXchange Format) files with professional broadcast features. - (): NDI (Network Device Interface) sink block for broadcasting video over IP networks. - (): OGG Opus audio container output block for creating high-quality compressed audio files with modern codec technology. Provides professional audio file creation with configurable OPUS encoding within OGG container for superior audio quality at low bitrates, optimized for voice communication, music streaming, and modern web audio applications with royalty-free codec advantages. Implements the . Implements the . Implements the . - (): Provides a media sink for writing OGG container files with Vorbis audio and Theora video streams. - (): OGG Speex output block for creating compressed voice audio files optimized for speech content. This block combines Speex audio encoding with OGG container packaging, providing an efficient solution for voice recording, VoIP applications, and speech archival. Speex is specifically designed for speech compression, offering superior quality at low bitrates compared to general-purpose audio codecs. The OGG container provides an open, patent-free format with excellent streaming capabilities and metadata support. Key features: - Ultra-efficient speech compression (2-44 kbps) - Voice Activity Detection (VAD) for silence suppression - Variable bitrate (VBR) encoding for optimal quality/size ratio - Wideband (16 kHz) and ultra-wideband (32 kHz) support - Acoustic echo cancellation compatibility - Packet loss concealment for streaming applications Common use cases: - Voice recording and dictation systems - Podcast production with speech-only content - VoIP and telecommunication applications - Audio books and spoken word archives - Voice memo and note-taking applications - Language learning materials While Speex has been largely superseded by Opus for new applications, it remains valuable for legacy system compatibility and specific speech-only scenarios where its optimizations provide benefits. Implements the . Implements the . Implements the . - (): OGG Vorbis output block for creating high-quality compressed audio files using the open-source Vorbis codec. This block combines Vorbis audio encoding with OGG container packaging, providing an excellent solution for music distribution, streaming audio, and multimedia content creation. Vorbis offers superior audio quality compared to MP3 at similar bitrates, making it ideal for applications where audio fidelity is paramount. The OGG container provides a patent-free, open standard format with robust streaming capabilities and comprehensive metadata support. Key features: - High-quality lossy audio compression (45-500 kbps) - Superior sound quality at low to medium bitrates - Variable bitrate (VBR) encoding for optimal quality/size ratio - Support for sample rates up to 192 kHz - Multi-channel audio support (mono to 7.1 surround) - Comprehensive metadata tagging (Vorbis comments) - Streaming-optimized container format Common use cases: - Music distribution and archival - Game audio assets and soundtracks - Podcast and audiobook production - Web audio streaming applications - Open-source multimedia projects - Cross-platform audio solutions Vorbis remains an excellent choice for applications requiring patent-free, high-quality audio compression with broad platform support and superior performance at medium bitrates. Implements the . Implements the . Implements the . - (): RTMP (Real-Time Messaging Protocol) sink block for streaming media to RTMP servers. - (): RTSP (Real-Time Streaming Protocol) server sink block that streams audio/video content over a network. This block creates an RTSP server endpoint that clients can connect to for receiving live or recorded media streams. It supports H.264/H.265 video and various audio codecs, providing standard-compliant RTSP streaming with RTP/RTCP transport protocols. The server handles multiple client connections simultaneously, supports RTSP authentication, and provides low-latency streaming suitable for security cameras, live broadcasting, and media distribution. Features include configurable port binding, custom mount points, multicast support, bandwidth management, and client session tracking. Compatible with standard RTSP clients including VLC, FFmpeg, GStreamer, and IP camera viewers. Implements the . Implements the . Implements the . - (): Provides a media sink for streaming MPEG-TS content over SRT (Secure Reliable Transport) protocol. - (): Provides a media sink for streaming raw data over SRT (Secure Reliable Transport) protocol. - (): Separate output block for independent recording with custom video and audio encoder configuration. Provides isolated recording pipeline with bridge source connections allowing independent recording operations from preview pipeline, enabling simultaneous preview display and background recording with custom encoder blocks and flexible output configuration. Implements the . Implements the . Implements the . - (): Provides a media sink for streaming audio to Shoutcast/Icecast servers. - (): Provides a media sink that writes data directly to a .NET Stream object. - (): WAV sink block for writing uncompressed audio data to WAV (Waveform Audio File Format) files. - (): WMV output block for creating Windows Media Video files with integrated WMV video and WMA audio encoding. This block provides comprehensive Windows Media Format support, combining Microsoft's proprietary video and audio codecs in an ASF container. WMV offers excellent compression efficiency and is widely supported on Windows platforms, making it ideal for Windows-centric workflows, corporate environments, and legacy system compatibility. Key features: - WMV video compression (VC-1 codec) with multiple profiles - WMA audio compression with various quality levels - ASF container with rich metadata support - DRM (Digital Rights Management) capability - Variable bitrate (VBR) and constant bitrate (CBR) encoding - Multiple video profiles (Simple, Main, Advanced) - Support for HD content up to 1080p Common use cases: - Windows Media Player content distribution - Corporate video presentations and training - Silverlight streaming applications - Xbox and Windows device playback - Legacy Windows media workflows - Protected content distribution with DRM While newer formats like H.264/MP4 have largely superseded WMV, it remains valuable for Windows-specific applications and legacy system compatibility where Windows Media support is guaranteed. Implements the . Implements the . Implements the . - (): WebM multimedia container output block for creating modern web-optimized video files with integrated encoding capabilities. Provides comprehensive WebM file creation with VP8/VP9 video encoding and Vorbis audio compression optimized for web streaming, HTML5 video playback, and browser compatibility with royalty-free codec support for modern web applications and content delivery. Implements the . Implements the . Implements the . - (): WebM sink block for creating WebM container files with VP8/VP9 video and Vorbis/Opus audio. - (): YouTube Live streaming output block for real-time broadcast to YouTube platform with integrated encoding capabilities. Provides professional live streaming functionality with H.264 video and AAC audio encoding optimized for YouTube's RTMP streaming requirements, enabling content creators to broadcast high-quality live video content directly to YouTube audiences with low-latency streaming protocols. Implements the . Implements the . Implements the . - (): YouTube sink block for live streaming directly to YouTube Live platform. --- # Class YouTubeOutputBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.YouTubeOutputBlock.html # Class YouTubeOutputBlock # Class YouTubeOutputBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll YouTube Live streaming output block for real-time broadcast to YouTube platform with integrated encoding capabilities. Provides professional live streaming functionality with H.264 video and AAC audio encoding optimized for YouTube's RTMP streaming requirements, enabling content creators to broadcast high-quality live video content directly to YouTube audiences with low-latency streaming protocols. Implements the . Implements the . Implements the . ```csharp public class YouTubeOutputBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### YouTubeOutputBlock(YouTubeSinkSettings, IH264EncoderSettings, IAACEncoderSettings) Initializes a new instance of the class with custom encoder settings. Provides full control over video and audio compression parameters for professional YouTube Live streaming. ```csharp public YouTubeOutputBlock(YouTubeSinkSettings sinkSettings, IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - sinkSettings (YouTubeSinkSettings): The YouTube Live streaming settings including RTMP URL, stream key, and connection parameters. - h264settings (IH264EncoderSettings): The H.264 video encoder settings optimized for YouTube Live streaming quality and bandwidth. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings optimized for YouTube Live streaming quality and bandwidth. ## Properties ### Input Gets the primary input pad (first in the collection of dynamic inputs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (dynamic collection for video and audio). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (none for streaming blocks that broadcast to services). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (none for streaming blocks). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for YouTube Live streaming operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the YouTube Live streaming block within the pipeline context. Creates the RTMP streaming sink, H.264 and AAC encoders, and establishes all necessary connections for encoding and streaming multimedia content to YouTube Live platform. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the YouTube Live streaming block was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the YouTube Live streaming operations, including encoders, sink, and network connections. ```csharp public void CleanUp() ``` ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for the specified media type, enabling dynamic addition of video and audio streams for live streaming. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) for the new input pad. #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad configured for the specified media type. ### Dispose(bool) Releases unmanaged and managed resources used by the YouTube Live streaming block. Properly disposes of GStreamer elements, encoders, and network streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite streaming blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite streaming blocks with multiple internal elements. ### GetInput(MediaBlockPadMediaType) Retrieves an existing input pad for the specified media type from the current collection. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media (Video or Audio) to search for. #### Returns Parameters: - (MediaBlockPad): The first matching MediaBlockPad for the specified media type, or null if not found. ### IsAvailable(IH264EncoderSettings, IAACEncoderSettings) Determines whether YouTube Live streaming functionality is available on the current system. Requires GStreamer RTMP streaming plugins and network connectivity for YouTube platform access. ```csharp public static bool IsAvailable(IH264EncoderSettings h264settings, IAACEncoderSettings aacSettings) ``` #### Parameters Parameters: - h264settings (IH264EncoderSettings): The H.264 video encoder settings to validate for availability. - aacSettings (IAACEncoderSettings): The AAC audio encoder settings to validate for availability. #### Returns Parameters: - (bool): true if YouTube Live streaming is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this YouTube Live streaming block, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this YouTube Live streaming block. ## See Also --- # Class YouTubeSinkBlock Link: api/VisioForge.Core.MediaBlocks.Sinks.YouTubeSinkBlock.html # Class YouTubeSinkBlock # Class YouTubeSinkBlock **Namespace**: VisioForge.Core.MediaBlocks.Sinks **Assembly**: VisioForge.Core.dll YouTube sink block for live streaming directly to YouTube Live platform. ```csharp public class YouTubeSinkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockDynamicInputs ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Remarks

The YouTube sink block provides specialized streaming capabilities optimized for YouTube's live streaming service. It handles the specific requirements of YouTube Live, including proper RTMP formatting, recommended encoding settings, and stream key management. This sink simplifies the process of broadcasting to YouTube without manually configuring generic RTMP parameters.

Key Features:

  • Direct integration with YouTube Live streaming
  • Automatic RTMP URL construction from stream key
  • Pre-configured for YouTube's recommended settings
  • Support for scheduled live events and instant streaming
  • Compatible with YouTube's Content ID system
  • Automatic reconnection on network interruptions

Typical Use Cases:

  • Live streaming gaming sessions
  • Broadcasting webinars and online events
  • 24/7 continuous streaming channels
  • Live podcasts and talk shows
  • Educational content and tutorials
  • Live product demonstrations

Technical Requirements:

  • Video codec: H.264 (required by YouTube)
  • Audio codec: AAC or MP3
  • Recommended bitrates: 2.5-4 Mbps for 720p, 4.5-9 Mbps for 1080p
  • Maximum resolution: 4K (3840x2160) at 60 fps
  • Keyframe interval: 2 seconds (required)
  • Valid YouTube stream key from YouTube Studio

Setup Requirements: To use this sink, you need to enable live streaming in your YouTube account and obtain a stream key from YouTube Studio. The sink will automatically construct the proper RTMP URL using YouTube's primary ingestion endpoint.

## Constructors ### YouTubeSinkBlock(YouTubeSinkSettings) Initializes a new instance of the class with the specified settings. ```csharp public YouTubeSinkBlock(YouTubeSinkSettings settings) ``` #### Parameters Parameters: - settings (YouTubeSinkSettings): The object containing the YouTube stream key and any additional streaming parameters. The stream key must be valid and obtained from YouTube Studio's live streaming section. ## Properties ### Input Gets the first input pad from the collection of available inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all available input pads for connecting media streams. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad for this sink block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for this sink block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the YouTube sink configuration settings. ```csharp public YouTubeSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (YouTubeSinkSettings): ### Type Gets the media block type identifier for the YouTube sink. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the YouTube sink pipeline components. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the sink was successfully built and configured for YouTube streaming; false if initialization failed or the stream key is invalid. #### Remarks This method creates the underlying YouTube RTMP sink and configures it with YouTube's primary ingestion server. It sets up input pads for H.264 video and AAC audio streams according to YouTube's requirements. ### CleanUp() Cleans up resources and disconnects from YouTube Live servers. ```csharp public void CleanUp() ``` #### Remarks This method properly terminates the stream to YouTube, disposes of the underlying RTMP connection, and resets the build state. YouTube will mark the stream as ended after disconnection. ### CreateNewInput(MediaBlockPadMediaType) Creates a new input pad for connecting a media stream of the specified type. ```csharp public MediaBlockPad CreateNewInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The type of media stream to accept. YouTube Live requires: for H.264 encoded video and for AAC or MP3 encoded audio. #### Returns Parameters: - (MediaBlockPad): A new configured for the specified media type. Ensure streams meet YouTube's encoding requirements before connecting. #### Remarks YouTube has strict requirements: H.264 video with 2-second keyframe interval, and AAC audio at 128 kbps or higher. Non-compliant streams may be rejected. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element for advanced pipeline integration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper providing access to the underlying YouTube-optimized RTMP sink for advanced configuration. ### GetElement() Gets the native GStreamer element for direct GStreamer API access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying representing the YouTube RTMP sink, configured with YouTube's specific server endpoints and parameters. ### GetFilenameOrURL() Gets the YouTube stream key used for authentication. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The stream key configured in the settings. This is not a URL but rather the unique key provided by YouTube Studio for your live stream. ### GetInput(MediaBlockPadMediaType) Gets an existing input pad that matches the specified media type. ```csharp public MediaBlockPad GetInput(MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - mediaType (MediaBlockPadMediaType): The media type to search for among existing input pads. #### Returns Parameters: - (MediaBlockPad): The first that matches the specified media type, or null if no matching input pad exists. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetFilenameOrURL(string) Sets the YouTube stream key (not implemented). ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The stream key value (not used). #### Exceptions Parameters: - (NotImplementedException): This method is not implemented. Configure the stream key through the settings object passed to the constructor instead. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this media block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The that owns this sink block, providing access to the pipeline context and logging facilities. #### Remarks This method is called internally by the pipeline during initialization and should not be called directly by user code. ## See Also --- # Class AlliedVisionSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.AlliedVisionSourceBlock.html # Class AlliedVisionSourceBlock # Class AlliedVisionSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Allied Vision industrial camera source block for professional video capture with GenICam-compatible cameras. Provides high-performance video acquisition from Allied Vision cameras with advanced imaging features for machine vision, industrial automation, scientific imaging, and quality control applications using GigE Vision and USB3 Vision standards. Implements the . Implements the . Implements the . ```csharp public class AlliedVisionSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AlliedVisionSourceBlock(AlliedVisionSourceSettings) Initializes a new instance of the class with custom camera settings. Configures the Allied Vision camera source for professional video capture with specified imaging parameters. ```csharp public AlliedVisionSourceBlock(AlliedVisionSourceSettings settings) ``` #### Parameters Parameters: - settings (AlliedVisionSourceSettings): The Allied Vision camera settings controlling device selection, resolution, frame rate, and capture parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that generate media). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the Allied Vision camera stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for camera). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Allied Vision camera configuration settings that control camera parameters and capture options. ```csharp public AlliedVisionSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (AlliedVisionSourceSettings): ### Type Gets the media block type identifier for Allied Vision camera source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the Allied Vision camera source within the pipeline context. Opens camera connection, configures capture parameters, and establishes video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Allied Vision camera source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the Allied Vision camera operations, including camera connection and video buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the Allied Vision camera source. Properly closes camera connection and disposes of GStreamer elements and camera resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The Allied Vision camera source GStreamer element. ### IsAvailable() Determines whether Allied Vision camera support is available on the current system. Requires Allied Vision Vimba SDK and compatible camera drivers to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Allied Vision camera support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this Allied Vision camera source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Allied Vision camera source. ## See Also --- # Class AnimatedGIFSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.AnimatedGIFSourceBlock.html # Class AnimatedGIFSourceBlock # Class AnimatedGIFSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Animated GIF source block for playing animated GIF files as video streams. Provides seamless playback of animated GIF images with frame timing preservation for visual effects, animated overlays, and dynamic content in video productions with automatic looping and frame interpolation support. Implements the Implements the ```csharp public class AnimatedGIFSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AnimatedGIFSourceBlock(ImageVideoSourceSettings) Initializes a new instance of the class with custom playback settings. Configures the animated GIF source for seamless animation playback with specified parameters. ```csharp public AnimatedGIFSourceBlock(ImageVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (ImageVideoSourceSettings): The image video settings controlling GIF file path, loop behavior, and playback parameters. ## Properties ### Context Gets or sets the logging and error reporting context for this block. ```csharp public ContextX Context { get; set; } ``` #### Property Value Parameters: - (ContextX): ### Input Gets the primary input pad (none for source blocks that read from files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Name Gets or sets the user-friendly name of this animated GIF source block. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Output Gets the primary video output pad for the animated GIF frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for GIF). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the image video source configuration settings that control GIF playback parameters. ```csharp public ImageVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageVideoSourceSettings): ### Type Gets the media block type identifier for animated GIF source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the animated GIF source within the pipeline context. Creates GIF decoder, configures animation playback, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the animated GIF source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the animated GIF operations, including decoder and animation buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the animated GIF source. Properly stops animation playback and disposes of GStreamer elements and image buffers. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The AnimatedGIFSource element providing access to GIF decoding operations. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The animated GIF source GStreamer element. ### GetPad(MediaBlockPadDirection, MediaBlockPadMediaType) Gets a specific media block pad by direction and media type. ```csharp public MediaBlockPad GetPad(MediaBlockPadDirection direction, MediaBlockPadMediaType type) ``` #### Parameters Parameters: - direction (MediaBlockPadDirection): The direction of the pad (input or output). - type (MediaBlockPadMediaType): The media type of the pad (video, audio, or auto). #### Returns Parameters: - (MediaBlockPad): The matching MediaBlockPad if found; otherwise, null. ### GetPads() Gets all media block pads available on this animated GIF source. ```csharp public MediaBlockPad[] GetPads() ``` #### Returns Parameters: - (MediaBlockPad [ ]): An array containing the single video output pad for animated GIF frames. ### IsAvailable() Determines whether animated GIF support is available on the current system. Requires GStreamer GIF decoder plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if animated GIF support is available; otherwise, false. ### Stop() Stops the animated GIF playback and halts frame generation. ```csharp public override bool Stop() ``` #### Returns Parameters: - (bool): true if the animation was successfully stopped; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this animated GIF source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this animated GIF source. ## See Also --- # Class BasicFileSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.BasicFileSourceBlock.html # Class BasicFileSourceBlock # Class BasicFileSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Basic file source block for raw file data access without automatic parsing or decoding capabilities. Provides direct file reading functionality for custom format handling, raw data processing, or manual stream parsing with optional type detection for applications requiring low-level control over file data interpretation and processing. Implements the . Implements the . Implements the . ```csharp public class BasicFileSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BasicFileSourceBlock(string, bool) Initializes a new instance of the class with file path and type detection options. Configures basic file reading with optional automatic format detection for flexible file processing. ```csharp public BasicFileSourceBlock(string filename = null, bool addTypeFind = false) ``` #### Parameters Parameters: - filename (string): The file path to the source file for raw data reading. - addTypeFind (bool): If set to true, adds automatic file type detection; otherwise provides raw data without format identification. ## Properties ### AddTypeFind Gets or sets a value indicating whether to add automatic type detection for file format identification. ```csharp public bool AddTypeFind { get; set; } ``` #### Property Value Parameters: - (bool): ### Filename Gets or sets the file path for the source file to be read as raw data. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Input Gets the primary input pad (none for source blocks that read from files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the raw file data stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for file data). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for basic file source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the basic file source within the pipeline context. Opens the specified file, configures reading parameters, and establishes output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the basic file source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the basic file source operations, including file handles and data buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the basic file source. Properly closes file handles and disposes of GStreamer elements and file reading resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BasicFileSource wrapper element for advanced configuration options. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The basic file source GStreamer element. ### IsAvailable() Determines whether basic file source functionality is available on the current system. Requires GStreamer file source plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if basic file source support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this basic file source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this basic file source. ## See Also --- # Class BaslerSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.BaslerSourceBlock.html # Class BaslerSourceBlock # Class BaslerSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Basler industrial camera source block for professional video capture with Pylon SDK integration. Provides high-performance video acquisition from Basler cameras with advanced imaging features for machine vision, industrial automation, medical imaging, and scientific applications using GigE Vision, USB3 Vision, and Camera Link standards. Implements the . Implements the . Implements the . ```csharp public class BaslerSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BaslerSourceBlock(BaslerSourceSettings) Initializes a new instance of the class with custom camera settings. Configures the Basler camera source for professional video capture with specified imaging parameters. ```csharp public BaslerSourceBlock(BaslerSourceSettings settings) ``` #### Parameters Parameters: - settings (BaslerSourceSettings): The Basler camera settings controlling device selection, resolution, frame rate, and capture parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that generate media). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the Basler camera stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for camera). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Basler camera configuration settings that control camera parameters and capture options. ```csharp public BaslerSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (BaslerSourceSettings): ### Type Gets the media block type identifier for Basler camera source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the Basler camera source within the pipeline context. Opens camera connection, configures capture parameters, and establishes video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the Basler camera source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the Basler camera operations, including camera connection and video buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the Basler camera source. Properly closes camera connection and disposes of GStreamer elements and camera resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The Basler camera source GStreamer element. ### IsAvailable() Determines whether Basler camera support is available on the current system. Requires Basler Pylon SDK and compatible camera drivers to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Basler camera support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this Basler camera source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this Basler camera source. ## See Also --- # Class CDGSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.CDGSourceBlock.html # Class CDGSourceBlock # Class CDGSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll CDG (Compact Disc plus Graphics) karaoke source block for synchronized audio and graphics playback with integrated decoders. Provides karaoke and multimedia presentation functionality by combining CDG graphics files with audio tracks for synchronized visual displays, subtitle rendering, and interactive entertainment applications with professional karaoke system integration. Implements the . Implements the . Implements the . ```csharp public class CDGSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CDGSourceBlock(CDGSourceSettings) Initializes a new instance of the class with CDG and audio file configuration. Configures synchronized CDG graphics and audio playback for karaoke and multimedia presentation applications. Supports both standalone CDG+Audio files and ZIP archives containing CDG+MP3/WAV pairs. ```csharp public CDGSourceBlock(CDGSourceSettings settings) ``` #### Parameters Parameters: - settings (CDGSourceSettings): The CDG source settings containing file paths, synchronization options, and audio processing parameters. ## Properties ### AudioOutput Gets the audio output pad that provides synchronized audio track for karaoke playback. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that read from files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for CDG graphics). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (video and optionally audio outputs). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the CDG source configuration settings that control file paths and playback options. ```csharp public CDGSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (CDGSourceSettings): ### Type Gets the media block type identifier for CDG karaoke source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides CDG graphics as video frames for karaoke display. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the CDG source within the pipeline context. Opens CDG and audio files, configures synchronization, and establishes video and audio outputs for karaoke playback. Supports both standalone CDG+Audio files and ZIP archives containing CDG+MP3/WAV pairs. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the CDG source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the CDG karaoke operations, including file handles and media buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the CDG karaoke source. Properly closes file handles, disposes of GStreamer elements, and cleans up temporary ZIP extraction files. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The CDG source GStreamer element. ### IsAvailable() Determines whether CDG karaoke source functionality is available on the current system. Requires GStreamer CDG decoder and audio decoder plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if CDG source support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this CDG source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this CDG karaoke source. ## See Also --- # Class DemuxerSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.DemuxerSourceBlock.html # Class DemuxerSourceBlock # Class DemuxerSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Demuxer source block for container format parsing without automatic decoding capabilities. Provides raw stream extraction from multimedia containers (MP4, AVI, MKV, WebM) with separate video, audio, and subtitle outputs for advanced processing pipelines requiring manual decoder selection and stream manipulation in professional media workflows. Implements the . Implements the . Implements the . ```csharp public class DemuxerSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DemuxerSourceBlock(DemuxerSourceSettings) Initializes a new instance of the class with container parsing settings. Configures the demuxer for multimedia container analysis and stream separation with specified file and rendering options. ```csharp public DemuxerSourceBlock(DemuxerSourceSettings settings) ``` #### Parameters Parameters: - settings (DemuxerSourceSettings): The demuxer settings containing file path, stream selection, and rendering configuration parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that read from files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (first available stream from container). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (multiple outputs for separated streams). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for demuxer source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the demuxer source within the pipeline context. Opens container file, analyzes streams, and establishes dynamic outputs for discovered video, audio, and subtitle tracks. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the demuxer source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the demuxer operations, including container file handles and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the demuxer source. Properly closes container file and disposes of GStreamer elements and stream processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The demuxer source GStreamer element. ### IsAvailable(DemuxerSourceSettings) Determines whether demuxer functionality is available for the specified container format. Requires GStreamer demuxer plugins for the target container format to be installed and functional. ```csharp public static bool IsAvailable(DemuxerSourceSettings settings) ``` #### Parameters Parameters: - settings (DemuxerSourceSettings): The demuxer settings containing the container file to be analyzed for format compatibility. #### Returns Parameters: - (bool): true if demuxer support is available for the specified format; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this demuxer source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this demuxer source. ## See Also --- # Class DVBSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.DVBSourceBlock.html # Class DVBSourceBlock # Class DVBSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll DVB (Digital Video Broadcasting) source block for professional television and satellite signal reception. Provides digital television tuning and streaming capabilities for DVB-T, DVB-C, DVB-S, and DVB-S2 standards with advanced signal processing for broadcast television, surveillance, and professional streaming applications. Implements the . Implements the . Implements the . ```csharp public class DVBSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DVBSourceBlock(DVBSourceSettings) Initializes a new instance of the class with custom tuning settings. Configures the DVB source for digital television reception with specified frequency and modulation parameters. ```csharp public DVBSourceBlock(DVBSourceSettings settings) ``` #### Parameters Parameters: - settings (DVBSourceSettings): The DVB settings controlling tuner selection, frequency, modulation, and signal processing parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive signals). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the digital television stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for digital television). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the DVB configuration settings that control tuning parameters and signal processing options. ```csharp public DVBSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (DVBSourceSettings): ### Type Gets the media block type identifier for DVB digital television source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DVB source within the pipeline context. Configures digital television tuner, establishes signal processing, and prepares output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the DVB source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the DVB operations, including tuner connection and signal buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the DVB source. Properly closes tuner connection and disposes of GStreamer elements and signal processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The DVB source GStreamer element. ### IsAvailable() Determines whether DVB digital television support is available on the current system. Requires compatible DVB hardware and drivers to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DVB support is available; otherwise, false. ### Tune() Initiates the DVB tuning process to lock onto the specified frequency and acquire digital television signal. ```csharp public void Tune() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this DVB source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this DVB source. ### TuningDone Occurs when DVB tuning operation completes successfully and signal is locked. ```csharp public event DVBTuningDoneHandler TuningDone ``` #### Event Type Parameters: - (DVBTuningDoneHandler): ### TuningFail Occurs when DVB tuning operation fails due to signal loss or hardware issues. ```csharp public event DVBTuningDoneHandler TuningFail ``` #### Event Type Parameters: - (DVBTuningDoneHandler): ### TuningStart Occurs when DVB tuning operation starts for frequency scanning and signal acquisition. ```csharp public event DVBTuningDoneHandler TuningStart ``` #### Event Type Parameters: - (DVBTuningDoneHandler): ## See Also --- # Class FallbackSwitchSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.FallbackSwitchSourceBlock.html # Class FallbackSwitchSourceBlock # Class FallbackSwitchSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Fallback switch source block that wraps any live source with automatic failover capability. Uses GStreamer's fallbacksrc element to provide seamless switching between main source and fallback content (static text, image, or media block) when the primary source fails. Implements the . Implements the . Implements the . ```csharp public class FallbackSwitchSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FallbackSwitchSourceBlock(IVideoSourceSettings, FallbackSwitchSettings) Initializes a new instance of the class. ```csharp public FallbackSwitchSourceBlock(IVideoSourceSettings mainSourceSettings, FallbackSwitchSettings fallbackSettings) ``` #### Parameters Parameters: - mainSourceSettings (IVideoSourceSettings): The main source settings (RTSP, SRT, NDI, etc.). - fallbackSettings (FallbackSwitchSettings): The fallback switch configuration. ## Properties ### AudioOutput Gets the audio output pad that provides the active audio stream (main or fallback). ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for fallback switch source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides the active video stream (main or fallback). ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the fallback switch source and its internal components. Creates the GStreamer fallbacksrc element and establishes connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if initialization failed. ### CleanUp() Cleans up and releases all resources used by this block. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases all resources used by the fallback switch source block. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing; false if finalizing. ### GetCore() Gets the core BaseElement wrapper. Not used for this block type. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null. ### GetElement() Gets the GStreamer element for IMediaBlockInternals. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The fallbacksrc element. ### GetStatistics() Gets statistics from the fallback source. ```csharp public Dictionary GetStatistics() ``` #### Returns Parameters: - (Dictionary < string , object >): Dictionary containing statistics like retry counts and buffering percentages. ### GetStatus() Gets the current status of the fallback source. ```csharp public string GetStatus() ``` #### Returns Parameters: - (string): Status string from the fallbacksrc element. ### GetVideoStreamInfo() Gets the video stream information from the active source. ```csharp public VideoStreamInfo GetVideoStreamInfo() ``` #### Returns Parameters: - (VideoStreamInfo): The video stream information. ### Unblock() Manually unblocks the fallback source when manual-unblock is enabled. ```csharp public void Unblock() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class GenICamSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.GenICamSourceBlock.html # Class GenICamSourceBlock # Class GenICamSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll GenICam (Generic Interface for Cameras) source block for industrial and scientific camera control. Provides standardized access to machine vision cameras from multiple manufacturers using the GenICam standard for industrial automation, quality inspection, scientific imaging, and computer vision applications with advanced camera features. Implements the . Implements the . Implements the . ```csharp public class GenICamSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GenICamSourceBlock(GenICamSourceSettings) Initializes a new instance of the class with custom camera settings. Configures the GenICam source for industrial camera acquisition with specified parameters. ```csharp public GenICamSourceBlock(GenICamSourceSettings settings) ``` #### Parameters Parameters: - settings (GenICamSourceSettings): The GenICam settings controlling camera selection, image format, and acquisition parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that capture from cameras). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the camera stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for camera). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the GenICam configuration settings that control camera parameters and acquisition mode. ```csharp public GenICamSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (GenICamSourceSettings): ### Type Gets the media block type identifier for GenICam source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the GenICam source within the pipeline context. Connects to industrial camera, configures acquisition parameters, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the GenICam source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the GenICam operations, including camera handles and image buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the GenICam source. Properly closes camera connection and disposes of GStreamer elements and acquisition resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GenICam source GStreamer element. ### IsAvailable() Determines whether GenICam support is available on the current system. Requires GenICam-compatible camera drivers and GStreamer GenICam plugins to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if GenICam support is available; otherwise, false. ### Stop() Stops the GenICam camera acquisition and releases camera resources. ```csharp public override bool Stop() ``` #### Returns Parameters: - (bool): true if the camera was successfully stopped; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this GenICam source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this GenICam source. ## See Also --- # Class HTTPMJPEGSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.HTTPMJPEGSourceBlock.html # Class HTTPMJPEGSourceBlock # Class HTTPMJPEGSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll HTTP/HTTPS MJPEG (Motion JPEG) source block for IP camera streaming and web-based video capture. Provides real-time MJPEG stream reception from web cameras, IP surveillance systems, and HTTP video sources with integrated JPEG decoding and frame rate control for security monitoring and live video streaming applications. Implements the . Implements the . Implements the . ```csharp public class HTTPMJPEGSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### HTTPMJPEGSourceBlock(HTTPMJPEGSourceSettings) Initializes a new instance of the class with custom network settings. Configures the HTTP MJPEG source for IP camera streaming with specified URL and processing parameters. ```csharp public HTTPMJPEGSourceBlock(HTTPMJPEGSourceSettings settings) ``` #### Parameters Parameters: - settings (HTTPMJPEGSourceSettings): The HTTP MJPEG settings controlling URL, authentication, frame rate, and network configuration parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the decoded MJPEG stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for MJPEG). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the HTTP MJPEG configuration settings that control network parameters and stream processing options. ```csharp public HTTPMJPEGSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (HTTPMJPEGSourceSettings): ### Type Gets the media block type identifier for HTTP MJPEG source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the HTTP MJPEG source within the pipeline context. Establishes network connection, configures JPEG decoding, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the HTTP MJPEG source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the HTTP MJPEG operations, including network connection and video buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the HTTP MJPEG source. Properly closes network connection and disposes of GStreamer elements and video processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The HTTP source GStreamer element. ### IsAvailable() Determines whether HTTP MJPEG support is available on the current system. Requires GStreamer HTTP source and JPEG decoder plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if HTTP MJPEG support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this HTTP MJPEG source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this HTTP MJPEG source. ## See Also --- # Class HTTPSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.HTTPSourceBlock.html # Class HTTPSourceBlock # Class HTTPSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll HTTP/HTTPS source block for web-based content streaming and network media access. Provides versatile HTTP stream reception from web servers, CDNs, and online media sources with authentication support for live streaming, progressive download, and web-based multimedia content delivery in modern streaming applications. Implements the . Implements the . Implements the . ```csharp public class HTTPSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### HTTPSourceBlock(HTTPSourceSettings) Initializes a new instance of the class with custom network settings. Configures the HTTP source for web-based streaming with specified URL and connection parameters. ```csharp public HTTPSourceBlock(HTTPSourceSettings settings) ``` #### Parameters Parameters: - settings (HTTPSourceSettings): The HTTP settings controlling URL, authentication, timeout, and network configuration parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the HTTP stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for HTTP stream). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the HTTP configuration settings that control network parameters and stream processing options. ```csharp public HTTPSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (HTTPSourceSettings): ### Type Gets the media block type identifier for HTTP source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the HTTP source within the pipeline context. Establishes network connection, configures stream reception, and prepares output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the HTTP source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the HTTP operations, including network connection and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the HTTP source. Properly closes network connection and disposes of GStreamer elements and stream processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The HTTP source GStreamer element. ### IsAvailable() Determines whether HTTP source support is available on the current system. Requires GStreamer HTTP source plugins and network connectivity to be available and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if HTTP source support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this HTTP source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this HTTP source. ## See Also --- # Class ImageSequenceSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.ImageSequenceSourceBlock.html # Class ImageSequenceSourceBlock # Class ImageSequenceSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Image sequence source block for generating video streams from image sequences in a folder. Provides image sequence playback functionality using GStreamer's imagesequencesrc element, supporting various image formats with configurable frame rates and looping options for slideshow creation, timelapse playback, and video sequence processing in video productions. Implements the . Implements the . Implements the . ```csharp public class ImageSequenceSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ImageSequenceSourceBlock(ImageSequenceSourceSettings) Initializes a new instance of the class with custom image sequence settings. Configures the image sequence source for folder-based image playback with specified parameters. ```csharp public ImageSequenceSourceBlock(ImageSequenceSourceSettings settings) ``` #### Parameters Parameters: - settings (ImageSequenceSourceSettings): The image sequence settings controlling folder path, frame rate, and format parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that read from image folders). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the generated video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the image sequence configuration settings that control folder scanning and video generation. ```csharp public ImageSequenceSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageSequenceSourceSettings): ### Type Gets the media block type identifier for image sequence source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the image sequence source within the pipeline context. Scans image folder, configures video generation, and prepares output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the image sequence source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the image sequence operations, including element disposal and buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the image sequence source. Properly closes image resources and disposes of GStreamer elements and video generation components. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The ImageSequenceSource wrapper element for advanced configuration options. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The image sequence source GStreamer element. ### IsAvailable(ImageSequenceSourceSettings) Determines whether image sequence support is available for the specified settings. Checks for required imagesequencesrc element and format support based on the image types. ```csharp public static bool IsAvailable(ImageSequenceSourceSettings settings) ``` #### Parameters Parameters: - settings (ImageSequenceSourceSettings): The image sequence settings to check for compatibility and element availability. #### Returns Parameters: - (bool): true if image sequence support is available for the specified settings; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this image sequence source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this image sequence source. ## See Also --- # Class ImageVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.ImageVideoSourceBlock.html # Class ImageVideoSourceBlock # Class ImageVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Image video source block for generating video streams from still images or animated GIFs. Provides flexible image-to-video conversion with support for static images as video backgrounds, slideshow creation, and animated GIF playback for titles, logos, overlays, and placeholder content in video productions. Implements the . Implements the . Implements the . ```csharp public class ImageVideoSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ImageVideoSourceBlock(ImageVideoSourceSettings) Initializes a new instance of the class with custom image settings. Configures the image video source for static or animated image playback with specified parameters. ```csharp public ImageVideoSourceBlock(ImageVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (ImageVideoSourceSettings): The image video settings controlling file path, duration, frame rate, and format parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that read from image files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the generated video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the image video configuration settings that control image loading and video generation. ```csharp public ImageVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageVideoSourceSettings): ### Type Gets the media block type identifier for image video source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the image video source within the pipeline context. Loads image file, configures video generation, and prepares output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the image video source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the image video operations, including image decoders and video buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the image video source. Properly closes image resources and disposes of GStreamer elements and video generation components. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The active source element (either normal or animated GIF source). ### IsAvailable(ImageVideoSourceSettings) Determines whether image video support is available for the specified settings. Checks for required image decoders and format support based on the image type. ```csharp public static bool IsAvailable(ImageVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (ImageVideoSourceSettings): The image settings to check for compatibility and codec availability. #### Returns Parameters: - (bool): true if image video support is available for the specified format; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this image video source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this image video source. ## See Also --- # Class ImageVideoSourceCairoBlock Link: api/VisioForge.Core.MediaBlocks.Sources.ImageVideoSourceCairoBlock.html # Class ImageVideoSourceCairoBlock # Class ImageVideoSourceCairoBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Image video source block with Cairo-based rendering for dynamic updates. Implements the ```csharp public class ImageVideoSourceCairoBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ImageVideoSourceCairoBlock(MediaBlocksPipeline, ImageVideoSourceSettings, Size) Initializes a new instance of the class. ```csharp public ImageVideoSourceCairoBlock(MediaBlocksPipeline pipeline, ImageVideoSourceSettings settings, Size videoSize) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. - settings (ImageVideoSourceSettings): The image video source settings. - videoSize (Size): ## Properties ### Context Gets or sets the context. ```csharp public ContextX Context { get; set; } ``` #### Property Value Parameters: - (ContextX): ### Input Gets the primary input pad (none for source blocks). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Name Gets or sets the name of the block. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Output Gets the primary video output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the settings. ```csharp public ImageVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageVideoSourceSettings): ### Type Gets the media block type identifier. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the image source within the pipeline context. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): ### Dispose(bool) Disposes of resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing managed resources. ### GetCore() Gets the core GStreamer element wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): ### GetElement() Gets the native GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): ### GetPad(MediaBlockPadDirection, MediaBlockPadMediaType) Gets a specific media block pad by direction and media type. ```csharp public MediaBlockPad GetPad(MediaBlockPadDirection direction, MediaBlockPadMediaType type) ``` #### Parameters Parameters: - direction (MediaBlockPadDirection): - type (MediaBlockPadMediaType): #### Returns Parameters: - (MediaBlockPad): ### GetPads() Gets all media block pads available on this source. ```csharp public MediaBlockPad[] GetPads() ``` #### Returns Parameters: - (MediaBlockPad [ ]): ### SetDisplayMode(ImageDisplayMode) Sets the display mode for the image. ```csharp public void SetDisplayMode(ImageDisplayMode mode) ``` #### Parameters Parameters: - mode (ImageDisplayMode): The display mode. ### UpdateFilename(string) Updates the image filename dynamically without stopping the pipeline. ```csharp public void UpdateFilename(string filename) ``` #### Parameters Parameters: - filename (string): The new image filename. ### IMediaBlockInternals.CleanUp() Cleans up resources. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): ## See Also --- # Class MPEGTSDemuxBlock Link: api/VisioForge.Core.MediaBlocks.Sources.MPEGTSDemuxBlock.html # Class MPEGTSDemuxBlock # Class MPEGTSDemuxBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll MPEG-TS demux block. Implements the . Implements the . Implements the . ```csharp public class MPEGTSDemuxBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MPEGTSDemuxBlock(bool, bool, bool, bool) Initializes a new instance of the class. ```csharp public MPEGTSDemuxBlock(bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true render subtitle. - renderMetadata (bool): if set to true render metadata. ### MPEGTSDemuxBlock(MediaFileInfo, bool, bool, bool, bool) Initializes a new instance of the class with MediaFileInfo for multiple stream support. ```csharp public MPEGTSDemuxBlock(MediaFileInfo mediaInfo, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - mediaInfo (MediaFileInfo): The media file information containing stream details. - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true render subtitle. - renderMetadata (bool): if set to true render metadata. ## Properties ### AudioOutput Gets the first audio output for backward compatibility. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### AudioOutputs Gets the audio outputs for multiple streams. ```csharp public List AudioOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MetadataOutput Gets the meta output. ```csharp public MediaBlockPad MetadataOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the settings. ```csharp public MPEGTSDemuxSettings Settings { get; } ``` #### Property Value Parameters: - (MPEGTSDemuxSettings): ### SubtitleOutput Gets the first subtitle output for backward compatibility. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### SubtitleOutputs Gets the subtitle outputs for multiple streams. ```csharp public List SubtitleOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the first video output for backward compatibility. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoOutputs Gets the video outputs for multiple streams. ```csharp public List VideoOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class NDISourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.NDISourceBlock.html # Class NDISourceBlock # Class NDISourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll NDI (Network Device Interface) source block for professional IP-based video streaming. Provides low-latency, high-quality video and audio streaming over IP networks for broadcast production, live events, and multi-camera setups with automatic source discovery and synchronization capabilities. Implements the . Implements the . Implements the . ```csharp public class NDISourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NDISourceBlock(NDISourceSettings) Initializes a new instance of the class with custom NDI settings. Configures the NDI source for professional IP video streaming with specified parameters. ```csharp public NDISourceBlock(NDISourceSettings settings) ``` #### Parameters Parameters: - settings (NDISourceSettings): The NDI settings controlling source selection, bandwidth, and connection parameters. ## Properties ### AudioOutput Gets the audio output pad that provides NDI audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for NDI). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (video and audio outputs). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the NDI configuration settings that control source selection and stream parameters. ```csharp public NDISourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (NDISourceSettings): ### Type Gets the media block type identifier for NDI source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides NDI video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the NDI source within the pipeline context. Connects to NDI stream, configures video/audio outputs, and prepares synchronized playback for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the NDI source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the NDI operations, including network connections and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the NDI source. Properly closes network connections and disposes of GStreamer elements and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The NDI source GStreamer element. ### IsAvailable() Determines whether NDI support is available on the current system. Requires NDI runtime and GStreamer NDI plugins to be installed and licensed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NDI support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this NDI source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this NDI source. ## See Also --- # Class PlayBinSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.PlayBinSourceBlock.html # Class PlayBinSourceBlock # Class PlayBinSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll PlayBin source block for universal media playback with automatic format detection and decoding. Provides comprehensive media source support using GStreamer's PlayBin element for files, network streams, and URIs with automatic codec selection, stream demuxing, and synchronized audio/video/subtitle playback for media player applications. Implements the . Implements the . Implements the . ```csharp public class PlayBinSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PlayBinSourceBlock(UniversalSourceSettings) Initializes a new instance of the class with universal source settings. Configures the PlayBin source for automatic media playback with specified URI and stream selection. ```csharp public PlayBinSourceBlock(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The universal source settings containing URI, stream selection, and playback configuration parameters. ## Properties ### AudioOutput Gets the audio output pad that provides decoded audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that read from URIs). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for PlayBin). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on enabled streams). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutput Gets the subtitle output pad that provides decoded subtitle stream to downstream blocks. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for PlayBin source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the PlayBin source within the pipeline context. Creates PlayBin element, configures URI, sets up automatic decoding, and prepares outputs for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the PlayBin source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the PlayBin operations, including media handles and decoder buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the PlayBin source. Properly closes media source and disposes of GStreamer elements and decoding resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for PlayBin blocks as they use native GStreamer elements directly. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The PlayBin GStreamer element. ### IsAvailable() Determines whether PlayBin support is available on the current system. PlayBin is a core GStreamer element and should always be available with proper GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if PlayBin support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this PlayBin source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this PlayBin source. ## See Also --- # Class PulseAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.PulseAudioSourceBlock.html # Class PulseAudioSourceBlock # Class PulseAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll PulseAudio source block for audio capture using the pulsesrc GStreamer element. Provides audio capture from PulseAudio sound server on Linux systems for recording, streaming, and real-time audio processing applications. Implements the . Implements the . Implements the . ```csharp public class PulseAudioSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PulseAudioSourceBlock(PulseAudioSourceSettings) Initializes a new instance of the class with custom capture settings. Configures the PulseAudio source for microphone or line-in capture with specified parameters. ```csharp public PulseAudioSourceBlock(PulseAudioSourceSettings settings) ``` #### Parameters Parameters: - settings (PulseAudioSourceSettings): The PulseAudio capture settings controlling device selection and format parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that capture from devices). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary audio output pad for the captured audio stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single audio output for microphone). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the PulseAudio capture settings that control device selection and audio parameters. ```csharp public PulseAudioSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (PulseAudioSourceSettings): ### Type Gets the media block type identifier for PulseAudio source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the PulseAudio source within the pipeline context. Creates PulseAudio capture source, configures device parameters, and prepares audio output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the PulseAudio source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the audio capture operations, including device handles and audio buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the PulseAudio source. Properly closes audio device handles and disposes of GStreamer elements and capture resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The PulseAudio source GStreamer element. ### GetMute() Gets the current mute state of the audio capture device. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if the audio capture is muted; false if unmuted. ### GetVolume() Gets the current capture volume level of the audio device. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): The volume level as a double in the range 0.0 (silence) to 1.0 (maximum volume). ### IsAvailable() Determines whether PulseAudio capture support is available on the current system. Requires PulseAudio GStreamer plugin to be available and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if PulseAudio capture support is available; otherwise, false. ### IsSupported() Determines whether volume and mute control is supported by the current audio capture device. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if volume/mute control is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the audio volume/mute interface for internal use by the framework. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The IAudioVolumeMute interface implementation. ### SetMute(bool) Sets the mute state of the audio capture device. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): If set to true, mutes the audio capture; otherwise, unmutes it. ### SetVolume(double) Sets the capture volume level for the audio device. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume level in the range 0.0 (silence) to 1.0 (maximum volume). ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this PulseAudio source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this PulseAudio source. ## See Also --- # Class PushAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.PushAudioSourceBlock.html # Class PushAudioSourceBlock # Class PushAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Push audio source block for programmatic audio data injection into the pipeline. Provides real-time audio streaming from application-generated or externally-sourced audio data for custom audio sources, audio synthesis, live audio processing, and integration with external audio APIs or hardware devices. Implements the . Implements the . Implements the . ```csharp public class PushAudioSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PushAudioSourceBlock(PushAudioSourceSettings) Initializes a new instance of the class with custom audio settings. Configures the push audio source for real-time audio data injection with specified format parameters. ```csharp public PushAudioSourceBlock(PushAudioSourceSettings settings) ``` #### Parameters Parameters: - settings (PushAudioSourceSettings): The push audio settings controlling audio format, sample rate, and buffering parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive pushed data). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary audio output pad for the pushed audio stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single audio output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the push audio configuration settings that control audio format and buffering. ```csharp public PushAudioSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (PushAudioSourceSettings): ### Type Gets the media block type identifier for push audio source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the push audio source within the pipeline context. Creates audio injection pipeline, configures format conversion, and prepares audio output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the push audio source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the push audio operations, including injection buffers and audio converters. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the push audio source. Properly stops audio injection and disposes of GStreamer elements and audio buffers. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The push audio source GStreamer element. ### IsAvailable() Determines whether push audio support is available on the current system. Requires GStreamer appsrc plugin to be installed for audio data injection. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if push audio support is available; otherwise, false. ### PushData(AudioFrame) Pushes an audio frame into the pipeline for real-time processing. ```csharp public void PushData(AudioFrame frame) ``` #### Parameters Parameters: - frame (AudioFrame): The AudioFrame containing audio samples with format information to inject into the pipeline. ### PushData(byte[], int) Pushes raw audio data bytes into the pipeline for real-time processing. ```csharp public void PushData(byte[] data, int dataSize) ``` #### Parameters Parameters: - data (byte [ ]): The byte array containing raw audio samples in the configured format. - dataSize (int): The actual size of valid audio data in bytes within the array. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this push audio source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this push audio source. ## See Also --- # Class PushSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.PushSourceBlock.html # Class PushSourceBlock # Class PushSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Push source block for generic programmatic data injection into the pipeline. Provides flexible real-time streaming from application-generated data including video frames, audio samples, or raw data for custom media sources, live processing pipelines, and integration with external data sources or hardware devices. Implements the . Implements the . Implements the . ```csharp public class PushSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PushSourceBlock(IPushSourceSettings) Initializes a new instance of the class with custom push settings. Configures the push source for real-time data injection with appropriate media type detection. ```csharp public PushSourceBlock(IPushSourceSettings settings) ``` #### Parameters Parameters: - settings (IPushSourceSettings): The push source settings controlling data format and buffering parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive pushed data). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the pushed data stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the push source configuration settings that control data format and buffering. ```csharp public IPushSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (IPushSourceSettings): ### Type Gets the media block type identifier for push source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The push source GStreamer element. ### IsAvailable() Determines whether push source support is available on the current system. Requires GStreamer appsrc plugin to be installed for data injection. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if push source support is available; otherwise, false. ### PushData(byte[], int, TimeSpan?, TimeSpan?) Pushes the data. ```csharp public void PushData(byte[] data, int dataSize, TimeSpan? pts = null, TimeSpan? duration = null) ``` #### Parameters Parameters: - data (byte [ ]): The data. - dataSize (int): Size of the data. - pts (TimeSpan ?): The PTS. - duration (TimeSpan ?): The duration. ### PushFrame(AudioFrame) Pushes the frame. ```csharp public void PushFrame(AudioFrame frame) ``` #### Parameters Parameters: - frame (AudioFrame): The frame. ### PushFrame(VideoFrameX) Pushes the frame. ```csharp public void PushFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The frame. ### SendEOS() Sends the End-of-Stream. ```csharp public bool SendEOS() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class PushVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.PushVideoSourceBlock.html # Class PushVideoSourceBlock # Class PushVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Push video source block for programmatic video frame injection into the pipeline. Provides real-time video streaming from application-generated or externally-sourced video frames for custom video sources, frame processing pipelines, video synthesis, and integration with external video APIs or capture devices. Implements the . Implements the . Implements the . ```csharp public class PushVideoSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PushVideoSourceBlock(PushVideoSourceSettings) Initializes a new instance of the class with custom video settings. Configures the push video source for real-time frame injection with specified format parameters. ```csharp public PushVideoSourceBlock(PushVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (PushVideoSourceSettings): The push video settings controlling resolution, pixel format, and buffering parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive pushed data). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the pushed video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the push video configuration settings that control video format and buffering. ```csharp public PushVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (PushVideoSourceSettings): ### Type Gets the media block type identifier for push video source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the push video source within the pipeline context. Creates frame injection pipeline, configures format conversion, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the push video source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the push video operations, including frame buffers and video converters. ```csharp public void CleanUp() ``` ### ClearQueue() Clears all pending video frames from the internal buffer queue. ```csharp public void ClearQueue() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the push video source. Properly stops frame injection and disposes of GStreamer elements and video buffers. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The push video source GStreamer element. ### IsAvailable() Determines whether push video support is available on the current system. Requires GStreamer appsrc plugin to be installed for video frame injection. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if push video support is available; otherwise, false. ### PushFrame(VideoFrameX) Pushes a video frame into the pipeline for real-time processing. ```csharp public void PushFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The VideoFrameX containing pixel data with format and timing information to inject into the pipeline. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this push video source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this push video source. ## See Also --- # Class QTDemuxBlock Link: api/VisioForge.Core.MediaBlocks.Sources.QTDemuxBlock.html # Class QTDemuxBlock # Class QTDemuxBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll QuickTime/MP4/MOV demultiplexer block for extracting individual streams from container files. This block parses QuickTime-based container formats (MP4, MOV, M4A, 3GP) and separates them into individual video, audio, subtitle, and metadata streams. Supports advanced features including fragmented MP4, multiple tracks, chapter information, and embedded metadata. Essential for playback applications, transcoding workflows, stream analysis, and any scenario requiring access to individual streams within QuickTime containers. Implements the . Implements the . Implements the . ```csharp public class QTDemuxBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### QTDemuxBlock(bool, bool, bool, bool) Initializes a new instance of the class with configurable stream extraction options. ```csharp public QTDemuxBlock(bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - renderVideo (bool): if set to true extract and output video streams. - renderAudio (bool): if set to true extract and output audio streams. - renderSubtitle (bool): if set to true extract and output subtitle streams. - renderMetadata (bool): if set to true extract and output metadata streams. ## Properties ### AudioOutput Gets the audio output pad for extracted audio streams. Only available when audio rendering is enabled. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MetadataOutput Gets the metadata output pad for extracted metadata streams. Only available when metadata rendering is enabled. ```csharp public MediaBlockPad MetadataOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutput Gets the subtitle output pad for extracted subtitle streams. Only available when subtitle rendering is enabled. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad for extracted video streams. Only available when video rendering is enabled. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Constructs and initializes the QuickTime demux and associated queue elements. This method creates the demux element, sets up dynamic pad handlers for each stream type, creates queue elements for enabled streams, and establishes output pad connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the demux was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this QuickTime demux block. This method disposes of the demux element and all queue elements, then resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper. Returns null as the demux element is accessed directly without a wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this implementation. ### GetElement() Gets the underlying GStreamer element that performs the QuickTime demuxing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the QT demux. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this QuickTime demux block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RTMPSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.RTMPSourceBlock.html # Class RTMPSourceBlock # Class RTMPSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll RTMP (Real Time Messaging Protocol) source block for streaming from RTMP servers. Outputs demuxed compressed video and audio streams without decoding, suitable for direct recording, transcoding, or connection to separate decoder blocks. Provides efficient streaming from media servers, CDNs, and live streaming platforms. Implements the . Implements the . Implements the . ```csharp public class RTMPSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IGetVideoStreamInfo ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RTMPSourceBlock(RTMPSourceSettings) Initializes a new instance of the class with custom RTMP settings. Configures the RTMP source for network streaming, outputting compressed audio/video streams. ```csharp public RTMPSourceBlock(RTMPSourceSettings settings) ``` #### Parameters Parameters: - settings (RTMPSourceSettings): The RTMP settings controlling URI, connection parameters, and stream selection. ## Properties ### AudioOutput Gets the audio output pad that provides compressed RTMP audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for RTMP). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on stream content). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the RTMP configuration settings that control connection parameters and streaming options. ```csharp public RTMPSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (RTMPSourceSettings): ### Type Gets the media block type identifier for RTMP source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides compressed RTMP video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the RTMP source within the pipeline context. Establishes network connection, demuxes the stream, and prepares compressed audio/video outputs. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the RTMP source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the RTMP operations, including network connections and decoder resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the RTMP source. Properly closes network connections and disposes of GStreamer elements and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The RTMP source GStreamer element. ### GetVideoStreamInfo() Gets the detailed video stream information extracted from the RTMP source. ```csharp public VideoStreamInfo GetVideoStreamInfo() ``` #### Returns Parameters: - (VideoStreamInfo): A VideoStreamInfo object containing codec, resolution, frame rate, and format details of the video stream. ### IsAvailable() Determines whether RTMP support is available on the current system. Requires GStreamer RTMP plugins and codec libraries to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if RTMP support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this RTMP source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this RTMP source. ## See Also --- # Class RTSPRAWSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.RTSPRAWSourceBlock.html # Class RTSPRAWSourceBlock # Class RTSPRAWSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll RTSP RAW source block for real-time streaming protocol reception without automatic decoding capabilities. Provides raw RTSP stream access from IP cameras, surveillance systems, and streaming servers with manual decoder control for advanced processing pipelines requiring custom codec handling in security, broadcasting, and professional video applications. This implementation ensures H264 streams start from keyframes and synchronizes audio playback accordingly. Implements the . Implements the . Implements the . ```csharp public class RTSPRAWSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RTSPRAWSourceBlock(RTSPRAWSourceSettings) Initializes a new instance of the class with custom RTSP settings. Configures the RTSP RAW source for real-time streaming with specified connection and protocol parameters. ```csharp public RTSPRAWSourceBlock(RTSPRAWSourceSettings settings) ``` #### Parameters Parameters: - settings (RTSPRAWSourceSettings): The RTSP RAW settings controlling URI, authentication, timeout, and stream configuration parameters. ## Properties ### AudioOutput Gets the audio output pad that provides raw RTSP audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for RTSP stream). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (video and audio outputs for RTSP). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the RTSP RAW configuration settings that control connection parameters and stream processing options. ```csharp public RTSPRAWSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (RTSPRAWSourceSettings): ### Type Gets the media block type identifier for RTSP RAW source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides raw RTSP video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the RTSP RAW source within the pipeline context. Establishes RTSP connection, configures stream reception, and prepares raw video/audio outputs for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the RTSP RAW source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the RTSP RAW operations, including network connection and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the RTSP RAW source. Properly closes RTSP connection and disposes of GStreamer elements and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The RTSPRAWSource wrapper element for advanced RTSP configuration options. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The RTSP RAW source GStreamer element. ### IsAvailable() Determines whether RTSP RAW support is available on the current system. Requires GStreamer RTSP source plugins and network connectivity to be available and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if RTSP RAW support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this RTSP RAW source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this RTSP RAW source. ## See Also --- # Class RTSPSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.RTSPSourceBlock.html # Class RTSPSourceBlock # Class RTSPSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll RTSP (Real Time Streaming Protocol) source block with integrated decoders for IP camera and streaming server access. Provides low-latency video and audio streaming from network cameras, surveillance systems, and media servers with automatic codec detection, RTP/RTCP transport, and synchronized playback for security, broadcast, and live streaming applications. Supports configurable low latency mode for real-time applications by minimizing buffering and dropping late frames. Implements the . Implements the . Implements the . ```csharp public class RTSPSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IGetVideoStreamInfo ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RTSPSourceBlock(RTSPSourceSettings) Initializes a new instance of the class with custom RTSP settings. Configures the RTSP source for network streaming with automatic codec detection and decoding. ```csharp public RTSPSourceBlock(RTSPSourceSettings settings) ``` #### Parameters Parameters: - settings (RTSPSourceSettings): The RTSP settings controlling URI, authentication, transport protocol, and stream selection. ## Properties ### AudioOutput Gets the audio output pad that provides decoded RTSP audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for RTSP). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on stream content). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the RTSP configuration settings that control connection parameters and streaming options. ```csharp public RTSPSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (RTSPSourceSettings): ### Type Gets the media block type identifier for RTSP source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded RTSP video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the RTSP source within the pipeline context. Establishes network connection, negotiates stream parameters, and prepares decoders for audio/video playback. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the RTSP source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the RTSP operations, including network connections and decoder resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the RTSP source. Properly closes network connections and disposes of GStreamer elements and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The RTSP source GStreamer element. ### GetVideoStreamInfo() Gets the detailed video stream information extracted from the RTSP source. ```csharp public VideoStreamInfo GetVideoStreamInfo() ``` #### Returns Parameters: - (VideoStreamInfo): A VideoStreamInfo object containing codec, resolution, frame rate, and format details of the video stream. ### IsAvailable() Determines whether RTSP support is available on the current system. Requires GStreamer RTSP plugins and codec libraries to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if RTSP support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this RTSP source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this RTSP source. ### OnAudioRAWFrame Event raised when raw compressed audio frames are received from the RTSP stream before decoding. Requires RTSPSourceSettings.EnableRAWVideoAudioEvents to be set to true for activation. ```csharp public event EventHandler OnAudioRAWFrame ``` #### Event Type Parameters: - (EventHandler < DataFrameEventArgs >): ### OnVideoRAWFrame Event raised when raw compressed video frames are received from the RTSP stream before decoding. Requires RTSPSourceSettings.EnableRAWVideoAudioEvents to be set to true for activation. ```csharp public event EventHandler OnVideoRAWFrame ``` #### Event Type Parameters: - (EventHandler < DataFrameEventArgs >): ## See Also --- # Class ScreenSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.ScreenSourceBlock.html # Class ScreenSourceBlock # Class ScreenSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Screen capture source block for desktop recording and screen sharing applications across multiple platforms. Provides real-time screen capture with hardware acceleration support using platform-specific APIs (D3D11, XDisplay, macOS, iOS) for live streaming, tutorials, remote assistance, and screen recording with high performance and low system impact. Implements the . Implements the . Implements the . ```csharp public class ScreenSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ScreenSourceBlock(IScreenCaptureSourceSettings) Initializes a new instance of the class with custom capture settings. Configures the screen capture source with specified display, resolution, and capture parameters. ```csharp public ScreenSourceBlock(IScreenCaptureSourceSettings settings) ``` #### Parameters Parameters: - settings (IScreenCaptureSourceSettings): The screen capture settings controlling display selection, resolution, frame rate, and capture area parameters. ### ScreenSourceBlock() Initializes a new instance of the class with platform-specific default settings. Automatically selects the appropriate screen capture method based on the current platform (D3D11, XDisplay, macOS, iOS). ```csharp public ScreenSourceBlock() ``` ## Properties ### Input Gets the primary input pad (none for source blocks that capture screens). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the captured screen. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for screen capture). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the screen capture configuration settings that control capture parameters and display options. ```csharp public IScreenCaptureSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (IScreenCaptureSourceSettings): ### Type Gets the media block type identifier for screen capture source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The screen capture source GStreamer element. ### IsAvailable(ScreenCaptureSourceType) Determines whether screen capture support is available for the specified source type on the current system. Requires platform-specific screen capture APIs and drivers to be available and functional. ```csharp public static bool IsAvailable(ScreenCaptureSourceType sourceType) ``` #### Parameters Parameters: - sourceType (ScreenCaptureSourceType): The type of screen capture source to check (D3D11, XDisplay, macOS, etc.). #### Returns Parameters: - (bool): true if screen capture support is available for the specified type; otherwise, false. ### UpdateLiveSettings(int, int, bool) Updates the live settings. ```csharp public void UpdateLiveSettings(int x, int y, bool cursor) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. - cursor (bool): if set to true capture cursor. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class SourceMediaBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SourceMediaBlock.html # Class SourceMediaBlock # Class SourceMediaBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Abstract base class for all media source blocks in the MediaBlocks pipeline framework. This foundational class provides the essential infrastructure for blocks that originate media data from various sources including file systems, capture devices, network streams, and synthetic generators. Source blocks represent the entry points of media processing pipelines, responsible for acquiring raw or encoded media data and making it available to downstream processing blocks. Key responsibilities: - Defining the common interface for all media source implementations - Providing base functionality for source lifecycle management - Establishing contracts for subtitle availability and source control - Serving as the starting point for media processing chains Common derived implementations: - File sources (MP4, AVI, MKV, WebM, etc.) - Device sources (cameras, microphones, capture cards) - Network sources (RTSP, RTMP, HTTP streams) - Synthetic sources (test patterns, tone generators) - Screen capture sources (desktop, window, region) - Industrial camera sources (GenICam, machine vision) Source blocks typically have no input pads and one or more output pads depending on the media streams they provide (video, audio, subtitles). They are responsible for format detection, stream initialization, and maintaining synchronization between multiple output streams. Implements the . ```csharp public class SourceMediaBlock : MediaBlock, IMediaBlock, IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members #### Extension Methods ## Methods ### IsSubtitlesAvailable() Determines whether subtitle streams are available from this media source. This method allows downstream blocks to query the availability of text-based subtitle tracks that may be embedded in media files or provided as separate streams. Subtitle support includes various formats such as SRT, SSA/ASS, WebVTT, TTML, and embedded formats like DVD/Blu-ray subtitles. ```csharp public virtual bool IsSubtitlesAvailable() ``` #### Returns Parameters: - (bool): true if one or more subtitle streams are available and can be extracted; false if no subtitles are present or the source doesn't support subtitle extraction. #### Remarks Override this method in derived classes that implement subtitle extraction capabilities. The base implementation returns false, indicating no subtitle support by default. Sources that support subtitles should also implement the corresponding subtitle output pad. ### Stop() Stops the media source from generating or reading data and releases associated resources. This method provides a controlled shutdown mechanism for source blocks, ensuring proper cleanup of system resources, device handles, network connections, and file descriptors. ```csharp public virtual bool Stop() ``` #### Returns Parameters: - (bool): true if the source was successfully stopped and all resources were released; false if an error occurred during shutdown. #### Remarks Override this method in derived classes to implement source-specific stopping logic: - File sources: Close file handles and release memory buffers - Device sources: Stop hardware devices and release exclusive access - Network sources: Close connections and cleanup network resources - Thread sources: Signal and wait for worker threads to terminate The base implementation returns true, allowing simple sources to use default behavior. Complex sources should ensure all resources are properly released to prevent leaks. This method may be called multiple times and should be idempotent. ## See Also --- # Class SRTRAWSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SRTRAWSourceBlock.html # Class SRTRAWSourceBlock # Class SRTRAWSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll SRT (Secure Reliable Transport) RAW source block for low-latency streaming reception without automatic decoding. Provides reliable UDP-based stream transport with error recovery and encryption for live broadcasting, remote production, and professional streaming applications requiring low-latency, high-quality video transmission over unreliable networks. Implements the . Implements the . Implements the . ```csharp public class SRTRAWSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SRTRAWSourceBlock(SRTSourceSettings) Initializes a new instance of the class with custom SRT settings. Configures the SRT RAW source for secure low-latency streaming with specified network and security parameters. ```csharp public SRTRAWSourceBlock(SRTSourceSettings settings) ``` #### Parameters Parameters: - settings (SRTSourceSettings): The SRT settings controlling URI, encryption, latency, bandwidth, and network configuration parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the raw SRT stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single output for SRT stream). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SRT configuration settings that control network parameters and security options. ```csharp public SRTSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (SRTSourceSettings): ### Type Gets the media block type identifier for SRT RAW source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the SRT RAW source within the pipeline context. Establishes secure SRT connection, configures stream reception, and prepares raw output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the SRT RAW source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the SRT operations, including secure connection and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the SRT RAW source. Properly closes SRT connection and disposes of GStreamer elements and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The SRT source GStreamer element. ### IsAvailable() Determines whether SRT support is available on the current system. Requires GStreamer SRT source plugins and SRT libraries to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRT support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this SRT RAW source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this SRT RAW source. ## See Also --- # Class SRTSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SRTSourceBlock.html # Class SRTSourceBlock # Class SRTSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll SRT (Secure Reliable Transport) source block with integrated decoding capabilities for complete media playback. Provides secure, low-latency streaming reception with automatic video, audio, and subtitle decoding for live broadcasting, remote production, and professional streaming applications requiring high-quality, reliable transmission over unreliable networks. Implements the . Implements the . Implements the . ```csharp public class SRTSourceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SRTSourceBlock(SRTSourceSettings, bool, bool, bool) Initializes a new instance of the class with custom SRT settings and stream selection. Configures the SRT source with integrated decoding for secure low-latency streaming with specified output streams. ```csharp public SRTSourceBlock(SRTSourceSettings settings, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - settings (SRTSourceSettings): The SRT settings controlling URI, encryption, latency, bandwidth, and network configuration parameters. - renderVideo (bool): If set to true, enables video stream decoding and output. - renderAudio (bool): If set to true, enables audio stream decoding and output. - renderSubtitle (bool): If set to true, enables subtitle stream decoding and output. ## Properties ### AudioOutput Gets the audio output pad that provides decoded SRT audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### DisableAudioConverter Gets or sets a value indicating whether to disable audio converter for direct audio output. ```csharp public bool DisableAudioConverter { get; set; } ``` #### Property Value Parameters: - (bool): ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for SRT stream). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on enabled streams). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SRT configuration settings that control network parameters and decoding options. ```csharp public SRTSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (SRTSourceSettings): ### SubtitleOutput Gets the subtitle output pad that provides decoded SRT subtitle stream to downstream blocks. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for SRT source operations with decoding. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded SRT video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the SRT source with decoding within the pipeline context. Establishes secure SRT connection, configures automatic decoding, and prepares decoded outputs for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the SRT source with decoding was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the SRT operations, including secure connection, decoders, and media buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the SRT source with decoding. Properly closes SRT connection and disposes of GStreamer elements, decoders, and streaming resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The DecodeBinElement wrapper element for advanced decoding configuration options. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The decode bin GStreamer element. ### IsAvailable() Determines whether SRT support with decoding is available on the current system. Requires GStreamer SRT source plugins, decode bin, and SRT libraries to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRT support with decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this SRT source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this SRT source. ## See Also --- # Class StreamSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.StreamSourceBlock.html # Class StreamSourceBlock # Class StreamSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Stream source block for reading media data from .NET Stream objects. Provides flexible media playback from memory streams, file streams, or network streams without integrated decoders, enabling custom data sources, in-memory media processing, and streaming from non-standard sources for advanced pipeline scenarios. Implements the . Implements the . Implements the . ```csharp public class StreamSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### StreamSourceBlock(Stream) Initializes a new instance of the class with an existing stream. Configures the stream source to read media data from any .NET Stream implementation. ```csharp public StreamSourceBlock(Stream stream) ``` #### Parameters Parameters: - stream (Stream): The .NET Stream object containing media data to be read and processed. ### StreamSourceBlock(string) Initializes a new instance of the class from a file path. Opens the specified file as a stream and takes ownership of the stream for disposal. ```csharp public StreamSourceBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file to open as a stream for reading. ## Properties ### Input Gets the primary input pad (none for source blocks that read from streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the raw stream data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single raw data output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for stream source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the stream source within the pipeline context. Creates the stream reader and buffering queue for raw data streaming from .NET Stream objects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the stream source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the stream source operations, including the stream and data buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the stream source. Properly closes the stream (if owned) and disposes of GStreamer elements and buffering resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The stream source GStreamer element. ### IsAvailable() Determines whether stream source support is available on the current system. Requires GStreamer appsrc plugin to be installed for stream data injection. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if stream source support is available; otherwise, false. ### SendEOS() Sends an End-of-Stream (EOS) signal to indicate that all data has been read from the stream. ```csharp public bool SendEOS() ``` #### Returns Parameters: - (bool): true if the EOS signal was successfully sent; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this stream source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this stream source. ## See Also --- # Class StreamSourceBlockWithDecoder Link: api/VisioForge.Core.MediaBlocks.Sources.StreamSourceBlockWithDecoder.html # Class StreamSourceBlockWithDecoder # Class StreamSourceBlockWithDecoder **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Composite media source block that combines stream reading with automatic decoding for complete media playback. This high-level block encapsulates the complexity of reading from .NET Stream objects, automatically detecting media formats, demuxing container formats, and decoding compressed streams into raw video and audio data. Provides a simplified API for applications that need to play media from memory without manual pipeline construction. Key features: - Automatic format detection for all supported container formats - Integrated demuxing of multi-stream containers (MP4, MKV, AVI, etc.) - Hardware-accelerated decoding when available - Support for any .NET Stream implementation (MemoryStream, FileStream, NetworkStream) - Seamless handling of variable bitrate and adaptive streams - Automatic audio/video synchronization - Zero-copy streaming from memory buffers when possible Common use cases: - Playing media from memory buffers or byte arrays - Streaming from encrypted or compressed archives - Processing media from network streams without temporary files - Embedding media playback in memory-constrained environments - Custom stream implementations for DRM or proprietary formats The block internally manages a StreamSourceBlock for reading and a DecodeBinBlock for automatic format detection and decoding, presenting a simple interface with separate video and audio outputs ready for rendering or further processing. Implements the ```csharp public class StreamSourceBlockWithDecoder : SuperMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### StreamSourceBlockWithDecoder(Stream) Initializes a new instance of the class with an existing stream. Creates a complete media playback pipeline from stream reading through decoding in a single block. The stream position should be at the beginning of valid media data for proper format detection. ```csharp public StreamSourceBlockWithDecoder(Stream stream) ``` #### Parameters Parameters: - stream (Stream): The .NET Stream object containing encoded media data to be read, demuxed, and decoded. The stream must be readable and seekable for most media formats. #### Remarks The stream is not disposed when this block is disposed - the caller retains ownership and responsibility for the stream's lifecycle. Ensure the stream remains valid for the duration of playback. ### StreamSourceBlockWithDecoder(string) Initializes a new instance of the class from a file path. Opens the file as a stream and creates a complete playback pipeline with automatic decoding. This constructor manages the file stream internally and will close it when disposed. ```csharp public StreamSourceBlockWithDecoder(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file to open, read, demux, and decode. Supports both absolute and relative paths. #### Exceptions Parameters: - (FileNotFoundException): Thrown when the specified file does not exist. - (UnauthorizedAccessException): Thrown when the file cannot be accessed due to permissions. ## Properties ### AudioOutput Gets the audio output pad that provides decoded audio samples from the stream. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoOutput Gets the video output pad that provides decoded video frames from the stream. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## See Also --- # Class SubtitleSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SubtitleSourceBlock.html # Class SubtitleSourceBlock # Class SubtitleSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Subtitle source block for text overlay and caption display from external subtitle files. Provides subtitle text stream generation from SRT, VTT, ASS, and other subtitle formats for video overlay, accessibility compliance, and multilingual content support in media playback and streaming applications. Implements the . Implements the . Implements the . ```csharp public class SubtitleSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SubtitleSourceBlock(SubtitleSourceSettings) Initializes a new instance of the class with custom subtitle settings. Configures the subtitle source for text overlay with specified file path and formatting parameters. ```csharp public SubtitleSourceBlock(SubtitleSourceSettings settings) ``` #### Parameters Parameters: - settings (SubtitleSourceSettings): The subtitle settings controlling file path, format, encoding, and text processing parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that read subtitle files). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary subtitle output pad for the parsed subtitle stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single subtitle output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the subtitle configuration settings that control file parsing and text processing options. ```csharp public SubtitleSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (SubtitleSourceSettings): ### Type Gets the media block type identifier for subtitle source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the subtitle source within the pipeline context. Opens subtitle file, configures text parsing, and establishes subtitle output for downstream overlay processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the subtitle source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the subtitle operations, including file handles and text buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the subtitle source. Properly closes subtitle file and disposes of GStreamer elements and text processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The subtitle source GStreamer element. ### IsAvailable(SubtitleSourceSettings) Determines whether subtitle support is available for the specified subtitle format. Requires GStreamer subtitle parsing plugins for the target subtitle format to be installed and functional. ```csharp public static bool IsAvailable(SubtitleSourceSettings settings) ``` #### Parameters Parameters: - settings (SubtitleSourceSettings): The subtitle settings containing the subtitle file to be analyzed for format compatibility. #### Returns Parameters: - (bool): true if subtitle support is available for the specified format; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this subtitle source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this subtitle source. ## See Also --- # Class SystemAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SystemAudioSourceBlock.html # Class SystemAudioSourceBlock # Class SystemAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll System audio source block for native audio capture device access across platforms. Provides unified audio recording from microphones, line-in devices, and system audio using platform-specific APIs (WASAPI, CoreAudio, ALSA, PulseAudio) for voice recording, audio streaming, and real-time audio processing applications. Implements the . Implements the . Implements the . ```csharp public class SystemAudioSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SystemAudioSourceBlock() Initializes a new instance of the class with the default audio capture device. Automatically selects the first available audio capture device on the system. ```csharp public SystemAudioSourceBlock() ``` ### SystemAudioSourceBlock(IAudioCaptureDeviceSourceSettings) Initializes a new instance of the class with custom capture settings. Configures the system audio source for microphone or line-in capture with specified parameters. ```csharp public SystemAudioSourceBlock(IAudioCaptureDeviceSourceSettings settings) ``` #### Parameters Parameters: - settings (IAudioCaptureDeviceSourceSettings): The audio capture settings controlling device selection, sample rate, and format parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that capture from devices). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary audio output pad for the captured audio stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single audio output for microphone). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the audio capture device configuration settings that control device selection and audio parameters. ```csharp public IAudioCaptureDeviceSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (IAudioCaptureDeviceSourceSettings): ### Type Gets the media block type identifier for system audio source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the system audio source within the pipeline context. Creates platform-specific audio capture source, configures device parameters, and prepares audio output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the system audio source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the audio capture operations, including device handles and audio buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the system audio source. Properly closes audio device handles and disposes of GStreamer elements and capture resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetDevicesAsync(AudioCaptureDeviceAPI?) Gets the list of available audio capture devices asynchronously. Enumerates all connected microphones, line-in devices, and system audio sources on the current system. ```csharp public static Task GetDevicesAsync(AudioCaptureDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI ?): Optional specific audio API to query; if null, queries all available APIs. #### Returns Parameters: - (Task < AudioCaptureDeviceInfo [ ] >): A task that represents the asynchronous operation returning an array of AudioCaptureDeviceInfo containing device names, IDs, and capabilities. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The system audio source GStreamer element. ### GetMute() Gets the current mute state of the audio capture device. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if the audio capture is muted; false if unmuted. ### GetVolume() Gets the current capture volume level of the audio device. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): The volume level as a double in the range 0.0 (silence) to 1.0 (maximum volume). ### IsAvailable(AudioCaptureDeviceAPI) Determines whether audio capture support is available for the specified API on the current system. Requires platform-specific audio capture APIs and drivers to be available and functional. ```csharp public static bool IsAvailable(AudioCaptureDeviceAPI api) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI): The audio capture API to check (WASAPI, CoreAudio, ALSA, PulseAudio, etc.). #### Returns Parameters: - (bool): true if audio capture support is available for the specified API; otherwise, false. ### IsSupported() Determines whether volume and mute control is supported by the current audio capture device. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if volume/mute control is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the audio volume/mute interface for internal use by the framework. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The IAudioVolumeMute interface implementation. ### SetMute(bool) Sets the mute state of the audio capture device. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): If set to true, mutes the audio capture; otherwise, unmutes it. ### SetVolume(double) Sets the capture volume level for the audio device. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume level in the range 0.0 (silence) to 1.0 (maximum volume). ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this system audio source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this system audio source. ## See Also --- # Class SystemVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.SystemVideoSourceBlock.html # Class SystemVideoSourceBlock # Class SystemVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll System video source block for native camera and video capture device access across platforms. Provides unified video capture from webcams, built-in cameras, and professional capture devices using platform-specific APIs (DirectShow, Media Foundation, V4L2, AVFoundation) for live streaming, video recording, and real-time video processing applications. Implements the . Implements the . Implements the . ```csharp public class SystemVideoSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SystemVideoSourceBlock() Initializes a new instance of the class with the default video capture device. Automatically selects the first available video capture device on the system. ```csharp public SystemVideoSourceBlock() ``` ### SystemVideoSourceBlock(VideoCaptureDeviceSourceSettings) Initializes a new instance of the class with custom capture settings. Configures the system video source for camera capture with specified device and format parameters. ```csharp public SystemVideoSourceBlock(VideoCaptureDeviceSourceSettings settings) ``` #### Parameters Parameters: - settings (VideoCaptureDeviceSourceSettings): The video capture settings controlling device selection, resolution, frame rate, and format parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that capture from devices). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the captured video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for camera). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video capture device configuration settings that control device selection and capture parameters. ```csharp public VideoCaptureDeviceSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (VideoCaptureDeviceSourceSettings): ### Type Gets the media block type identifier for system video source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the system video source within the pipeline context. Creates platform-specific video capture source, configures device parameters, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the system video source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the video capture operations, including device handles and capture buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the system video source. Properly closes video device handles and disposes of GStreamer elements and capture resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetDevicesAsync() Gets the list of available video capture devices asynchronously. Enumerates all connected cameras, webcams, and capture devices on the current system with their capabilities. ```csharp public static Task GetDevicesAsync() ``` #### Returns Parameters: - (Task < VideoCaptureDeviceInfo [ ] >): A task that represents the asynchronous operation returning an array of VideoCaptureDeviceInfo containing device names, IDs, and supported formats. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The system video source GStreamer element. ### IsAvailable(VideoCaptureDeviceAPI) Determines whether video capture support is available for the specified API on the current system. Requires platform-specific capture APIs and drivers to be available and functional. ```csharp public static bool IsAvailable(VideoCaptureDeviceAPI api) ``` #### Parameters Parameters: - api (VideoCaptureDeviceAPI): The video capture API to check (DirectShow, Media Foundation, V4L2, AVFoundation, etc.). #### Returns Parameters: - (bool): true if video capture support is available for the specified API; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this system video source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this system video source. ## See Also --- # Class TextOverlaySourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.TextOverlaySourceBlock.html # Class TextOverlaySourceBlock # Class TextOverlaySourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Text overlay source block that generates video with text overlay for fallback scenarios. Implements the . ```csharp public class TextOverlaySourceBlock : SourceMediaBlock, IMediaBlock, IDisposable ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### TextOverlaySourceBlock(StaticTextFallbackSettings) Initializes a new instance of the class. ```csharp public TextOverlaySourceBlock(StaticTextFallbackSettings settings) ``` #### Parameters Parameters: - settings (StaticTextFallbackSettings): The text fallback settings. ## Properties ### Input Gets the input pad (always null for source blocks). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Output Gets the output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the collection of output pads for this media block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Creates the text overlay source pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if creation succeeded; otherwise, false. ### Dispose(bool) Releases resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### GetElement() Gets the main GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): --- # Class UniversalDemuxBlock Link: api/VisioForge.Core.MediaBlocks.Sources.UniversalDemuxBlock.html # Class UniversalDemuxBlock # Class UniversalDemuxBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Universal demultiplexer block for extracting streams from any supported container format. This versatile block automatically detects and parses various container formats (MP4, MKV, AVI, WebM, etc.) and separates them into individual video, audio, subtitle, and metadata streams. Supports multiple streams of each type, automatic format detection, stream selection, and optimized handling based on MediaFileInfo. Essential for general-purpose media playback, transcoding workflows, multi-stream processing, and applications requiring format-agnostic demultiplexing capabilities. Provides comprehensive stream routing with optional null sinks. Implements the . Implements the . Implements the . ```csharp public class UniversalDemuxBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalDemuxBlock(IUniversalDemuxSettings, MediaFileInfo, bool, bool, bool, bool) Initializes a new instance of the class with custom settings and stream extraction options. ```csharp public UniversalDemuxBlock(IUniversalDemuxSettings settings, MediaFileInfo info, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - settings (IUniversalDemuxSettings): The demuxer configuration settings. - info (MediaFileInfo): The media file information containing stream details. Required for proper stream support. - renderVideo (bool): if set to true extract and output video streams. - renderAudio (bool): if set to true extract and output audio streams. - renderSubtitle (bool): if set to true extract and output subtitle streams. - renderMetadata (bool): if set to true extract and output metadata streams. ### UniversalDemuxBlock(MediaFileInfo, bool, bool, bool, bool) Initializes a new instance of the class with default settings and stream extraction options. ```csharp public UniversalDemuxBlock(MediaFileInfo info, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool renderMetadata = false) ``` #### Parameters Parameters: - info (MediaFileInfo): The media file information containing stream details. Required for proper stream support. - renderVideo (bool): if set to true extract and output video streams. - renderAudio (bool): if set to true extract and output audio streams. - renderSubtitle (bool): if set to true extract and output subtitle streams. - renderMetadata (bool): if set to true extract and output metadata streams. ## Properties ### AudioOutputs Gets all audio output pads for extracted audio streams. The number of pads matches the number of audio streams in the container. ```csharp public MediaBlockPad[] AudioOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MetadataOutputs Gets all metadata output pads for extracted metadata streams. ```csharp public MediaBlockPad[] MetadataOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutputs Gets all subtitle output pads for extracted subtitle streams. The number of pads matches the number of subtitle streams in the container. ```csharp public MediaBlockPad[] SubtitleOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutputs Gets all video output pads for extracted video streams. The number of pads matches the number of video streams in the container. ```csharp public MediaBlockPad[] VideoOutputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ## Methods ### Build() Constructs and initializes the universal demux and all associated queue elements. This method creates the demux element, sets up dynamic pad handlers for each stream type, creates queue or null sink elements based on rendering options, and establishes output connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the demux was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this universal demux block. This method disposes of the demux element, all queue elements, null renderers, and clears all collections before resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetAudioOutput() Gets the first audio output pad if available. Convenience method for accessing the primary audio stream. ```csharp public MediaBlockPad GetAudioOutput() ``` #### Returns Parameters: - (MediaBlockPad): The first audio output pad or null if no audio streams. ### GetCore() Gets the core BaseElement wrapper. Returns null as the demux element is accessed directly without a wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this implementation. ### GetElement() Gets the underlying GStreamer element that performs the universal demuxing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the universal demux. ### GetMetadataOutput() Gets the first metadata output pad if available. Convenience method for accessing the primary metadata stream. ```csharp public MediaBlockPad GetMetadataOutput() ``` #### Returns Parameters: - (MediaBlockPad): The first metadata output pad or null if no metadata streams. ### GetSubtitleOutput() Gets the first subtitle output pad if available. Convenience method for accessing the primary subtitle stream. ```csharp public MediaBlockPad GetSubtitleOutput() ``` #### Returns Parameters: - (MediaBlockPad): The first subtitle output pad or null if no subtitle streams. ### GetVideoOutput() Gets the first video output pad if available. Convenience method for accessing the primary video stream. ```csharp public MediaBlockPad GetVideoOutput() ``` #### Returns Parameters: - (MediaBlockPad): The first video output pad or null if no video streams. ### IsAvailable(IUniversalDemuxSettings) Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. Checks for required demuxer plugins based on the specified settings. ```csharp public static bool IsAvailable(IUniversalDemuxSettings settings) ``` #### Parameters Parameters: - settings (IUniversalDemuxSettings): The demuxer settings to check availability for. #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this universal demux block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class UniversalSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.UniversalSourceBlock.html # Class UniversalSourceBlock # Class UniversalSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Universal source block with integrated decoders for comprehensive media file and stream playback. Provides automatic format detection, demuxing, and decoding for virtually any media format including local files, network streams, and URIs with support for video, audio, and subtitle tracks for complete media player functionality. Implements the . Implements the . Implements the . ```csharp public class UniversalSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalSourceBlock(UniversalSourceSettings) Initializes a new instance of the class with custom media settings. Configures the universal source for comprehensive media playback with automatic format detection. ```csharp public UniversalSourceBlock(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The universal source settings containing URI, stream selection, and decoding parameters. ## Properties ### AudioOutput Gets the audio output pad that provides decoded audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that read from files/streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for universal source). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on media content). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the universal source configuration settings that control media loading and playback options. ```csharp public UniversalSourceSettings Settings { get; } ``` #### Property Value Parameters: - (UniversalSourceSettings): ### SubtitleOutput Gets the subtitle output pad that provides decoded subtitle stream to downstream blocks. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for universal source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the universal source within the pipeline context. Creates demuxer, decoders, and processing chain for comprehensive media playback with all detected streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the universal source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the universal source operations, including decoders and stream buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the universal source. Properly closes media files/streams and disposes of GStreamer elements and decoding resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The universal source GStreamer element. ### IsAvailable() Determines whether universal source support is available on the current system. Requires GStreamer decoding plugins and format parsers to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if universal source support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this universal source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this universal source. ## See Also --- # Class UniversalSourceBlockMini Link: api/VisioForge.Core.MediaBlocks.Sources.UniversalSourceBlockMini.html # Class UniversalSourceBlockMini # Class UniversalSourceBlockMini **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Lightweight universal media source block with integrated format detection and decoding capabilities. This mini version of UniversalSourceBlock provides a streamlined implementation optimized for common media playback scenarios, offering automatic format detection, demuxing, and decoding in a single block. Designed for applications requiring simple media playback without the complexity of manual pipeline construction. Key features: - Automatic format detection for 100+ container and codec combinations - Integrated demuxing and decoding with hardware acceleration support - Dynamic pad creation based on available streams (video/audio/subtitle) - Support for local files, HTTP/HTTPS URLs, and custom URI schemes - Optimized memory usage for embedded and mobile applications - Selective stream rendering (video-only, audio-only, or both) - Built-in buffering and synchronization management Supported sources: - Local files: All major formats (MP4, AVI, MKV, MOV, WebM, etc.) - Network streams: HTTP, HTTPS, RTSP, RTMP, HLS, DASH - Device URIs: Custom schemes for platform-specific sources - Memory streams: Via custom URI protocols Common use cases: - Media player applications with basic playback needs - Video preview and thumbnail generation - Audio-only playback for music applications - Embedded systems with limited resources - Quick media format validation and analysis The "Mini" designation indicates this block uses simplified internal processing compared to the full UniversalSourceBlock, trading some advanced features for reduced complexity and resource usage while maintaining compatibility with most common media formats and use cases. Implements the . Implements the . Implements the . ```csharp public class UniversalSourceBlockMini : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalSourceBlockMini(UniversalSourceSettings) Initializes a new instance of the class. Creates a universal media source configured for automatic format detection and decoding. ```csharp public UniversalSourceBlockMini(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The universal source settings containing URI, stream selection preferences, and playback options. ## Properties ### AudioOutput Gets the audio output pad that provides decoded audio stream to downstream blocks. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad (none for source blocks that read from files/streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad (video output for universal source). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (dynamic based on media content). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the universal source settings that control media loading and playback behavior. ```csharp public UniversalSourceSettings Settings { get; } ``` #### Property Value Parameters: - (UniversalSourceSettings): ### SubtitleOutput Gets the subtitle output pad that provides decoded subtitle stream to downstream blocks. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for universal source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded video stream to downstream blocks. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the universal source with automatic format detection and decoding. Creates the underlying GStreamer elements, validates the URI, and prepares for playback. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the source was successfully built and opened; false if initialization failed due to invalid URI or missing codecs. ### CleanUp() Performs cleanup of all resources associated with the universal source. Releases GStreamer elements and handles platform-specific resource cleanup. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core wrapper element for internal pipeline operations. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null as UniversalSource manages elements internally. ### GetElement() Gets the underlying GStreamer element for advanced configuration and pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing the source operations. ### IsAvailable() Determines whether the universal source functionality is available on the current platform. Requires appropriate GStreamer plugins and codecs to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if universal source is available with necessary plugins; false if required components are missing. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this source block. Called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that will manage this source. ## See Also --- # Class UniversalSourceBlockV2 Link: api/VisioForge.Core.MediaBlocks.Sources.UniversalSourceBlockV2.html # Class UniversalSourceBlockV2 # Class UniversalSourceBlockV2 **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Universal source block that automatically creates the necessary pipeline based on file content. ```csharp public class UniversalSourceBlockV2 : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalSourceBlockV2(UniversalSourceSettingsV2) Initializes a new instance of the class. ```csharp public UniversalSourceBlockV2(UniversalSourceSettingsV2 settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettingsV2): The universal source settings. ## Properties ### AudioOutput Gets the primary audio output pad. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### AudioOutputs Gets all audio output pads. ```csharp public List AudioOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ### Input Gets the primary input pad (not used for file sources). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads (empty for file sources). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MetadataOutput Gets the primary metadata output pad. ```csharp public MediaBlockPad MetadataOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### MetadataOutputs Gets all metadata output pads. ```csharp public List MetadataOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ### Output Gets the primary output pad (first available output). ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the source settings. ```csharp public UniversalSourceSettingsV2 Settings { get; } ``` #### Property Value Parameters: - (UniversalSourceSettingsV2): ### SubtitleOutput Gets the primary subtitle output pad. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### SubtitleOutputs Gets all subtitle output pads. ```csharp public List SubtitleOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the primary video output pad. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### VideoOutputs Gets all video output pads. ```csharp public List VideoOutputs { get; } ``` #### Property Value Parameters: - (List < MediaBlockPad >): ## Methods ### Build() Builds the media block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): ### CleanUp() Cleans up the block's internal resources. ```csharp public virtual void CleanUp() ``` ### Dispose(bool) Cleans up the media block. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### GetCore() Gets the core BaseElement wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Not applicable for this block, returns null. ### GetElement() Gets the main GStreamer element for this block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The source element (as primary element). ### SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp public void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance. ### IMediaBlockInternals.CleanUp() IMediaBlockInternals cleanup implementation. ```csharp void IMediaBlockInternals.CleanUp() ``` --- # Class VAAPIH264DecoderBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VAAPIH264DecoderBlock.html # Class VAAPIH264DecoderBlock # Class VAAPIH264DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll VAAPI H.264/AVC hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated H.264 video decoding through VA-API (Video Acceleration API), the standard Linux API for hardware video acceleration. Supports Intel, AMD, and NVIDIA GPUs with appropriate drivers (Intel Media Driver, Mesa RADV/RadeonSI, NVIDIA VDPAU-VA driver). Features include support for all H.264 profiles (Baseline, Main, High, High 10, High 4:2:2, High 4:4:4) up to Level 5.2, low CPU usage, high performance decoding up to 8K resolution, and automatic fallback to software decoding if hardware is unavailable. Essential for video players, streaming applications, video editors, and any Linux application requiring efficient H.264 video decoding with minimal CPU usage. Implements the . Implements the . Implements the . ```csharp public class VAAPIH264DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VAAPIH264DecoderBlock() Initializes a new instance of the class. ```csharp public VAAPIH264DecoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the VAAPI H.264 decoder and its associated GStreamer elements. This method creates the hardware decoder, establishes input and output pads, and prepares the block for GPU-accelerated H.264 decoding through the Linux VA-API interface. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this VAAPI H.264 decoder block. This method disposes of the GStreamer elements and releases VA-API resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer VAAPI H.264 decoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer VAAPI H.264 decoder. ### GetElement() Gets the underlying GStreamer element that performs VAAPI H.264 hardware decoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the VAAPI H.264 decoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this VAAPI H.264 decoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VAAPIHEVCDecoderBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VAAPIHEVCDecoderBlock.html # Class VAAPIHEVCDecoderBlock # Class VAAPIHEVCDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll VAAPI HEVC/H.265 hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated HEVC (High Efficiency Video Coding) decoding through VA-API, enabling efficient playback of H.265 content with minimal CPU usage. Supports Intel Gen7+ GPUs, AMD GCN+, and NVIDIA GPUs with appropriate drivers. Features include support for HEVC Main, Main 10 (10-bit), Main 12, Main 4:2:2 10, Main 4:4:4, and Main Still Picture profiles, HDR support (HDR10, HLG), resolutions up to 8K, and efficient decoding of modern streaming and UHD Blu-ray content. Essential for 4K/8K video players, streaming applications, video editors, and any Linux application requiring efficient HEVC decoding for next-generation video content. Implements the . Implements the . Implements the . ```csharp public class VAAPIHEVCDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VAAPIHEVCDecoderBlock() Initializes a new instance of the class. ```csharp public VAAPIHEVCDecoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the VAAPI HEVC decoder and its associated GStreamer elements. This method creates the hardware decoder, establishes input and output pads, and prepares the block for GPU-accelerated HEVC/H.265 decoding through the Linux VA-API interface. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this VAAPI HEVC decoder block. This method disposes of the GStreamer elements and releases VA-API resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer VAAPI HEVC decoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer VAAPI HEVC decoder. ### GetElement() Gets the underlying GStreamer element that performs VAAPI HEVC hardware decoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the VAAPI HEVC decoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this VAAPI HEVC decoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VAAPIJPEGDecoderBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VAAPIJPEGDecoderBlock.html # Class VAAPIJPEGDecoderBlock # Class VAAPIJPEGDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll VAAPI JPEG hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated JPEG image decoding through VA-API, significantly improving performance for applications that process large volumes of JPEG images. Supports Intel, AMD, and NVIDIA GPUs with VA-API drivers. Features include hardware acceleration for baseline and progressive JPEG formats, support for various color spaces (YUV 4:2:0, 4:2:2, 4:4:4), high-resolution image decoding up to GPU limits, and efficient batch processing of JPEG streams. Essential for photo viewers, image galleries, video editors processing JPEG sequences, digital signage systems, and any Linux application requiring fast JPEG decoding with minimal CPU usage. Implements the . Implements the . Implements the . ```csharp public class VAAPIJPEGDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VAAPIJPEGDecoderBlock() Initializes a new instance of the class. ```csharp public VAAPIJPEGDecoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the VAAPI JPEG decoder and its associated GStreamer elements. This method creates the hardware decoder, establishes input and output pads, and prepares the block for GPU-accelerated JPEG decoding through the Linux VA-API interface. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this VAAPI JPEG decoder block. This method disposes of the GStreamer elements and releases VA-API resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer VAAPI JPEG decoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer VAAPI JPEG decoder. ### GetElement() Gets the underlying GStreamer element that performs VAAPI JPEG hardware decoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the VAAPI JPEG decoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this VAAPI JPEG decoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VAAPIVC1DecoderBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VAAPIVC1DecoderBlock.html # Class VAAPIVC1DecoderBlock # Class VAAPIVC1DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll VAAPI VC-1 hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated VC-1 video decoding through VA-API, enabling efficient playback of Windows Media Video (WMV) and VC-1 encoded content. VC-1 is Microsoft's video codec standard used in WMV9, WMV HD, Blu-ray discs, and Xbox content. Supports Intel, AMD, and NVIDIA GPUs with appropriate VA-API drivers. Features include support for VC-1 Simple, Main, and Advanced profiles, interlaced and progressive content, resolutions up to 1080p, and efficient decoding of WMV files and Blu-ray VC-1 streams. Essential for media players handling Windows Media content, Blu-ray playback applications, video converters, and any Linux application requiring VC-1/WMV9 decoding capability. Implements the . Implements the . Implements the . ```csharp public class VAAPIVC1DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VAAPIVC1DecoderBlock() Initializes a new instance of the class. ```csharp public VAAPIVC1DecoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the VAAPI VC-1 decoder and its associated GStreamer elements. This method creates the hardware decoder, establishes input and output pads, and prepares the block for GPU-accelerated VC-1 decoding through the Linux VA-API interface. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this VAAPI VC-1 decoder block. This method disposes of the GStreamer elements and releases VA-API resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer VAAPI VC-1 decoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer VAAPI VC-1 decoder. ### GetElement() Gets the underlying GStreamer element that performs VAAPI VC-1 hardware decoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the VAAPI VC-1 decoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this VAAPI VC-1 decoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoMixerSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VideoMixerSourceBlock.html # Class VideoMixerSourceBlock # Class VideoMixerSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Video mixer source block for combining multiple video sources into a single composite output. Provides real-time video mixing with positioning, scaling, alpha blending, and chroma key support for creating picture-in-picture effects, video walls, live production, and multi-stream compositing using CPU, OpenGL, or D3D11 acceleration. Implements the . Implements the . Implements the . ```csharp public class VideoMixerSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IVideoMixerControl, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoMixerSourceBlock(MediaBlocksPipeline, VideoMixerSourceSettings) Initializes a new instance of the class with custom mixer settings. Configures the video mixer with multiple sources, positions, and optional chroma key effects. ```csharp public VideoMixerSourceBlock(MediaBlocksPipeline pipeline, VideoMixerSourceSettings settings) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocks pipeline that will contain this mixer source. - settings (VideoMixerSourceSettings): The video mixer settings specifying sources, layout, and rendering options. ## Properties ### Input Gets the primary input pad (none for source blocks that generate composite video). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for composite source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for the mixed composite video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single composite video output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the video mixer source configuration settings that control mixing behavior and source setup. ```csharp public VideoMixerSourceSettings Settings { get; } ``` #### Property Value Parameters: - (VideoMixerSourceSettings): ### Type Gets the media block type identifier for video mixer source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the video mixer source within the pipeline context. Creates all video sources, configures the mixer, and establishes connections for composite output. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the mixer source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the video mixer operations, including sources and compositing resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the video mixer source. Properly disposes of all video sources, the mixer, and associated rendering resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks that manage multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always null for composite blocks that contain multiple managed sources. ### Input_Get(Guid) Gets a specific input stream configuration by its unique identifier. ```csharp public VideoMixerStream Input_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to retrieve. #### Returns Parameters: - (VideoMixerStream): The VideoMixerStream containing position, size, and effects for the specified input. ### Input_List() Gets the configuration of all input streams in the video mixer. ```csharp public VideoMixerStream[] Input_List() ``` #### Returns Parameters: - (VideoMixerStream [ ]): An array of VideoMixerStream objects containing position, size, and effects for each input. ### Input_Move(Guid, Rect, TimeSpan, double?, double?) Animates an input stream to a new position and size with optional alpha fade. ```csharp public void Input_Move(Guid id, Rect rect, TimeSpan duration, double? startAlpha, double? endAlpha) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to move. - rect (Rect): The target rectangle defining new position and size. - duration (TimeSpan): The duration of the animation transition. - startAlpha (double ?): The starting alpha transparency value (0.0-1.0) for fade effects. - endAlpha (double ?): The ending alpha transparency value (0.0-1.0) for fade effects. ### Input_SetChromaKeyEnabled(Guid, bool) Enables or disables chroma key (green screen) effect for a specific input stream. ```csharp public void Input_SetChromaKeyEnabled(Guid id, bool enabled) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to modify. - enabled (bool): If set to true, enables chroma key; otherwise, disables it. ### Input_Update(VideoMixerStream) Updates the configuration of a specific input stream including position, size, and effects. ```csharp public void Input_Update(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The VideoMixerStream containing updated configuration for the input. ### Input_UpdateChromaKeySettings(Guid, ChromaKeySettingsX) Updates the chroma key (green screen) settings for a specific input stream. ```csharp public void Input_UpdateChromaKeySettings(Guid id, ChromaKeySettingsX settings) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to update. - settings (ChromaKeySettingsX): The new chroma key settings including color range and tolerance values. ### IsAvailable() Determines whether video mixer support is available on the current system. Requires GStreamer compositor or GL video mixer plugins depending on the selected rendering mode. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video mixer support is available; otherwise, false. ### SetSettings(VideoMixerBaseSettings) Updates the video mixer configuration settings including output resolution and rendering mode. ```csharp public void SetSettings(VideoMixerBaseSettings settings) ``` #### Parameters Parameters: - settings (VideoMixerBaseSettings): The new video mixer base settings to apply to the mixer. ### StartFadeIn(Guid, TimeSpan) Starts a fade-in animation for a specific input stream from transparent to opaque. ```csharp public void StartFadeIn(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to fade in. - duration (TimeSpan): The duration of the fade-in animation. ### StartFadeOut(Guid, TimeSpan) Starts a fade-out animation for a specific input stream from opaque to transparent. ```csharp public void StartFadeOut(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The GUID identifier of the input stream to fade out. - duration (TimeSpan): The duration of the fade-out animation. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this video mixer source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this video mixer source. ## See Also --- # Class VirtualAudioSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VirtualAudioSourceBlock.html # Class VirtualAudioSourceBlock # Class VirtualAudioSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll Virtual audio source block for synthetic audio generation and testing purposes. Provides programmable audio waveform generation including sine waves, square waves, white noise, and silence for audio testing, calibration, signal processing development, and placeholder audio in multimedia applications. Implements the . Implements the . Implements the . ```csharp public class VirtualAudioSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VirtualAudioSourceBlock(VirtualAudioSourceSettings) Initializes a new instance of the class with custom audio generation settings. Configures the virtual audio source for synthetic waveform generation with specified parameters. ```csharp public VirtualAudioSourceBlock(VirtualAudioSourceSettings settings) ``` #### Parameters Parameters: - settings (VirtualAudioSourceSettings): The virtual audio settings controlling waveform type, frequency, volume, and format parameters. ### VirtualAudioSourceBlock() Initializes a new instance of the class with default settings. Creates a virtual audio source with standard sine wave generation at default frequency and volume. ```csharp public VirtualAudioSourceBlock() ``` ### VirtualAudioSourceBlock(VirtualAudioSourceSettingsWave) Initializes a new instance of the class with specified waveform type. Creates a virtual audio source generating the specified waveform at default frequency and volume. ```csharp public VirtualAudioSourceBlock(VirtualAudioSourceSettingsWave wave) ``` #### Parameters Parameters: - wave (VirtualAudioSourceSettingsWave): The type of audio waveform to generate (sine, square, saw, triangle, silence, white noise, etc.). ## Properties ### Input Gets the primary input pad (none for source blocks that generate audio). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary audio output pad for the generated audio stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single audio output). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the virtual audio configuration settings that control waveform generation parameters. ```csharp public VirtualAudioSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (VirtualAudioSourceSettings): ### Type Gets the media block type identifier for virtual audio source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the virtual audio source within the pipeline context. Configures waveform generation, establishes audio processing chain, and prepares audio output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the virtual audio source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the virtual audio operations, including waveform generators and audio buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the virtual audio source. Properly stops audio generation and disposes of GStreamer elements and audio processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The virtual audio source GStreamer element. ### IsAvailable() Determines whether virtual audio support is available on the current system. Requires GStreamer audio test source plugins to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if virtual audio support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this virtual audio source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this virtual audio source. ## See Also --- # Class VirtualVideoSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VirtualVideoSourceBlock.html # Class VirtualVideoSourceBlock # Class VirtualVideoSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll A virtual video source block that generates synthetic video frames for testing and development purposes. This block creates a test video stream with customizable dimensions, frame rate, and patterns, useful for pipeline testing without requiring actual video files or capture devices. Implements the . Implements the . Implements the . ```csharp public class VirtualVideoSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VirtualVideoSourceBlock(VirtualVideoSourceSettings) Initializes a new instance of the class with custom settings. ```csharp public VirtualVideoSourceBlock(VirtualVideoSourceSettings settings) ``` #### Parameters Parameters: - settings (VirtualVideoSourceSettings): The virtual video source settings specifying resolution, frame rate, and pattern. ### VirtualVideoSourceBlock() Initializes a new instance of the class with default settings. Creates a virtual video source with standard resolution and frame rate. ```csharp public VirtualVideoSourceBlock() ``` ### VirtualVideoSourceBlock(int, int, VideoFrameRate) Initializes a new instance of the class with specific video parameters. ```csharp public VirtualVideoSourceBlock(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width of the generated video frames in pixels. - height (int): The height of the generated video frames in pixels. - frameRate (VideoFrameRate): The frame rate at which video frames are generated. ## Properties ### Input Gets the input pad. Virtual video sources generate content and have no inputs. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. Virtual video sources have no inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad through which video frames are sent. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single video output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the virtual video generation, including resolution, frame rate, and pattern type. ```csharp public VirtualVideoSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (VirtualVideoSourceSettings): ### Type Gets the block type identifier for this virtual video source. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the virtual video source and its internal components. Creates the GStreamer elements and establishes the internal pipeline connections. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if initialization failed. ### CleanUp() Releases all internal resources and disposes of GStreamer elements. Called during disposal to ensure proper cleanup of native resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper. Not used for this block type. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null as this block doesn't use a BaseElement wrapper. ### GetElement() Gets the underlying GStreamer element that generates the virtual video. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element from the virtual video source. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block, providing access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class VNCSourceBlock Link: api/VisioForge.Core.MediaBlocks.Sources.VNCSourceBlock.html # Class VNCSourceBlock # Class VNCSourceBlock **Namespace**: VisioForge.Core.MediaBlocks.Sources **Assembly**: VisioForge.Core.dll VNC (Virtual Network Computing) source block for remote desktop access and screen sharing. Provides real-time screen capture from remote computers via RFB (Remote Framebuffer) protocol for remote assistance, system administration, and collaborative workflows with support for various VNC server implementations and authentication methods. Implements the . Implements the . Implements the . ```csharp public class VNCSourceBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VNCSourceBlock(VNCSourceSettings) Initializes a new instance of the class with custom VNC settings. Configures the VNC source for remote desktop access with specified connection and display parameters. ```csharp public VNCSourceBlock(VNCSourceSettings settings) ``` #### Parameters Parameters: - settings (VNCSourceSettings): The VNC settings controlling host, port, authentication, encoding, and display configuration parameters. ## Properties ### Input Gets the primary input pad (none for source blocks that receive network streams). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block (none for source blocks). ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary video output pad for the remote screen. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block (single video output for VNC). ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the VNC configuration settings that control connection parameters and display options. ```csharp public VNCSourceSettings Settings { get; set; } ``` #### Property Value Parameters: - (VNCSourceSettings): ### Type Gets the media block type identifier for VNC source operations. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VNC source within the pipeline context. Establishes VNC connection, configures remote screen capture, and prepares video output for downstream processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the VNC source was successfully built and configured; otherwise, false. ### CleanUp() Cleans up all resources associated with the VNC operations, including network connection and video buffers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and managed resources used by the VNC source. Properly closes VNC connection and disposes of GStreamer elements and video processing resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration and monitoring. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null for composite source blocks with multiple internal elements. ### GetElement() Gets the native GStreamer element for direct GStreamer pipeline integration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The VNC source GStreamer element. ### IsAvailable() Determines whether VNC support is available on the current system. Requires GStreamer VNC source plugins and RFB protocol support to be installed and functional. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if VNC support is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this VNC source, providing access to the parent pipeline and logging context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocks pipeline containing this VNC source. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.Sources Link: api/VisioForge.Core.MediaBlocks.Sources.html # Namespace VisioForge.Core.MediaBlocks.Sources # Namespace VisioForge.Core.MediaBlocks.Sources ### Classes Parameters: - (): Allied Vision industrial camera source block for professional video capture with GenICam-compatible cameras. Provides high-performance video acquisition from Allied Vision cameras with advanced imaging features for machine vision, industrial automation, scientific imaging, and quality control applications using GigE Vision and USB3 Vision standards. Implements the . Implements the . Implements the . - (): Animated GIF source block for playing animated GIF files as video streams. Provides seamless playback of animated GIF images with frame timing preservation for visual effects, animated overlays, and dynamic content in video productions with automatic looping and frame interpolation support. Implements the Implements the - (): Basic file source block for raw file data access without automatic parsing or decoding capabilities. Provides direct file reading functionality for custom format handling, raw data processing, or manual stream parsing with optional type detection for applications requiring low-level control over file data interpretation and processing. Implements the . Implements the . Implements the . - (): Basler industrial camera source block for professional video capture with Pylon SDK integration. Provides high-performance video acquisition from Basler cameras with advanced imaging features for machine vision, industrial automation, medical imaging, and scientific applications using GigE Vision, USB3 Vision, and Camera Link standards. Implements the . Implements the . Implements the . - (): CDG (Compact Disc plus Graphics) karaoke source block for synchronized audio and graphics playback with integrated decoders. Provides karaoke and multimedia presentation functionality by combining CDG graphics files with audio tracks for synchronized visual displays, subtitle rendering, and interactive entertainment applications with professional karaoke system integration. Implements the . Implements the . Implements the . - (): DVB (Digital Video Broadcasting) source block for professional television and satellite signal reception. Provides digital television tuning and streaming capabilities for DVB-T, DVB-C, DVB-S, and DVB-S2 standards with advanced signal processing for broadcast television, surveillance, and professional streaming applications. Implements the . Implements the . Implements the . - (): Demuxer source block for container format parsing without automatic decoding capabilities. Provides raw stream extraction from multimedia containers (MP4, AVI, MKV, WebM) with separate video, audio, and subtitle outputs for advanced processing pipelines requiring manual decoder selection and stream manipulation in professional media workflows. Implements the . Implements the . Implements the . - (): Fallback switch source block that wraps any live source with automatic failover capability. Uses GStreamer's fallbacksrc element to provide seamless switching between main source and fallback content (static text, image, or media block) when the primary source fails. Implements the . Implements the . Implements the . - (): GenICam (Generic Interface for Cameras) source block for industrial and scientific camera control. Provides standardized access to machine vision cameras from multiple manufacturers using the GenICam standard for industrial automation, quality inspection, scientific imaging, and computer vision applications with advanced camera features. Implements the . Implements the . Implements the . - (): HTTP/HTTPS MJPEG (Motion JPEG) source block for IP camera streaming and web-based video capture. Provides real-time MJPEG stream reception from web cameras, IP surveillance systems, and HTTP video sources with integrated JPEG decoding and frame rate control for security monitoring and live video streaming applications. Implements the . Implements the . Implements the . - (): HTTP/HTTPS source block for web-based content streaming and network media access. Provides versatile HTTP stream reception from web servers, CDNs, and online media sources with authentication support for live streaming, progressive download, and web-based multimedia content delivery in modern streaming applications. Implements the . Implements the . Implements the . - (): Image sequence source block for generating video streams from image sequences in a folder. Provides image sequence playback functionality using GStreamer's imagesequencesrc element, supporting various image formats with configurable frame rates and looping options for slideshow creation, timelapse playback, and video sequence processing in video productions. Implements the . Implements the . Implements the . - (): Image video source block for generating video streams from still images or animated GIFs. Provides flexible image-to-video conversion with support for static images as video backgrounds, slideshow creation, and animated GIF playback for titles, logos, overlays, and placeholder content in video productions. Implements the . Implements the . Implements the . - (): Image video source block with Cairo-based rendering for dynamic updates. Implements the - (): MPEG-TS demux block. Implements the . Implements the . Implements the . - (): NDI (Network Device Interface) source block for professional IP-based video streaming. Provides low-latency, high-quality video and audio streaming over IP networks for broadcast production, live events, and multi-camera setups with automatic source discovery and synchronization capabilities. Implements the . Implements the . Implements the . - (): PlayBin source block for universal media playback with automatic format detection and decoding. Provides comprehensive media source support using GStreamer's PlayBin element for files, network streams, and URIs with automatic codec selection, stream demuxing, and synchronized audio/video/subtitle playback for media player applications. Implements the . Implements the . Implements the . - (): PulseAudio source block for audio capture using the pulsesrc GStreamer element. Provides audio capture from PulseAudio sound server on Linux systems for recording, streaming, and real-time audio processing applications. Implements the . Implements the . Implements the . - (): Push audio source block for programmatic audio data injection into the pipeline. Provides real-time audio streaming from application-generated or externally-sourced audio data for custom audio sources, audio synthesis, live audio processing, and integration with external audio APIs or hardware devices. Implements the . Implements the . Implements the . - (): Push source block for generic programmatic data injection into the pipeline. Provides flexible real-time streaming from application-generated data including video frames, audio samples, or raw data for custom media sources, live processing pipelines, and integration with external data sources or hardware devices. Implements the . Implements the . Implements the . - (): Push video source block for programmatic video frame injection into the pipeline. Provides real-time video streaming from application-generated or externally-sourced video frames for custom video sources, frame processing pipelines, video synthesis, and integration with external video APIs or capture devices. Implements the . Implements the . Implements the . - (): QuickTime/MP4/MOV demultiplexer block for extracting individual streams from container files. This block parses QuickTime-based container formats (MP4, MOV, M4A, 3GP) and separates them into individual video, audio, subtitle, and metadata streams. Supports advanced features including fragmented MP4, multiple tracks, chapter information, and embedded metadata. Essential for playback applications, transcoding workflows, stream analysis, and any scenario requiring access to individual streams within QuickTime containers. Implements the . Implements the . Implements the . - (): RTMP (Real Time Messaging Protocol) source block for streaming from RTMP servers. Outputs demuxed compressed video and audio streams without decoding, suitable for direct recording, transcoding, or connection to separate decoder blocks. Provides efficient streaming from media servers, CDNs, and live streaming platforms. Implements the . Implements the . Implements the . - (): RTSP RAW source block for real-time streaming protocol reception without automatic decoding capabilities. Provides raw RTSP stream access from IP cameras, surveillance systems, and streaming servers with manual decoder control for advanced processing pipelines requiring custom codec handling in security, broadcasting, and professional video applications. This implementation ensures H264 streams start from keyframes and synchronizes audio playback accordingly. Implements the . Implements the . Implements the . - (): RTSP (Real Time Streaming Protocol) source block with integrated decoders for IP camera and streaming server access. Provides low-latency video and audio streaming from network cameras, surveillance systems, and media servers with automatic codec detection, RTP/RTCP transport, and synchronized playback for security, broadcast, and live streaming applications. Supports configurable low latency mode for real-time applications by minimizing buffering and dropping late frames. Implements the . Implements the . Implements the . - (): SRT (Secure Reliable Transport) RAW source block for low-latency streaming reception without automatic decoding. Provides reliable UDP-based stream transport with error recovery and encryption for live broadcasting, remote production, and professional streaming applications requiring low-latency, high-quality video transmission over unreliable networks. Implements the . Implements the . Implements the . - (): SRT (Secure Reliable Transport) source block with integrated decoding capabilities for complete media playback. Provides secure, low-latency streaming reception with automatic video, audio, and subtitle decoding for live broadcasting, remote production, and professional streaming applications requiring high-quality, reliable transmission over unreliable networks. Implements the . Implements the . Implements the . - (): Screen capture source block for desktop recording and screen sharing applications across multiple platforms. Provides real-time screen capture with hardware acceleration support using platform-specific APIs (D3D11, XDisplay, macOS, iOS) for live streaming, tutorials, remote assistance, and screen recording with high performance and low system impact. Implements the . Implements the . Implements the . - (): Abstract base class for all media source blocks in the MediaBlocks pipeline framework. This foundational class provides the essential infrastructure for blocks that originate media data from various sources including file systems, capture devices, network streams, and synthetic generators. Source blocks represent the entry points of media processing pipelines, responsible for acquiring raw or encoded media data and making it available to downstream processing blocks. Key responsibilities: - Defining the common interface for all media source implementations - Providing base functionality for source lifecycle management - Establishing contracts for subtitle availability and source control - Serving as the starting point for media processing chains Common derived implementations: - File sources (MP4, AVI, MKV, WebM, etc.) - Device sources (cameras, microphones, capture cards) - Network sources (RTSP, RTMP, HTTP streams) - Synthetic sources (test patterns, tone generators) - Screen capture sources (desktop, window, region) - Industrial camera sources (GenICam, machine vision) Source blocks typically have no input pads and one or more output pads depending on the media streams they provide (video, audio, subtitles). They are responsible for format detection, stream initialization, and maintaining synchronization between multiple output streams. Implements the . - (): Stream source block for reading media data from .NET Stream objects. Provides flexible media playback from memory streams, file streams, or network streams without integrated decoders, enabling custom data sources, in-memory media processing, and streaming from non-standard sources for advanced pipeline scenarios. Implements the . Implements the . Implements the . - (): Composite media source block that combines stream reading with automatic decoding for complete media playback. This high-level block encapsulates the complexity of reading from .NET Stream objects, automatically detecting media formats, demuxing container formats, and decoding compressed streams into raw video and audio data. Provides a simplified API for applications that need to play media from memory without manual pipeline construction. Key features: - Automatic format detection for all supported container formats - Integrated demuxing of multi-stream containers (MP4, MKV, AVI, etc.) - Hardware-accelerated decoding when available - Support for any .NET Stream implementation (MemoryStream, FileStream, NetworkStream) - Seamless handling of variable bitrate and adaptive streams - Automatic audio/video synchronization - Zero-copy streaming from memory buffers when possible Common use cases: - Playing media from memory buffers or byte arrays - Streaming from encrypted or compressed archives - Processing media from network streams without temporary files - Embedding media playback in memory-constrained environments - Custom stream implementations for DRM or proprietary formats The block internally manages a StreamSourceBlock for reading and a DecodeBinBlock for automatic format detection and decoding, presenting a simple interface with separate video and audio outputs ready for rendering or further processing. Implements the - (): Subtitle source block for text overlay and caption display from external subtitle files. Provides subtitle text stream generation from SRT, VTT, ASS, and other subtitle formats for video overlay, accessibility compliance, and multilingual content support in media playback and streaming applications. Implements the . Implements the . Implements the . - (): System audio source block for native audio capture device access across platforms. Provides unified audio recording from microphones, line-in devices, and system audio using platform-specific APIs (WASAPI, CoreAudio, ALSA, PulseAudio) for voice recording, audio streaming, and real-time audio processing applications. Implements the . Implements the . Implements the . - (): System video source block for native camera and video capture device access across platforms. Provides unified video capture from webcams, built-in cameras, and professional capture devices using platform-specific APIs (DirectShow, Media Foundation, V4L2, AVFoundation) for live streaming, video recording, and real-time video processing applications. Implements the . Implements the . Implements the . - (): Text overlay source block that generates video with text overlay for fallback scenarios. Implements the . - (): Universal demultiplexer block for extracting streams from any supported container format. This versatile block automatically detects and parses various container formats (MP4, MKV, AVI, WebM, etc.) and separates them into individual video, audio, subtitle, and metadata streams. Supports multiple streams of each type, automatic format detection, stream selection, and optimized handling based on MediaFileInfo. Essential for general-purpose media playback, transcoding workflows, multi-stream processing, and applications requiring format-agnostic demultiplexing capabilities. Provides comprehensive stream routing with optional null sinks. Implements the . Implements the . Implements the . - (): Universal source block with integrated decoders for comprehensive media file and stream playback. Provides automatic format detection, demuxing, and decoding for virtually any media format including local files, network streams, and URIs with support for video, audio, and subtitle tracks for complete media player functionality. Implements the . Implements the . Implements the . - (): Lightweight universal media source block with integrated format detection and decoding capabilities. This mini version of UniversalSourceBlock provides a streamlined implementation optimized for common media playback scenarios, offering automatic format detection, demuxing, and decoding in a single block. Designed for applications requiring simple media playback without the complexity of manual pipeline construction. Key features: - Automatic format detection for 100+ container and codec combinations - Integrated demuxing and decoding with hardware acceleration support - Dynamic pad creation based on available streams (video/audio/subtitle) - Support for local files, HTTP/HTTPS URLs, and custom URI schemes - Optimized memory usage for embedded and mobile applications - Selective stream rendering (video-only, audio-only, or both) - Built-in buffering and synchronization management Supported sources: - Local files: All major formats (MP4, AVI, MKV, MOV, WebM, etc.) - Network streams: HTTP, HTTPS, RTSP, RTMP, HLS, DASH - Device URIs: Custom schemes for platform-specific sources - Memory streams: Via custom URI protocols Common use cases: - Media player applications with basic playback needs - Video preview and thumbnail generation - Audio-only playback for music applications - Embedded systems with limited resources - Quick media format validation and analysis The "Mini" designation indicates this block uses simplified internal processing compared to the full UniversalSourceBlock, trading some advanced features for reduced complexity and resource usage while maintaining compatibility with most common media formats and use cases. Implements the . Implements the . Implements the . - (): Universal source block that automatically creates the necessary pipeline based on file content. - (): VAAPI H.264/AVC hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated H.264 video decoding through VA-API (Video Acceleration API), the standard Linux API for hardware video acceleration. Supports Intel, AMD, and NVIDIA GPUs with appropriate drivers (Intel Media Driver, Mesa RADV/RadeonSI, NVIDIA VDPAU-VA driver). Features include support for all H.264 profiles (Baseline, Main, High, High 10, High 4:2:2, High 4:4:4) up to Level 5.2, low CPU usage, high performance decoding up to 8K resolution, and automatic fallback to software decoding if hardware is unavailable. Essential for video players, streaming applications, video editors, and any Linux application requiring efficient H.264 video decoding with minimal CPU usage. Implements the . Implements the . Implements the . - (): VAAPI HEVC/H.265 hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated HEVC (High Efficiency Video Coding) decoding through VA-API, enabling efficient playback of H.265 content with minimal CPU usage. Supports Intel Gen7+ GPUs, AMD GCN+, and NVIDIA GPUs with appropriate drivers. Features include support for HEVC Main, Main 10 (10-bit), Main 12, Main 4:2:2 10, Main 4:4:4, and Main Still Picture profiles, HDR support (HDR10, HLG), resolutions up to 8K, and efficient decoding of modern streaming and UHD Blu-ray content. Essential for 4K/8K video players, streaming applications, video editors, and any Linux application requiring efficient HEVC decoding for next-generation video content. Implements the . Implements the . Implements the . - (): VAAPI JPEG hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated JPEG image decoding through VA-API, significantly improving performance for applications that process large volumes of JPEG images. Supports Intel, AMD, and NVIDIA GPUs with VA-API drivers. Features include hardware acceleration for baseline and progressive JPEG formats, support for various color spaces (YUV 4:2:0, 4:2:2, 4:4:4), high-resolution image decoding up to GPU limits, and efficient batch processing of JPEG streams. Essential for photo viewers, image galleries, video editors processing JPEG sequences, digital signage systems, and any Linux application requiring fast JPEG decoding with minimal CPU usage. Implements the . Implements the . Implements the . - (): VAAPI VC-1 hardware decoder block for Linux systems using Video Acceleration API. This block provides GPU-accelerated VC-1 video decoding through VA-API, enabling efficient playback of Windows Media Video (WMV) and VC-1 encoded content. VC-1 is Microsoft's video codec standard used in WMV9, WMV HD, Blu-ray discs, and Xbox content. Supports Intel, AMD, and NVIDIA GPUs with appropriate VA-API drivers. Features include support for VC-1 Simple, Main, and Advanced profiles, interlaced and progressive content, resolutions up to 1080p, and efficient decoding of WMV files and Blu-ray VC-1 streams. Essential for media players handling Windows Media content, Blu-ray playback applications, video converters, and any Linux application requiring VC-1/WMV9 decoding capability. Implements the . Implements the . Implements the . - (): VNC (Virtual Network Computing) source block for remote desktop access and screen sharing. Provides real-time screen capture from remote computers via RFB (Remote Framebuffer) protocol for remote assistance, system administration, and collaborative workflows with support for various VNC server implementations and authentication methods. Implements the . Implements the . Implements the . - (): Video mixer source block for combining multiple video sources into a single composite output. Provides real-time video mixing with positioning, scaling, alpha blending, and chroma key support for creating picture-in-picture effects, video walls, live production, and multi-stream compositing using CPU, OpenGL, or D3D11 acceleration. Implements the . Implements the . Implements the . - (): Virtual audio source block for synthetic audio generation and testing purposes. Provides programmable audio waveform generation including sine waves, square waves, white noise, and silence for audio testing, calibration, signal processing development, and placeholder audio in multimedia applications. Implements the . Implements the . Implements the . - (): A virtual video source block that generates synthetic video frames for testing and development purposes. This block creates a test video stream with customizable dimensions, frame rate, and patterns, useful for pipeline testing without requiring actual video files or capture devices. Implements the . Implements the . Implements the . --- # Class BarcodeDetectorBlock Link: api/VisioForge.Core.MediaBlocks.Special.BarcodeDetectorBlock.html # Class BarcodeDetectorBlock # Class BarcodeDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that detects and decodes barcodes from video frames in real-time. This block analyzes incoming video frames for various barcode formats including QR codes, DataMatrix, Code128, Code39, EAN-13, and other standard 1D/2D barcodes. Key features: - Real-time barcode detection and decoding from video streams - Support for multiple simultaneous barcode detection - Configurable operating modes (passthrough or sink) - Event-based notification when barcodes are detected - Minimal performance impact on video pipeline Common use cases: - QR code scanning in mobile applications - Inventory management systems with barcode scanning - Document processing with embedded barcodes - Access control systems using QR codes - Product tracking in retail/warehouse environments Technical details: - Processes video frames using computer vision algorithms - Can operate in InputOutput mode (passthrough) or Input mode (sink) - Raises events with decoded barcode data and metadata - Requires appropriate barcode detection libraries in the GStreamer plugin set Implements the . Implements the . Implements the . ```csharp public class BarcodeDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### BarcodeDetectorBlock(BarcodeDetectorMode) Initializes a new instance of the class with the specified operating mode. ```csharp public BarcodeDetectorBlock(BarcodeDetectorMode mode) ``` #### Parameters Parameters: - mode (BarcodeDetectorMode): The detection mode determining whether to pass through video (InputOutput) or act as a sink (Input). ## Properties ### Input Gets the primary input pad for receiving video frames to analyze for barcodes. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single video input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether to synchronize the video stream timing. When true, maintains proper playback timing for real-time applications. When false, processes frames as fast as possible for offline analysis. Usually set to true for live playback/capture and false for batch processing. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ### Mode Gets or sets the operating mode of the barcode detector. InputOutput mode passes video through while detecting barcodes. Input mode acts as a sink and only processes barcodes without outputting video. ```csharp public BarcodeDetectorMode Mode { get; set; } ``` #### Property Value Parameters: - (BarcodeDetectorMode): ### Output Gets the primary output pad that passes through video frames after barcode detection. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. Contains one pad in InputOutput mode, empty in Input mode. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this barcode detector block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the barcode detector block within the media pipeline. Creates the GStreamer elements, configures detection parameters, and establishes pad connections. This method is called automatically when the pipeline is being constructed. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if initialization failed. ### CallBarcodeDetected(BarcodeDetectorEventArgs) Raises the OnBarcodeDetected event with the specified barcode detection results. This method is called internally when the detector identifies barcodes in a frame. ```csharp public void CallBarcodeDetected(BarcodeDetectorEventArgs args) ``` #### Parameters Parameters: - args (BarcodeDetectorEventArgs): The instance containing the decoded barcode data, type, and metadata. ### CleanUp() Performs cleanup of internal resources and GStreamer elements. Releases the barcode detector element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the barcode detector element. ### GetElement() Gets the underlying GStreamer element for direct access to native properties. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer barcode detector element. ### IsAvailable() Determines whether the barcode detector functionality is available in the current environment. This checks if the required GStreamer barcode detection plugins are installed and accessible. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if barcode detection plugins are available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. This internal method establishes the connection to the parent pipeline and provides access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ### OnBarcodeDetected Occurs when one or more barcodes are detected in a video frame. The event provides decoded barcode data, type, position, and confidence information. This event is raised asynchronously as barcodes are detected in the video stream. ```csharp public event EventHandler OnBarcodeDetected ``` #### Event Type Parameters: - (EventHandler < BarcodeDetectorEventArgs >): ## See Also --- # Class BufferEventArgs Link: api/VisioForge.Core.MediaBlocks.Special.BufferEventArgs.html # Class BufferEventArgs # Class BufferEventArgs **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Event arguments for buffer processing events. ```csharp public class BufferEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Constructors ### BufferEventArgs(Buffer, Caps) Initializes a new instance of the class. ```csharp public BufferEventArgs(Buffer buffer, Caps caps) ``` #### Parameters Parameters: - buffer (Buffer): The buffer being processed. - caps (Caps): The caps associated with the buffer. ## Properties ### Buffer Gets the buffer being processed. ```csharp public Buffer Buffer { get; } ``` #### Property Value Parameters: - (Buffer): ### Caps Gets the caps associated with the buffer. ```csharp public Caps Caps { get; } ``` #### Property Value Parameters: - (Caps): --- # Class CustomColorspaceXBlock Link: api/VisioForge.Core.MediaBlocks.Special.CustomColorspaceXBlock.html # Class CustomColorspaceXBlock # Class CustomColorspaceXBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A media block that converts RGB video frames to YV12 format. This block uses a custom GStreamer plugin that implements RGB to Y'CbCr conversion with 4:2:0 chroma subsampling in C#. ```csharp public class CustomColorspaceXBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CustomColorspaceXBlock() Initializes a new instance of the class. Converts RGB video to YV12 format. ```csharp public CustomColorspaceXBlock() ``` ### CustomColorspaceXBlock(int, int, string) Initializes a new instance of the class with specified dimensions. ```csharp public CustomColorspaceXBlock(int width, int height, string frameRate = null) ``` #### Parameters Parameters: - width (int): The video width (must be even). - height (int): The video height (must be even). - frameRate (string): Optional frame rate (e.g., "30/1"). ## Properties ### FrameRate Gets or sets the frame rate (e.g., "30/1" for 30 fps). Optional - if not set, will be negotiated automatically. ```csharp public string FrameRate { get; set; } ``` #### Property Value Parameters: - (string): ### Height Gets or sets the video height. Optional - if not set, will be negotiated automatically. Must be even for YV12 format. ```csharp public int? Height { get; set; } ``` #### Property Value Parameters: - (int ?): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### Width Gets or sets the video width. Optional - if not set, will be negotiated automatically. Must be even for YV12 format. ```csharp public int? Width { get; set; } ``` #### Property Value Parameters: - (int ?): ## Methods ### Build() Builds the media block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing, false if finalizing. ### GetInputCaps() Gets the input caps string for RGB format. ```csharp public string GetInputCaps() ``` #### Returns Parameters: - (string): The input caps string. ### GetOutputCaps() Gets the output caps string for YV12 format. ```csharp public string GetOutputCaps() ``` #### Returns Parameters: - (string): The output caps string. ### IMediaBlockInternals.Build() Builds the media block by creating and initializing the underlying GStreamer elements. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if construction failed. ### IMediaBlockInternals.CleanUp() Performs cleanup of resources and resets the converter to uninitialized state. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper for this colorspace converter. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the colorspace converter. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element for this colorspace converter. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element performing colorspace conversion. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this colorspace converter block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media blocks pipeline that manages this converter. --- # Class CustomMediaBlock Link: api/VisioForge.Core.MediaBlocks.Special.CustomMediaBlock.html # Class CustomMediaBlock # Class CustomMediaBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A flexible media block that allows integration of any GStreamer element or bin into the MediaBlocks pipeline. This block serves as a bridge between the MediaBlocks abstraction and raw GStreamer elements, enabling use of specialized or custom GStreamer components not wrapped by standard blocks. Key features: - Support for any GStreamer element by name or bin description - Dynamic pad configuration with automatic or manual pad handling - Property setting through key-value parameters - Support for elements with dynamic pads (pad-added event) - Optional caps filtering on output pads - Property introspection for debugging Common use cases: - Integrating third-party GStreamer plugins - Using experimental or platform-specific elements - Creating complex processing chains with bin descriptions - Prototyping new functionality before creating dedicated blocks - Accessing GStreamer elements not yet wrapped in MediaBlocks Technical details: - Can create elements from factory names or parse bin descriptions - Supports multiple input and output pads with configurable media types - Handles dynamic pad creation for elements like demuxers - Provides property mapping for various data types (int, float, string, enum) - Uses identity elements for dynamic pad connection management Implements the . Implements the . Implements the . ```csharp public class CustomMediaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CustomMediaBlock(CustomMediaBlockSettings) Initializes a new instance of the class with the specified configuration. ```csharp public CustomMediaBlock(CustomMediaBlockSettings settings) ``` #### Parameters Parameters: - settings (CustomMediaBlockSettings): The settings defining the GStreamer element name, parameters, and pad configuration. ## Properties ### Input Gets the primary input pad of the custom block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads configured for this custom block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad of the custom block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads configured for this custom block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for custom blocks. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and configures the custom GStreamer element within the media pipeline. Creates the element from name or bin description, sets properties, configures pads, and handles dynamic pad scenarios if enabled. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the element was successfully created and configured; false if initialization failed. ### CleanUp() Performs cleanup of the custom element and associated resources. Removes event handlers, disposes of the GStreamer element and identity helpers. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core element wrapper. Returns null as custom blocks don't use BaseElement wrappers. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for custom blocks. ### GetElement() Gets the underlying GStreamer element created from the configuration. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element or bin. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this custom block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ### OnElementAdded Occurs after the GStreamer element has been created and added to the pipeline. This event allows for additional configuration or property setting on the raw element. ```csharp public event EventHandler OnElementAdded ``` #### Event Type Parameters: - (EventHandler < Element >): ## See Also --- # Class CustomTransformBlock Link: api/VisioForge.Core.MediaBlocks.Special.CustomTransformBlock.html # Class CustomTransformBlock # Class CustomTransformBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A media block that allows custom transformation with independent input/output caps. Users receive input samples via event and can push output samples when ready. ```csharp public class CustomTransformBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CustomTransformBlock(string, string, bool) Initializes a new instance of the class. ```csharp public CustomTransformBlock(string inputCaps = null, string outputCaps = null, bool passthroughOnEmpty = false) ``` #### Parameters Parameters: - inputCaps (string): Optional input caps constraint. If null, any caps will be accepted. - outputCaps (string): Optional output caps constraint. If null, any caps will be produced. - passthroughOnEmpty (bool): If true, input will be passed through when no output is available. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the media block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CreateSample(Buffer, Caps) Creates a new sample with the specified buffer and caps. This is a helper method for creating samples to push. ```csharp public static Sample CreateSample(Buffer buffer, Caps caps) ``` #### Parameters Parameters: - buffer (Buffer): The buffer for the sample. - caps (Caps): The caps for the sample. #### Returns Parameters: - (Sample): A new sample instance. ### CreateSample(Buffer, string) Creates a new sample with the specified buffer using the output caps string. This is a helper method for creating samples to push. ```csharp public static Sample CreateSample(Buffer buffer, string capsString) ``` #### Parameters Parameters: - buffer (Buffer): The buffer for the sample. - capsString (string): The caps string for the sample. #### Returns Parameters: - (Sample): A new sample instance. ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing, false if finalizing. ### PushBuffer(Buffer) Pushes a new buffer to the output with the current output caps. ```csharp public void PushBuffer(Buffer buffer) ``` #### Parameters Parameters: - buffer (Buffer): The buffer to push to output. ### PushSample(Sample) Pushes a new sample to the output. ```csharp public void PushSample(Sample sample) ``` #### Parameters Parameters: - sample (Sample): The sample to push to output. ### IMediaBlockInternals.Build() Builds the media block by creating and initializing the underlying GStreamer elements. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if construction failed. ### IMediaBlockInternals.CleanUp() Performs cleanup of resources and resets the transform to uninitialized state. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper for this custom transform. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the custom transform. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element for this custom transform. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element performing custom transformation. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this custom transform block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media blocks pipeline that manages this transform. ### OnSampleReceived This event occurs when a new sample is received on the input. ```csharp public event EventHandler OnSampleReceived ``` #### Event Type Parameters: - (EventHandler < SampleReceivedEventArgs >): --- # Class CustomVideoEncoderBlock Link: api/VisioForge.Core.MediaBlocks.Special.CustomVideoEncoderBlock.html # Class CustomVideoEncoderBlock # Class CustomVideoEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Custom video encoder block for integrating third-party or specialized video encoders into the media pipeline. This block provides a flexible framework for adding GStreamer video encoder elements that are not directly supported by the SDK, enabling integration of proprietary codecs, experimental encoders, or platform-specific encoding solutions. Features automatic color space conversion to I420 format and dynamic property configuration through a key-value interface. Key features: - Integration of any GStreamer-compatible video encoder - Automatic video format conversion to I420 - Dynamic property configuration via dictionary - Support for hardware and software encoders - Custom codec parameter tuning - Plugin-based encoder extensions Common use cases: - Proprietary codec integration (custom H.264 variants) - Hardware-specific encoders (vendor SDKs) - Experimental codec testing (AV2, VVC) - Legacy format support (RealVideo, Indeo) - Specialized compression (lossless, HDR) - Custom streaming encoders The block handles the complexity of GStreamer element creation and pipeline integration while providing a simple configuration interface for encoder-specific parameters. Implements the . Implements the . Implements the . ```csharp public class CustomVideoEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CustomVideoEncoderBlock(CustomVideoEncoderSettings) Initializes a new instance of the class. Creates a custom video encoder block with the specified GStreamer element name and properties. ```csharp public CustomVideoEncoderBlock(CustomVideoEncoderSettings settings) ``` #### Parameters Parameters: - settings (CustomVideoEncoderSettings): The custom encoder settings containing the GStreamer element name and configuration properties. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for encoded video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for the custom video encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the custom video encoder pipeline. Creates the specified GStreamer encoder element, configures it with custom properties, and establishes connections with automatic I420 format conversion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the custom encoder. Disposes the encoder element and video converter. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element. Not applicable for custom encoder blocks. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always null as custom encoders don't use BaseElement wrappers. ### GetElement() Gets the underlying custom GStreamer encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element instance representing the custom video encoder. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this custom encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class DataMatrixDecoder Link: api/VisioForge.Core.MediaBlocks.Special.DataMatrixDecoder.html # Class DataMatrixDecoder # Class DataMatrixDecoder **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides asynchronous DataMatrix decoding capabilities for video frames using the LibDMTX library. This class processes video frames to detect and decode DataMatrix 2D barcodes with configurable frame skipping and processing synchronization to optimize CPU usage. ```csharp public class DataMatrixDecoder : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The decoder supports: - Asynchronous frame processing to avoid blocking the video pipeline - Frame skipping to reduce CPU load (analyze every Nth frame) - Automatic frame dropping if processing is still in progress - Multiple DataMatrix detection in a single frame - Configurable timeout for decode operations ## Constructors ### DataMatrixDecoder() Initializes a new instance of the class. ```csharp public DataMatrixDecoder() ``` ## Properties ### DecodeTimeoutMs Gets or sets the timeout in milliseconds for each decode operation. Default is 500ms. Set to -1 for no timeout. ```csharp public int DecodeTimeoutMs { get; set; } ``` #### Property Value Parameters: - (int): ### EnableDebugLogging Gets or sets a value indicating whether to enable debug logging. ```csharp public bool EnableDebugLogging { get; set; } ``` #### Property Value Parameters: - (bool): ### ExpectedSize Gets or sets the expected DataMatrix size for optimization. Default is SymbolShapeAuto for automatic detection. ```csharp public CodeSize ExpectedSize { get; set; } ``` #### Property Value Parameters: - (CodeSize): ### FrameSkip Gets or sets the number of frames to skip between processing. Default is 0 (process every frame). Set to higher values to reduce CPU usage. For example, setting to 2 will process every 3rd frame. ```csharp public int FrameSkip { get; set; } ``` #### Property Value Parameters: - (int): ### MaxCodes Gets or sets the maximum number of DataMatrix codes to detect per frame. Default is 1. Set to -1 for unlimited. ```csharp public int MaxCodes { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose() Releases all resources used by the DataMatrixDecoder. ```csharp public void Dispose() ``` ### Dispose(bool) Releases the unmanaged resources used by the DataMatrixDecoder and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### ProcessFrameAsync(VideoFrameX, TimeSpan) Processes a video frame to detect and decode DataMatrix codes. This method runs asynchronously and will skip frames if processing is already in progress. ```csharp public Task ProcessFrameAsync(VideoFrameX frame, TimeSpan timestamp) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to process. - timestamp (TimeSpan): The timestamp of the frame in the video stream. #### Returns Parameters: - (Task): A task representing the asynchronous decode operation. ### OnDataMatrixDetected Occurs when one or more DataMatrix codes are detected in a frame. ```csharp public event EventHandler OnDataMatrixDetected ``` #### Event Type Parameters: - (EventHandler < DataMatrixDecoderEventArgs >): --- # Class DataMatrixDecoderBlock Link: api/VisioForge.Core.MediaBlocks.Special.DataMatrixDecoderBlock.html # Class DataMatrixDecoderBlock # Class DataMatrixDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that detects and decodes DataMatrix 2D barcodes from video frames in real-time. This block analyzes incoming video frames for DataMatrix codes using the LibDMTX library with optimized frame processing, configurable frame skipping, and asynchronous decoding to minimize performance impact on the video pipeline. Key features: - Real-time DataMatrix detection and decoding from video streams - Asynchronous processing with automatic frame dropping if busy - Configurable frame skip to reduce CPU usage (analyze every Nth frame) - Support for multiple DataMatrix codes in a single frame - Event-based notification when DataMatrix codes are detected - Support for various video formats (RGB, BGR, RGBA, BGRA) - Configurable decode timeout and symbol size hints Common use cases: - Industrial tracking with DataMatrix codes on products - Document processing with embedded DataMatrix codes - Inventory management systems - Quality control and verification systems - Medical device and pharmaceutical tracking Technical details: - Uses LibDMTX for DataMatrix detection and decoding - Processes frames asynchronously to avoid blocking the pipeline - Automatically converts video formats to RGB for LibDMTX - Thread-safe with proper synchronization - Supports both passthrough and sink modes Implements the . Implements the . Implements the . ```csharp public class DataMatrixDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DataMatrixDecoderBlock(bool, VideoFormatX) Initializes a new instance of the class. ```csharp public DataMatrixDecoderBlock(bool passthrough = true, VideoFormatX videoFormat = VideoFormatX.RGBA) ``` #### Parameters Parameters: - passthrough (bool): if set to true, operates in passthrough mode; otherwise acts as a sink. - videoFormat (VideoFormatX): The pixel format for frame processing (default: RGBA). ## Properties ### DecodeTimeoutMs Gets or sets the timeout in milliseconds for each decode operation. Default is 500ms. Set to -1 for no timeout. ```csharp public int DecodeTimeoutMs { get; set; } ``` #### Property Value Parameters: - (int): ### EnableDebugLogging Gets or sets a value indicating whether to enable debug logging for the decoder. ```csharp public bool EnableDebugLogging { get; set; } ``` #### Property Value Parameters: - (bool): ### ExpectedSize Gets or sets the expected DataMatrix size for optimization. Default is SymbolShapeAuto for automatic detection. ```csharp public CodeSize ExpectedSize { get; set; } ``` #### Property Value Parameters: - (CodeSize): ### FrameSkip Gets or sets the number of frames to skip between processing. Default is 0 (process every frame). Higher values reduce CPU usage. For example, setting to 2 will process every 3rd frame. ```csharp public int FrameSkip { get; set; } ``` #### Property Value Parameters: - (int): ### Input Gets the primary input pad for receiving video frames to analyze for DataMatrix codes. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single video input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MaxCodes Gets or sets the maximum number of DataMatrix codes to detect per frame. Default is 1. Set to -1 for unlimited. ```csharp public int MaxCodes { get; set; } ``` #### Property Value Parameters: - (int): ### Output Gets the primary output pad that passes through video frames after DataMatrix detection. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. Contains one pad in passthrough mode, empty in sink mode. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Passthrough Gets or sets a value indicating whether the block operates in passthrough mode. When true, video frames are passed through after analysis. When false, the block acts as a sink and consumes the frames. ```csharp public bool Passthrough { get; set; } ``` #### Property Value Parameters: - (bool): ### Type Gets the media block type identifier for this DataMatrix decoder block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoFormat Gets or sets the pixel format used for frame capture and processing. Default is RGBA for best compatibility with LibDMTX. ```csharp public VideoFormatX VideoFormat { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ## Methods ### Build() Builds and initializes the DataMatrix decoder block within the media pipeline. Creates the video sample grabber, configures the decoder, and establishes pad connections. This method is called automatically when the pipeline is being constructed. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and configured; false if initialization failed. ### CleanUp() Performs cleanup of internal resources and elements. Releases the decoder, sample grabber, and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the sample grabber element. ### GetElement() Gets the underlying GStreamer element for direct access to native properties. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer sample grabber element. ### IsAvailable() Determines whether the DataMatrix decoder functionality is available in the current environment. This checks if LibDMTX is properly loaded and the video sample grabber is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DataMatrix decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this block. This internal method establishes the connection to the parent pipeline and provides access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ### OnDataMatrixDetected Occurs when one or more DataMatrix codes are detected in a video frame. The event provides decoded text, symbol information, position, and metadata. This event is raised asynchronously as DataMatrix codes are detected in the video stream. ```csharp public event EventHandler OnDataMatrixDetected ``` #### Event Type Parameters: - (EventHandler < DataMatrixDecoderEventArgs >): ## See Also --- # Class DataProcessorBlock Link: api/VisioForge.Core.MediaBlocks.Special.DataProcessorBlock.html # Class DataProcessorBlock # Class DataProcessorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A media block that allows custom in-place processing of audio/video buffers. Inherit from this class and override the ProcessBuffer method to implement custom processing logic. ```csharp public class DataProcessorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DataProcessorBlock(string) Initializes a new instance of the class. ```csharp public DataProcessorBlock(string caps = null) ``` #### Parameters Parameters: - caps (string): Optional caps constraint for both input and output. If null, default caps will be used. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the media block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing, false if finalizing. ### ProcessBuffer(Buffer, Caps) Virtual method for processing buffer data. Override this method to implement custom buffer processing. This method performs in-place processing - the buffer is modified directly. ```csharp protected virtual FlowReturn ProcessBuffer(Buffer buffer, Caps caps) ``` #### Parameters Parameters: - buffer (Buffer): The buffer to process in-place - caps (Caps): The negotiated caps for this buffer #### Returns Parameters: - (FlowReturn): FlowReturn indicating success or failure ### IMediaBlockInternals.Build() Builds the media block by creating and initializing the underlying GStreamer elements. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if construction failed. ### IMediaBlockInternals.CleanUp() Performs cleanup of resources and resets the processor to uninitialized state. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper for this data processor. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the data processor. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element for this data processor. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element performing data processing. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this data processor block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media blocks pipeline that manages this processor. ### OnBuffer Gets or sets the event handler for buffer processing. This event is fired for each buffer if ProcessBuffer is not overridden. ```csharp public event EventHandler OnBuffer ``` #### Event Type Parameters: - (EventHandler < BufferEventArgs >): --- # Class DataSampleGrabberBlock Link: api/VisioForge.Core.MediaBlocks.Special.DataSampleGrabberBlock.html # Class DataSampleGrabberBlock # Class DataSampleGrabberBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that intercepts and provides access to raw media data frames passing through the pipeline. This block acts as a transparent passthrough while capturing frame data for analysis, processing, or monitoring. Unlike video/audio-specific grabbers, this block can handle any media type including metadata streams. Key features: - Zero-copy frame access with minimal performance impact - Support for any media type (video, audio, metadata, subtitles) - Passthrough design maintains pipeline flow - Event-based notification for each frame - Access to raw buffer data and timing information - Configurable media type filtering Common use cases: - Capturing metadata streams from specialized sources - Monitoring data flow for debugging purposes - Extracting timing information from media streams - Analyzing proprietary data formats - Building custom analytics on media streams - Implementing data stream validators Technical details: - Uses GStreamer pad probes for non-invasive data access - Provides frame data through event callbacks - Maintains original buffer timestamps and metadata - Can be configured for specific media types or auto-detect - Thread-safe frame delivery via events Implements the . Implements the . Implements the . ```csharp public class DataSampleGrabberBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DataSampleGrabberBlock() Initializes a new instance of the class with automatic media type detection. The grabber will accept and pass through any media type. ```csharp public DataSampleGrabberBlock() ``` ### DataSampleGrabberBlock(MediaBlockPadMediaType) Initializes a new instance of the class with a specific media type filter. ```csharp public DataSampleGrabberBlock(MediaBlockPadMediaType padType) ``` #### Parameters Parameters: - padType (MediaBlockPadMediaType): The media type to accept (Video, Audio, Auto, etc.). Only frames of this type will be processed. ## Properties ### Input Gets the input pad for receiving media data frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for data interception. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that passes through the intercepted data frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single passthrough output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this data sample grabber. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the data sample grabber within the media pipeline. Sets up the frame interception mechanism and configures the callback for data delivery. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the grabber was successfully initialized; false if setup failed. ### CleanUp() Performs cleanup of the data grabber resources. Releases the GStreamer element and removes frame interception callbacks. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the data grabber element. ### GetElement() Gets the underlying GStreamer element for direct property access. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer data grabber element. ### IsAvailable() Determines whether the data sample grabber functionality is available in the current environment. This checks if the required GStreamer components for data interception are installed. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if data grabbing functionality is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this data grabber block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ### OnDataFrame Occurs when a new data frame passes through the grabber. The event provides access to the raw frame data, format information, and timing metadata. This event is raised from the streaming thread and handlers should process data quickly. ```csharp public event EventHandler OnDataFrame ``` #### Event Type Parameters: - (EventHandler < DataFrameEventArgs >): ## See Also --- # Class DebugTimestampBlock Link: api/VisioForge.Core.MediaBlocks.Special.DebugTimestampBlock.html # Class DebugTimestampBlock # Class DebugTimestampBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A debugging utility block that logs and optionally overlays timestamp information on media streams. This block intercepts media frames to display Decode Time Stamp (DTS) and Presentation Time Stamp (PTS) values, which are crucial for diagnosing synchronization and timing issues in media pipelines. Key features: - Logs DTS and PTS values to the debug console with custom labels - Optional visual overlay of timestamp information on video frames - Passthrough design with minimal performance impact - Configurable logger name for identifying different streams - Support for any media type (video, audio, etc.) - Platform-specific availability (not available on iOS) Common use cases: - Debugging A/V synchronization issues - Analyzing timestamp discontinuities in streams - Verifying proper timestamp generation in encoders - Troubleshooting playback timing problems - Educational visualization of media timing concepts - Quality assurance for streaming applications Technical details: - DTS represents when a frame should be decoded - PTS represents when a frame should be presented - Can combine with TextOverlay for visual timestamp display - Timestamps are logged in nanoseconds (GStreamer format) - Useful for identifying timestamp gaps or jumps Implements the . Implements the . Implements the . ```csharp public class DebugTimestampBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DebugTimestampBlock(string, TextOverlaySettings) Initializes a new instance of the class with optional visual overlay. ```csharp public DebugTimestampBlock(string loggerName = "DebugTimestamp", TextOverlaySettings additionalTimeOverlay = null) ``` #### Parameters Parameters: - loggerName (string): Custom name to identify this stream in debug logs. Default is "DebugTimestamp". - additionalTimeOverlay (TextOverlaySettings): Optional configuration for visual timestamp overlay on video frames. When provided, timestamps will be rendered on the video in addition to being logged. ## Properties ### Input Gets the input pad for receiving media streams to analyze. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that passes through the analyzed media stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single passthrough output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this debug timestamp block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the debug timestamp block within the media pipeline. Creates the timestamp logger and optionally sets up visual overlay for video streams. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of the debug timestamp element and associated resources. Releases the GStreamer element and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core element wrapper. Returns null as this is a specialized debug element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this debug block. ### GetElement() Gets the underlying GStreamer debug timestamp element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element that performs timestamp logging. ### IsAvailable() Determines whether the debug timestamp functionality is available in the current environment. This block is always available when the platform supports it (not iOS). ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): Always returns true on supported platforms. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this debug block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class DecodeBinBlock Link: api/VisioForge.Core.MediaBlocks.Special.DecodeBinBlock.html # Class DecodeBinBlock # Class DecodeBinBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll An intelligent decoding block that automatically detects and decodes various media formats into raw streams. DecodeBin analyzes incoming media data, identifies the format and codecs, and constructs an appropriate decoding pipeline to produce raw video, audio, and subtitle outputs. Key features: - Automatic format detection and codec selection - Support for virtually any media format GStreamer can decode - Dynamic pad creation for discovered streams - Separate outputs for video, audio, and subtitle streams - Built-in format conversion for consistent output - Configurable stream selection (video/audio/subtitle) Common use cases: - Decoding media files with unknown or variable formats - Processing network streams with dynamic content - Building flexible media players that handle any format - Extracting raw streams from container formats - Media analysis and transcoding pipelines - Multi-stream processing applications Technical details: - Uses GStreamer's decodebin element for intelligent decoding - Automatically constructs decoder chains based on stream caps - Includes queue elements for each stream to handle threading - Video output includes format conversion to standard formats - Audio output can optionally include format conversion - Handles dynamic stream addition during playback Implements the . Implements the . Implements the . ```csharp public class DecodeBinBlock : SourceMediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecodeBinBlock(bool, bool, bool) Initializes a new instance of the class with specified stream types. ```csharp public DecodeBinBlock(bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - renderVideo (bool): if set to true, decodes and outputs video streams. Default is true. - renderAudio (bool): if set to true, decodes and outputs audio streams. Default is true. - renderSubtitle (bool): if set to true, decodes and outputs subtitle streams. Default is false. ## Properties ### AudioOutput Gets the audio output pad providing decoded raw audio samples. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### DisableAudioConverter Gets or sets a value indicating whether to disable automatic audio format conversion. When true, audio is passed through without format conversion, preserving the decoded format. ```csharp public bool DisableAudioConverter { get; set; } ``` #### Property Value Parameters: - (bool): ### Input Gets the input pad for receiving encoded media data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for encoded media. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad, prioritizing video, then audio, then subtitle. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all configured output pads based on enabled stream types. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutput Gets the subtitle output pad providing decoded subtitle data. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the media block type identifier for this decode bin. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad providing decoded raw video frames. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes the decode bin within the media pipeline. Sets up the decodebin element, creates queues and converters for each stream type, and configures dynamic pad handling for stream discovery. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decode bin was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all decode bin resources including queues and converters. Releases all GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the decode bin. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the decodebin element. ### GetElement() Gets the underlying GStreamer decodebin element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer decodebin element. ### IsAvailable() Determines whether the decode bin functionality is available in the current environment. This checks if the required GStreamer decodebin element is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if decodebin is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this decode bin block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class DecryptorBlock Link: api/VisioForge.Core.MediaBlocks.Special.DecryptorBlock.html # Class DecryptorBlock # Class DecryptorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that decrypts AES-encrypted media streams in real-time. This block processes encrypted media data and outputs the decrypted content, enabling secure media distribution and playback of protected content. Key features: - AES decryption with configurable key sizes (128, 192, 256 bits) - Support for various AES modes (ECB, CBC, CFB, OFB, CTR, GCM) - Real-time stream decryption with minimal latency - Transparent passthrough design - Compatible with any media type (video, audio, data) - Configurable initialization vectors and padding Common use cases: - Playback of DRM-protected content - Secure media streaming applications - Decrypting downloaded encrypted media files - Building secure media distribution systems - Implementing custom content protection schemes - Compliance with content security requirements Technical details: - Uses hardware-accelerated AES when available - Maintains stream timing and metadata - Zero-copy operation where possible - Thread-safe decryption processing - Compatible with standard AES implementations - Supports streaming and file-based media Implements the . Implements the . Implements the . ```csharp public class DecryptorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DecryptorBlock(EncryptorDecryptorSettings) Initializes a new instance of the class with specified decryption settings. ```csharp public DecryptorBlock(EncryptorDecryptorSettings settings) ``` #### Parameters Parameters: - settings (EncryptorDecryptorSettings): The decryption configuration including AES key, mode, IV, and other parameters. ## Properties ### Input Gets the input pad for receiving encrypted media streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for encrypted data. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides the decrypted media stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output for decrypted data. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the encryption/decryption settings including key, mode, and parameters. These settings must match the encryption settings used to encrypt the media. ```csharp public EncryptorDecryptorSettings Settings { get; set; } ``` #### Property Value Parameters: - (EncryptorDecryptorSettings): ### Type Gets the media block type identifier for this decryptor. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the AES decryptor block within the media pipeline. Configures the decryption parameters and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decryptor was successfully initialized; false if setup failed. ### CleanUp() Performs cleanup of the AES decryptor resources. Releases the GStreamer element and clears sensitive key material. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the AES decryptor. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the AES decryptor element. ### GetElement() Gets the underlying GStreamer AES decryptor element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing AES decryption. ### IsAvailable() Determines whether the AES decryption functionality is available in the current environment. This checks if the required GStreamer AES decryption plugins are installed. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if AES decryption is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this decryptor block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class DecryptorPlayerBlock Link: api/VisioForge.Core.MediaBlocks.Special.DecryptorPlayerBlock.html # Class DecryptorPlayerBlock # Class DecryptorPlayerBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides a complete media playback solution for encrypted files by combining decryption, demuxing, and decoding. ```csharp public class DecryptorPlayerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Check if decryption is available
if (!DecryptorPlayerBlock.IsAvailable())
{
    throw new NotSupportedException("Decryption support not available");
}

// Create a decryptor player for an encrypted video file
var decryptorPlayer = new DecryptorPlayerBlock(
    pipeline,
    "/path/to/encrypted/video.enc",
    "your-encryption-key",
    "initialization-vector",
    renderVideo: true,
    renderAudio: true,
    renderSubtitle: false);

// Connect outputs to renderers
pipeline.Connect(decryptorPlayer.VideoOutput, videoRenderer.Input);
pipeline.Connect(decryptorPlayer.AudioOutput, audioRenderer.Input);

// Start playback
await pipeline.StartAsync();
## Remarks

The is a composite block that integrates multiple components to handle encrypted media playback. It automatically chains together file reading, decryption, queuing, and decoding operations to produce ready-to-render audio, video, and subtitle streams.

This block is particularly useful for:

  • Playing DRM-protected or encrypted media files
  • Secure media playback applications
  • Content protection systems
  • Encrypted video streaming solutions

The block internally manages a pipeline consisting of:

  1. BasicFileSourceBlock for reading the encrypted file
  2. DecryptorBlock for decrypting the content
  3. QueueBlock for buffering
  4. DecodeBinBlock for demuxing and decoding

Platform Requirements: Requires the decryption plugin to be available in your GStreamer installation. Use to verify support before creating instances.

## Constructors ### DecryptorPlayerBlock(MediaBlocksPipeline, string, string, string, bool, bool, bool) Initializes a new instance of the class. ```csharp public DecryptorPlayerBlock(MediaBlocksPipeline pipeline, string filename, string key, string iv, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline to which this block belongs. - filename (string): The path to the encrypted media file to play. - key (string): The encryption key used to decrypt the content. - iv (string): The initialization vector (IV) for the encryption algorithm. - renderVideo (bool): Whether to enable video stream output. Default is true. - renderAudio (bool): Whether to enable audio stream output. Default is true. - renderSubtitle (bool): Whether to enable subtitle stream output. Default is false. #### Remarks

The constructor automatically creates and connects the internal pipeline components. If any connection fails, error messages are logged to the pipeline context.

The encryption parameters must match those used when the file was encrypted. Incorrect parameters will result in playback failure or corrupted output.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when pipeline, filename, key, or iv is null. ## Properties ### AudioOutput Gets the audio output pad that provides decoded audio samples. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): #### Remarks This pad is only available when renderAudio was set to true during construction. Connect this to an audio renderer or further processing blocks. ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SubtitleOutput Gets the subtitle output pad that provides decoded subtitle data. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): #### Remarks This pad is only available when renderSubtitle was set to true during construction. Connect this to a subtitle renderer or overlay block. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the video output pad that provides decoded video frames. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): #### Remarks This pad is only available when renderVideo was set to true during construction. Connect this to a video renderer or further processing blocks. ## Methods ### Build() Builds the internal components of the decryptor player block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if all components were successfully built; otherwise, false. #### Remarks

This method is called automatically by the pipeline during initialization. It builds all internal components (source, decryptor, queue, and decoder) in sequence.

The method is idempotent - calling it multiple times has no effect after the first successful build. If any component fails to build, the entire operation fails and returns false.

### CleanUp() Performs cleanup of all internal components and resources. ```csharp public void CleanUp() ``` #### Remarks

This method disposes of all internal blocks in reverse order of their creation: DecodeBin, BasicFileSource, Queue, and Decryptor.

After cleanup, the block cannot be used again and must be recreated if needed. This method is called automatically during disposal.

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core wrapper element for this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null as this is a composite block without a single core element. #### Remarks Composite blocks that manage multiple internal elements typically return null as they don't have a single representative core element. ### GetElement() Gets the primary GStreamer element of this block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The file source element, which is the entry point of the internal pipeline. #### Remarks For composite blocks like this, the returned element is typically the first element in the internal chain, which in this case is the file source. ### IsAvailable() Determines whether the decryption functionality required by this block is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if decryption support is available; otherwise, false. #### Remarks

This method checks for the availability of the underlying decryption plugin in the GStreamer installation. Always call this method before attempting to create instances of .

Availability depends on:

  • Correct GStreamer plugins being installed
  • Proper NuGet SDK redistribution packages included in your project
  • Platform-specific dependencies being met

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class EncryptorBlock Link: api/VisioForge.Core.MediaBlocks.Special.EncryptorBlock.html # Class EncryptorBlock # Class EncryptorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that encrypts media streams using AES encryption in real-time. This block processes unencrypted media data and outputs encrypted content, enabling secure media storage and transmission for content protection. Key features: - AES encryption with configurable key sizes (128, 192, 256 bits) - Support for various AES modes (ECB, CBC, CFB, OFB, CTR, GCM) - Real-time stream encryption with minimal latency - Transparent passthrough design - Compatible with any media type (video, audio, data) - Configurable initialization vectors and padding Common use cases: - Creating DRM-protected content for secure distribution - Encrypting media files before storage or transmission - Building secure streaming applications - Implementing custom content protection systems - Protecting sensitive video/audio recordings - Compliance with data protection regulations Technical details: - Uses hardware-accelerated AES when available - Preserves stream timing and metadata - Zero-copy operation where possible - Thread-safe encryption processing - Compatible with standard AES implementations - Pairs with DecryptorBlock for round-trip encryption Implements the . Implements the . Implements the . ```csharp public class EncryptorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### EncryptorBlock(EncryptorDecryptorSettings) Initializes a new instance of the class with specified encryption settings. ```csharp public EncryptorBlock(EncryptorDecryptorSettings settings) ``` #### Parameters Parameters: - settings (EncryptorDecryptorSettings): The encryption configuration including AES key, mode, IV, and other parameters. ## Properties ### Input Gets the input pad for receiving unencrypted media streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for unencrypted data. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides the encrypted media stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output for encrypted data. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the encryption settings including key, mode, and parameters. These settings define how the media will be encrypted. ```csharp public EncryptorDecryptorSettings Settings { get; set; } ``` #### Property Value Parameters: - (EncryptorDecryptorSettings): ### Type Gets the media block type identifier for this encryptor. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the AES encryptor block within the media pipeline. Configures the encryption parameters and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encryptor was successfully initialized; false if setup failed. ### CleanUp() Performs cleanup of the AES encryptor resources. Releases the GStreamer element and clears sensitive key material from memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the AES encryptor. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the AES encryptor element. ### GetElement() Gets the underlying GStreamer AES encryptor element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing AES encryption. ### IsAvailable() Determines whether the AES encryption functionality is available in the current environment. This checks if the required GStreamer AES encryption plugins are installed. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if AES encryption is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this encryptor block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class FrameDoublerBlock Link: api/VisioForge.Core.MediaBlocks.Special.FrameDoublerBlock.html # Class FrameDoublerBlock # Class FrameDoublerBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A media block that doubles the frame rate of video streams by duplicating frames. For example, converts 30fps video to 60fps by duplicating each frame with adjusted timestamps. ```csharp public class FrameDoublerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FrameDoublerBlock() Initializes a new instance of the class. Doubles the frame rate of video streams through frame duplication. ```csharp public FrameDoublerBlock() ``` ### FrameDoublerBlock(int, int) Initializes a new instance of the class with specified frame rates. ```csharp public FrameDoublerBlock(int inputFps, int outputFps) ``` #### Parameters Parameters: - inputFps (int): Expected input frame rate (e.g., 30). - outputFps (int): Desired output frame rate (e.g., 60). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### InputFrameRate Gets or sets the input frame rate (e.g., 30 for 30fps). This is optional - if not set, will be detected from input stream. ```csharp public int? InputFrameRate { get; set; } ``` #### Property Value Parameters: - (int ?): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### OutputFrameRate Gets or sets the output frame rate (e.g., 60 for 60fps). This is optional - if not set, will be double the input frame rate. ```csharp public int? OutputFrameRate { get; set; } ``` #### Property Value Parameters: - (int ?): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the media block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### Dispose(bool) Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing, false if finalizing. ### GetFrameRateMultiplier() Gets the frame rate multiplier applied by this block. ```csharp public double GetFrameRateMultiplier() ``` #### Returns Parameters: - (double): The frame rate multiplier (typically 2.0 for doubling). ### GetInputCaps() Gets the input caps string for the specified frame rate. ```csharp public string GetInputCaps() ``` #### Returns Parameters: - (string): The input caps string. ### GetOutputCaps() Gets the output caps string for the doubled frame rate. ```csharp public string GetOutputCaps() ``` #### Returns Parameters: - (string): The output caps string. ### IMediaBlockInternals.Build() Builds the media block by creating and initializing the underlying GStreamer elements. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if construction failed. ### IMediaBlockInternals.CleanUp() Performs cleanup of resources and resets the block to uninitialized state. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper for this frame doubler. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the frame doubler. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element for this frame doubler. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element performing frame doubling. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this frame doubler block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media blocks pipeline that manages this block. --- # Class LiveSyncBlock Link: api/VisioForge.Core.MediaBlocks.Special.LiveSyncBlock.html # Class LiveSyncBlock # Class LiveSyncBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Live stream synchronization block that ensures frames are delivered on time for real-time streaming. The LiveSync block synchronizes live streams by managing frame timing, dropping late frames, and duplicating frames when needed to maintain consistent playback. This is essential for live streaming scenarios where maintaining real-time delivery is critical. Key features: - Real-time frame synchronization for live streams - Automatic dropping of late frames to prevent backlog - Frame duplication when frames arrive too late - Maintains consistent playback timing - Low-latency operation for live streaming - Suitable for live camera feeds, RTSP streams, and other real-time sources Common use cases: - Live camera streaming to ensure real-time delivery - RTSP stream synchronization for IP cameras - Live broadcasting to maintain consistent frame timing - Real-time video conferencing applications - Live sports or event streaming - Any scenario requiring strict real-time frame delivery Technical details: - Monitors frame timestamps and delivery timing - Drops frames that arrive too late to maintain real-time playback - Duplicates previous frame if current frame hasn't arrived yet - Operates with minimal latency for live scenarios - Handles format changes and events properly - Configurable latency and timeout parameters Implements the . Implements the . Implements the . ```csharp public class LiveSyncBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### LiveSyncBlock() Initializes a new instance of the class. The livesync block will use default synchronization settings suitable for most live streaming scenarios. ```csharp public LiveSyncBlock() ``` ## Properties ### Input Gets the input pad for receiving media data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides synchronized media data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this livesync block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the livesync block within the media pipeline. Creates the synchronization element and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the livesync block was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of the livesync resources. Releases the GStreamer element and clears buffered data. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the livesync. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the livesync element. ### GetElement() Gets the underlying GStreamer livesync element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer livesync element. ### IsAvailable() Determines whether the livesync functionality is available in the current environment. This requires the livesync GStreamer element to be available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if livesync element is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this livesync block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class MultiQueueBlock Link: api/VisioForge.Core.MediaBlocks.Special.MultiQueueBlock.html # Class MultiQueueBlock # Class MultiQueueBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized buffering block that provides multiple synchronized queues for handling multiple media streams. MultiQueue is designed to manage multiple data streams with intelligent buffering and synchronization, ensuring smooth playback and preventing starvation in multi-stream scenarios. Key features: - Multiple independent queues with shared buffering logic - Automatic synchronization between streams - Dynamic buffer size management - Prevention of pipeline stalls in multi-stream scenarios - Thread decoupling for each stream - Configurable number of input/output pairs Common use cases: - Handling multiple streams from demuxers (video + audio + subtitle) - Synchronizing streams with different data rates - Buffering before muxing multiple streams - Load balancing in parallel processing pipelines - Preventing thread blocking in complex pipelines - Managing streams with varying latencies Technical details: - Each queue runs in its own thread for isolation - Implements intelligent buffering strategies - Shares memory limits across all queues - Handles format changes dynamically - Provides backpressure when buffers are full - More efficient than multiple separate Queue blocks Implements the . Implements the . Implements the . ```csharp public class MultiQueueBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MultiQueueBlock(int) Initializes a new instance of the class with specified number of queues. ```csharp public MultiQueueBlock(int inputOutputCount = 2) ``` #### Parameters Parameters: - inputOutputCount (int): The number of input/output pairs (queues) to create. Default is 2. ## Properties ### Input Gets the first input pad of the multi-queue. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads for the multi-queue. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the first output pad of the multi-queue. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads for the multi-queue. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this multi-queue. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the multiqueue within the media pipeline. Creates the specified number of queue pairs with synchronized buffering. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the multiqueue was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of the multiqueue resources. Releases the GStreamer element and all associated queue structures. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the multiqueue. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the multiqueue element. ### GetElement() Gets the underlying GStreamer multiqueue element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer multiqueue element. ### IsAvailable() Determines whether the multiqueue functionality is available in the current environment. This checks if the required GStreamer multiqueue element is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if multiqueue is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this multiqueue block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class NullRendererBlock Link: api/VisioForge.Core.MediaBlocks.Special.NullRendererBlock.html # Class NullRendererBlock # Class NullRendererBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides a sink element that consumes media data without producing any output, useful for testing and analysis. ```csharp public class NullRendererBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockRenderer ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Example 1: Discard video while keeping audio
var nullRenderer = new NullRendererBlock(MediaBlockPadMediaType.Video)
{
    IsSync = true  // Keep synchronized with audio
};
pipeline.Connect(demuxer.VideoOutput, nullRenderer.Input);
pipeline.Connect(demuxer.AudioOutput, audioRenderer.Input);

// Example 2: Benchmark decoding performance
var nullRenderer = new NullRendererBlock(MediaBlockPadMediaType.Video)
{
    IsSync = false  // Process as fast as possible
};
pipeline.Connect(decoder.Output, nullRenderer.Input);

// Example 3: Test pipeline without rendering
var videoNull = new NullRendererBlock(MediaBlockPadMediaType.Video);
var audioNull = new NullRendererBlock(MediaBlockPadMediaType.Audio);
pipeline.Connect(source.VideoOutput, videoNull.Input);
pipeline.Connect(source.AudioOutput, audioNull.Input);
## Remarks

The acts as a "black hole" for media streams, accepting any type of media data (audio, video, or other) and discarding it. Despite not producing output, it can maintain synchronization with the pipeline clock when configured to do so.

Common use cases include:

  • Testing pipeline performance without actual rendering overhead
  • Analyzing streams without displaying or playing them
  • Benchmarking encoding/decoding performance
  • Discarding unwanted streams in multi-stream pipelines
  • Pipeline debugging and development

The block supports synchronization control through the property:

  • When true: Maintains timing synchronization (default for playback)
  • When false: Processes data as fast as possible (ideal for transcoding)

This block implements , marking it as a terminal element in the pipeline.

## Constructors ### NullRendererBlock(MediaBlockPadMediaType) Initializes a new instance of the class. ```csharp public NullRendererBlock(MediaBlockPadMediaType padMediaType) ``` #### Parameters Parameters: - padMediaType (MediaBlockPadMediaType): The type of media this renderer will accept and discard. #### Remarks

The media type determines what kind of data the null renderer will accept. Common types include:

  • - For discarding video streams
  • - For discarding audio streams
  • - For accepting any media type

The renderer is created with synchronization enabled by default. Adjust after construction if needed.

## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether the renderer should synchronize with the pipeline clock. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Synchronization behavior:

  • true: Respects timestamps and maintains real-time playback speed. Use for playback applications where timing matters.
  • false: Processes data without timing constraints. Use for transcoding, analysis, or performance testing.

When multiple streams are present (e.g., audio and video), synchronization ensures they remain aligned. For single-stream processing or when timing doesn't matter, disabling sync can significantly improve processing speed.

### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the null renderer element within the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the element was successfully built and initialized; otherwise, false. #### Remarks

This method performs the following operations:

  1. Creates the underlying GStreamer null renderer element
  2. Initializes it with the current synchronization settings
  3. Configures the input pad for media reception

The method is idempotent and can be safely called multiple times. Errors during initialization are logged to the pipeline context.

### CleanUp() Performs cleanup of the null renderer resources. ```csharp public void CleanUp() ``` #### Remarks

This method safely disposes of the underlying GStreamer element and resets the build state. It handles exceptions during disposal to prevent cascading failures during pipeline shutdown.

The cleanup process includes:

  • Setting the element to NULL state (handled by BaseElement)
  • Disposing of the GStreamer element wrapper
  • Clearing internal references

This method is called automatically during disposal and should not be called directly by user code.

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper that manages the underlying GStreamer element. #### Remarks This provides access to the wrapper class for advanced operations or direct GStreamer element manipulation when needed. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer fakesink element used for null rendering. #### Remarks Direct access to the GStreamer element should be used carefully. Most operations should go through the block's public API. ### IsAvailable() Determines whether the null renderer functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the null renderer is available; otherwise, false. #### Remarks

The null renderer is a core GStreamer element and should be available in all standard GStreamer installations. If this returns false, it indicates a problem with the GStreamer installation or initialization.

Always verify availability before creating instances, especially in environments where GStreamer installation might be incomplete or customized.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class ParseBinBlock Link: api/VisioForge.Core.MediaBlocks.Special.ParseBinBlock.html # Class ParseBinBlock # Class ParseBinBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides automatic parsing and demuxing of media streams without decoding, exposing elementary streams. ```csharp public class ParseBinBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Example 1: Extract streams for remuxing
var parseBin = new ParseBinBlock();
var muxer = new MP4MuxerBlock();

// Connect source to parser
pipeline.Connect(fileSource.Output, parseBin.Input);

// After pipeline starts, connect discovered streams
// (In practice, handle the OnPadAdded event)
pipeline.Connect(parseBin.Outputs[0], muxer.VideoInput);
pipeline.Connect(parseBin.Outputs[1], muxer.AudioInput);

// Example 2: Stream analysis without decoding
var parseBin = new ParseBinBlock();
pipeline.Connect(source.Output, parseBin.Input);

// Connect to analysis blocks that work with encoded data
pipeline.Connect(parseBin.Outputs[0], h264Analyzer.Input);
## Remarks

The is a dynamic element that automatically detects and parses media container formats, extracting elementary streams without decoding them. Unlike , which produces decoded raw audio/video, ParseBin outputs parsed but still encoded streams.

Key features and use cases:

  • Extracts elementary streams from containers (MP4, MKV, AVI, etc.)
  • Preserves original encoding for remuxing or transmuxing
  • Lower CPU usage compared to full decoding
  • Useful for stream analysis and metadata extraction
  • Ideal for changing container formats without re-encoding

The block dynamically creates output pads as streams are discovered:

  • Video streams appear on video output pads
  • Audio streams appear on audio output pads
  • Subtitle and other streams may also be exposed

Dynamic Pad Behavior: Output pads are created dynamically as the input stream is analyzed. Connect to the appropriate output pads after the pipeline starts and streams are discovered.

## Constructors ### ParseBinBlock() Initializes a new instance of the class. ```csharp public ParseBinBlock() ``` #### Remarks

Creates a parse bin with:

  • One input pad that accepts any media type
  • Pre-allocated video and audio output pads (connected dynamically)

Additional output pads may be created dynamically as streams are discovered. The actual number and types of output streams depend on the input media.

## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the parsebin element within the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the element was successfully built and initialized; otherwise, false. #### Remarks

This method performs the following operations:

  1. Creates the underlying GStreamer parsebin element
  2. Registers for dynamic pad addition events
  3. Initializes the element in the pipeline
  4. Configures the input pad for receiving data

Output pads are not configured during build as they are created dynamically when streams are discovered during pipeline operation.

### CleanUp() Performs cleanup of the parsebin resources. ```csharp public void CleanUp() ``` #### Remarks

This method unregisters event handlers and clears references to the parsebin element. Note that the element disposal is commented out, which may be intentional to avoid issues with GStreamer's internal reference counting during pipeline teardown.

The cleanup process includes:

  • Unregistering the pad-added event handler
  • Clearing the element reference
  • Resetting the build state

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper that manages the underlying parsebin. #### Remarks Use this to access parsebin-specific functionality or for advanced GStreamer operations not exposed through the block's public API. ### GetElement() Gets the underlying GStreamer parsebin element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer parsebin element. #### Remarks Direct access to the GStreamer element allows for low-level configuration but should be used with caution to maintain pipeline integrity. ### IsAvailable() Determines whether the parsebin functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if parsebin is available; otherwise, false. #### Remarks

ParseBin requires GStreamer base plugins to be installed. This method verifies that the necessary components are available in your GStreamer installation.

If this returns false, ensure that:

  • GStreamer base plugins are properly installed
  • The correct NuGet SDK redistribution packages are included
  • GStreamer is properly initialized

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class QueueBlock Link: api/VisioForge.Core.MediaBlocks.Special.QueueBlock.html # Class QueueBlock # Class QueueBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A fundamental buffering block that provides thread decoupling and data buffering in media pipelines. The Queue block acts as a buffer between pipeline elements, allowing upstream and downstream components to operate at different rates and in different threads. Key features: - Thread boundary creation for pipeline parallelization - Configurable buffer sizes (bytes, time, buffers) - Prevents pipeline stalls and deadlocks - Smooth data flow between elements with different processing speeds - Automatic format negotiation passthrough - Low latency buffering with minimal overhead Common use cases: - Decoupling slow sources from fast sinks - Creating thread boundaries in pipelines - Buffering before computationally intensive operations - Smoothing bursty data flows - Preventing blocking in real-time pipelines - Isolating pipeline segments for stability Technical details: - Runs source and sink pads in separate threads - Implements configurable high/low watermarks - Provides backpressure when full - Handles format changes and events properly - Can operate in push or pull mode - Memory-efficient ring buffer implementation Implements the . Implements the . Implements the . ```csharp public class QueueBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### QueueBlock() Initializes a new instance of the class with default buffer settings. The queue will use automatic buffer size management based on available system resources. ```csharp public QueueBlock() ``` ## Properties ### Input Gets the input pad for receiving media data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides buffered media data. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this queue. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the queue within the media pipeline. Creates the buffering element and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the queue was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of the queue resources. Releases the GStreamer element and clears buffered data. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the queue. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the queue element. ### GetElement() Gets the underlying GStreamer queue element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer queue element. ### IsAvailable() Determines whether the queue functionality is available in the current environment. This is a core GStreamer element and should always be available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if queue element is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this queue block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class SourceSwitchBlock Link: api/VisioForge.Core.MediaBlocks.Special.SourceSwitchBlock.html # Class SourceSwitchBlock # Class SourceSwitchBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides dynamic switching between multiple input sources, allowing seamless source changes during pipeline operation. ```csharp public class SourceSwitchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Example 1: Switch between multiple cameras
var switchSettings = new SourceSwitchSettings { PadsCount = 3 };
var sourceSwitch = new SourceSwitchBlock(switchSettings);

// Connect three camera sources
pipeline.Connect(camera1.Output, sourceSwitch.Inputs[0]);
pipeline.Connect(camera2.Output, sourceSwitch.Inputs[1]);
pipeline.Connect(camera3.Output, sourceSwitch.Inputs[2]);

// Connect output to renderer
pipeline.Connect(sourceSwitch.Output, videoRenderer.Input);

// Switch to camera 2 during runtime
sourceSwitch.Switch(1);

// Example 2: Implement source failover
var switchSettings = new SourceSwitchSettings { PadsCount = 2 };
var sourceSwitch = new SourceSwitchBlock(switchSettings);

pipeline.Connect(primarySource.Output, sourceSwitch.Inputs[0]);
pipeline.Connect(backupSource.Output, sourceSwitch.Inputs[1]);

// Monitor primary source and switch to backup if needed
if (primarySourceFailed)
{
    sourceSwitch.Switch(1); // Switch to backup
}
## Remarks

The enables real-time switching between multiple input streams without interrupting the pipeline. It accepts multiple inputs and routes one of them to the output based on the current selection.

Key features and use cases:

  • Live switching between camera feeds in surveillance systems
  • Multi-angle video playback with seamless transitions
  • Failover mechanisms for redundant media sources
  • A/B testing of different processing chains
  • Dynamic source selection in live streaming applications

The block supports:

  • Configurable number of input pads (set during construction)
  • Runtime switching via the method
  • Automatic media type negotiation
  • Seamless transitions without frame drops or glitches

Important: All input sources should have compatible formats (resolution, framerate, etc.) for optimal switching performance. Format differences may cause brief interruptions during switches.

## Constructors ### SourceSwitchBlock(SourceSwitchSettings) Initializes a new instance of the class. ```csharp public SourceSwitchBlock(SourceSwitchSettings settings) ``` #### Parameters Parameters: - settings (SourceSwitchSettings): The configuration settings for the source switch. #### Remarks

The number of input pads is determined by . Each input pad accepts any media type (auto-negotiation), and the output pad will adopt the format of the currently selected input.

After construction, connect all input sources before starting the pipeline. The first input (index 0) is selected by default.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when settings is null. - (ArgumentException): Thrown when settings contains invalid configuration. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the configuration settings for the source switch. ```csharp public SourceSwitchSettings Settings { get; set; } ``` #### Property Value Parameters: - (SourceSwitchSettings): #### Remarks These settings must be configured before building the block and cannot be changed after initialization. ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the source switch element within the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the element was successfully built and initialized; otherwise, false. #### Remarks

This method performs the following operations:

  1. Creates the underlying GStreamer input-selector element
  2. Initializes it with the configured settings
  3. Creates the requested number of input pads
  4. Configures the single output pad

The method creates request pads for inputs, allowing dynamic pad management. All pads are configured for automatic media type negotiation.

### CleanUp() Performs cleanup of the source switch resources. ```csharp public void CleanUp() ``` #### Remarks

This method disposes of the underlying GStreamer element and resets the build state. It ensures proper cleanup of all dynamically created pads and internal resources.

After cleanup, the block cannot be used again and must be recreated if needed. This method is called automatically during disposal.

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper that manages the underlying input-selector. #### Remarks This provides access to the wrapper class for advanced operations or direct manipulation of the GStreamer input-selector element. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer input-selector element used for source switching. #### Remarks Direct access to the GStreamer element should be used carefully. Prefer using the block's public API for switching operations. ### IsAvailable() Determines whether the source switch functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if source switching is available; otherwise, false. #### Remarks

The source switch requires specific GStreamer plugins to be installed. This method verifies that all necessary components are available.

If this returns false, ensure that:

  • GStreamer core plugins are properly installed
  • The input-selector element is available
  • The correct NuGet SDK redistribution packages are included

### Switch(int) Switches the active input to the specified source. ```csharp public void Switch(int switchIndex) ``` #### Parameters Parameters: - switchIndex (int): The zero-based index of the input to switch to. #### Examples
// Switch to the second input (index 1)
sourceSwitch.Switch(1);

// Implement a rotation between sources
int currentSource = 0;
void RotateSources()
{
    currentSource = (currentSource + 1) % sourceSwitch.Settings.PadsCount;
    sourceSwitch.Switch(currentSource);
}
#### Remarks

This method performs a seamless switch to the specified input source. The switch happens immediately and should not cause frame drops or audio glitches when sources have compatible formats.

Valid indices range from 0 to (PadsCount - 1). Attempting to switch to an invalid index logs an error and returns without switching.

Thread Safety: This method can be called from any thread and is safe to use during active pipeline operation.

#### Exceptions Parameters: - (InvalidOperationException): Thrown when the element is not initialized. - (ArgumentOutOfRangeException): Thrown when switchIndex is out of range. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class SRTPDecryptorBlock Link: api/VisioForge.Core.MediaBlocks.Special.SRTPDecryptorBlock.html # Class SRTPDecryptorBlock # Class SRTPDecryptorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that decrypts SRTP (Secure Real-time Transport Protocol) streams in real-time. This block processes encrypted SRTP packets and outputs decrypted RTP packets, enabling secure media reception and playback of protected content. Key features: - SRTP decryption per RFC 3711 with configurable cipher suites - Support for AES-128-ICM and AES-256-ICM decryption - HMAC-SHA1 authentication verification with 80-bit or 32-bit tags - Real-time SRTP stream decryption with minimal latency - Transparent passthrough design for RTP/RTCP packets - Compatible with standard SRTP implementations - Separate decryption contexts for RTP and RTCP - Replay attack protection Common use cases: - Receiving secure VoIP and video conferencing streams - Decrypting real-time media broadcasts - Building secure streaming client applications with WebRTC - Implementing SIP/RTP security (SIPS/SRTP) receivers - Compliance with security regulations for real-time communications - Decrypting encrypted live video feeds and IP camera streams Technical details: - Uses AES decryption in Counter Mode (ICM/CTR) for low latency - Verifies message authentication and detects tampering - Maintains RTP timing and sequence numbers - Zero-copy operation where possible - Thread-safe decryption processing - Compatible with standard SRTP key exchange mechanisms (SDES, DTLS-SRTP) - Supports streaming and file-based media Implements the . Implements the . Implements the . ```csharp public class SRTPDecryptorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SRTPDecryptorBlock(SRTPSettings) Initializes a new instance of the class with specified decryption settings. ```csharp public SRTPDecryptorBlock(SRTPSettings settings) ``` #### Parameters Parameters: - settings (SRTPSettings): The SRTP decryption configuration including master key, cipher, and auth parameters. ## Properties ### Input Gets the input pad for receiving encrypted SRTP streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for encrypted SRTP data. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides the decrypted RTP stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output for decrypted RTP data. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SRTP decryption settings including key, cipher, and authentication method. These settings must match the encryption settings used to encrypt the stream. ```csharp public SRTPSettings Settings { get; set; } ``` #### Property Value Parameters: - (SRTPSettings): ### Type Gets the media block type identifier for this SRTP decryptor. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the SRTP decryptor block within the media pipeline. Configures the decryption parameters and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decryptor was successfully initialized; false if setup failed. ### CleanUp() Performs cleanup of the SRTP decryptor resources. Releases the GStreamer element and clears sensitive key material. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the SRTP decryptor. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the SRTP decryptor element. ### GetElement() Gets the underlying GStreamer SRTP decryptor element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing SRTP decryption. ### IsAvailable() Determines whether the SRTP decryption functionality is available in the current environment. This checks if the required GStreamer SRTP decryption plugins are installed. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRTP decryption is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this SRTP decryptor block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class SRTPEncryptorBlock Link: api/VisioForge.Core.MediaBlocks.Special.SRTPEncryptorBlock.html # Class SRTPEncryptorBlock # Class SRTPEncryptorBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A specialized media block that encrypts RTP streams using SRTP (Secure Real-time Transport Protocol) in real-time. This block processes unencrypted RTP packets and outputs SRTP encrypted packets, enabling secure media streaming and transmission for content protection. Key features: - SRTP encryption per RFC 3711 with configurable cipher suites - Support for AES-128-ICM and AES-256-ICM encryption - HMAC-SHA1 authentication with 80-bit or 32-bit tags - Real-time RTP stream encryption with minimal latency - Transparent passthrough design for RTP/RTCP packets - Compatible with standard SRTP implementations - Separate encryption contexts for RTP and RTCP Common use cases: - Securing VoIP and video conferencing streams - Protecting real-time media broadcasts - Building secure streaming applications with WebRTC - Implementing SIP/RTP security (SIPS/SRTP) - Compliance with security regulations for real-time communications - Encrypting live video feeds and IP camera streams Technical details: - Uses AES encryption in Counter Mode (ICM/CTR) for low latency - Provides message authentication and replay protection - Preserves RTP timing and sequence numbers - Zero-copy operation where possible - Thread-safe encryption processing - Compatible with standard SRTP key exchange mechanisms (SDES, DTLS-SRTP) - Pairs with SRTPDecryptorBlock for round-trip encryption Implements the . Implements the . Implements the . ```csharp public class SRTPEncryptorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SRTPEncryptorBlock(SRTPSettings) Initializes a new instance of the class with specified encryption settings. ```csharp public SRTPEncryptorBlock(SRTPSettings settings) ``` #### Parameters Parameters: - settings (SRTPSettings): The SRTP encryption configuration including master key, cipher, and auth parameters. ## Properties ### Input Gets the input pad for receiving unencrypted RTP streams. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of input pads. This block has a single input for unencrypted RTP data. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad that provides the encrypted SRTP stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of output pads. This block has a single output for encrypted SRTP data. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SRTP encryption settings including key, cipher, and authentication method. These settings define how the RTP stream will be encrypted. ```csharp public SRTPSettings Settings { get; set; } ``` #### Property Value Parameters: - (SRTPSettings): ### Type Gets the media block type identifier for this SRTP encryptor. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the SRTP encryptor block within the media pipeline. Configures the encryption parameters and establishes pad connections. This method is called automatically during pipeline construction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encryptor was successfully initialized; false if setup failed. ### CleanUp() Performs cleanup of the SRTP encryptor resources. Releases the GStreamer element and clears sensitive key material from memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for the SRTP encryptor. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance wrapping the SRTP encryptor element. ### GetElement() Gets the underlying GStreamer SRTP encryptor element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing SRTP encryption. ### IsAvailable() Determines whether the SRTP encryption functionality is available in the current environment. This checks if the required GStreamer SRTP encryption plugins are installed. The appropriate VisioForge SDK redistribution package must be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if SRTP encryption is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this SRTP encryptor block. This internal method establishes the connection to the parent pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class SuperMediaBlock Link: api/VisioForge.Core.MediaBlocks.Special.SuperMediaBlock.html # Class SuperMediaBlock # Class SuperMediaBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides a container for combining multiple media blocks into a single reusable unit. ```csharp public class SuperMediaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Derived #### Implements #### Inherited Members #### Extension Methods ## Examples
// Example 1: Create a reusable video enhancement chain
public class VideoEnhancementBlock : SuperMediaBlock
{
    public VideoEnhancementBlock() : base(autoConnectBlocks: true)
    {
        // Add blocks in processing order
        Blocks.Add(new DeinterlaceBlock());
        Blocks.Add(new ColorCorrectionBlock());
        Blocks.Add(new SharpenBlock());
        Blocks.Add(new NoiseReductionBlock());
    }
}

// Use it like any other block
var enhancer = new VideoEnhancementBlock();
enhancer.Configure(pipeline);
pipeline.Connect(source.Output, enhancer.Input);
pipeline.Connect(enhancer.Output, renderer.Input);

// Example 2: Manual connection for complex routing
var superBlock = new SuperMediaBlock(autoConnectBlocks: false);

var tee = new TeeBlock(2, MediaBlockPadMediaType.Video);
var effect1 = new BlurEffectBlock();
var effect2 = new EdgeDetectionBlock();
var mixer = new VideoMixerBlock();

superBlock.Blocks.AddRange(new[] { tee, effect1, effect2, mixer });

// Configure before connecting
superBlock.Configure(pipeline);

// Manual internal connections
pipeline.Connect(tee.Outputs[0], effect1.Input);
pipeline.Connect(tee.Outputs[1], effect2.Input);
pipeline.Connect(effect1.Output, mixer.Inputs[0]);
pipeline.Connect(effect2.Output, mixer.Inputs[1]);
## Remarks

The acts as a composite pattern implementation, allowing you to group multiple media blocks together and treat them as a single block. This is particularly useful for creating reusable processing chains or complex media processing units.

Key features and benefits:

  • Encapsulates complex processing chains into a single reusable component
  • Simplifies pipeline construction by hiding internal complexity
  • Enables modular design and code reuse
  • Maintains the same interface as regular media blocks
  • Supports both manual and automatic block connection

The super block exposes:

  • Input pads from the first block in the chain
  • Output pads from the last block in the chain
  • Transparent pass-through of data between contained blocks

Auto-connect Mode: When enabled (default), blocks are automatically connected in the order they are added. When disabled, you must manually connect the internal blocks before calling .

## Constructors ### SuperMediaBlock(bool) Initializes a new instance of the class. ```csharp public SuperMediaBlock(bool autoConnectBlocks = true) ``` #### Parameters Parameters: - autoConnectBlocks (bool): true to automatically connect blocks in sequence during configuration; false if blocks will be manually connected. Default is true. #### Remarks

When autoConnectBlocks is true:

  • Blocks are connected in the order they appear in the collection
  • Each block's primary output is connected to the next block's primary input
  • Suitable for simple linear processing chains

When autoConnectBlocks is false:

  • You must manually connect blocks using the pipeline's Connect method
  • Allows for complex routing patterns (branching, merging, etc.)
  • Connections must be established after calling

## Properties ### Blocks Gets the collection of media blocks contained within this super block. ```csharp public List Blocks { get; } ``` #### Property Value Parameters: - (List < MediaBlock >): #### Remarks

Add blocks to this collection in the order they should be connected (when using auto-connect mode). The first block's inputs become the super block's inputs, and the last block's outputs become the super block's outputs.

Blocks should be added before calling . Adding blocks after configuration may lead to undefined behavior.

### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the super block, marking it as ready for use. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): Always returns true as super blocks have no build operations. #### Remarks

Unlike regular media blocks, super blocks don't create GStreamer elements. This method simply sets the build flag. The actual building of contained blocks is handled by the pipeline when they are connected.

The method is idempotent - multiple calls have no effect after the first.

### CleanUp() Performs cleanup of all contained blocks and resources. ```csharp public void CleanUp() ``` #### Remarks

This method disposes of all blocks in the collection and clears the collection. Disposal happens in the order blocks were added, which may be important for blocks with interdependencies.

After cleanup, the super block cannot be used again. A new instance must be created if the same functionality is needed.

This method is called automatically during disposal and should not be called directly by user code.

### Configure(MediaBlocksPipeline) Configures the super block by setting up the pipeline context and optionally connecting internal blocks. ```csharp public void Configure(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media pipeline that will contain this super block. #### Remarks

This method must be called before using the super block in a pipeline. It performs the following operations:

  1. Sets the pipeline context for the super block
  2. If auto-connect is enabled, connects blocks in sequence
  3. Prepares the super block for building

When auto-connect is enabled, blocks are connected using their primary Output and Input pads. For complex routing, disable auto-connect and manually establish connections after calling this method.

Important: Add all blocks to the collection before calling this method.

#### Exceptions Parameters: - (ArgumentNullException): Thrown when pipeline is null. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core wrapper element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null as super blocks don't have a single core element. #### Remarks Super blocks are containers for other blocks and don't have their own GStreamer element. To access specific elements, query the contained blocks. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always returns null as super blocks don't have a single GStreamer element. #### Remarks Super blocks are logical containers only. To access GStreamer elements, query the individual blocks within the collection. ### IsAvailable() Determines whether the super block functionality is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): Always returns true as super blocks have no specific dependencies. #### Remarks

Super blocks are a framework-level feature and don't depend on specific GStreamer plugins or external components. However, the availability of the contained blocks should be checked separately.

When using super blocks, ensure all contained blocks are available by calling their respective IsAvailable methods.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class TeeBlock Link: api/VisioForge.Core.MediaBlocks.Special.TeeBlock.html # Class TeeBlock # Class TeeBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Provides a media stream splitter that duplicates input data to multiple outputs without modification. ```csharp public class TeeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Examples
// Example 1: Display video while recording
var tee = new TeeBlock(2, MediaBlockPadMediaType.Video);
var displayQueue = new QueueBlock();
var recordQueue = new QueueBlock();

pipeline.Connect(decoder.Output, tee.Input);
pipeline.Connect(tee.Outputs[0], displayQueue.Input);
pipeline.Connect(tee.Outputs[1], recordQueue.Input);
pipeline.Connect(displayQueue.Output, videoRenderer.Input);
pipeline.Connect(recordQueue.Output, encoder.Input);

// Example 2: Apply multiple effects
var tee = new TeeBlock(3, MediaBlockPadMediaType.Video);

pipeline.Connect(source.Output, tee.Input);
pipeline.Connect(tee.Outputs[0], blurEffect.Input);
pipeline.Connect(tee.Outputs[1], edgeDetection.Input);
pipeline.Connect(tee.Outputs[2], colorCorrection.Input);

// Example 3: Dynamic output addition
var tee = new TeeBlock(1, MediaBlockPadMediaType.Audio);
pipeline.Connect(audioSource.Output, tee.Input);

// Later, add a new output dynamically
var newOutput = tee.AddNewPadLive();
pipeline.Connect(newOutput, newAudioProcessor.Input);
## Remarks

The (named after the Unix 'tee' command) acts as a 1-to-N splitter, taking a single input stream and replicating it to multiple output pads. This is essential for scenarios where the same media data needs to be processed or consumed by multiple downstream elements simultaneously.

Key characteristics:

  • Zero-copy operation - data is not duplicated in memory
  • Minimal performance overhead
  • Preserves all stream properties (format, timing, metadata)
  • Supports dynamic pad addition during pipeline operation
  • Each output operates independently

Common use cases:

  • Recording while displaying video
  • Applying multiple different effects to the same source
  • Sending streams to multiple network destinations
  • Creating preview and high-quality encoding paths
  • Implementing A/B testing for processing chains

Performance Note: While the tee itself has minimal overhead, connecting slow consumers can affect the entire pipeline. Consider using queue blocks after each tee output to decouple processing speeds.

## Constructors ### TeeBlock(int, MediaBlockPadMediaType) Initializes a new instance of the class. ```csharp public TeeBlock(int numOfOutputs, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - numOfOutputs (int): The initial number of output pads to create. - mediaType (MediaBlockPadMediaType): The type of media this tee will handle. #### Remarks

Creates a tee block with the specified number of output pads. Additional outputs can be added later using if needed.

The media type determines what kind of data can flow through the tee:

  • - For video streams
  • - For audio streams
  • - For any media type

While you must specify at least one output during construction, unused outputs don't consume resources until connected.

#### Exceptions Parameters: - (ArgumentException): Thrown when numOfOutputs is less than 1. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### MediaType Gets the media type that this tee block handles. ```csharp public MediaBlockPadMediaType MediaType { get; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): #### Remarks All pads (input and outputs) of a tee block must have the same media type. This is set during construction and cannot be changed. ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### AddNewPadLive() Dynamically adds a new output pad to the tee while the pipeline is running. ```csharp public MediaBlockPad AddNewPadLive() ``` #### Returns Parameters: - (MediaBlockPad): The newly created , or null if creation failed. #### Examples
// Add a new output while streaming
var newOutput = tee.AddNewPadLive();
if (newOutput != null)
{
    var recorder = new FileRecorderBlock("output.mp4");
    pipeline.Connect(newOutput, recorder.Input);
}
#### Remarks

This method allows adding outputs to a tee block during active pipeline operation without interrupting the media flow. This is useful for:

  • Adding recording capabilities on demand
  • Connecting monitoring or analysis tools dynamically
  • Implementing dynamic routing scenarios

The new pad inherits the media type of the tee block and can be immediately connected to downstream elements.

Thread Safety: This method is thread-safe and can be called while the pipeline is in PLAYING state.

### Build() Builds and initializes the tee element within the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the element was successfully built and initialized; otherwise, false. #### Remarks

This method performs the following operations:

  1. Creates the underlying GStreamer tee element
  2. Initializes it with the specified number of outputs
  3. Configures the input pad for receiving data
  4. Sets up all output pads for distribution

The method configures static pads for all outputs specified during construction. Additional dynamic pads can be added later if needed.

### CleanUp() Performs cleanup of the tee element and resources. ```csharp public void CleanUp() ``` #### Remarks

This method disposes of the underlying GStreamer tee element and resets the build state. All output connections are implicitly broken during cleanup.

After cleanup, the block cannot be used again and must be recreated if needed. This method is called automatically during disposal.

### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer wrapper element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The wrapper that manages the underlying GStreamer tee element. #### Remarks This provides access to the wrapper class for advanced operations or direct manipulation of the tee element's properties. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer tee element. #### Remarks Direct access to the GStreamer element should be used carefully. Most operations should go through the block's public API. ### GetFreeOutputPad() Gets the first unconnected output pad. ```csharp public MediaBlockPad GetFreeOutputPad() ``` #### Returns Parameters: - (MediaBlockPad): The first available output pad that is not connected to another block, or null if all outputs are connected. #### Examples
// Dynamically connect available outputs
var freePad = tee.GetFreeOutputPad();
if (freePad != null)
{
    pipeline.Connect(freePad, newConsumer.Input);
}
else
{
    // All outputs used, add a new one
    var newPad = tee.AddNewPadLive();
    pipeline.Connect(newPad, newConsumer.Input);
}
#### Remarks

This method is useful for dynamically connecting outputs without tracking which pads are in use. It scans outputs in order and returns the first unconnected pad found.

If all outputs are connected, consider using to create additional outputs during pipeline operation.

### IsAvailable() Determines whether the tee functionality is available in the current environment. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the tee element is available; otherwise, false. #### Remarks

The tee is a core GStreamer element and should be available in all standard installations. If this returns false, it indicates a serious problem with the GStreamer installation.

Always verify availability before creating instances, especially in environments with custom or minimal GStreamer installations.

### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Enum UniversalDecoderBlock.DecoderStrategy Link: api/VisioForge.Core.MediaBlocks.Special.UniversalDecoderBlock.DecoderStrategy.html # Enum UniversalDecoderBlock.DecoderStrategy # Enum UniversalDecoderBlock.DecoderStrategy **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Decoder selection strategy. ```csharp public enum UniversalDecoderBlock.DecoderStrategy ``` ## Fields Parameters: - PreferHardware (): Prefer hardware decoders when available. - ForceSoftware (): Always use software decoders. - Auto (): Automatic selection based on performance. --- # Class UniversalDecoderBlock Link: api/VisioForge.Core.MediaBlocks.Special.UniversalDecoderBlock.html # Class UniversalDecoderBlock # Class UniversalDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A universal decoder block that replaces decodebin with controlled decoder management. This block automatically selects appropriate decoders for input streams and provides explicit control over memory management to avoid the uncontrolled memory leaks of decodebin. ```csharp public class UniversalDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalDecoderBlock(MediaBlockPadMediaType) Initializes a new instance of the class. ```csharp public UniversalDecoderBlock(MediaBlockPadMediaType outputType) ``` #### Parameters Parameters: - outputType (MediaBlockPadMediaType): ## Properties ### AudioOutput Gets the primary audio output pad. ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Strategy Gets or sets the decoder selection strategy. ```csharp public UniversalDecoderBlock.DecoderStrategy Strategy { get; set; } ``` #### Property Value Parameters: - (UniversalDecoderBlock . DecoderStrategy): ### SubtitleOutput Gets the primary subtitle output pad. ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets the type of this media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoOutput Gets the primary video output pad. ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds the decoder block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): ### CleanUp() Cleans up the block's internal resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Cleans up the decoder block. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### GetCore() Gets the core BaseElement wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Not applicable for this block, returns null. ### GetElement() Gets the main GStreamer element for this block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The multiqueue element. ### HandleDynamicPad(Pad) Handles dynamic pad connection from the demuxer. ```csharp public void HandleDynamicPad(Pad pad) ``` #### Parameters Parameters: - pad (Pad): The pad from the demuxer. ### HandleNewPad(Pad) Handles new pad from input. ```csharp public void HandleNewPad(Pad pad) ``` #### Parameters Parameters: - pad (Pad): ### SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp public void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance. ## See Also --- # Class UniversalDemuxDecoderBlock Link: api/VisioForge.Core.MediaBlocks.Special.UniversalDemuxDecoderBlock.html # Class UniversalDemuxDecoderBlock # Class UniversalDemuxDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll A unified demuxer and decoder block that handles the complete pipeline from source to decoding. This block uses UniversalSourceSettings and automatically selects appropriate demuxers, parsers, and decoders based on the actual capabilities reported by GStreamer elements. ```csharp public class UniversalDemuxDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalDemuxDecoderBlock(UniversalSourceSettings) Initializes a new instance of the class. ```csharp public UniversalDemuxDecoderBlock(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The UniversalSourceSettings containing source URI and rendering options. ## Properties ### AudioOutput ```csharp public MediaBlockPad AudioOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad for this media block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the collection of input pads for this media block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for this media block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the collection of output pads for this media block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the UniversalSourceSettings used for this block. ```csharp public UniversalSourceSettings Settings { get; } ``` #### Property Value Parameters: - (UniversalSourceSettings): ### SubtitleOutput ```csharp public MediaBlockPad SubtitleOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Type Gets or sets the functional type of this media block (source, sink, effect, encoder, etc.). This property must be overridden in derived classes to specify the block's role in the pipeline. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): #### Exceptions Parameters: - (NotImplementedException): Thrown when the derived class has not implemented this property. - (NotImplementedException): Thrown when the derived class has not implemented the setter. ### VideoOutput ```csharp public MediaBlockPad VideoOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ## Methods ### Build() Builds and initializes this media block, creating any necessary GStreamer elements and configuring them. This method must be overridden in derived classes to implement block-specific initialization logic. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built; otherwise, false. ### CreateAsync(Uri, bool, bool, bool) Creates a UniversalDemuxDecoderBlock from a URI. ```csharp public static Task CreateAsync(Uri uri, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - uri (Uri): - renderVideo (bool): - renderAudio (bool): - renderSubtitle (bool): #### Returns Parameters: - (Task < UniversalDemuxDecoderBlock >): ### CreateAsync(string, bool, bool, bool) Creates a UniversalDemuxDecoderBlock from a file path. ```csharp public static Task CreateAsync(string filePath, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - filePath (string): - renderVideo (bool): - renderAudio (bool): - renderSubtitle (bool): #### Returns Parameters: - (Task < UniversalDemuxDecoderBlock >): ### Dispose(bool) Releases unmanaged and - optionally - managed resources. Override this method in derived classes to implement block-specific cleanup logic. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### IMediaBlockInternals.Build() Constructs and initializes the underlying GStreamer elements for this MediaBlock. This method creates the necessary GStreamer components, configures their properties, and prepares the block for integration into the pipeline. Must be called before the block can process media. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built and all required elements were created; false if construction failed. ### IMediaBlockInternals.CleanUp() Releases all resources and performs cleanup operations for this MediaBlock. This method disposes of GStreamer elements, releases memory, and ensures proper shutdown of the block. Called automatically during pipeline teardown. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper that provides additional functionality around the GStreamer element. This wrapper adds VisioForge-specific features and simplifies common operations on the underlying GStreamer element. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer element. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element that represents this MediaBlock in the pipeline. This element is the main component that performs the actual media processing and is connected to other elements in the GStreamer pipeline. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance, or null if the block hasn't been built yet. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this MediaBlock with a pipeline and initializes its internal context. This method is called automatically when the block is added to a pipeline, providing access to shared resources and pipeline-wide configuration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. --- # Class UniversalTransformBlock Link: api/VisioForge.Core.MediaBlocks.Special.UniversalTransformBlock.html # Class UniversalTransformBlock # Class UniversalTransformBlock **Namespace**: VisioForge.Core.MediaBlocks.Special **Assembly**: VisioForge.Core.dll Universal transform block that allows arbitrary video transformations with configurable caps. Supports 1:N frame transformations through a virtual method that must be overridden. ```csharp public abstract class UniversalTransformBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### UniversalTransformBlock(string, string) Initializes a new instance of the UniversalTransformBlock. ```csharp protected UniversalTransformBlock(string inputCaps, string outputCaps) ``` #### Parameters Parameters: - inputCaps (string): GStreamer caps string for input (e.g., "video/x-raw,format=RGB,width=1920,height=1080,framerate=30/1") - outputCaps (string): GStreamer caps string for output (e.g., "video/x-raw,format=NV12,width=1280,height=720,framerate=60/1") ## Properties ### Input Gets the input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the collection of input pads. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the collection of output pads. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds the media block element. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): ### CreateBuffer(byte[], ulong, ulong, ulong) Helper method to create a buffer with specific data. ```csharp protected static Buffer CreateBuffer(byte[] data, ulong pts = 0, ulong dts = 0, ulong duration = 0) ``` #### Parameters Parameters: - data (byte [ ]): - pts (ulong): - dts (ulong): - duration (ulong): #### Returns Parameters: - (Buffer): ### Dispose(bool) Destroys the media block element. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): ### GetVideoInfo(Caps, out string, out int, out int, out int, out int) Helper method to get video format info from caps. ```csharp protected static bool GetVideoInfo(Caps caps, out string format, out int width, out int height, out int frameRateNum, out int frameRateDen) ``` #### Parameters Parameters: - caps (Caps): - format (string): - width (int): - height (int): - frameRateNum (int): - frameRateDen (int): #### Returns Parameters: - (bool): ### OnTransformFrame(Buffer, Caps, Caps) Abstract method that must be overridden to provide frame transformation logic. ```csharp protected abstract List OnTransformFrame(Buffer inputBuffer, Caps inputCaps, Caps outputCaps) ``` #### Parameters Parameters: - inputBuffer (Buffer): The input buffer to transform - inputCaps (Caps): The negotiated input caps - outputCaps (Caps): The negotiated output caps #### Returns Parameters: - (List < Buffer >): A list of output buffers (can be empty, one, or multiple buffers) ### IMediaBlockInternals.Build() Builds the media block by creating and initializing the underlying GStreamer elements. ```csharp bool IMediaBlockInternals.Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built; false if construction failed. ### IMediaBlockInternals.CleanUp() Performs cleanup of resources and resets the transform to uninitialized state. ```csharp void IMediaBlockInternals.CleanUp() ``` ### IMediaBlockInternals.GetCore() Retrieves the core BaseElement wrapper for this universal transform. ```csharp BaseElement IMediaBlockInternals.GetCore() ``` #### Returns Parameters: - (BaseElement): The base element wrapping the transform, or null if not applicable. ### IMediaBlockInternals.GetElement() Retrieves the primary GStreamer element for this universal transform. ```csharp Element IMediaBlockInternals.GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element performing the transformation. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this universal transform block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media blocks pipeline that manages this transform. --- # Namespace VisioForge.Core.MediaBlocks.Special Link: api/VisioForge.Core.MediaBlocks.Special.html # Namespace VisioForge.Core.MediaBlocks.Special # Namespace VisioForge.Core.MediaBlocks.Special ### Classes Parameters: - (): A specialized media block that detects and decodes barcodes from video frames in real-time. This block analyzes incoming video frames for various barcode formats including QR codes, DataMatrix, Code128, Code39, EAN-13, and other standard 1D/2D barcodes. Key features: - Real-time barcode detection and decoding from video streams - Support for multiple simultaneous barcode detection - Configurable operating modes (passthrough or sink) - Event-based notification when barcodes are detected - Minimal performance impact on video pipeline Common use cases: - QR code scanning in mobile applications - Inventory management systems with barcode scanning - Document processing with embedded barcodes - Access control systems using QR codes - Product tracking in retail/warehouse environments Technical details: - Processes video frames using computer vision algorithms - Can operate in InputOutput mode (passthrough) or Input mode (sink) - Raises events with decoded barcode data and metadata - Requires appropriate barcode detection libraries in the GStreamer plugin set Implements the . Implements the . Implements the . - (): Event arguments for buffer processing events. - (): A media block that converts RGB video frames to YV12 format. This block uses a custom GStreamer plugin that implements RGB to Y'CbCr conversion with 4:2:0 chroma subsampling in C#. - (): A flexible media block that allows integration of any GStreamer element or bin into the MediaBlocks pipeline. This block serves as a bridge between the MediaBlocks abstraction and raw GStreamer elements, enabling use of specialized or custom GStreamer components not wrapped by standard blocks. Key features: - Support for any GStreamer element by name or bin description - Dynamic pad configuration with automatic or manual pad handling - Property setting through key-value parameters - Support for elements with dynamic pads (pad-added event) - Optional caps filtering on output pads - Property introspection for debugging Common use cases: - Integrating third-party GStreamer plugins - Using experimental or platform-specific elements - Creating complex processing chains with bin descriptions - Prototyping new functionality before creating dedicated blocks - Accessing GStreamer elements not yet wrapped in MediaBlocks Technical details: - Can create elements from factory names or parse bin descriptions - Supports multiple input and output pads with configurable media types - Handles dynamic pad creation for elements like demuxers - Provides property mapping for various data types (int, float, string, enum) - Uses identity elements for dynamic pad connection management Implements the . Implements the . Implements the . - (): A media block that allows custom transformation with independent input/output caps. Users receive input samples via event and can push output samples when ready. - (): Custom video encoder block for integrating third-party or specialized video encoders into the media pipeline. This block provides a flexible framework for adding GStreamer video encoder elements that are not directly supported by the SDK, enabling integration of proprietary codecs, experimental encoders, or platform-specific encoding solutions. Features automatic color space conversion to I420 format and dynamic property configuration through a key-value interface. Key features: - Integration of any GStreamer-compatible video encoder - Automatic video format conversion to I420 - Dynamic property configuration via dictionary - Support for hardware and software encoders - Custom codec parameter tuning - Plugin-based encoder extensions Common use cases: - Proprietary codec integration (custom H.264 variants) - Hardware-specific encoders (vendor SDKs) - Experimental codec testing (AV2, VVC) - Legacy format support (RealVideo, Indeo) - Specialized compression (lossless, HDR) - Custom streaming encoders The block handles the complexity of GStreamer element creation and pipeline integration while providing a simple configuration interface for encoder-specific parameters. Implements the . Implements the . Implements the . - (): Provides asynchronous DataMatrix decoding capabilities for video frames using the LibDMTX library. This class processes video frames to detect and decode DataMatrix 2D barcodes with configurable frame skipping and processing synchronization to optimize CPU usage. - (): A specialized media block that detects and decodes DataMatrix 2D barcodes from video frames in real-time. This block analyzes incoming video frames for DataMatrix codes using the LibDMTX library with optimized frame processing, configurable frame skipping, and asynchronous decoding to minimize performance impact on the video pipeline. Key features: - Real-time DataMatrix detection and decoding from video streams - Asynchronous processing with automatic frame dropping if busy - Configurable frame skip to reduce CPU usage (analyze every Nth frame) - Support for multiple DataMatrix codes in a single frame - Event-based notification when DataMatrix codes are detected - Support for various video formats (RGB, BGR, RGBA, BGRA) - Configurable decode timeout and symbol size hints Common use cases: - Industrial tracking with DataMatrix codes on products - Document processing with embedded DataMatrix codes - Inventory management systems - Quality control and verification systems - Medical device and pharmaceutical tracking Technical details: - Uses LibDMTX for DataMatrix detection and decoding - Processes frames asynchronously to avoid blocking the pipeline - Automatically converts video formats to RGB for LibDMTX - Thread-safe with proper synchronization - Supports both passthrough and sink modes Implements the . Implements the . Implements the . - (): A media block that allows custom in-place processing of audio/video buffers. Inherit from this class and override the ProcessBuffer method to implement custom processing logic. - (): A specialized media block that intercepts and provides access to raw media data frames passing through the pipeline. This block acts as a transparent passthrough while capturing frame data for analysis, processing, or monitoring. Unlike video/audio-specific grabbers, this block can handle any media type including metadata streams. Key features: - Zero-copy frame access with minimal performance impact - Support for any media type (video, audio, metadata, subtitles) - Passthrough design maintains pipeline flow - Event-based notification for each frame - Access to raw buffer data and timing information - Configurable media type filtering Common use cases: - Capturing metadata streams from specialized sources - Monitoring data flow for debugging purposes - Extracting timing information from media streams - Analyzing proprietary data formats - Building custom analytics on media streams - Implementing data stream validators Technical details: - Uses GStreamer pad probes for non-invasive data access - Provides frame data through event callbacks - Maintains original buffer timestamps and metadata - Can be configured for specific media types or auto-detect - Thread-safe frame delivery via events Implements the . Implements the . Implements the . - (): A debugging utility block that logs and optionally overlays timestamp information on media streams. This block intercepts media frames to display Decode Time Stamp (DTS) and Presentation Time Stamp (PTS) values, which are crucial for diagnosing synchronization and timing issues in media pipelines. Key features: - Logs DTS and PTS values to the debug console with custom labels - Optional visual overlay of timestamp information on video frames - Passthrough design with minimal performance impact - Configurable logger name for identifying different streams - Support for any media type (video, audio, etc.) - Platform-specific availability (not available on iOS) Common use cases: - Debugging A/V synchronization issues - Analyzing timestamp discontinuities in streams - Verifying proper timestamp generation in encoders - Troubleshooting playback timing problems - Educational visualization of media timing concepts - Quality assurance for streaming applications Technical details: - DTS represents when a frame should be decoded - PTS represents when a frame should be presented - Can combine with TextOverlay for visual timestamp display - Timestamps are logged in nanoseconds (GStreamer format) - Useful for identifying timestamp gaps or jumps Implements the . Implements the . Implements the . - (): An intelligent decoding block that automatically detects and decodes various media formats into raw streams. DecodeBin analyzes incoming media data, identifies the format and codecs, and constructs an appropriate decoding pipeline to produce raw video, audio, and subtitle outputs. Key features: - Automatic format detection and codec selection - Support for virtually any media format GStreamer can decode - Dynamic pad creation for discovered streams - Separate outputs for video, audio, and subtitle streams - Built-in format conversion for consistent output - Configurable stream selection (video/audio/subtitle) Common use cases: - Decoding media files with unknown or variable formats - Processing network streams with dynamic content - Building flexible media players that handle any format - Extracting raw streams from container formats - Media analysis and transcoding pipelines - Multi-stream processing applications Technical details: - Uses GStreamer's decodebin element for intelligent decoding - Automatically constructs decoder chains based on stream caps - Includes queue elements for each stream to handle threading - Video output includes format conversion to standard formats - Audio output can optionally include format conversion - Handles dynamic stream addition during playback Implements the . Implements the . Implements the . - (): A specialized media block that decrypts AES-encrypted media streams in real-time. This block processes encrypted media data and outputs the decrypted content, enabling secure media distribution and playback of protected content. Key features: - AES decryption with configurable key sizes (128, 192, 256 bits) - Support for various AES modes (ECB, CBC, CFB, OFB, CTR, GCM) - Real-time stream decryption with minimal latency - Transparent passthrough design - Compatible with any media type (video, audio, data) - Configurable initialization vectors and padding Common use cases: - Playback of DRM-protected content - Secure media streaming applications - Decrypting downloaded encrypted media files - Building secure media distribution systems - Implementing custom content protection schemes - Compliance with content security requirements Technical details: - Uses hardware-accelerated AES when available - Maintains stream timing and metadata - Zero-copy operation where possible - Thread-safe decryption processing - Compatible with standard AES implementations - Supports streaming and file-based media Implements the . Implements the . Implements the . - (): Provides a complete media playback solution for encrypted files by combining decryption, demuxing, and decoding. - (): A specialized media block that encrypts media streams using AES encryption in real-time. This block processes unencrypted media data and outputs encrypted content, enabling secure media storage and transmission for content protection. Key features: - AES encryption with configurable key sizes (128, 192, 256 bits) - Support for various AES modes (ECB, CBC, CFB, OFB, CTR, GCM) - Real-time stream encryption with minimal latency - Transparent passthrough design - Compatible with any media type (video, audio, data) - Configurable initialization vectors and padding Common use cases: - Creating DRM-protected content for secure distribution - Encrypting media files before storage or transmission - Building secure streaming applications - Implementing custom content protection systems - Protecting sensitive video/audio recordings - Compliance with data protection regulations Technical details: - Uses hardware-accelerated AES when available - Preserves stream timing and metadata - Zero-copy operation where possible - Thread-safe encryption processing - Compatible with standard AES implementations - Pairs with DecryptorBlock for round-trip encryption Implements the . Implements the . Implements the . - (): A media block that doubles the frame rate of video streams by duplicating frames. For example, converts 30fps video to 60fps by duplicating each frame with adjusted timestamps. - (): Live stream synchronization block that ensures frames are delivered on time for real-time streaming. The LiveSync block synchronizes live streams by managing frame timing, dropping late frames, and duplicating frames when needed to maintain consistent playback. This is essential for live streaming scenarios where maintaining real-time delivery is critical. Key features: - Real-time frame synchronization for live streams - Automatic dropping of late frames to prevent backlog - Frame duplication when frames arrive too late - Maintains consistent playback timing - Low-latency operation for live streaming - Suitable for live camera feeds, RTSP streams, and other real-time sources Common use cases: - Live camera streaming to ensure real-time delivery - RTSP stream synchronization for IP cameras - Live broadcasting to maintain consistent frame timing - Real-time video conferencing applications - Live sports or event streaming - Any scenario requiring strict real-time frame delivery Technical details: - Monitors frame timestamps and delivery timing - Drops frames that arrive too late to maintain real-time playback - Duplicates previous frame if current frame hasn't arrived yet - Operates with minimal latency for live scenarios - Handles format changes and events properly - Configurable latency and timeout parameters Implements the . Implements the . Implements the . - (): A specialized buffering block that provides multiple synchronized queues for handling multiple media streams. MultiQueue is designed to manage multiple data streams with intelligent buffering and synchronization, ensuring smooth playback and preventing starvation in multi-stream scenarios. Key features: - Multiple independent queues with shared buffering logic - Automatic synchronization between streams - Dynamic buffer size management - Prevention of pipeline stalls in multi-stream scenarios - Thread decoupling for each stream - Configurable number of input/output pairs Common use cases: - Handling multiple streams from demuxers (video + audio + subtitle) - Synchronizing streams with different data rates - Buffering before muxing multiple streams - Load balancing in parallel processing pipelines - Preventing thread blocking in complex pipelines - Managing streams with varying latencies Technical details: - Each queue runs in its own thread for isolation - Implements intelligent buffering strategies - Shares memory limits across all queues - Handles format changes dynamically - Provides backpressure when buffers are full - More efficient than multiple separate Queue blocks Implements the . Implements the . Implements the . - (): Provides a sink element that consumes media data without producing any output, useful for testing and analysis. - (): Provides automatic parsing and demuxing of media streams without decoding, exposing elementary streams. - (): A fundamental buffering block that provides thread decoupling and data buffering in media pipelines. The Queue block acts as a buffer between pipeline elements, allowing upstream and downstream components to operate at different rates and in different threads. Key features: - Thread boundary creation for pipeline parallelization - Configurable buffer sizes (bytes, time, buffers) - Prevents pipeline stalls and deadlocks - Smooth data flow between elements with different processing speeds - Automatic format negotiation passthrough - Low latency buffering with minimal overhead Common use cases: - Decoupling slow sources from fast sinks - Creating thread boundaries in pipelines - Buffering before computationally intensive operations - Smoothing bursty data flows - Preventing blocking in real-time pipelines - Isolating pipeline segments for stability Technical details: - Runs source and sink pads in separate threads - Implements configurable high/low watermarks - Provides backpressure when full - Handles format changes and events properly - Can operate in push or pull mode - Memory-efficient ring buffer implementation Implements the . Implements the . Implements the . - (): A specialized media block that decrypts SRTP (Secure Real-time Transport Protocol) streams in real-time. This block processes encrypted SRTP packets and outputs decrypted RTP packets, enabling secure media reception and playback of protected content. Key features: - SRTP decryption per RFC 3711 with configurable cipher suites - Support for AES-128-ICM and AES-256-ICM decryption - HMAC-SHA1 authentication verification with 80-bit or 32-bit tags - Real-time SRTP stream decryption with minimal latency - Transparent passthrough design for RTP/RTCP packets - Compatible with standard SRTP implementations - Separate decryption contexts for RTP and RTCP - Replay attack protection Common use cases: - Receiving secure VoIP and video conferencing streams - Decrypting real-time media broadcasts - Building secure streaming client applications with WebRTC - Implementing SIP/RTP security (SIPS/SRTP) receivers - Compliance with security regulations for real-time communications - Decrypting encrypted live video feeds and IP camera streams Technical details: - Uses AES decryption in Counter Mode (ICM/CTR) for low latency - Verifies message authentication and detects tampering - Maintains RTP timing and sequence numbers - Zero-copy operation where possible - Thread-safe decryption processing - Compatible with standard SRTP key exchange mechanisms (SDES, DTLS-SRTP) - Supports streaming and file-based media Implements the . Implements the . Implements the . - (): A specialized media block that encrypts RTP streams using SRTP (Secure Real-time Transport Protocol) in real-time. This block processes unencrypted RTP packets and outputs SRTP encrypted packets, enabling secure media streaming and transmission for content protection. Key features: - SRTP encryption per RFC 3711 with configurable cipher suites - Support for AES-128-ICM and AES-256-ICM encryption - HMAC-SHA1 authentication with 80-bit or 32-bit tags - Real-time RTP stream encryption with minimal latency - Transparent passthrough design for RTP/RTCP packets - Compatible with standard SRTP implementations - Separate encryption contexts for RTP and RTCP Common use cases: - Securing VoIP and video conferencing streams - Protecting real-time media broadcasts - Building secure streaming applications with WebRTC - Implementing SIP/RTP security (SIPS/SRTP) - Compliance with security regulations for real-time communications - Encrypting live video feeds and IP camera streams Technical details: - Uses AES encryption in Counter Mode (ICM/CTR) for low latency - Provides message authentication and replay protection - Preserves RTP timing and sequence numbers - Zero-copy operation where possible - Thread-safe encryption processing - Compatible with standard SRTP key exchange mechanisms (SDES, DTLS-SRTP) - Pairs with SRTPDecryptorBlock for round-trip encryption Implements the . Implements the . Implements the . - (): Provides dynamic switching between multiple input sources, allowing seamless source changes during pipeline operation. - (): Provides a container for combining multiple media blocks into a single reusable unit. - (): Provides a media stream splitter that duplicates input data to multiple outputs without modification. - (): A universal decoder block that replaces decodebin with controlled decoder management. This block automatically selects appropriate decoders for input streams and provides explicit control over memory management to avoid the uncontrolled memory leaks of decodebin. - (): A unified demuxer and decoder block that handles the complete pipeline from source to decoding. This block uses UniversalSourceSettings and automatically selects appropriate demuxers, parsers, and decoders based on the actual capabilities reported by GStreamer elements. - (): Universal transform block that allows arbitrary video transformations with configurable caps. Supports 1:N frame transformations through a virtual method that must be overridden. ### Enums Parameters: - (): Decoder selection strategy. --- # Class AV1DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.AV1DecoderBlock.html # Class AV1DecoderBlock # Class AV1DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll AV1 video decoder block that converts compressed AV1 bitstreams into raw video frames. This block supports multiple decoder implementations including software (dav1d, av1dec) and hardware-accelerated (NVIDIA NVDEC, D3D11 DXVA, VAAPI on Linux) decoders. It can automatically select the best available decoder for optimal performance. Essential for decoding AV1 content from files, streams, and live sources in media processing pipelines.

Supported profiles: Main, High, Professional

Performance: Hardware decoders can achieve 8K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, next-gen codec support

Implements the . Implements the . Implements the . ```csharp public class AV1DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AV1DecoderBlock() Initializes a new instance of the class with default settings. Uses automatic decoder selection to choose the best available decoder. ```csharp public AV1DecoderBlock() ``` ### AV1DecoderBlock(AV1DecoderSettings) Initializes a new instance of the class with specified settings. ```csharp public AV1DecoderBlock(AV1DecoderSettings settings) ``` #### Parameters Parameters: - settings (AV1DecoderSettings): The decoder settings specifying which decoder to use and its configuration. ## Properties ### Input Gets the primary input pad for receiving AV1 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this AV1 decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the AV1 decoder element within the pipeline. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built; otherwise, false. ### CleanUp() Performs cleanup of internal resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Handles proper disposal of the decoder resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing managed resources. ### GetCore() Gets the core BaseElement wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement instance. ### GetElement() Gets the element associated with this block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element for the AV1 decoder. ### IsAvailable(AV1DecoderType) Checks if the specified AV1 decoder type is available on the system. ```csharp public static bool IsAvailable(AV1DecoderType decoderType = AV1DecoderType.Auto) ``` #### Parameters Parameters: - decoderType (AV1DecoderType): The type of decoder to check. #### Returns Parameters: - (bool): true if the decoder is available; otherwise, false. ### SyncStateWithParent() Synchronizes the decoder state with its parent element. ```csharp public void SyncStateWithParent() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline. ## See Also --- # Class H264DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.H264DecoderBlock.html # Class H264DecoderBlock # Class H264DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll H.264/AVC video decoder block that converts compressed H.264 bitstreams into raw video frames. This block supports multiple decoder implementations including software (FFmpeg, OpenH264), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, DXVA on Windows), and can automatically select the best available decoder for optimal performance. Essential for decoding H.264 content from files, streams, and live sources in media processing pipelines.

Supported profiles: Baseline, Main, High, High 10, High 4:2:2, High 4:4:4

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, surveillance systems

Implements the . Implements the . Implements the . ```csharp public class H264DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### H264DecoderBlock(IH264DecoderSettings) Initializes a new instance of the class with specific decoder settings. This constructor allows you to specify exactly which H.264 decoder implementation to use and configure its parameters according to your application's requirements. ```csharp public H264DecoderBlock(IH264DecoderSettings settings) ``` #### Parameters Parameters: - settings (IH264DecoderSettings): The H.264 decoder settings that define which decoder to use and how to configure it. ### H264DecoderBlock() Initializes a new instance of the class with automatic decoder selection. This constructor automatically detects and selects the best available H.264 decoder on the system, prioritizing hardware-accelerated decoders when available, then falling back to software decoders. The selection order is: FFmpeg → OpenH264 → NVIDIA NVDEC → VAAPI (Linux) → Error if none available. ```csharp public H264DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving H.264 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the H.264 decoder configuration settings that control decoder selection, performance options, and hardware acceleration preferences. These settings determine which decoder implementation will be used and how it will be configured. ```csharp public IH264DecoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IH264DecoderSettings): ### Type Gets the media block type identifier for this H.264 decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the H.264 decoder element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core H.264 decoder element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer H.264 decoder element. ### IsAvailable(H264DecoderType) Determines whether the specified H.264 decoder implementation is available on the current system. This method checks for the presence of required libraries, drivers, and hardware support for the requested decoder type. Ensure the appropriate NuGet SDK redistribution packages are included in your project for the decoder types you intend to use. ```csharp public static bool IsAvailable(H264DecoderType decoder) ``` #### Parameters Parameters: - decoder (H264DecoderType): The specific H.264 decoder type to check for availability (FFmpeg, OpenH264, NVDEC, VAAPI, etc.). #### Returns Parameters: - (bool): true if the specified decoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class HEVCDecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.HEVCDecoderBlock.html # Class HEVCDecoderBlock # Class HEVCDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll H.265/HEVC video decoder block that converts compressed HEVC bitstreams into raw video frames. This block supports multiple decoder implementations including software (FFmpeg), hardware-accelerated (NVIDIA NVDEC, Intel QSV, AMD AMF, VAAPI on Linux, DXVA on Windows), and can automatically select the best available decoder for optimal performance. Essential for decoding HEVC content from files, streams, and live sources in media processing pipelines.

Supported profiles: Main, Main 10, Main Still Picture

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, surveillance systems

Implements the . Implements the . Implements the . ```csharp public class HEVCDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### HEVCDecoderBlock(IHEVCDecoderSettings) Initializes a new instance of the class with specific decoder settings. This constructor allows you to specify exactly which HEVC decoder implementation to use and configure its parameters according to your application's requirements. ```csharp public HEVCDecoderBlock(IHEVCDecoderSettings settings) ``` #### Parameters Parameters: - settings (IHEVCDecoderSettings): The HEVC decoder settings that define which decoder to use and how to configure it. ### HEVCDecoderBlock() Initializes a new instance of the class with automatic decoder selection. This constructor automatically detects and selects the best available HEVC decoder on the system, prioritizing hardware-accelerated decoders when available, then falling back to software decoders. The selection order is: NVIDIA NVDEC → Intel QSV → AMD AMF → D3D11 (Windows) → VAAPI (Linux) → FFmpeg → Error if none available. ```csharp public HEVCDecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving HEVC encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the HEVC decoder configuration settings that control decoder selection, performance options, and hardware acceleration preferences. These settings determine which decoder implementation will be used and how it will be configured. ```csharp public IHEVCDecoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IHEVCDecoderSettings): ### Type Gets the media block type identifier for this HEVC decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the HEVC decoder element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core HEVC decoder element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer HEVC decoder element. ### IsAvailable(HEVCDecoderType) Determines whether the specified HEVC decoder implementation is available on the current system. This method checks for the presence of required libraries, drivers, and hardware support for the requested decoder type. Ensure the appropriate NuGet SDK redistribution packages are included in your project for the decoder types you intend to use. ```csharp public static bool IsAvailable(HEVCDecoderType decoder) ``` #### Parameters Parameters: - decoder (HEVCDecoderType): The specific HEVC decoder type to check for availability (FFmpeg, NVDEC, QSV, AMF, VAAPI, etc.). #### Returns Parameters: - (bool): true if the specified decoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class JPEGDecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.JPEGDecoderBlock.html # Class JPEGDecoderBlock # Class JPEGDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll JPEG image decoder block that converts compressed JPEG/MJPEG streams into raw video frames. This software-based decoder handles both still JPEG images and Motion JPEG (MJPEG) video streams, supporting baseline and progressive JPEG encoding. Commonly used for IP cameras, webcams, and applications requiring frame-by-frame image decoding.

Supported formats: JPEG baseline, JPEG progressive, MJPEG streams

Performance: Software-based decoding suitable for moderate frame rates and resolutions

Use cases: IP camera streams, webcam capture, image sequence processing, MJPEG playback

Implements the . Implements the . Implements the . ```csharp public class JPEGDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### JPEGDecoderBlock() Initializes a new instance of the class. The decoder automatically configures itself for optimal JPEG/MJPEG decoding based on the system capabilities. ```csharp public JPEGDecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving JPEG encoded data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this JPEG decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the JPEG decoder element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core JPEG decoder element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer JPEG decoder element. ### IsAvailable() Determines whether the JPEG decoder is available on the current system. This method checks for the presence of required libraries and dependencies. Ensure the appropriate NuGet SDK redistribution packages are included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the JPEG decoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class NVAV1DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVAV1DecoderBlock.html # Class NVAV1DecoderBlock # Class NVAV1DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated AV1 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode AV1 video streams with minimal CPU usage. AV1 is an open, royalty-free video coding format designed for video transmissions over the Internet, offering superior compression efficiency compared to H.264 and VP9, with support for up to 8K resolution and HDR content.

Hardware requirements: NVIDIA GPU with AV1 NVDEC support (RTX 30xx series or newer)

Supported profiles: Main Profile (8-bit and 10-bit 4:2:0), supports HDR10/HDR10+

Performance: Can decode 4K@120fps or 8K@60fps depending on GPU model, multiple streams supported

Use cases: Streaming services (Netflix, YouTube), next-gen video content, HDR/8K delivery

Implements the . Implements the . Implements the . ```csharp public class NVAV1DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVAV1DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with AV1 NVDEC support (typically RTX 30xx series or newer). AV1 hardware decoding provides significant performance benefits for next-generation video content. ```csharp public NVAV1DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving AV1 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA AV1 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for AV1 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA AV1 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA AV1 decoder element. ### IsAvailable() Determines whether NVIDIA hardware AV1 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware with AV1 support, NVDEC capability, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA AV1 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVH264DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVH264DecoderBlock.html # Class NVH264DecoderBlock # Class NVH264DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated H.264/AVC decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode H.264 video streams with minimal CPU usage. Supports all H.264 profiles and levels supported by the GPU hardware, providing exceptional performance for high-resolution and high-framerate content.

Hardware requirements: NVIDIA GPU with NVDEC support (GTX 10xx series or newer, Quadro, Tesla)

Supported profiles: All profiles supported by GPU including Baseline, Main, High, High 10, High 4:2:2, High 4:4:4

Performance: Can decode multiple 4K@60fps streams simultaneously depending on GPU model

Use cases: High-performance video playback, multi-stream surveillance, real-time transcoding, video walls

Implements the . Implements the . Implements the . ```csharp public class NVH264DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVH264DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with NVDEC support and appropriate drivers installed. ```csharp public NVH264DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving H.264 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA H.264 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for H.264 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA H.264 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA H.264 decoder element. ### IsAvailable() Determines whether NVIDIA hardware H.264 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware, NVDEC support, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA H.264 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVH265DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVH265DecoderBlock.html # Class NVH265DecoderBlock # Class NVH265DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated H.265/HEVC decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode H.265/HEVC video streams with minimal CPU usage. Supports Main, Main 10, Main 12, and other HEVC profiles supported by the GPU, enabling efficient playback of modern high-efficiency video content including HDR formats.

Hardware requirements: NVIDIA GPU with HEVC NVDEC support (GTX 960/10xx series or newer, Quadro, Tesla)

Supported profiles: Main, Main 10 (10-bit), Main 12 (12-bit), Main 4:4:4, Range Extensions

Performance: Can decode 8K@30fps or multiple 4K@60fps streams depending on GPU model

Use cases: 4K/8K video playback, HDR content, streaming services, professional video production

Implements the . Implements the . Implements the . ```csharp public class NVH265DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVH265DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with HEVC NVDEC support and appropriate drivers installed. Note that some older GPUs may not support all HEVC profiles. ```csharp public NVH265DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving H.265/HEVC encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA H.265/HEVC hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for H.265/HEVC decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA H.265/HEVC hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA H.265/HEVC decoder element. ### IsAvailable() Determines whether NVIDIA hardware H.265/HEVC decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware with HEVC support, NVDEC capability, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA H.265/HEVC hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVJPEGDecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVJPEGDecoderBlock.html # Class NVJPEGDecoderBlock # Class NVJPEGDecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated JPEG decoder block using NVJPEG technology. This block leverages NVIDIA GPU hardware to decode JPEG images and MJPEG streams with exceptional performance, offloading the CPU-intensive decoding process to the GPU. Ideal for high-throughput image processing, multi-camera surveillance systems, and real-time MJPEG video decoding.

Hardware requirements: NVIDIA GPU with compute capability 3.5 or higher

Supported formats: Baseline JPEG, Progressive JPEG, MJPEG streams

Performance: Can decode thousands of images per second depending on GPU and image size

Use cases: High-speed image processing, multi-stream surveillance, medical imaging, machine vision

Implements the . Implements the . Implements the . ```csharp public class NVJPEGDecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVJPEGDecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with CUDA support and the NVJPEG library. ```csharp public NVJPEGDecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving JPEG encoded data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded image frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA JPEG hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA JPEG hardware decoder within the pipeline, allocating GPU resources and configuring NVJPEG for high-speed image decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVJPEG hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVJPEG element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA JPEG hardware decoder element instance. ### GetElement() Gets the native GStreamer NVJPEG element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA JPEG decoder element. ### IsAvailable() Determines whether NVIDIA hardware JPEG decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware, CUDA support, and NVJPEG library. Ensure the NVIDIA NVJPEG SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA JPEG hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVMPEG1DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVMPEG1DecoderBlock.html # Class NVMPEG1DecoderBlock # Class NVMPEG1DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated MPEG-1 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode legacy MPEG-1 video streams with minimal CPU usage. Supports standard MPEG-1 video format commonly found in older video files, VCD content, and legacy broadcast systems.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported formats: MPEG-1 Part 2 video, supports all standard frame rates and resolutions

Performance: Hardware acceleration provides efficient decoding even for older GPUs

Use cases: Legacy video archives, VCD playback, older surveillance footage, broadcast archives

Implements the . Implements the . Implements the . ```csharp public class NVMPEG1DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVMPEG1DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with NVDEC support and appropriate drivers installed. ```csharp public NVMPEG1DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving MPEG-1 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA MPEG-1 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for MPEG-1 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA MPEG-1 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA MPEG-1 decoder element. ### IsAvailable() Determines whether NVIDIA hardware MPEG-1 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware, NVDEC support, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA MPEG-1 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVMPEG2DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVMPEG2DecoderBlock.html # Class NVMPEG2DecoderBlock # Class NVMPEG2DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated MPEG-2 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode MPEG-2 video streams with minimal CPU usage. Supports all MPEG-2 profiles including Main Profile and 4:2:2 Profile, commonly used in DVD content, broadcast television, and professional video.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported profiles: Main Profile (MP@ML, MP@HL), 4:2:2 Profile, supports interlaced content

Performance: Hardware acceleration enables smooth playback of HD broadcast streams

Use cases: DVD playback, broadcast television, cable/satellite streams, professional video editing

Implements the . Implements the . Implements the . ```csharp public class NVMPEG2DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVMPEG2DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with NVDEC support and appropriate drivers installed. ```csharp public NVMPEG2DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving MPEG-2 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA MPEG-2 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for MPEG-2 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA MPEG-2 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA MPEG-2 decoder element. ### IsAvailable() Determines whether NVIDIA hardware MPEG-2 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware, NVDEC support, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA MPEG-2 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVMPEG4DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVMPEG4DecoderBlock.html # Class NVMPEG4DecoderBlock # Class NVMPEG4DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated MPEG-4 Part 2 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode MPEG-4 Part 2 video streams (including DivX and XviD) with minimal CPU usage. Supports Simple Profile and Advanced Simple Profile, commonly used in older video files and some streaming applications.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported profiles: Simple Profile, Advanced Simple Profile (ASP), supports B-frames and GMC

Performance: Hardware acceleration provides efficient decoding of SD and HD content

Use cases: Legacy video files, DivX/XviD content, older streaming formats, video archives

Implements the . Implements the . Implements the . ```csharp public class NVMPEG4DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVMPEG4DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with NVDEC support and appropriate drivers installed. ```csharp public NVMPEG4DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving MPEG-4 Part 2 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA MPEG-4 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for MPEG-4 Part 2 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA MPEG-4 Part 2 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA MPEG-4 decoder element. ### IsAvailable() Determines whether NVIDIA hardware MPEG-4 Part 2 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware, NVDEC support, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA MPEG-4 Part 2 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVVP8DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVVP8DecoderBlock.html # Class NVVP8DecoderBlock # Class NVVP8DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated VP8 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode VP8 video streams with minimal CPU usage. VP8 is an open-source video codec developed by Google, commonly used in WebM containers and WebRTC video communications.

Hardware requirements: NVIDIA GPU with VP8 NVDEC support (GTX 10xx series or newer)

Supported features: All VP8 profiles, supports real-time decoding for video conferencing

Performance: Hardware acceleration enables smooth WebRTC calls and WebM playback

Use cases: WebRTC video calls, WebM video playback, YouTube content, video conferencing

Implements the . Implements the . Implements the . ```csharp public class NVVP8DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVVP8DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with VP8 NVDEC support (typically GTX 10xx series or newer). ```csharp public NVVP8DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP8 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA VP8 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for VP8 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA VP8 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA VP8 decoder element. ### IsAvailable() Determines whether NVIDIA hardware VP8 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware with VP8 support, NVDEC capability, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA VP8 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class NVVP9DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.NVVP9DecoderBlock.html # Class NVVP9DecoderBlock # Class NVVP9DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA hardware-accelerated VP9 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode VP9 video streams with minimal CPU usage. VP9 is Google's successor to VP8, offering better compression efficiency and supporting resolutions up to 8K, HDR content, and 10/12-bit color depths.

Hardware requirements: NVIDIA GPU with VP9 NVDEC support (GTX 10xx series or newer, some GTX 960/950)

Supported profiles: Profile 0 (8-bit 4:2:0), Profile 2 (10/12-bit 4:2:0), supports HDR10

Performance: Can decode 4K@60fps or 8K@30fps depending on GPU model, multiple streams supported

Use cases: YouTube 4K/8K playback, WebM video, streaming services, HDR content delivery

Implements the . Implements the . Implements the . ```csharp public class NVVP9DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### NVVP9DecoderBlock() Initializes a new instance of the class. The decoder requires an NVIDIA GPU with VP9 NVDEC support (typically GTX 10xx series or newer). Some GTX 960/950 models also support VP9 hardware decoding. ```csharp public NVVP9DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP9 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides hardware-decoded video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this hardware decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this NVIDIA VP9 hardware decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the NVIDIA hardware decoder within the pipeline, allocating GPU resources and configuring NVDEC for VP9 decoding. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the hardware decoder was successfully initialized; false if GPU resources are unavailable. ### CleanUp() Performs cleanup of GPU resources, releasing NVDEC hardware decoder and freeing allocated GPU memory. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer NVDEC element for advanced GPU configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core NVIDIA VP9 hardware decoder element instance. ### GetElement() Gets the native GStreamer NVDEC element for direct hardware manipulation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer NVIDIA VP9 decoder element. ### IsAvailable() Determines whether NVIDIA hardware VP9 decoding is available on the current system. This method checks for compatible NVIDIA GPU hardware with VP9 support, NVDEC capability, and required drivers. Ensure the NVIDIA Video Codec SDK redistribution package is included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if NVIDIA VP9 hardware decoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this hardware decoder block, establishing GPU resource management and pipeline integration. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that manages GPU resources. ## See Also --- # Class VP8AlphaDecodeBinBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.VP8AlphaDecodeBinBlock.html # Class VP8AlphaDecodeBinBlock # Class VP8AlphaDecodeBinBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll VP8 alpha decode bin block that automatically decodes VP8 video streams with alpha channel. This block handles VP8 streams encoded with alpha transparency, automatically demultiplexing and decoding both color and alpha channels to produce RGBA video output. Essential for WebM video with transparency, overlays, and compositing effects.

Supported features: VP8 with alpha channel in WebM/MKV containers

Use cases: Transparent video overlays, video compositing, WebM with alpha

Implements the . Implements the . Implements the . ```csharp public class VP8AlphaDecodeBinBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VP8AlphaDecodeBinBlock() Initializes a new instance of the class. This constructor creates a VP8 alpha decoder that automatically handles streams with transparency. ```csharp public VP8AlphaDecodeBinBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP8 encoded video data with alpha. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames with alpha. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this VP8 alpha decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VP8 alpha decode bin element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core VP8 alpha decode bin element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer VP8 alpha decode bin element. ### IsAvailable() Determines whether the VP8 alpha decode bin element is available on the current system. This method checks for the presence of the vp8alphadecodebin GStreamer element. Ensure the appropriate GStreamer codec alpha plugin is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the element is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class VP8DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.VP8DecoderBlock.html # Class VP8DecoderBlock # Class VP8DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll VP8 video decoder block that converts compressed VP8 bitstreams into raw video frames. This block supports multiple decoder implementations including software (VPX, FFmpeg), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, D3D11 on Windows), and can automatically select the best available decoder for optimal performance. VP8 is an open-source video codec commonly used in WebM containers and WebRTC video communications.

Supported features: All VP8 profiles, real-time video conferencing support

Performance: Hardware decoders can achieve real-time decoding for HD video calls

Use cases: WebRTC video calls, WebM video playback, YouTube content, video conferencing

Implements the . Implements the . Implements the . ```csharp public class VP8DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VP8DecoderBlock(IVP8DecoderSettings) Initializes a new instance of the class with specific decoder settings. This constructor allows you to specify exactly which VP8 decoder implementation to use and configure its parameters according to your application's requirements. ```csharp public VP8DecoderBlock(IVP8DecoderSettings settings) ``` #### Parameters Parameters: - settings (IVP8DecoderSettings): The VP8 decoder settings that define which decoder to use and how to configure it. ### VP8DecoderBlock() Initializes a new instance of the class with automatic decoder selection. This constructor automatically detects and selects the best available VP8 decoder on the system, prioritizing hardware-accelerated decoders when available, then falling back to software decoders. The selection order is: VPX → FFmpeg → NVIDIA NVDEC → VAAPI (Linux) → D3D11 (Windows) → Error if none available. ```csharp public VP8DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP8 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the VP8 decoder configuration settings that control decoder selection, performance options, and hardware acceleration preferences. These settings determine which decoder implementation will be used and how it will be configured. ```csharp public IVP8DecoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IVP8DecoderSettings): ### Type Gets the media block type identifier for this VP8 decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VP8 decoder element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core VP8 decoder element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer VP8 decoder element. ### IsAvailable(VP8DecoderType) Determines whether the specified VP8 decoder implementation is available on the current system. This method checks for the presence of required libraries, drivers, and hardware support for the requested decoder type. Ensure the appropriate NuGet SDK redistribution packages are included in your project for the decoder types you intend to use. ```csharp public static bool IsAvailable(VP8DecoderType decoder) ``` #### Parameters Parameters: - decoder (VP8DecoderType): The specific VP8 decoder type to check for availability (VPX, FFmpeg, NVDEC, VAAPI, etc.). #### Returns Parameters: - (bool): true if the specified decoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class VP9AlphaDecodeBinBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.VP9AlphaDecodeBinBlock.html # Class VP9AlphaDecodeBinBlock # Class VP9AlphaDecodeBinBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll VP9 alpha decode bin block that automatically decodes VP9 video streams with alpha channel. This block handles VP9 streams encoded with alpha transparency, automatically demultiplexing and decoding both color and alpha channels to produce RGBA video output. Essential for WebM video with transparency, overlays, and compositing effects.

Supported features: VP9 with alpha channel in WebM/MKV containers

Use cases: Transparent video overlays, video compositing, WebM with alpha, 4K transparent video

Implements the . Implements the . Implements the . ```csharp public class VP9AlphaDecodeBinBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VP9AlphaDecodeBinBlock() Initializes a new instance of the class. This constructor creates a VP9 alpha decoder that automatically handles streams with transparency. ```csharp public VP9AlphaDecodeBinBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP9 encoded video data with alpha. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames with alpha. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this VP9 alpha decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VP9 alpha decode bin element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core VP9 alpha decode bin element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer VP9 alpha decode bin element. ### IsAvailable() Determines whether the VP9 alpha decode bin element is available on the current system. This method checks for the presence of the vp9alphadecodebin GStreamer element. Ensure the appropriate GStreamer codec alpha plugin is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the element is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Class VP9DecoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.VP9DecoderBlock.html # Class VP9DecoderBlock # Class VP9DecoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoDecoders **Assembly**: VisioForge.Core.dll VP9 video decoder block that converts compressed VP9 bitstreams into raw video frames. This block supports multiple decoder implementations including software (VPX, FFmpeg), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, D3D11 on Windows), and can automatically select the best available decoder for optimal performance. VP9 is an open-source video codec developed by Google as the successor to VP8, offering better compression efficiency.

Supported features: All VP9 profiles including 10-bit and 12-bit color depths

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: YouTube 4K/8K content, WebM video playback, modern web video streaming

Implements the . Implements the . Implements the . ```csharp public class VP9DecoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VP9DecoderBlock(IVP9DecoderSettings) Initializes a new instance of the class with specific decoder settings. This constructor allows you to specify exactly which VP9 decoder implementation to use and configure its parameters according to your application's requirements. ```csharp public VP9DecoderBlock(IVP9DecoderSettings settings) ``` #### Parameters Parameters: - settings (IVP9DecoderSettings): The VP9 decoder settings that define which decoder to use and how to configure it. ### VP9DecoderBlock() Initializes a new instance of the class with automatic decoder selection. This constructor automatically detects and selects the best available VP9 decoder on the system, prioritizing hardware-accelerated decoders when available, then falling back to software decoders. The selection order is: VPX → FFmpeg → NVIDIA NVDEC → VAAPI (Linux) → D3D11 (Windows) → Error if none available. ```csharp public VP9DecoderBlock() ``` ## Properties ### Input Gets the primary input pad for receiving VP9 encoded video data. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this decoder block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides decoded raw video frames. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this decoder block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the VP9 decoder configuration settings that control decoder selection, performance options, and hardware acceleration preferences. These settings determine which decoder implementation will be used and how it will be configured. ```csharp public IVP9DecoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IVP9DecoderSettings): ### Type Gets the media block type identifier for this VP9 decoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the VP9 decoder element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the decoder was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the decoder element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core VP9 decoder element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer VP9 decoder element. ### IsAvailable(VP9DecoderType) Determines whether the specified VP9 decoder implementation is available on the current system. This method checks for the presence of required libraries, drivers, and hardware support for the requested decoder type. Ensure the appropriate NuGet SDK redistribution packages are included in your project for the decoder types you intend to use. ```csharp public static bool IsAvailable(VP9DecoderType decoder) ``` #### Parameters Parameters: - decoder (VP9DecoderType): The specific VP9 decoder type to check for availability (VPX, FFmpeg, NVDEC, VAAPI, etc.). #### Returns Parameters: - (bool): true if the specified decoder is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this decoder block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this decoder. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.VideoDecoders Link: api/VisioForge.Core.MediaBlocks.VideoDecoders.html # Namespace VisioForge.Core.MediaBlocks.VideoDecoders # Namespace VisioForge.Core.MediaBlocks.VideoDecoders ### Classes Parameters: - (): AV1 video decoder block that converts compressed AV1 bitstreams into raw video frames. This block supports multiple decoder implementations including software (dav1d, av1dec) and hardware-accelerated (NVIDIA NVDEC, D3D11 DXVA, VAAPI on Linux) decoders. It can automatically select the best available decoder for optimal performance. Essential for decoding AV1 content from files, streams, and live sources in media processing pipelines.

Supported profiles: Main, High, Professional

Performance: Hardware decoders can achieve 8K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, next-gen codec support

Implements the . Implements the . Implements the . - (): H.264/AVC video decoder block that converts compressed H.264 bitstreams into raw video frames. This block supports multiple decoder implementations including software (FFmpeg, OpenH264), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, DXVA on Windows), and can automatically select the best available decoder for optimal performance. Essential for decoding H.264 content from files, streams, and live sources in media processing pipelines.

Supported profiles: Baseline, Main, High, High 10, High 4:2:2, High 4:4:4

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, surveillance systems

Implements the . Implements the . Implements the . - (): H.265/HEVC video decoder block that converts compressed HEVC bitstreams into raw video frames. This block supports multiple decoder implementations including software (FFmpeg), hardware-accelerated (NVIDIA NVDEC, Intel QSV, AMD AMF, VAAPI on Linux, DXVA on Windows), and can automatically select the best available decoder for optimal performance. Essential for decoding HEVC content from files, streams, and live sources in media processing pipelines.

Supported profiles: Main, Main 10, Main Still Picture

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: Video playback, transcoding, streaming, video editing, surveillance systems

Implements the . Implements the . Implements the . - (): JPEG image decoder block that converts compressed JPEG/MJPEG streams into raw video frames. This software-based decoder handles both still JPEG images and Motion JPEG (MJPEG) video streams, supporting baseline and progressive JPEG encoding. Commonly used for IP cameras, webcams, and applications requiring frame-by-frame image decoding.

Supported formats: JPEG baseline, JPEG progressive, MJPEG streams

Performance: Software-based decoding suitable for moderate frame rates and resolutions

Use cases: IP camera streams, webcam capture, image sequence processing, MJPEG playback

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated AV1 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode AV1 video streams with minimal CPU usage. AV1 is an open, royalty-free video coding format designed for video transmissions over the Internet, offering superior compression efficiency compared to H.264 and VP9, with support for up to 8K resolution and HDR content.

Hardware requirements: NVIDIA GPU with AV1 NVDEC support (RTX 30xx series or newer)

Supported profiles: Main Profile (8-bit and 10-bit 4:2:0), supports HDR10/HDR10+

Performance: Can decode 4K@120fps or 8K@60fps depending on GPU model, multiple streams supported

Use cases: Streaming services (Netflix, YouTube), next-gen video content, HDR/8K delivery

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated H.264/AVC decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode H.264 video streams with minimal CPU usage. Supports all H.264 profiles and levels supported by the GPU hardware, providing exceptional performance for high-resolution and high-framerate content.

Hardware requirements: NVIDIA GPU with NVDEC support (GTX 10xx series or newer, Quadro, Tesla)

Supported profiles: All profiles supported by GPU including Baseline, Main, High, High 10, High 4:2:2, High 4:4:4

Performance: Can decode multiple 4K@60fps streams simultaneously depending on GPU model

Use cases: High-performance video playback, multi-stream surveillance, real-time transcoding, video walls

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated H.265/HEVC decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode H.265/HEVC video streams with minimal CPU usage. Supports Main, Main 10, Main 12, and other HEVC profiles supported by the GPU, enabling efficient playback of modern high-efficiency video content including HDR formats.

Hardware requirements: NVIDIA GPU with HEVC NVDEC support (GTX 960/10xx series or newer, Quadro, Tesla)

Supported profiles: Main, Main 10 (10-bit), Main 12 (12-bit), Main 4:4:4, Range Extensions

Performance: Can decode 8K@30fps or multiple 4K@60fps streams depending on GPU model

Use cases: 4K/8K video playback, HDR content, streaming services, professional video production

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated JPEG decoder block using NVJPEG technology. This block leverages NVIDIA GPU hardware to decode JPEG images and MJPEG streams with exceptional performance, offloading the CPU-intensive decoding process to the GPU. Ideal for high-throughput image processing, multi-camera surveillance systems, and real-time MJPEG video decoding.

Hardware requirements: NVIDIA GPU with compute capability 3.5 or higher

Supported formats: Baseline JPEG, Progressive JPEG, MJPEG streams

Performance: Can decode thousands of images per second depending on GPU and image size

Use cases: High-speed image processing, multi-stream surveillance, medical imaging, machine vision

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated MPEG-1 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode legacy MPEG-1 video streams with minimal CPU usage. Supports standard MPEG-1 video format commonly found in older video files, VCD content, and legacy broadcast systems.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported formats: MPEG-1 Part 2 video, supports all standard frame rates and resolutions

Performance: Hardware acceleration provides efficient decoding even for older GPUs

Use cases: Legacy video archives, VCD playback, older surveillance footage, broadcast archives

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated MPEG-2 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode MPEG-2 video streams with minimal CPU usage. Supports all MPEG-2 profiles including Main Profile and 4:2:2 Profile, commonly used in DVD content, broadcast television, and professional video.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported profiles: Main Profile (MP@ML, MP@HL), 4:2:2 Profile, supports interlaced content

Performance: Hardware acceleration enables smooth playback of HD broadcast streams

Use cases: DVD playback, broadcast television, cable/satellite streams, professional video editing

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated MPEG-4 Part 2 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode MPEG-4 Part 2 video streams (including DivX and XviD) with minimal CPU usage. Supports Simple Profile and Advanced Simple Profile, commonly used in older video files and some streaming applications.

Hardware requirements: NVIDIA GPU with NVDEC support (most modern NVIDIA GPUs)

Supported profiles: Simple Profile, Advanced Simple Profile (ASP), supports B-frames and GMC

Performance: Hardware acceleration provides efficient decoding of SD and HD content

Use cases: Legacy video files, DivX/XviD content, older streaming formats, video archives

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated VP8 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode VP8 video streams with minimal CPU usage. VP8 is an open-source video codec developed by Google, commonly used in WebM containers and WebRTC video communications.

Hardware requirements: NVIDIA GPU with VP8 NVDEC support (GTX 10xx series or newer)

Supported features: All VP8 profiles, supports real-time decoding for video conferencing

Performance: Hardware acceleration enables smooth WebRTC calls and WebM playback

Use cases: WebRTC video calls, WebM video playback, YouTube content, video conferencing

Implements the . Implements the . Implements the . - (): NVIDIA hardware-accelerated VP9 video decoder block using NVDEC technology. This block leverages NVIDIA GPU hardware decoding capabilities to efficiently decode VP9 video streams with minimal CPU usage. VP9 is Google's successor to VP8, offering better compression efficiency and supporting resolutions up to 8K, HDR content, and 10/12-bit color depths.

Hardware requirements: NVIDIA GPU with VP9 NVDEC support (GTX 10xx series or newer, some GTX 960/950)

Supported profiles: Profile 0 (8-bit 4:2:0), Profile 2 (10/12-bit 4:2:0), supports HDR10

Performance: Can decode 4K@60fps or 8K@30fps depending on GPU model, multiple streams supported

Use cases: YouTube 4K/8K playback, WebM video, streaming services, HDR content delivery

Implements the . Implements the . Implements the . - (): VP8 alpha decode bin block that automatically decodes VP8 video streams with alpha channel. This block handles VP8 streams encoded with alpha transparency, automatically demultiplexing and decoding both color and alpha channels to produce RGBA video output. Essential for WebM video with transparency, overlays, and compositing effects.

Supported features: VP8 with alpha channel in WebM/MKV containers

Use cases: Transparent video overlays, video compositing, WebM with alpha

Implements the . Implements the . Implements the . - (): VP8 video decoder block that converts compressed VP8 bitstreams into raw video frames. This block supports multiple decoder implementations including software (VPX, FFmpeg), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, D3D11 on Windows), and can automatically select the best available decoder for optimal performance. VP8 is an open-source video codec commonly used in WebM containers and WebRTC video communications.

Supported features: All VP8 profiles, real-time video conferencing support

Performance: Hardware decoders can achieve real-time decoding for HD video calls

Use cases: WebRTC video calls, WebM video playback, YouTube content, video conferencing

Implements the . Implements the . Implements the . - (): VP9 alpha decode bin block that automatically decodes VP9 video streams with alpha channel. This block handles VP9 streams encoded with alpha transparency, automatically demultiplexing and decoding both color and alpha channels to produce RGBA video output. Essential for WebM video with transparency, overlays, and compositing effects.

Supported features: VP9 with alpha channel in WebM/MKV containers

Use cases: Transparent video overlays, video compositing, WebM with alpha, 4K transparent video

Implements the . Implements the . Implements the . - (): VP9 video decoder block that converts compressed VP9 bitstreams into raw video frames. This block supports multiple decoder implementations including software (VPX, FFmpeg), hardware-accelerated (NVIDIA NVDEC, VAAPI on Linux, D3D11 on Windows), and can automatically select the best available decoder for optimal performance. VP9 is an open-source video codec developed by Google as the successor to VP8, offering better compression efficiency.

Supported features: All VP9 profiles including 10-bit and 12-bit color depths

Performance: Hardware decoders can achieve 4K@60fps or higher depending on GPU capabilities

Use cases: YouTube 4K/8K content, WebM video playback, modern web video streaming

Implements the . Implements the . Implements the . --- # Class AV1EncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.AV1EncoderBlock.html # Class AV1EncoderBlock # Class AV1EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll AV1 encoder block for next-generation video compression with superior efficiency and quality. This block provides advanced AV1 (AOMedia Video 1) encoding capabilities offering up to 50% better compression efficiency compared to H.264 while maintaining equivalent visual quality. Features hardware acceleration support, adaptive bitrate control, and advanced psychovisual optimization. Essential for streaming services, video delivery platforms, and applications requiring optimal bandwidth utilization with future-proof codec technology. Implements the . Implements the . Implements the . ```csharp public class AV1EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AV1EncoderBlock(IAV1EncoderSettings) Initializes a new instance of the class with specified AV1 encoder settings. ```csharp public AV1EncoderBlock(IAV1EncoderSettings settings) ``` #### Parameters Parameters: - settings (IAV1EncoderSettings): The AV1 encoder configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the AV1 encoder settings. Contains comprehensive configuration parameters for AV1 encoding including bitrate control, quality settings, and hardware acceleration options. ```csharp public IAV1EncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IAV1EncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the AV1 encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for high-efficiency video compression using the AV1 codec. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this AV1 encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer AV1 encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer AV1 encoder. ### GetElement() Gets the underlying GStreamer element that performs the AV1 video encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the AV1 encoder. ### IsAvailable(IAV1EncoderSettings) Determines whether AV1 encoding is available with the specified settings. Checks for required codec libraries and hardware acceleration support. ```csharp public static bool IsAvailable(IAV1EncoderSettings settings) ``` #### Parameters Parameters: - settings (IAV1EncoderSettings): The AV1 encoder settings to validate. #### Returns Parameters: - (bool): true if AV1 encoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this AV1 encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class DVEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.DVEncoderBlock.html # Class DVEncoderBlock # Class DVEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll DV (Digital Video) encoder block for professional video production and broadcast applications. This block provides DV video encoding capabilities for digital camcorder formats, offering frame-accurate editing, professional broadcast quality, and compatibility with DV equipment. DV encoding uses intra-frame compression at a fixed bitrate of 25 Mbps (SD-DV) providing excellent quality for standard definition video production workflows. Key features: - Fixed bitrate encoding at 25 Mbps (SD) or 50/100 Mbps (HD) - Intra-frame compression for frame-accurate editing - 4:1:1 color sampling (NTSC) or 4:2:0 (PAL) - Support for DV25, DVCPRO, DVCPRO50, and DVCPRO HD - Professional broadcast quality - FireWire (IEEE 1394) compatibility - Timecode support for professional editing Common use cases: - Digital camcorder recording and playback - Professional video editing workflows - Broadcast television production - Video archival in broadcast facilities - Non-linear editing system integration - FireWire video capture and output While DV is considered legacy for new productions, it remains important for compatibility with existing DV equipment, tape archives, and professional broadcast workflows requiring frame-accurate editing. Implements the . Implements the . Implements the . ```csharp public class DVEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DVEncoderBlock(DVVideoEncoderSettings) Initializes a new instance of the class. Creates a DV encoder configured for professional video production with specified format settings. ```csharp public DVEncoderBlock(DVVideoEncoderSettings settings) ``` #### Parameters Parameters: - settings (DVVideoEncoderSettings): The DV encoder settings defining video standard (NTSC/PAL) and encoding parameters. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for DV-encoded video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the DV encoder settings controlling video standard and quality parameters. ```csharp public DVVideoEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (DVVideoEncoderSettings): ### Type Gets the block type identifier for the DV encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the DV encoder pipeline. Creates the DV encoder element and configures it for professional video production with the specified video standard and quality settings. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the DV encoder. Disposes the encoder element and releases encoding resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the DV encoder. ### GetElement() Gets the underlying GStreamer DV encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing DV encoding. ### IsAvailable() Determines whether DV encoding functionality is available on the current system. Requires the GStreamer DV encoder plugin to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if DV encoding is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this DV encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class GIFEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.GIFEncoderBlock.html # Class GIFEncoderBlock # Class GIFEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll GIF (Graphics Interchange Format) encoder block for creating animated GIF images from video streams. This block provides GIF encoding capabilities for generating animated images suitable for web content, social media, documentation, and visual demonstrations. Features advanced color quantization, dithering options, and frame optimization for efficient file sizes while maintaining visual quality. Key features: - 256-color palette per frame with advanced quantization - Temporal dithering for smoother color transitions - Frame optimization and delta encoding - Variable frame rates and loop control - Transparency support for overlay effects - LZW compression for efficient file sizes - Interlaced GIF support for progressive loading Common use cases: - Social media content and memes - Product demonstrations and tutorials - Email marketing animations - Documentation and help files - Web banner advertisements - UI/UX prototypes and mockups - Screen recordings and demos Note: GIF format limitations include 256 colors per frame and larger file sizes compared to modern video formats. Consider frame rate reduction and resolution optimization for web use. Implements the . Implements the . Implements the . ```csharp public class GIFEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GIFEncoderBlock(GIFEncoderSettings) Initializes a new instance of the class for stream output. Creates a GIF encoder that outputs to a stream for further processing. ```csharp public GIFEncoderBlock(GIFEncoderSettings settings) ``` #### Parameters Parameters: - settings (GIFEncoderSettings): The GIF encoder settings defining quality, dithering, and optimization parameters. ### GIFEncoderBlock(GIFEncoderSettings, string) Initializes a new instance of the class for file output. Creates a GIF encoder that writes directly to a file. ```csharp public GIFEncoderBlock(GIFEncoderSettings settings, string filename) ``` #### Parameters Parameters: - settings (GIFEncoderSettings): The GIF encoder settings defining quality, dithering, and optimization parameters. - filename (string): The output file path where the animated GIF will be written. ### GIFEncoderBlock(GIFOutput) Initializes a new instance of the class from output configuration. Creates a GIF encoder with integrated file output settings. ```csharp public GIFEncoderBlock(GIFOutput output) ``` #### Parameters Parameters: - output (GIFOutput): The GIF output configuration containing both encoder settings and file path. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for GIF data stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the GIF encoder settings controlling animation quality and optimization. ```csharp public GIFEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (GIFEncoderSettings): ### Type Gets the block type identifier for the GIF encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the GIF encoder pipeline. Creates the GIF encoder with color quantization and optional file output, configuring it for animated image generation with specified quality settings. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the GIF encoder. Disposes the encoder element and file sink if present. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the GIF encoder. ### GetElement() Gets the underlying GStreamer GIF encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing GIF encoding. ### GetFilenameOrURL() Gets the current output filename where the GIF is being written. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The file path for the GIF output, or null if using stream output. ### IsAvailable() Determines whether GIF encoding functionality is available on the current system. Requires the GStreamer GIF encoder plugin to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if GIF encoding is supported; otherwise, false. ### SetFilenameOrURL(string) Sets a new output filename for the GIF file. Only applicable when using file output mode. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The new file path for GIF output. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this GIF encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class H264EncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.H264EncoderBlock.html # Class H264EncoderBlock # Class H264EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll H.264/AVC encoder block for industry-standard video compression with broad compatibility. This block provides comprehensive H.264 encoding capabilities with support for multiple hardware acceleration platforms including NVIDIA NVENC, AMD AMF, Intel QSV, and Apple VideoToolbox. Features adaptive bitrate control, multiple profile support (Baseline, Main, High), and optimized encoding for various use cases from streaming to broadcast. Essential for universal video compatibility across devices, platforms, and streaming services. Implements the . Implements the . Implements the . ```csharp public class H264EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### H264EncoderBlock(IH264EncoderSettings) Initializes a new instance of the class with specified H.264 encoder settings. ```csharp public H264EncoderBlock(IH264EncoderSettings settings) ``` #### Parameters Parameters: - settings (IH264EncoderSettings): The H.264 encoder configuration settings. ### H264EncoderBlock() Initializes a new instance of the class with automatically selected optimal encoder settings based on available hardware acceleration. ```csharp public H264EncoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the H.264 encoder settings. Contains comprehensive configuration parameters for H.264 encoding including profile selection, bitrate control, quality settings, and hardware acceleration options. ```csharp public IH264EncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IH264EncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the H.264 encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for industry-standard video compression with broad compatibility. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this H.264 encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer H.264 encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer H.264 encoder. ### GetDefaultSettings() Gets the optimal default H.264 encoder settings based on available hardware acceleration. Automatically selects the best available encoder: hardware-accelerated encoders are preferred over software implementations for optimal performance. ```csharp public static IH264EncoderSettings GetDefaultSettings() ``` #### Returns Parameters: - (IH264EncoderSettings): The optimal H.264 encoder settings for the current system. ### GetElement() Gets the underlying GStreamer element that performs the H.264 video encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the H.264 encoder. ### IsAvailable(IH264EncoderSettings) Determines whether H.264 encoding is available with the specified settings. Checks for required codec libraries and hardware acceleration support. ```csharp public static bool IsAvailable(IH264EncoderSettings settings) ``` #### Parameters Parameters: - settings (IH264EncoderSettings): The H.264 encoder settings to validate. #### Returns Parameters: - (bool): true if H.264 encoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this H.264 encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class HEVCEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.HEVCEncoderBlock.html # Class HEVCEncoderBlock # Class HEVCEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll HEVC/H.265 encoder block for high-efficiency video compression with superior quality-to-bitrate ratio. This block provides advanced HEVC encoding capabilities offering up to 50% better compression efficiency compared to H.264 while maintaining equivalent visual quality. Features hardware acceleration support via NVIDIA NVENC, AMD AMF, and Intel QSV, with advanced encoding options including HDR support, 4K/8K encoding, and sophisticated rate control algorithms. Essential for 4K content delivery, bandwidth-constrained applications, and next-generation video streaming services. Implements the . Implements the . Implements the . ```csharp public class HEVCEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### HEVCEncoderBlock(IHEVCEncoderSettings) Initializes a new instance of the class with specified HEVC encoder settings. ```csharp public HEVCEncoderBlock(IHEVCEncoderSettings settings) ``` #### Parameters Parameters: - settings (IHEVCEncoderSettings): The HEVC encoder configuration settings. ### HEVCEncoderBlock() Initializes a new instance of the class with automatically selected optimal encoder settings based on available hardware acceleration. ```csharp public HEVCEncoderBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the HEVC encoder settings. Contains comprehensive configuration parameters for HEVC encoding including profile selection, tier levels, bitrate control, and hardware acceleration options. ```csharp public IHEVCEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IHEVCEncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetDefaultSettings() Gets the optimal default HEVC encoder settings based on available hardware acceleration. Automatically selects the best available hardware encoder. Returns null if no HEVC encoder is available, as HEVC typically requires hardware acceleration for practical performance. ```csharp public static IHEVCEncoderSettings GetDefaultSettings() ``` #### Returns Parameters: - (IHEVCEncoderSettings): The optimal HEVC encoder settings for the current system, or null if unavailable. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IsAvailable(IHEVCEncoderSettings) Determines whether HEVC encoding is available with the specified settings. Checks for required codec libraries and hardware acceleration support. ```csharp public static bool IsAvailable(IHEVCEncoderSettings settings) ``` #### Parameters Parameters: - settings (IHEVCEncoderSettings): The HEVC encoder settings to validate. #### Returns Parameters: - (bool): true if HEVC encoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class MJPEGEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.MJPEGEncoderBlock.html # Class MJPEGEncoderBlock # Class MJPEGEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll Motion JPEG (MJPEG) encoder block for creating frame-by-frame compressed video streams. This block provides MJPEG encoding capabilities where each video frame is independently compressed as a JPEG image, offering frame-accurate editing, low latency streaming, and simplified decoding. Features optional callback mode for real-time frame capture and analysis without requiring downstream processing. Key features: - Independent frame compression (no inter-frame dependencies) - Variable JPEG quality control (0-100) - Frame-accurate editing capability - Low latency encoding and decoding - Optional callback mode for frame capture - Hardware acceleration support - Wide compatibility across platforms Common use cases: - IP camera streaming (security/surveillance) - Video editing and post-production - Medical imaging systems - Machine vision applications - Real-time frame analysis - Network video recording (NVR) - Digital signage systems While MJPEG requires more bandwidth than inter-frame codecs, it excels in applications requiring frame independence, editing flexibility, and processing simplicity. Implements the . Implements the . Implements the . ```csharp public class MJPEGEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MJPEGEncoderBlock(IMJPEGEncoderSettings) Initializes a new instance of the class. Creates an MJPEG encoder for standard stream output mode. ```csharp public MJPEGEncoderBlock(IMJPEGEncoderSettings settings) ``` #### Parameters Parameters: - settings (IMJPEGEncoderSettings): The MJPEG encoder settings defining quality and compression parameters. ### MJPEGEncoderBlock() Initializes a new instance of the class with default settings. Creates an MJPEG encoder with standard quality settings. ```csharp public MJPEGEncoderBlock() ``` ### MJPEGEncoderBlock(IMJPEGEncoderSettings, bool, bool) Initializes a new instance of the class with callback support. Creates an MJPEG encoder that can operate in callback mode for real-time frame capture. ```csharp public MJPEGEncoderBlock(IMJPEGEncoderSettings settings, bool callbackMode, bool callbackIsSync) ``` #### Parameters Parameters: - settings (IMJPEGEncoderSettings): The MJPEG encoder settings defining quality and compression parameters. - callbackMode (bool): If true, enables callback mode for frame capture without output pad. - callbackIsSync (bool): If true, frame callbacks are synchronous (blocking); otherwise asynchronous. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for MJPEG-encoded video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MJPEG encoder settings controlling compression quality. ```csharp public IMJPEGEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IMJPEGEncoderSettings): ### Type Gets the block type identifier for the MJPEG encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the MJPEG encoder pipeline. Creates the encoder with specified quality settings and configures callback mode if enabled for real-time frame capture and analysis. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the MJPEG encoder. Disposes the encoder element and callback components if present. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the MJPEG encoder. ### GetElement() Gets the underlying GStreamer MJPEG encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing MJPEG encoding. ### IsAvailable(IMJPEGEncoderSettings) Determines whether MJPEG encoding functionality is available on the current system. Checks for required encoder plugins and hardware acceleration support. ```csharp public static bool IsAvailable(IMJPEGEncoderSettings settings) ``` #### Parameters Parameters: - settings (IMJPEGEncoderSettings): The MJPEG encoder settings to validate for availability. #### Returns Parameters: - (bool): true if MJPEG encoding with specified settings is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this MJPEG encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ### OnJPEGFrame Occurs when a JPEG frame is encoded in callback mode. Provides access to individual JPEG images for real-time processing or analysis. ```csharp public event EventHandler OnJPEGFrame ``` #### Event Type Parameters: - (EventHandler < byte [ ] >): ## See Also --- # Class MPEG2EncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.MPEG2EncoderBlock.html # Class MPEG2EncoderBlock # Class MPEG2EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 video encoder block for broadcast-quality video compression with widespread compatibility. This block provides professional MPEG-2 encoding capabilities designed for broadcast television, DVD authoring, and legacy video systems. Features comprehensive profile and level support, advanced rate control algorithms, and field/frame encoding modes. Essential for broadcast delivery, DVD production, digital television, and professional video workflows requiring MPEG-2 compatibility and broadcast-standard quality. Implements the . Implements the . Implements the . ```csharp public class MPEG2EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MPEG2EncoderBlock(MPEG2VideoEncoderSettings) Initializes a new instance of the class with specified MPEG-2 encoder settings. ```csharp public MPEG2EncoderBlock(MPEG2VideoEncoderSettings settings) ``` #### Parameters Parameters: - settings (MPEG2VideoEncoderSettings): The MPEG-2 encoder configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MPEG-2 encoder settings. Contains comprehensive configuration parameters for MPEG-2 encoding including profile/level selection, bitrate control, GOP structure, and broadcast-specific options. ```csharp public MPEG2VideoEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the MPEG-2 encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for broadcast-quality video compression for DVD and television applications. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this MPEG-2 encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer MPEG-2 encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer MPEG-2 encoder. ### GetElement() Gets the underlying GStreamer element that performs the MPEG-2 video encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the MPEG-2 encoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this MPEG-2 encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MPEG4EncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.MPEG4EncoderBlock.html # Class MPEG4EncoderBlock # Class MPEG4EncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-4 video encoder block for efficient video compression with advanced features and scalability. This block provides MPEG-4 Part 2 encoding capabilities offering improved compression efficiency compared to MPEG-2 with support for advanced features like object-based coding, scalability, and error resilience. Features configurable quality settings, motion estimation algorithms, and rate control modes. Essential for streaming applications, mobile video, and scenarios requiring flexible video compression with moderate bandwidth requirements. Implements the . Implements the . Implements the . ```csharp public class MPEG4EncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MPEG4EncoderBlock(MPEG4VideoEncoderSettings) Initializes a new instance of the class with specified MPEG-4 encoder settings. ```csharp public MPEG4EncoderBlock(MPEG4VideoEncoderSettings settings) ``` #### Parameters Parameters: - settings (MPEG4VideoEncoderSettings): The MPEG-4 encoder configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the MPEG-4 encoder settings. Contains comprehensive configuration parameters for MPEG-4 encoding including quality control, motion estimation, rate control, and advanced encoding options. ```csharp public MPEG4VideoEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (MPEG4VideoEncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the MPEG-4 encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for efficient video compression with advanced features and scalability. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this MPEG-4 encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer MPEG-4 encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer MPEG-4 encoder. ### GetElement() Gets the underlying GStreamer element that performs the MPEG-4 video encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the MPEG-4 encoder. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this MPEG-4 encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class PNGEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.PNGEncoderBlock.html # Class PNGEncoderBlock # Class PNGEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll PNG encoder block for efficient PNG image compression with high quality and advanced features. This block provides PNG encoding capabilities using the rspngenc (Rust PNG encoder) GStreamer element offering superior compression efficiency and performance compared to traditional PNG encoders. Features configurable compression levels, filter types, and metadata handling. Key features: - Rust-based implementation for optimal performance - Configurable compression levels (0-9) - Multiple filter types for optimal compression - PNG metadata and info chunk handling - Lossless compression maintaining image quality - Support for transparency and alpha channels - Efficient memory usage and processing Common use cases: - High-quality image archival and storage - Lossless video frame extraction - Scientific and medical image processing - Web content requiring transparency - Screenshot and screen capture applications - Digital photography workflows - Document scanning and processing The PNG format provides excellent compression for images with sharp edges, text, and areas of solid color while preserving perfect image quality. Consider JPEG for photographic content where slight quality loss is acceptable. Implements the . Implements the . Implements the . ```csharp public class PNGEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PNGEncoderBlock(PNGEncoderSettings) Initializes a new instance of the class. Creates a PNG encoder block with the specified compression and quality settings. ```csharp public PNGEncoderBlock(PNGEncoderSettings settings) ``` #### Parameters Parameters: - settings (PNGEncoderSettings): The PNG encoder configuration including compression level, filter type, and metadata options. ### PNGEncoderBlock(PNGEncoderSettings, string) Initializes a new instance of the class. Creates a PNG encoder block with the specified compression and quality settings and output filename. ```csharp public PNGEncoderBlock(PNGEncoderSettings settings, string filename) ``` #### Parameters Parameters: - settings (PNGEncoderSettings): The PNG encoder configuration including compression level, filter type, and metadata options. - filename (string): The output file path where the PNG will be written. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for PNG data stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the PNG encoder configuration settings. ```csharp public PNGEncoderSettings Settings { get; } ``` #### Property Value Parameters: - (PNGEncoderSettings): ### Type Gets the block type identifier for the PNG encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the PNG encoder pipeline. Creates the PNG encoder with specified quality settings and optional file output, configuring it for high-quality image compression. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this PNG encoder block. This method disposes of GStreamer elements, releases memory, and ensures proper shutdown of the block. Called automatically during pipeline teardown. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases all resources used by the PNG encoder block. This includes disposing of GStreamer elements and clearing internal references. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing managed resources; false if called from finalizer. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the PNG encoder. ### GetElement() Gets the underlying GStreamer PNG encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing PNG encoding. ### GetFilenameOrURL() Gets the output destination filename or URL where the media data will be written. This could be a local file path, network URL, or device identifier depending on the sink type. ```csharp public string GetFilenameOrURL() ``` #### Returns Parameters: - (string): The filename, URL, or destination identifier as a string. ### IsAvailable() Checks if the PNG encoder element is available in the current GStreamer installation. This method verifies that the rspngenc element can be found and instantiated. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the PNG encoder is available and can be used; otherwise, false. ### SetContext(MediaBlocksPipeline) Associates this PNG encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp public void SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### SetFilenameOrURL(string) Sets the output destination filename or URL where the media data should be written. This configures where the sink block will send its processed media data. ```csharp public void SetFilenameOrURL(string value) ``` #### Parameters Parameters: - value (string): The filename, URL, or destination identifier to set. ### SetPipelineContext(BlockPipelineContext) Sets the media pipeline context for this PNG encoder block. ```csharp public void SetPipelineContext(BlockPipelineContext ctx) ``` #### Parameters Parameters: - ctx (BlockPipelineContext): The pipeline context. ### SyncStateWithParent() Synchronizes the state of all internal GStreamer elements with their parent pipeline. This ensures proper state transitions during pipeline start, pause, and stop operations. ```csharp public void SyncStateWithParent() ``` ### UpdateFilename(string) Updates the output filename for the PNG encoder. This method allows changing the output destination during operation, though it requires pipeline restart to take effect. ```csharp public void UpdateFilename(string filename) ``` #### Parameters Parameters: - filename (string): The new output filename for PNG data. ## See Also --- # Class TheoraEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.TheoraEncoderBlock.html # Class TheoraEncoderBlock # Class TheoraEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll Theora encoder block for open-source video compression designed for web streaming and multimedia applications. This block provides Theora video encoding capabilities, part of the Xiph.Org Foundation's patent-free multimedia suite. Theora offers competitive compression efficiency with royalty-free licensing, making it ideal for open-source projects, educational content, and applications requiring unrestricted codec usage. Key features: - Patent-free and royalty-free compression - Variable bitrate (VBR) and constant bitrate (CBR) modes - Temporal and spatial scalability - Alpha channel support for transparency - Adaptive quantization for optimal quality - Two-pass encoding for efficiency - Web-friendly streaming capabilities Common use cases: - Open-source video platforms and applications - Educational and academic content distribution - Web-based video streaming (OGV format) - Embedded systems with licensing constraints - Non-commercial video applications - HTML5 video with OGG container - Cross-platform multimedia solutions While newer codecs like VP8/VP9 and AV1 have largely superseded Theora for new applications, it remains valuable for legacy compatibility and environments where patent-free codecs are required. Implements the . Implements the . Implements the . ```csharp public class TheoraEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### TheoraEncoderBlock(TheoraEncoderSettings) Initializes a new instance of the class. Creates a Theora encoder configured for open-source video compression with specified quality settings. ```csharp public TheoraEncoderBlock(TheoraEncoderSettings settings) ``` #### Parameters Parameters: - settings (TheoraEncoderSettings): The Theora encoder settings defining compression quality, bitrate, and optimization parameters. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for Theora-encoded video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the Theora encoder settings controlling compression quality and bitrate. ```csharp public TheoraEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (TheoraEncoderSettings): ### Type Gets the block type identifier for the Theora encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the Theora encoder pipeline. Creates the encoder with patent-free compression settings and prepares it for open-source video encoding with specified quality parameters. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the Theora encoder. Disposes the encoder element and releases compression resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the Theora encoder. ### GetElement() Gets the underlying GStreamer Theora encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing Theora encoding. ### IsAvailable() Determines whether Theora encoding functionality is available on the current system. Requires the GStreamer Theora encoder plugin to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if Theora encoding is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this Theora encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Class VPXEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.VPXEncoderBlock.html # Class VPXEncoderBlock # Class VPXEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll VPX encoder block for VP8/VP9 open-source video compression optimized for web streaming. This block provides comprehensive VP8 and VP9 encoding capabilities using Google's WebM codec family. VP9 offers significantly improved compression efficiency over VP8 and comparable quality to H.265 while remaining royalty-free. Features adaptive bitrate control, temporal layering, and optimized encoding for web delivery. Essential for YouTube, WebRTC, streaming platforms, and applications requiring high-quality, royalty-free video compression for web distribution. Implements the . Implements the . Implements the . ```csharp public class VPXEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VPXEncoderBlock(IVPXEncoderSettings) Initializes a new instance of the class with specified VPX encoder settings. ```csharp public VPXEncoderBlock(IVPXEncoderSettings settings) ``` #### Parameters Parameters: - settings (IVPXEncoderSettings): The VPX encoder configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the VPX encoder settings. Contains comprehensive configuration parameters for VP8/VP9 encoding including codec selection, quality control, rate control, and web optimization settings. ```csharp public IVPXEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (IVPXEncoderSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the VPX encoder and its associated GStreamer elements. This method creates the encoder with the specified settings, establishes input and output pads, and prepares the block for royalty-free video compression optimized for web streaming. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this VPX encoder block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer VPX encoder element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer VPX encoder. ### GetElement() Gets the underlying GStreamer element that performs the VP8/VP9 video encoding. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the VPX encoder. ### IsAvailable(IVPXEncoderSettings) Determines whether VPX encoding is available with the specified settings. Checks for required VP8/VP9 codec libraries and validates codec selection. ```csharp public static bool IsAvailable(IVPXEncoderSettings settings) ``` #### Parameters Parameters: - settings (IVPXEncoderSettings): The VPX encoder settings to validate. #### Returns Parameters: - (bool): true if VPX encoding is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this VPX encoder block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WMVEncoderBlock Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.WMVEncoderBlock.html # Class WMVEncoderBlock # Class WMVEncoderBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoEncoders **Assembly**: VisioForge.Core.dll WMV (Windows Media Video) encoder block for Microsoft's proprietary video compression standard. This block provides WMV encoding capabilities using the VC-1 codec, offering excellent compression efficiency and quality optimized for Windows platforms and Microsoft ecosystem applications. Features advanced rate control, multiple encoding profiles, and seamless integration with Windows Media Player and Microsoft streaming technologies. Key features: - VC-1 codec compression with multiple profiles (Simple, Main, Advanced) - Variable bitrate (VBR) and constant bitrate (CBR) encoding modes - Advanced rate control algorithms - Support for HD content up to 1080p - Temporal and spatial scalability - B-frame encoding for improved compression - Windows Media DRM integration capability Common use cases: - Windows Media Player content distribution - Microsoft Silverlight streaming applications - Corporate video delivery on Windows networks - Xbox and Windows device playback - Legacy Windows media workflows - ASF container video content - Microsoft streaming services integration While WMV has been largely superseded by newer standards like H.264 and H.265, it remains important for Windows-specific applications and legacy system compatibility where Microsoft codec support is guaranteed. Implements the . Implements the . Implements the . ```csharp public class WMVEncoderBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WMVEncoderBlock(WMVEncoderSettings) Initializes a new instance of the class. Creates a WMV encoder configured for Windows Media video compression with specified quality settings. ```csharp public WMVEncoderBlock(WMVEncoderSettings settings) ``` #### Parameters Parameters: - settings (WMVEncoderSettings): The WMV encoder settings defining compression quality, bitrate, and VC-1 profile parameters. ## Properties ### Input Gets the primary input pad for receiving raw video frames. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad for WMV-encoded video stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the WMV encoder settings controlling compression quality and encoding parameters. ```csharp public WMVEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (WMVEncoderSettings): ### Type Gets the block type identifier for the WMV encoder. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the WMV encoder pipeline. Creates the encoder with Windows Media compression settings and prepares it for VC-1 video encoding with specified quality and bitrate parameters. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the encoder was successfully built; false if initialization failed. ### CleanUp() Performs cleanup of all resources associated with the WMV encoder. Disposes the encoder element and releases compression resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapper for advanced configuration. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper for the WMV encoder. ### GetDefaultSettings() Gets the default WMV encoder settings with standard quality parameters. Provides a baseline configuration suitable for general-purpose Windows Media video encoding. ```csharp public static WMVEncoderSettings GetDefaultSettings() ``` #### Returns Parameters: - (WMVEncoderSettings): A WMVEncoderSettings instance with default quality and bitrate settings. ### GetElement() Gets the underlying GStreamer WMV encoder element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The native GStreamer element performing WMV encoding. ### IsAvailable() Determines whether WMV encoding functionality is available on the current system. Requires the GStreamer WMV encoder plugin to be installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if WMV encoding is supported; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the media pipeline context for this WMV encoder block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent media pipeline containing this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.VideoEncoders Link: api/VisioForge.Core.MediaBlocks.VideoEncoders.html # Namespace VisioForge.Core.MediaBlocks.VideoEncoders # Namespace VisioForge.Core.MediaBlocks.VideoEncoders ### Classes Parameters: - (): AV1 encoder block for next-generation video compression with superior efficiency and quality. This block provides advanced AV1 (AOMedia Video 1) encoding capabilities offering up to 50% better compression efficiency compared to H.264 while maintaining equivalent visual quality. Features hardware acceleration support, adaptive bitrate control, and advanced psychovisual optimization. Essential for streaming services, video delivery platforms, and applications requiring optimal bandwidth utilization with future-proof codec technology. Implements the . Implements the . Implements the . - (): DV (Digital Video) encoder block for professional video production and broadcast applications. This block provides DV video encoding capabilities for digital camcorder formats, offering frame-accurate editing, professional broadcast quality, and compatibility with DV equipment. DV encoding uses intra-frame compression at a fixed bitrate of 25 Mbps (SD-DV) providing excellent quality for standard definition video production workflows. Key features: - Fixed bitrate encoding at 25 Mbps (SD) or 50/100 Mbps (HD) - Intra-frame compression for frame-accurate editing - 4:1:1 color sampling (NTSC) or 4:2:0 (PAL) - Support for DV25, DVCPRO, DVCPRO50, and DVCPRO HD - Professional broadcast quality - FireWire (IEEE 1394) compatibility - Timecode support for professional editing Common use cases: - Digital camcorder recording and playback - Professional video editing workflows - Broadcast television production - Video archival in broadcast facilities - Non-linear editing system integration - FireWire video capture and output While DV is considered legacy for new productions, it remains important for compatibility with existing DV equipment, tape archives, and professional broadcast workflows requiring frame-accurate editing. Implements the . Implements the . Implements the . - (): GIF (Graphics Interchange Format) encoder block for creating animated GIF images from video streams. This block provides GIF encoding capabilities for generating animated images suitable for web content, social media, documentation, and visual demonstrations. Features advanced color quantization, dithering options, and frame optimization for efficient file sizes while maintaining visual quality. Key features: - 256-color palette per frame with advanced quantization - Temporal dithering for smoother color transitions - Frame optimization and delta encoding - Variable frame rates and loop control - Transparency support for overlay effects - LZW compression for efficient file sizes - Interlaced GIF support for progressive loading Common use cases: - Social media content and memes - Product demonstrations and tutorials - Email marketing animations - Documentation and help files - Web banner advertisements - UI/UX prototypes and mockups - Screen recordings and demos Note: GIF format limitations include 256 colors per frame and larger file sizes compared to modern video formats. Consider frame rate reduction and resolution optimization for web use. Implements the . Implements the . Implements the . - (): H.264/AVC encoder block for industry-standard video compression with broad compatibility. This block provides comprehensive H.264 encoding capabilities with support for multiple hardware acceleration platforms including NVIDIA NVENC, AMD AMF, Intel QSV, and Apple VideoToolbox. Features adaptive bitrate control, multiple profile support (Baseline, Main, High), and optimized encoding for various use cases from streaming to broadcast. Essential for universal video compatibility across devices, platforms, and streaming services. Implements the . Implements the . Implements the . - (): HEVC/H.265 encoder block for high-efficiency video compression with superior quality-to-bitrate ratio. This block provides advanced HEVC encoding capabilities offering up to 50% better compression efficiency compared to H.264 while maintaining equivalent visual quality. Features hardware acceleration support via NVIDIA NVENC, AMD AMF, and Intel QSV, with advanced encoding options including HDR support, 4K/8K encoding, and sophisticated rate control algorithms. Essential for 4K content delivery, bandwidth-constrained applications, and next-generation video streaming services. Implements the . Implements the . Implements the . - (): Motion JPEG (MJPEG) encoder block for creating frame-by-frame compressed video streams. This block provides MJPEG encoding capabilities where each video frame is independently compressed as a JPEG image, offering frame-accurate editing, low latency streaming, and simplified decoding. Features optional callback mode for real-time frame capture and analysis without requiring downstream processing. Key features: - Independent frame compression (no inter-frame dependencies) - Variable JPEG quality control (0-100) - Frame-accurate editing capability - Low latency encoding and decoding - Optional callback mode for frame capture - Hardware acceleration support - Wide compatibility across platforms Common use cases: - IP camera streaming (security/surveillance) - Video editing and post-production - Medical imaging systems - Machine vision applications - Real-time frame analysis - Network video recording (NVR) - Digital signage systems While MJPEG requires more bandwidth than inter-frame codecs, it excels in applications requiring frame independence, editing flexibility, and processing simplicity. Implements the . Implements the . Implements the . - (): MPEG-2 video encoder block for broadcast-quality video compression with widespread compatibility. This block provides professional MPEG-2 encoding capabilities designed for broadcast television, DVD authoring, and legacy video systems. Features comprehensive profile and level support, advanced rate control algorithms, and field/frame encoding modes. Essential for broadcast delivery, DVD production, digital television, and professional video workflows requiring MPEG-2 compatibility and broadcast-standard quality. Implements the . Implements the . Implements the . - (): MPEG-4 video encoder block for efficient video compression with advanced features and scalability. This block provides MPEG-4 Part 2 encoding capabilities offering improved compression efficiency compared to MPEG-2 with support for advanced features like object-based coding, scalability, and error resilience. Features configurable quality settings, motion estimation algorithms, and rate control modes. Essential for streaming applications, mobile video, and scenarios requiring flexible video compression with moderate bandwidth requirements. Implements the . Implements the . Implements the . - (): PNG encoder block for efficient PNG image compression with high quality and advanced features. This block provides PNG encoding capabilities using the rspngenc (Rust PNG encoder) GStreamer element offering superior compression efficiency and performance compared to traditional PNG encoders. Features configurable compression levels, filter types, and metadata handling. Key features: - Rust-based implementation for optimal performance - Configurable compression levels (0-9) - Multiple filter types for optimal compression - PNG metadata and info chunk handling - Lossless compression maintaining image quality - Support for transparency and alpha channels - Efficient memory usage and processing Common use cases: - High-quality image archival and storage - Lossless video frame extraction - Scientific and medical image processing - Web content requiring transparency - Screenshot and screen capture applications - Digital photography workflows - Document scanning and processing The PNG format provides excellent compression for images with sharp edges, text, and areas of solid color while preserving perfect image quality. Consider JPEG for photographic content where slight quality loss is acceptable. Implements the . Implements the . Implements the . - (): Theora encoder block for open-source video compression designed for web streaming and multimedia applications. This block provides Theora video encoding capabilities, part of the Xiph.Org Foundation's patent-free multimedia suite. Theora offers competitive compression efficiency with royalty-free licensing, making it ideal for open-source projects, educational content, and applications requiring unrestricted codec usage. Key features: - Patent-free and royalty-free compression - Variable bitrate (VBR) and constant bitrate (CBR) modes - Temporal and spatial scalability - Alpha channel support for transparency - Adaptive quantization for optimal quality - Two-pass encoding for efficiency - Web-friendly streaming capabilities Common use cases: - Open-source video platforms and applications - Educational and academic content distribution - Web-based video streaming (OGV format) - Embedded systems with licensing constraints - Non-commercial video applications - HTML5 video with OGG container - Cross-platform multimedia solutions While newer codecs like VP8/VP9 and AV1 have largely superseded Theora for new applications, it remains valuable for legacy compatibility and environments where patent-free codecs are required. Implements the . Implements the . Implements the . - (): VPX encoder block for VP8/VP9 open-source video compression optimized for web streaming. This block provides comprehensive VP8 and VP9 encoding capabilities using Google's WebM codec family. VP9 offers significantly improved compression efficiency over VP8 and comparable quality to H.265 while remaining royalty-free. Features adaptive bitrate control, temporal layering, and optimized encoding for web delivery. Essential for YouTube, WebRTC, streaming platforms, and applications requiring high-quality, royalty-free video compression for web distribution. Implements the . Implements the . Implements the . - (): WMV (Windows Media Video) encoder block for Microsoft's proprietary video compression standard. This block provides WMV encoding capabilities using the VC-1 codec, offering excellent compression efficiency and quality optimized for Windows platforms and Microsoft ecosystem applications. Features advanced rate control, multiple encoding profiles, and seamless integration with Windows Media Player and Microsoft streaming technologies. Key features: - VC-1 codec compression with multiple profiles (Simple, Main, Advanced) - Variable bitrate (VBR) and constant bitrate (CBR) encoding modes - Advanced rate control algorithms - Support for HD content up to 1080p - Temporal and spatial scalability - B-frame encoding for improved compression - Windows Media DRM integration capability Common use cases: - Windows Media Player content distribution - Microsoft Silverlight streaming applications - Corporate video delivery on Windows networks - Xbox and Windows device playback - Legacy Windows media workflows - ASF container video content - Microsoft streaming services integration While WMV has been largely superseded by newer standards like H.264 and H.265, it remains important for Windows-specific applications and legacy system compatibility where Microsoft codec support is guaranteed. Implements the . Implements the . Implements the . --- # Class VideoFrameSource Link: api/VisioForge.Core.MediaBlocks.VideoFrameSource.html # Class VideoFrameSource # Class VideoFrameSource **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll High-level video frame extraction utility that creates a simplified pipeline for processing video frames. This class provides an easy-to-use interface for extracting individual frames from video files or camera sources, with optional resizing and format conversion. Designed for applications that need frame-by-frame video analysis, thumbnail generation, or computer vision processing without complex pipeline management. ```csharp public class VideoFrameSource : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### FramesProcessed Gets the total number of frames that have been processed and delivered through events. This count excludes frames that were skipped due to the FramesToSkip setting. ```csharp public long FramesProcessed { get; } ``` #### Property Value Parameters: - (long): ### FramesReceived Gets the total number of frames received from the video source. This count includes all frames, regardless of whether they were processed or skipped. ```csharp public long FramesReceived { get; } ``` #### Property Value Parameters: - (long): ### FramesToSkip Gets or sets the number of frames to skip between processed frames. For example, setting this to 2 will process every third frame (skip 2, process 1). Useful for reducing processing load when full frame rate is not needed. ```csharp public int FramesToSkip { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases the unmanaged and optionally managed resources used by the VideoFrameSource. Properly disposes of all MediaBlocks pipeline components and cleans up event handlers. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Stops video processing and releases all pipeline resources. ```csharp public void Dispose() ``` ### ~VideoFrameSource() Finalizes an instance of the VideoFrameSource class. Ensures proper cleanup if Dispose was not called explicitly. ```csharp protected ~VideoFrameSource() ``` ### StartAsync(string, VideoFormatX, Size?) Asynchronously starts video frame extraction from a file using the specified format and optional resizing. This method creates a pipeline to decode video frames and deliver them through the OnNewFrame event. ```csharp public Task StartAsync(string filename, VideoFormatX format, Size? resizeTo) ``` #### Parameters Parameters: - filename (string): The path to the video file to process. - format (VideoFormatX): The desired output format for extracted frames (e.g., RGB, RGBA, YUV). - resizeTo (Size ?): Optional target size for frame resizing. If null, frames are delivered in original resolution. #### Returns Parameters: - (Task): A Task representing the asynchronous start operation. ### StartAsync(Uri, VideoFormatX, Size?) Asynchronously starts video frame extraction from a URI source using the specified format and optional resizing. This method creates a pipeline to decode video frames from various URI sources (files, streams, etc.). ```csharp public Task StartAsync(Uri uri, VideoFormatX format, Size? resizeTo) ``` #### Parameters Parameters: - uri (Uri): The URI of the video source to process (NSUrl on iOS, Uri on other platforms). - format (VideoFormatX): The desired output format for extracted frames (e.g., RGB, RGBA, YUV). - resizeTo (Size ?): Optional target size for frame resizing. If null, frames are delivered in original resolution. #### Returns Parameters: - (Task): A Task representing the asynchronous start operation. ### StartAsync(IVideoView, VideoCaptureDeviceSourceSettings, VideoFormatX, Size?) Asynchronously starts video frame extraction from a camera source with optional preview display. This method creates a pipeline to capture frames from a camera device while optionally showing a live preview. ```csharp public Task StartAsync(IVideoView videoView, VideoCaptureDeviceSourceSettings sourceSettings, VideoFormatX frameFormat, Size? resizeTo) ``` #### Parameters Parameters: - videoView (IVideoView): Optional video view for displaying live camera preview. If null, no preview is shown. - sourceSettings (VideoCaptureDeviceSourceSettings): Camera device configuration including device selection and capture parameters. - frameFormat (VideoFormatX): The desired output format for extracted frames (e.g., RGB, RGBA, YUV). - resizeTo (Size ?): Optional target size for frame resizing. If null, frames are delivered in original resolution. #### Returns Parameters: - (Task): A Task representing the asynchronous start operation. ### StopAsync() Asynchronously stops video frame extraction and cleans up the pipeline. This method gracefully shuts down the video processing pipeline and releases resources. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A Task representing the asynchronous stop operation. ### OnNewFrame Event raised when a new video frame is available for processing. Provides access to the decoded video frame data in the specified format. ```csharp public event EventHandler OnNewFrame ``` #### Event Type Parameters: - (EventHandler < VideoFrameX >): ### OnStop Event raised when video processing stops, either normally or due to an error. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class AgingBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.AgingBlock.html # Class AgingBlock # Class AgingBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Aging video effect block that simulates vintage film deterioration and weathering effects. This block applies realistic aging effects to video content including film scratches, dust particles, color degradation, sepia toning, and temporal fluctuations to create authentic vintage film appearance. Features configurable scratch density, dust intensity, color shift parameters, and flickering effects. Essential for creative video production, historical documentaries, artistic filters, and retro-style content creation requiring authentic aged film aesthetics. Implements the . Implements the . Implements the . ```csharp public class AgingBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AgingBlock(AgingVideoEffect) Initializes a new instance of the class with specified aging effect settings. ```csharp public AgingBlock(AgingVideoEffect settings) ``` #### Parameters Parameters: - settings (AgingVideoEffect): The aging effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the aging effect settings. Contains parameters for controlling scratch intensity, dust particles, color degradation, and other vintage film simulation parameters. ```csharp public AgingVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (AgingVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the aging effect filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying vintage film deterioration effects to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this aging effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer aging filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer aging filter. ### GetElement() Gets the underlying GStreamer element that performs the aging effect processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the aging filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this aging effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class AlphaCombineBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.AlphaCombineBlock.html # Class AlphaCombineBlock # Class AlphaCombineBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Alpha combine block that merges a video stream with a separate alpha channel stream into a single video stream with transparency information. This block takes two input streams (one for RGB/YUV color data and one for alpha channel) and combines them into RGBA/YUVA output. Essential for compositing separate color and alpha streams into transparent video.

Supported features: Combining separate color and alpha streams into RGBA/YUVA

Use cases: Video compositing, merging decoded color and alpha streams, custom alpha processing

Implements the . Implements the . Implements the . ```csharp public class AlphaCombineBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AlphaCombineBlock() Initializes a new instance of the class. This constructor creates an alpha combine block that merges color and alpha streams. ```csharp public AlphaCombineBlock() ``` ## Properties ### AlphaInput Gets the alpha input pad that accepts the alpha channel stream. ```csharp public MediaBlockPad AlphaInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad for receiving the color video stream. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides the combined RGBA/YUVA stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this alpha combine block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the alpha combine element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core alpha combine element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer alpha combine element. ### IsAvailable() Determines whether the alpha combine element is available on the current system. This method checks for the presence of the alphacombine GStreamer element. Ensure the appropriate GStreamer codec alpha plugin is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the element is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class AutoDeinterlaceBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.AutoDeinterlaceBlock.html # Class AutoDeinterlaceBlock # Class AutoDeinterlaceBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Automatic deinterlacing video processing block that intelligently removes interlacing artifacts. This block automatically detects interlaced video content and applies appropriate deinterlacing algorithms to convert it to progressive format. Features adaptive field detection, motion analysis, and multiple deinterlacing methods including linear, blend, and edge-directed interpolation. Essential for processing broadcast video, DVD content, and legacy interlaced sources to ensure smooth playback on modern progressive displays without visual artifacts or field tearing. Implements the . Implements the . Implements the . ```csharp public class AutoDeinterlaceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### AutoDeinterlaceBlock(AutoDeinterlaceSettings) Initializes a new instance of the class with specified automatic deinterlacing settings. ```csharp public AutoDeinterlaceBlock(AutoDeinterlaceSettings settings) ``` #### Parameters Parameters: - settings (AutoDeinterlaceSettings): The automatic deinterlacing configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the automatic deinterlacing settings. Contains configuration for deinterlacing algorithm selection, field detection sensitivity, motion analysis parameters, and output quality preferences. ```csharp public AutoDeinterlaceSettings Settings { get; set; } ``` #### Property Value Parameters: - (AutoDeinterlaceSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the automatic deinterlace filter and its associated GStreamer elements. This method creates the filter with the specified deinterlacing settings, establishes input and output pads, and prepares the block for intelligent interlace detection and progressive conversion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this automatic deinterlace block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer automatic deinterlace filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer automatic deinterlace filter. ### GetElement() Gets the underlying GStreamer element that performs the automatic deinterlacing processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the automatic deinterlace filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this automatic deinterlace block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class Bayer2RGBBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.Bayer2RGBBlock.html # Class Bayer2RGBBlock # Class Bayer2RGBBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that converts Bayer pattern raw images to RGB format. This block performs demosaicing of Bayer pattern images commonly used in digital cameras and image sensors. Bayer filters arrange color filters in a specific pattern (RGGB, BGGR, GRBG, or GBRG) over the image sensor pixels. This block reconstructs full RGB color images from the raw Bayer data. Commonly used when working with raw camera data or specialized image sensors. Implements the . Implements the . Implements the . ```csharp public class Bayer2RGBBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### Bayer2RGBBlock() Initializes a new instance of the class. Creates a Bayer to RGB conversion block ready to convert raw Bayer pattern images to RGB output. ```csharp public Bayer2RGBBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Bayer to RGB filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, and prepares the block for Bayer pattern to RGB video processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Bayer to RGB conversion block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Bayer to RGB conversion filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Bayer to RGB filter. ### GetElement() Gets the underlying GStreamer element that performs the Bayer to RGB conversion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Bayer to RGB filter. ### IsAvailable() Determines whether the Bayer to RGB conversion filter is available on the current system. This checks if the required GStreamer bayer plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Bayer to RGB conversion filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Bayer to RGB conversion block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CascadeFaceDetectorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.CascadeFaceDetectorBlock.html # Class CascadeFaceDetectorBlock # Class CascadeFaceDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.CV.dll A media block that integrates the Cascade Face Detector into a video processing pipeline. ```csharp public class CascadeFaceDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This block intercepts video frames, processes them using the , and then passes them downstream. It can raise events when faces are detected. ## Constructors ### CascadeFaceDetectorBlock(CascadeFaceDetectorSettings) Initializes a new instance of the class. ```csharp public CascadeFaceDetectorBlock(CascadeFaceDetectorSettings settings = null) ``` #### Parameters Parameters: - settings (CascadeFaceDetectorSettings): The configuration settings for the face detector. If null, default settings are used. ## Properties ### Input Gets the primary input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads associated with this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads associated with this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Validates parameters and initializes the GStreamer element for this block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the build was successful; otherwise, false. ### CleanUp() Releases resources and cleans up the underlying GStreamer element. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Retrieves the underlying GStreamer BaseElement used by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The implementation. ### GetElement() Retrieves the underlying GStreamer Element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The raw GStreamer . ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media blocks pipeline that this block belongs to. ### OnFaceDetected Event raised when a face is detected in the processed video stream. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): ## See Also --- # Class ChromaKeyBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.ChromaKeyBlock.html # Class ChromaKeyBlock # Class ChromaKeyBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll ChromaKey video effect block for professional green screen compositing and color keying. This block provides advanced chroma key functionality for removing specific colors from video content and compositing foreground subjects onto different backgrounds. Features sophisticated color selection algorithms, edge refinement, spill suppression, and alpha channel generation for seamless compositing. Supports multiple color spaces, fine-tuned sensitivity controls, noise reduction, and edge smoothing for professional-quality results. Essential for virtual production, broadcast graphics, video conferencing backgrounds, and creative content creation requiring precise color-based video compositing. Implements the . Implements the . Implements the . ```csharp public class ChromaKeyBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ChromaKeyBlock(ChromaKeySettingsX) Initializes a new instance of the class with specified chroma key settings for color-based video compositing. ```csharp public ChromaKeyBlock(ChromaKeySettingsX settings) ``` #### Parameters Parameters: - settings (ChromaKeySettingsX): The chroma key configuration settings for color selection and compositing parameters. ## Properties ### BackgroundInput Gets the background input pad. ```csharp public MediaBlockPad BackgroundInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### ChromaInput Gets the chroma input pad. ```csharp public MediaBlockPad ChromaInput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the input (background input by default). ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the chroma key settings. Contains comprehensive parameters for controlling color selection, sensitivity thresholds, edge refinement, spill suppression, and compositing quality. ```csharp public ChromaKeySettingsX Settings { get; set; } ``` #### Property Value Parameters: - (ChromaKeySettingsX): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the chroma key filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes background and foreground input pads, and prepares the block for professional color-based video compositing with advanced keying algorithms. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this chroma key block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer chroma key filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer chroma key filter. ### GetElement() Gets the underlying GStreamer element that performs the chroma key compositing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the chroma key filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetAlpha(double) Sets the alpha channel transparency value for the composited result. Controls the overall opacity of the keyed foreground when composited onto the background. ```csharp public void SetAlpha(double alpha) ``` #### Parameters Parameters: - alpha (double): The alpha transparency value (0.0 = fully transparent, 1.0 = fully opaque). ### SetBlackSensitivity(uint) Sets the black level sensitivity for edge refinement in chroma keying. Controls how dark pixels near the key color edges are processed, helping to remove dark fringes and improve edge quality in shadowed areas. ```csharp public void SetBlackSensitivity(uint blackSensitivity) ``` #### Parameters Parameters: - blackSensitivity (uint): The black sensitivity threshold (0 = no dark edge processing, 255 = maximum dark edge removal). ### SetChromaColor(ChromaKeyColor) Sets the chroma color to be removed from the foreground video. Updates the target color for the keying operation, allowing switching between common chroma colors like green, blue, or custom color selections. ```csharp public void SetChromaColor(ChromaKeyColor color) ``` #### Parameters Parameters: - color (ChromaKeyColor): The chroma color preset to key out from the foreground video. ### SetCustomColor(SKColor) Sets a custom color for chroma keying when using the Custom color option. Allows precise specification of any RGB color value as the key color, useful for non-standard backgrounds or specific color matching requirements. ```csharp public void SetCustomColor(SKColor customColor) ``` #### Parameters Parameters: - customColor (SKColor): The custom RGB color to remove from the foreground video. ### SetEdgeSmoothing(double) Sets the edge smoothing level for chroma keying (deprecated method). This method provides backward compatibility but offers less precise control than the separate black and white sensitivity settings. ```csharp [Obsolete("Use SetBlackSensitivity and SetWhiteSensitivity instead for more precise control.")] public void SetEdgeSmoothing(double edgeSmoothing) ``` #### Parameters Parameters: - edgeSmoothing (double): The edge smoothing intensity (0.0 = no smoothing, 1.0 = maximum smoothing). ### SetNoiseLevel(double) Sets the noise reduction level for chroma key edge refinement. Helps clean up rough edges and reduce artifacts caused by compression or sensor noise in the source video, creating smoother keying results. ```csharp public void SetNoiseLevel(double noiseLevel) ``` #### Parameters Parameters: - noiseLevel (double): The noise reduction intensity (0.0 = no noise reduction, 64.0 = maximum smoothing). ### SetPreferPassthrough(bool) Sets the prefer passthrough optimization flag for performance enhancement. When enabled, the filter will pass video through unchanged when the effect is effectively disabled, reducing processing overhead in bypass scenarios. ```csharp public void SetPreferPassthrough(bool preferPassthrough) ``` #### Parameters Parameters: - preferPassthrough (bool): Whether to enable passthrough optimization for better performance. ### SetSensitivity(double) Sets the sensitivity threshold for chroma key color detection. Higher values increase the range of colors considered similar to the key color, useful for handling uneven lighting or color variations in the background. ```csharp public void SetSensitivity(double sensitivity) ``` #### Parameters Parameters: - sensitivity (double): The sensitivity value in degrees (0.0 = exact match only, 180.0 = maximum tolerance). ### SetWhiteSensitivity(uint) Sets the white level sensitivity for edge refinement in chroma keying. Controls how bright pixels near the key color edges are processed, helping to remove light halos and improve edge quality in highly lit areas. ```csharp public void SetWhiteSensitivity(uint whiteSensitivity) ``` #### Parameters Parameters: - whiteSensitivity (uint): The white sensitivity threshold (0 = no bright edge processing, 255 = maximum bright edge removal). ### UpdateSettings(ChromaKeySettingsX) Updates the chroma key settings dynamically during runtime. Allows real-time adjustment of all chroma key parameters including color selection, sensitivity, edge refinement, and compositing quality without rebuilding the pipeline. ```csharp public void UpdateSettings(ChromaKeySettingsX settings) ``` #### Parameters Parameters: - settings (ChromaKeySettingsX): The new chroma key configuration settings to apply. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this chroma key block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class CodecAlphaDemuxBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.CodecAlphaDemuxBlock.html # Class CodecAlphaDemuxBlock # Class CodecAlphaDemuxBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Codec alpha demultiplexer block that separates VP8/VP9 encoded streams with alpha channel into two separate streams: one containing color data and one containing alpha channel data. This block is used to extract and separate the alpha channel from encoded VP8/VP9 streams for independent processing or decoding.

Supported features: VP8/VP9 alpha demuxing from WebM/MKV containers

Use cases: Custom alpha processing, separate color/alpha decoding pipelines

Implements the . Implements the . Implements the . ```csharp public class CodecAlphaDemuxBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### CodecAlphaDemuxBlock() Initializes a new instance of the class. This constructor creates a codec alpha demux block that separates color and alpha streams. ```csharp public CodecAlphaDemuxBlock() ``` ## Properties ### AlphaOutput Gets the alpha output pad that provides the alpha channel stream. ```csharp public MediaBlockPad AlphaOutput { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Input Gets the primary input pad for receiving VP8/VP9 encoded data with alpha. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads available on this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad that provides the color stream. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads available on this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type identifier for this codec alpha demux block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds and initializes the codec alpha demux element within the pipeline, creating the necessary GStreamer elements and configuring the pads. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the block was successfully built and initialized; false if an error occurred. ### CleanUp() Performs cleanup of internal resources, disposing of the element and resetting the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the underlying GStreamer element for advanced configuration and control. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The core codec alpha demux element instance. ### GetElement() Gets the native GStreamer element for direct manipulation and advanced use cases. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The underlying GStreamer codec alpha demux element. ### IsAvailable() Determines whether the codec alpha demux element is available on the current system. This method checks for the presence of the codecalphademux GStreamer element. Ensure the appropriate GStreamer codec alpha plugin is installed. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the element is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block, establishing the connection to the parent pipeline and enabling access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The parent MediaBlocksPipeline that contains this block. ## See Also --- # Class ColorEffectsBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.ColorEffectsBlock.html # Class ColorEffectsBlock # Class ColorEffectsBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Color effects block providing preset-based color manipulation and artistic filtering. This block applies predefined color effects and artistic filters to video content including color temperature adjustments, saturation changes, hue shifts, contrast enhancement, and creative color grading presets. Features various built-in presets for common color effects such as sepia, black and white, vintage, high contrast, and cinematic color grading. Essential for video post-production, creative content creation, broadcast enhancement, and artistic video filtering applications. Implements the . Implements the . Implements the . ```csharp public class ColorEffectsBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ColorEffectsBlock(ColorEffectsPreset) Initializes a new instance of the class with the specified color effects preset. ```csharp public ColorEffectsBlock(ColorEffectsPreset preset) ``` #### Parameters Parameters: - preset (ColorEffectsPreset): The color effects preset to apply. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Preset Gets or sets the color effects preset. Specifies which predefined color effect or artistic filter to apply to the video. ```csharp public ColorEffectsPreset Preset { get; set; } ``` #### Property Value Parameters: - (ColorEffectsPreset): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the color effects filter and its associated GStreamer elements. This method creates the filter with the specified preset, establishes input and output pads, and prepares the block for applying artistic color transformations to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this color effects block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer color effects filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer color effects filter. ### GetElement() Gets the underlying GStreamer element that performs the color effects processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the color effects filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this color effects block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class DeinterlaceBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.DeinterlaceBlock.html # Class DeinterlaceBlock # Class DeinterlaceBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Deinterlace block for converting interlaced video content to progressive format. This block removes interlacing artifacts from video content captured or transmitted in interlaced format by applying sophisticated deinterlacing algorithms. Features multiple deinterlacing methods including field blending, edge-adaptive interpolation, motion-adaptive processing, and temporal filtering. Essential for processing legacy broadcast content, security camera feeds, and older video formats to create smooth progressive video suitable for modern displays and streaming applications. Implements the . Implements the . Implements the . ```csharp public class DeinterlaceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DeinterlaceBlock(DeinterlaceSettings) Initializes a new instance of the class with specified deinterlacing settings. ```csharp public DeinterlaceBlock(DeinterlaceSettings settings) ``` #### Parameters Parameters: - settings (DeinterlaceSettings): The deinterlacing configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the deinterlacing settings. Contains parameters for controlling the deinterlacing algorithm, field handling, and quality settings for optimal interlaced-to-progressive conversion. ```csharp public DeinterlaceSettings Settings { get; set; } ``` #### Property Value Parameters: - (DeinterlaceSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the deinterlace filter and its associated GStreamer elements. This method creates the filter with the specified deinterlacing settings, establishes input and output pads, and prepares the block for converting interlaced video to progressive format using advanced algorithms. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this deinterlace block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer deinterlace filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer deinterlace filter. ### GetElement() Gets the underlying GStreamer element that performs the deinterlacing processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the deinterlace filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this deinterlace block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class DiceBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.DiceBlock.html # Class DiceBlock # Class DiceBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Dice video effect block that creates a fragmented mosaic appearance by dividing video into rotated squares. This block applies a unique visual effect that segments the video into many small square tiles, each randomly rotated in 90-degree increments (0°, 90°, 180°, or 270°). Creates an artistic fragmented appearance with configurable tile size and rotation parameters. Essential for creative video production, artistic filters, music videos, and experimental visual effects requiring geometric fragmentation and tile-based distortion. Implements the . Implements the . Implements the . ```csharp public class DiceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### DiceBlock(DiceVideoEffect) Initializes a new instance of the class with specified dice effect settings. ```csharp public DiceBlock(DiceVideoEffect settings) ``` #### Parameters Parameters: - settings (DiceVideoEffect): The dice effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the dice effect settings. Contains parameters for controlling tile size, rotation randomness, and visual appearance of the fragmented square pattern. ```csharp public DiceVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (DiceVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the dice filter and its associated GStreamer elements. This method creates the filter with the specified dice settings, establishes input and output pads, and prepares the block for creating fragmented mosaic effects with randomly rotated square tiles. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this dice effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer dice filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer dice filter. ### GetElement() Gets the underlying GStreamer element that performs the dice fragmentation processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the dice filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this dice effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class DNNFaceDetectorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.DNNFaceDetectorBlock.html # Class DNNFaceDetectorBlock # Class DNNFaceDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.CV.dll A media block that integrates the DNN Face Detector into a video processing pipeline. ```csharp public class DNNFaceDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This block intercepts video frames, processes them using the , and then passes them downstream. It can raise events when faces are detected. ## Constructors ### DNNFaceDetectorBlock(DNNFaceDetectorSettings) Initializes a new instance of the class. ```csharp public DNNFaceDetectorBlock(DNNFaceDetectorSettings settings = null) ``` #### Parameters Parameters: - settings (DNNFaceDetectorSettings): The configuration settings for the face detector. If null, default settings are used. ## Properties ### Input Gets the primary input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads associated with this block. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads associated with this block. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the media block type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ### OnFaceDetected Event raised when a face is detected in the processed video stream. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): ## See Also --- # Class EdgeBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.EdgeBlock.html # Class EdgeBlock # Class EdgeBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Edge detection video effect block that highlights object boundaries and structural features. This block applies advanced edge detection algorithms to identify and emphasize edges, contours, and boundaries in video content using gradient analysis and convolution filters. Creates artistic line-art style visuals by converting images to edge-only representations with adjustable sensitivity and threshold parameters. Essential for computer vision applications, artistic video filters, technical analysis, and creative content requiring structural outline visualization. Implements the . Implements the . Implements the . ```csharp public class EdgeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### EdgeBlock() Initializes a new instance of the class with default edge detection settings. ```csharp public EdgeBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the edge filter and its associated GStreamer elements. This method creates the filter for edge detection, establishes input and output pads, and prepares the block for highlighting edges and boundaries using gradient analysis algorithms. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this edge detection block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer edge filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer edge filter. ### GetElement() Gets the underlying GStreamer element that performs the edge detection processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the edge filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this edge detection block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class FaceDetectorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.FaceDetectorBlock.html # Class FaceDetectorBlock # Class FaceDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.CVD.dll Face detector block. Implements the . Implements the . Implements the . ```csharp public class FaceDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FaceDetectorBlock(FaceDetectorSettings) Initializes a new instance of the class with optional settings. ```csharp public FaceDetectorBlock(FaceDetectorSettings settings = null) ``` #### Parameters Parameters: - settings (FaceDetectorSettings): The settings. ## Properties ### Input Gets the primary input pad. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the array of all input pads. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the primary output pad. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the array of all output pads. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type of the media block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs the internal GStreamer elements and pads for this block. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up internal resources, specifically the GStreamer element. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core GStreamer element wrapped by this block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the GStreamer element instance. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ### OnFaceDetected Event raised when one or more faces are detected in a video frame. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): ## See Also --- # Class FishEyeBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.FishEyeBlock.html # Class FishEyeBlock # Class FishEyeBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video effect block that applies a fish-eye lens distortion to the video stream. This effect creates a wide-angle, barrel distortion similar to looking through a fish-eye camera lens, where the center of the image appears magnified and the edges are compressed with increasing curvature. The effect is non-configurable and applies a fixed distortion pattern. Implements the . Implements the . Implements the . ```csharp public class FishEyeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FishEyeBlock() Initializes a new instance of the class. Creates a fish-eye distortion effect with fixed parameters. The effect cannot be configured and will apply a standard barrel distortion pattern to all processed video frames. ```csharp public FishEyeBlock() ``` ## Properties ### Input Gets the single video input pad for this block. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets all input pads. This block has a single video input. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the single video output pad for this block. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets all output pads. This block has a single video output. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the block type identifier for this fish-eye effect block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Releases all internal resources and disposes of the fish-eye filter element. Called during disposal to ensure proper cleanup of native resources. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper for the fish-eye filter. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The FishEyeFilter element that performs the video distortion. ### GetElement() Gets the underlying GStreamer element for this fish-eye block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer element that performs the fish-eye distortion. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the pipeline context for this block, providing access to shared resources. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline that owns this block. ## See Also --- # Class FlipRotateBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.FlipRotateBlock.html # Class FlipRotateBlock # Class FlipRotateBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that applies geometric transformations to video including flipping and rotation operations. This block provides horizontal flip, vertical flip, and rotation capabilities (90°, 180°, 270°) commonly used for correcting camera orientation, creating mirror effects, or adjusting video captured from mobile devices. The transformations are performed efficiently without quality loss. Implements the . Implements the . Implements the . ```csharp public class FlipRotateBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### FlipRotateBlock(VideoFlipRotateMethod) Initializes a new instance of the class with the specified geometric transformation method. ```csharp public FlipRotateBlock(VideoFlipRotateMethod settings) ``` #### Parameters Parameters: - settings (VideoFlipRotateMethod): The flip/rotate transformation method to apply to the video stream. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the flip/rotate transformation method. Specifies the type of geometric transformation to apply including horizontal flip, vertical flip, and rotation operations (90°, 180°, 270°). ```csharp public VideoFlipRotateMethod Settings { get; set; } ``` #### Property Value Parameters: - (VideoFlipRotateMethod): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the flip/rotate transformation filter and its associated GStreamer elements. This method creates the filter with the specified transformation method, establishes input and output pads, and prepares the block for video geometric transformation processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this flip/rotate transformation block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer flip/rotate filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer flip/rotate filter. ### GetElement() Gets the underlying GStreamer element that performs the flip/rotate transformations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the flip/rotate filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this flip/rotate transformation block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GammaBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.GammaBlock.html # Class GammaBlock # Class GammaBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that applies gamma correction to video, adjusting the luminance and overall brightness. Gamma correction is essential for color management and display calibration, compensating for the non-linear response of display devices. Values less than 1.0 brighten the image, while values greater than 1.0 darken it. This effect is commonly used for HDR processing, color grading, and ensuring consistent appearance across different displays and devices. Implements the . Implements the . Implements the . ```csharp public class GammaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GammaBlock(double) Initializes a new instance of the class with the specified gamma correction value. ```csharp public GammaBlock(double gamma) ``` #### Parameters Parameters: - gamma (double): The gamma correction value. Default value is 1.0 (no correction). Values <1.0 brighten, >1.0 darken. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### Value Gets or sets the gamma correction value that controls the brightness curve. Values less than 1.0 brighten the image, values greater than 1.0 darken it. Default value is 1.0 (no correction). Typical range is 0.1 to 3.0. ```csharp public double Value { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### Build() Constructs and initializes the gamma correction filter and its associated GStreamer elements. This method creates the filter with the specified gamma value, establishes input and output pads, and prepares the block for video brightness adjustment processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this gamma correction block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer gamma filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer gamma filter. ### GetElement() Gets the underlying GStreamer element that performs the gamma correction. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the gamma filter. ### IsAvailable() Determines whether the gamma correction filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the gamma correction filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this gamma correction block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GaussianBlurBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.GaussianBlurBlock.html # Class GaussianBlurBlock # Class GaussianBlurBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that applies Gaussian blur or sharpening effects to video. Gaussian blur is a widely used image processing technique that reduces noise and detail by averaging neighboring pixels using a Gaussian distribution. Positive sigma values create blur effects, while negative values create sharpening effects. This filter is commonly used for creating artistic blur effects, privacy masking, or image enhancement. Implements the . Implements the . Implements the . ```csharp public class GaussianBlurBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GaussianBlurBlock(double) Initializes a new instance of the class with the specified sigma value. ```csharp public GaussianBlurBlock(double sigma = 1.2) ``` #### Parameters Parameters: - sigma (double): The sigma value controlling blur intensity. Default value is 1.2. Positive values blur, negative values sharpen. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Sigma Gets or sets the sigma value that controls the blur intensity and direction. Positive values create blur effects (larger values = more blur), negative values create sharpening effects. Default value is 1.2. Typical range is -3.0 to 10.0. ```csharp public double Sigma { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Gaussian blur filter and its associated GStreamer elements. This method creates the filter with the specified sigma value, establishes input and output pads, and prepares the block for video blur or sharpening processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Gaussian blur block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer Gaussian blur filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer Gaussian blur filter. ### GetElement() Gets the underlying GStreamer element that performs the Gaussian blur or sharpening processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Gaussian blur filter. ### IsAvailable() Determines whether the Gaussian blur filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Gaussian blur filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Gaussian blur block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class GrayscaleBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.GrayscaleBlock.html # Class GrayscaleBlock # Class GrayscaleBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that converts color video to grayscale (black and white) output. This effect removes color information while preserving luminance values, creating a monochrome representation of the input video. Commonly used for artistic effects, reducing bandwidth requirements, or creating vintage-style video content. The conversion maintains proper brightness levels by using luminance weighting. Implements the . Implements the . Implements the . ```csharp public class GrayscaleBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### GrayscaleBlock() Initializes a new instance of the class. Creates a grayscale conversion block ready to convert color video to monochrome output. ```csharp public GrayscaleBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the grayscale filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, and prepares the block for color-to-grayscale video processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this grayscale block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer grayscale filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer grayscale filter. ### GetElement() Gets the underlying GStreamer element that performs the grayscale conversion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the grayscale filter. ### IsAvailable() Determines whether the grayscale filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the grayscale filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this grayscale block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ImageOverlayBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.ImageOverlayBlock.html # Class ImageOverlayBlock # Class ImageOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that overlays static images onto video streams with positioning, scaling, and transparency control. This block composites image files (PNG, JPEG, BMP, etc.) over video content, supporting features like alpha blending, custom positioning, rotation, scaling, and fade effects. Commonly used for watermarks, logos, brand overlays, lower thirds, and creative graphic elements in video production workflows. The overlay supports real-time updates and animation effects including fade-in and fade-out transitions. Implements the . Implements the . Implements the . ```csharp public class ImageOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ImageOverlayBlock(string) Initializes a new instance of the class with the specified image file. Creates default overlay settings with the image positioned at the top-left corner. ```csharp public ImageOverlayBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path to the image file to overlay (supports PNG, JPEG, BMP, and other common formats). ### ImageOverlayBlock(ImageOverlaySettings) Initializes a new instance of the class with custom overlay settings. Allows full control over positioning, scaling, transparency, and other overlay properties. ```csharp public ImageOverlayBlock(ImageOverlaySettings settings) ``` #### Parameters Parameters: - settings (ImageOverlaySettings): The ImageOverlaySettings instance defining the complete overlay configuration. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the image overlay settings that control the overlay behavior including image file path, position, size, transparency, rotation, and blending mode. Call the Update method after modifying settings if the pipeline is already started. ```csharp public ImageOverlaySettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageOverlaySettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the image overlay filter and its associated GStreamer elements. This method creates the filter with the specified overlay settings, establishes input and output pads, and prepares the block for image compositing operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this image overlay block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer image overlay filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer image overlay filter. ### GetElement() Gets the underlying GStreamer element that performs the image overlay processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the image overlay filter. ### IsAvailable() Determines whether the image overlay filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the image overlay filter is available and can be used; otherwise, false. ### StartFadeIn(TimeSpan) Initiates a smooth fade-in transition that gradually increases the overlay opacity from zero to full visibility. This creates a professional appear effect commonly used for introducing graphics or watermarks. ```csharp public void StartFadeIn(TimeSpan duration) ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-in transition. Must be a positive TimeSpan value. ### StartFadeOut(TimeSpan) Initiates a smooth fade-out transition that gradually reduces the overlay opacity to zero. This creates a professional dissolve effect commonly used in broadcast and video production. ```csharp public void StartFadeOut(TimeSpan duration) ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-out transition. Must be a positive TimeSpan value. ### Update() Updates the overlay settings in real-time while the pipeline is running. Call this method after modifying the Settings property to apply changes immediately. This allows dynamic repositioning, scaling, or changing overlay properties during playback. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this image overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class ImageOverlayCairoBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.ImageOverlayCairoBlock.html # Class ImageOverlayCairoBlock # Class ImageOverlayCairoBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that overlays static images onto video streams using Cairo rendering with positioning, scaling, and transparency control. This block composites image files (PNG, JPEG, BMP, etc.) over video content using the Cairo graphics library, supporting features like alpha blending, custom positioning, rotation, scaling, and fade effects. Commonly used for watermarks, logos, brand overlays, lower thirds, and creative graphic elements in video production workflows. The overlay supports real-time updates and animation effects including fade-in and fade-out transitions. This Cairo-based implementation provides high-quality rendering and better cross-platform compatibility. Implements the . Implements the . Implements the . ```csharp public class ImageOverlayCairoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### ImageOverlayCairoBlock(string) Initializes a new instance of the class with the specified image file. Creates default overlay settings with the image positioned at the top-left corner. ```csharp public ImageOverlayCairoBlock(string filename) ``` #### Parameters Parameters: - filename (string): The path to the image file to overlay (supports PNG, JPEG, BMP, and other common formats). ### ImageOverlayCairoBlock(ImageOverlaySettings) Initializes a new instance of the class with custom overlay settings. Allows full control over positioning, scaling, transparency, and other overlay properties. ```csharp public ImageOverlayCairoBlock(ImageOverlaySettings settings) ``` #### Parameters Parameters: - settings (ImageOverlaySettings): The ImageOverlaySettings instance defining the complete overlay configuration. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the image overlay settings that control the overlay behavior including image file path, position, size, transparency, rotation, and blending mode. Call the Update method after modifying settings if the pipeline is already started. ```csharp public ImageOverlaySettings Settings { get; set; } ``` #### Property Value Parameters: - (ImageOverlaySettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the Cairo-based image overlay filter and its associated GStreamer elements. This method creates the filter with the specified overlay settings, establishes input and output pads, and prepares the block for Cairo-based image compositing operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this Cairo image overlay block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the Cairo-based image overlay filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the Cairo image overlay filter. ### GetElement() Gets the underlying GStreamer element that performs the Cairo-based image overlay processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the Cairo overlay filter. ### IsAvailable() Determines whether the Cairo-based image overlay filter is available on the current system. This checks if the required GStreamer Cairo overlay plugin is installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the Cairo image overlay filter is available and can be used; otherwise, false. ### SetAlpha(double) Sets the alpha (transparency) value of the overlay directly. This provides immediate control over the overlay opacity without animation. ```csharp public void SetAlpha(double alpha) ``` #### Parameters Parameters: - alpha (double): The alpha value between 0.0 (fully transparent) and 1.0 (fully opaque). ### StartFadeIn(TimeSpan) Initiates a smooth fade-in transition that gradually increases the overlay opacity from zero to full visibility. This creates a professional appear effect commonly used for introducing graphics or watermarks. ```csharp public void StartFadeIn(TimeSpan duration) ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-in transition. Must be a positive TimeSpan value. ### StartFadeOut(TimeSpan) Initiates a smooth fade-out transition that gradually reduces the overlay opacity to zero. This creates a professional dissolve effect commonly used in broadcast and video production. ```csharp public void StartFadeOut(TimeSpan duration) ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-out transition. Must be a positive TimeSpan value. ### Update() Updates the overlay settings in real-time while the pipeline is running. Call this method after modifying the Settings property to apply changes immediately. This allows dynamic repositioning, scaling, or changing overlay properties during playback. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this Cairo image overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class InterlaceBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.InterlaceBlock.html # Class InterlaceBlock # Class InterlaceBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Interlace block for converting progressive video content to interlaced format. This block applies interlacing effects to progressive video content by combining alternating scan lines to create traditional broadcast-compatible interlaced video. Features configurable field order, pattern selection, and temporal processing for creating authentic interlaced output. Essential for broadcast delivery, legacy system compatibility, and creating specific visual effects that require interlaced video characteristics for technical or artistic purposes. Implements the . Implements the . Implements the . ```csharp public class InterlaceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### InterlaceBlock(InterlaceSettings) Initializes a new instance of the class with specified interlacing settings. ```csharp public InterlaceBlock(InterlaceSettings settings) ``` #### Parameters Parameters: - settings (InterlaceSettings): The interlacing configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the interlacing settings. Contains parameters for controlling field order, scan line patterns, and temporal processing for progressive-to-interlaced conversion. ```csharp public InterlaceSettings Settings { get; } ``` #### Property Value Parameters: - (InterlaceSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the interlace filter and its associated GStreamer elements. This method creates the filter with the specified interlacing settings, establishes input and output pads, and prepares the block for converting progressive video to interlaced format for broadcast compatibility. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this interlace block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer interlace filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer interlace filter. ### GetElement() Gets the underlying GStreamer element that performs the interlacing processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the interlace filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this interlace block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class KeyFrameDetectorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.KeyFrameDetectorBlock.html # Class KeyFrameDetectorBlock # Class KeyFrameDetectorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Key frame detector block for automatic identification and analysis of significant video frames. This block analyzes video content to detect key frames (I-frames) and scene changes using advanced computer vision algorithms. Features real-time detection, configurable sensitivity, JSON export functionality, and event-driven notifications for each detected key frame. Essential for video indexing, thumbnail generation, scene analysis, content summarization, and automated video editing applications requiring frame-level precision. Implements the . Implements the . Implements the . ```csharp public class KeyFrameDetectorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### KeyFrameDetectorBlock() Initializes a new instance of the class with default key frame detection settings. ```csharp public KeyFrameDetectorBlock() ``` ## Fields ### TAG Logging tag used to identify log messages from this key frame detector block. ```csharp protected const string TAG = "KeyFrameDetectorBlock" ``` #### Field Value Parameters: - (string): ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### JSONFilename Gets or sets the JSON filename to export detected key frame timestamps. When specified, all detected key frame timecodes will be saved to this file for post-processing analysis and video indexing. ```csharp public string JSONFilename { get; set; } ``` #### Property Value Parameters: - (string): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the key frame detector and its associated GStreamer elements. This method creates the detector element, establishes input and output pads, configures JSON export if specified, and prepares the block for real-time key frame detection and scene change analysis. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the detector was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this key frame detector block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper. Note: This detector returns null as it operates differently from standard filter elements. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this detector type. ### GetElement() Gets the underlying GStreamer element that performs the key frame detection. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the key frame detector. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this key frame detector block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### OnKeyFrameDetected This event occurs whenever a new key frame is detected in the video stream. Provides real-time notification with precise timestamp information for immediate processing or UI updates during key frame analysis. ```csharp public event EventHandler OnKeyFrameDetected ``` #### Event Type Parameters: - (EventHandler < TimeSpan >): ## See Also --- # Class LUTProcessorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.LUTProcessorBlock.html # Class LUTProcessorBlock # Class LUTProcessorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll LUT (Look-Up Table) processor block for professional color grading and color correction. This block applies industry-standard LUT files to transform video colors, enabling cinematic color grading, film emulation, and consistent color workflows. Supports various LUT formats including 3D LUTs (.cube, .3dl), provides real-time color transformation, and maintains color accuracy throughout the processing pipeline. Essential for professional video production, color matching between cameras, creative color styling, and ensuring consistent visual aesthetics across different video sources and display devices. Implements the . Implements the . Implements the . ```csharp public class LUTProcessorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### LUTProcessorBlock(LUTVideoEffect) Initializes a new instance of the class with specified LUT settings. ```csharp public LUTProcessorBlock(LUTVideoEffect settings) ``` #### Parameters Parameters: - settings (LUTVideoEffect): The LUT processor configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the LUT video effect settings. Contains the LUT file path, interpolation mode, and color space parameters. ```csharp public LUTVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (LUTVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the LUT processor and its associated GStreamer elements. This method creates the processor with the specified LUT file, establishes input and output pads, and prepares the block for real-time color grading operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the processor was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this LUT processor block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the LUT processor element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the LUT processor. ### GetElement() Gets the underlying GStreamer element that performs the LUT color transformation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the LUT processor. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this LUT processor block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MirrorBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.MirrorBlock.html # Class MirrorBlock # Class MirrorBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video mirror effect block that creates reflective and symmetrical visual effects. This block applies various mirroring transformations to video content including horizontal flipping, vertical flipping, and combinations for creating symmetrical patterns and kaleidoscope-like effects. Features multiple mirror modes for different artistic and practical applications including left-right mirroring, top-bottom mirroring, and quad-mirroring. Essential for creative video production, artistic filters, webcam applications, and visual effects requiring symmetrical transformations. Implements the . Implements the . Implements the . ```csharp public class MirrorBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MirrorBlock(MirrorMode) Initializes a new instance of the class with the specified mirror mode. ```csharp public MirrorBlock(MirrorMode mode) ``` #### Parameters Parameters: - mode (MirrorMode): The mirror transformation mode to apply. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Mode Gets or sets the mirror mode. Specifies the type of mirroring transformation to apply to the video content. ```csharp public MirrorMode Mode { get; set; } ``` #### Property Value Parameters: - (MirrorMode): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the mirror filter and its associated GStreamer elements. This method creates the filter with the specified mirror mode, establishes input and output pads, and prepares the block for creating symmetrical and reflective visual transformations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this mirror effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer mirror filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer mirror filter. ### GetElement() Gets the underlying GStreamer element that performs the mirror effect processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the mirror filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this mirror effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MovingBlurBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.MovingBlurBlock.html # Class MovingBlurBlock # Class MovingBlurBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Moving blur effect block that creates motion-sensitive blur based on frame differences. This block analyzes temporal changes between consecutive frames to detect motion areas and applies selective blur effects to moving objects while preserving static elements. Features configurable motion sensitivity, blur intensity, and temporal filtering for creating dynamic visual effects. Essential for artistic video production, motion emphasis, background isolation, and creative effects requiring motion-aware processing. Implements the . Implements the . Implements the . ```csharp public class MovingBlurBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MovingBlurBlock(MovingBlurVideoEffect) Initializes a new instance of the class with specified moving blur effect settings. ```csharp public MovingBlurBlock(MovingBlurVideoEffect settings) ``` #### Parameters Parameters: - settings (MovingBlurVideoEffect): The moving blur effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the moving blur effect settings. Contains parameters for controlling motion detection sensitivity, blur intensity, and temporal processing for motion-aware blur effects. ```csharp public MovingBlurVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (MovingBlurVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the moving blur filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying selective blur to moving objects while preserving static elements. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this moving blur effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer moving blur filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer moving blur filter. ### GetElement() Gets the underlying GStreamer element that performs the motion-sensitive blur processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the moving blur filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this moving blur effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MovingEchoBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.MovingEchoBlock.html # Class MovingEchoBlock # Class MovingEchoBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Moving echo effect block that creates ghosting trails and echo images of moving objects. This block analyzes motion between frames to detect moving elements and generates visual echo trails that follow the movement path. Features configurable echo intensity, trail length, and fade parameters for creating dynamic motion-tracking visual effects. Essential for artistic video production, motion visualization, sports analysis, and creative effects requiring motion trail emphasis. Implements the . Implements the . Implements the . ```csharp public class MovingEchoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MovingEchoBlock(MovingEchoVideoEffect) Initializes a new instance of the class with specified moving echo effect settings. ```csharp public MovingEchoBlock(MovingEchoVideoEffect settings) ``` #### Parameters Parameters: - settings (MovingEchoVideoEffect): The moving echo effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the moving echo effect settings. Contains parameters for controlling echo trail intensity, length, fade characteristics, and motion detection sensitivity for dynamic echo generation. ```csharp public MovingEchoVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (MovingEchoVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the moving echo filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for generating ghosting trails that follow moving objects in the video. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this moving echo effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer moving echo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer moving echo filter. ### GetElement() Gets the underlying GStreamer element that performs the motion echo trail processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the moving echo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this moving echo effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class MovingZoomEchoBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.MovingZoomEchoBlock.html # Class MovingZoomEchoBlock # Class MovingZoomEchoBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Moving-zoom echo effect block that creates dynamic echo trails with animated transformations. This block generates multiple echo images with configurable scaling, rotation, and movement patterns, creating psychedelic and motion-based visual effects. Features include adjustable echo count, zoom factors, rotation speeds, and movement trajectories for creating complex visual feedback loops. Essential for music videos, creative transitions, artistic effects, and experimental video production requiring dynamic multi-layered echo patterns with animated transformations. Implements the . Implements the . Implements the . ```csharp public class MovingZoomEchoBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### MovingZoomEchoBlock(MovingZoomEchoVideoEffect) Initializes a new instance of the class with specified moving-zoom echo effect settings. ```csharp public MovingZoomEchoBlock(MovingZoomEchoVideoEffect settings) ``` #### Parameters Parameters: - settings (MovingZoomEchoVideoEffect): The moving-zoom echo effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the moving-zoom echo effect settings. Contains parameters for echo count, zoom factors, rotation speeds, movement patterns, and other animation properties that control the dynamic echo transformation behavior. ```csharp public MovingZoomEchoVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (MovingZoomEchoVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the moving-zoom echo filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for creating dynamic echo trails with animated transformations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this moving-zoom echo block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer moving-zoom echo filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer moving-zoom echo filter. ### GetElement() Gets the underlying GStreamer element that performs the moving-zoom echo effect. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the moving-zoom echo filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this moving-zoom echo block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class OpticalAnimationBWBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.OpticalAnimationBWBlock.html # Class OpticalAnimationBWBlock # Class OpticalAnimationBWBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Black and white optical animation effect block that creates retro optical art patterns. This block generates animated black and white optical illusion effects reminiscent of classic op-art and psychedelic animations. Features include pattern generation, motion dynamics, contrast controls, and temporal variations for creating hypnotic visual effects. Essential for artistic video production, retro-style animations, music visualizations, and experimental content requiring animated optical illusion patterns. Implements the . Implements the . Implements the . ```csharp public class OpticalAnimationBWBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OpticalAnimationBWBlock(OpticalAnimationBWVideoEffect) Initializes a new instance of the class with specified optical animation effect settings. ```csharp public OpticalAnimationBWBlock(OpticalAnimationBWVideoEffect settings) ``` #### Parameters Parameters: - settings (OpticalAnimationBWVideoEffect): The optical animation effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the optical animation effect settings. Contains parameters for pattern type, animation speed, contrast levels, and other properties that control the black and white optical illusion generation. ```csharp public OpticalAnimationBWVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (OpticalAnimationBWVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the optical animation filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for generating animated black and white optical illusion patterns. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this optical animation block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer optical animation filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer optical animation filter. ### GetElement() Gets the underlying GStreamer element that performs the optical animation effect. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the optical animation filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this optical animation block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class OverlayManagerBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.OverlayManagerBlock.html # Class OverlayManagerBlock # Class OverlayManagerBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Overlay manager block for dynamic multi-layer video overlay composition and management. This block provides a centralized system for managing multiple overlay elements on video content, supporting various overlay types including images, text, shapes, and animated graphics. Features include layer ordering, opacity control, positioning, blending modes, and real-time overlay updates. Essential for broadcast graphics, live production, watermarking, subtitles, and any application requiring dynamic overlay composition with runtime management capabilities. Implements the . Implements the . Implements the . ```csharp public class OverlayManagerBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### OverlayManagerBlock() Initializes a new instance of the class for managing multiple video overlays. ```csharp public OverlayManagerBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the overlay manager filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, and prepares the block for managing multiple overlay layers on video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this overlay manager block. This method resets the build state but does not dispose of the GStreamer elements. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer overlay manager filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer overlay manager filter. ### GetElement() Gets the underlying GStreamer element that performs the overlay management. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the overlay manager filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### Video_Overlay_Add(IOverlayManagerElement) Adds a new overlay element to the video composition. The overlay will be rendered on top of the video content according to its properties. ```csharp public void Video_Overlay_Add(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to add to the composition. ### Video_Overlay_AddBackground(string, string) Adds a background image that fills the entire frame. The image is drawn behind all other overlays (ZIndex = -1000). ```csharp public OverlayManagerImage Video_Overlay_AddBackground(string filename, string name = "Background") ``` #### Parameters Parameters: - filename (string): The image filename (full path). - name (string): Optional name for the background image. #### Returns Parameters: - (OverlayManagerImage): The created image element for later modification or removal. ### Video_Overlay_AddFade(OverlayManagerFadeType, TimeSpan, TimeSpan, (byte R, byte G, byte B)?, OverlayManagerPanEasing, string) Adds a custom fade effect with full control over parameters. ```csharp public OverlayManagerFade Video_Overlay_AddFade(OverlayManagerFadeType fadeType, TimeSpan startTime, TimeSpan endTime, (byte R, byte G, byte B)? fadeColor = null, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear, string name = "Fade") ``` #### Parameters Parameters: - fadeType (OverlayManagerFadeType): The type of fade (FadeIn or FadeOut). - startTime (TimeSpan): The fade start time. - endTime (TimeSpan): The fade end time. - fadeColor (( byte R , byte G , byte B ) ?): Optional fade color (default is black). - easing (OverlayManagerPanEasing): The easing function for smooth animation. - name (string): Optional name for the fade effect. #### Returns Parameters: - (OverlayManagerFade): The created fade element for later modification or removal. ### Video_Overlay_AddFadeIn(TimeSpan, TimeSpan?, OverlayManagerPanEasing, string) Adds a fade-in effect from black (or specified color) to video. ```csharp public OverlayManagerFade Video_Overlay_AddFadeIn(TimeSpan duration, TimeSpan? startTime = null, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear, string name = "FadeIn") ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-in effect. - startTime (TimeSpan ?): Optional start time (default is TimeSpan.Zero for immediate start). - easing (OverlayManagerPanEasing): The easing function for smooth animation. - name (string): Optional name for the fade effect. #### Returns Parameters: - (OverlayManagerFade): The created fade element for later modification or removal. ### Video_Overlay_AddFadeOut(TimeSpan, TimeSpan, OverlayManagerPanEasing, string) Adds a fade-out effect from video to black (or specified color). ```csharp public OverlayManagerFade Video_Overlay_AddFadeOut(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear, string name = "FadeOut") ``` #### Parameters Parameters: - startTime (TimeSpan): The start time of the fade-out effect. - duration (TimeSpan): The duration of the fade-out effect. - easing (OverlayManagerPanEasing): The easing function for smooth animation. - name (string): Optional name for the fade effect. #### Returns Parameters: - (OverlayManagerFade): The created fade element for later modification or removal. ### Video_Overlay_AddImage(string, int, int, int, int, string) Adds an image overlay at the specified position. ```csharp public OverlayManagerImage Video_Overlay_AddImage(string filename, int x, int y, int width = 0, int height = 0, string name = "Image") ``` #### Parameters Parameters: - filename (string): The image filename (full path). - x (int): The X position. - y (int): The Y position. - width (int): The width (0 for original size). - height (int): The height (0 for original size). - name (string): Optional name for the image overlay. #### Returns Parameters: - (OverlayManagerImage): The created image element for later modification or removal. ### Video_Overlay_AddPan(int, int, int, int, int, int, int, int, TimeSpan, TimeSpan, string) ```csharp public OverlayManagerPan Video_Overlay_AddPan(int startX, int startY, int startWidth, int startHeight, int stopX, int stopY, int stopWidth, int stopHeight, TimeSpan startTime, TimeSpan endTime, string name = "Pan") ``` #### Parameters Parameters: - startX (int): - startY (int): - startWidth (int): - startHeight (int): - stopX (int): - stopY (int): - stopWidth (int): The stop rectangle width (0 for full width). - stopHeight (int): The stop rectangle height (0 for full height). - startTime (TimeSpan): The animation start time. - endTime (TimeSpan): The animation end time. - name (string): Optional name for the pan effect. #### Returns Parameters: - (OverlayManagerPan): The created pan element for later modification or removal. ### Video_Overlay_AddPan((int X, int Y, int Width, int Height), (int X, int Y, int Width, int Height), TimeSpan, TimeSpan, OverlayManagerPanEasing, string) Adds a simple pan effect from one rectangle to another using the element's start/end time. ```csharp public OverlayManagerPan Video_Overlay_AddPan((int X, int Y, int Width, int Height) startRect, (int X, int Y, int Width, int Height) stopRect, TimeSpan startTime, TimeSpan endTime, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear, string name = "Pan") ``` #### Parameters Parameters: - startRect (( int X , int Y , int Width , int Height )): The start rectangle (X, Y, Width, Height). Use 0 for width/height to use full video dimensions. - stopRect (( int X , int Y , int Width , int Height )): The stop rectangle (X, Y, Width, Height). Use 0 for width/height to use full video dimensions. - startTime (TimeSpan): The animation start time. - endTime (TimeSpan): The animation end time. - easing (OverlayManagerPanEasing): The easing function for smooth animation. - name (string): Optional name for the pan effect. #### Returns Parameters: - (OverlayManagerPan): The created pan element for later modification or removal. ### Video_Overlay_AddSqueezeback(string, Rect, Rect, string) Adds a squeezeback effect that scales the video to a custom rectangle and draws an overlay image on top with alpha transparency support. This creates the classic "squeezeback" effect used in broadcast where video is shown in a smaller area with graphics/branding surrounding it. ```csharp public OverlayManagerSqueezeback Video_Overlay_AddSqueezeback(string backgroundImageFilename, Rect videoRect, Rect backgroundRect = null, string name = "Squeezeback") ``` #### Parameters Parameters: - backgroundImageFilename (string): The overlay image filename (PNG with alpha recommended). - videoRect (Rect): The video rectangle (position and size where video is scaled). - backgroundRect (Rect): The overlay image rectangle (null for full frame). - name (string): Optional name for the squeezeback element. #### Returns Parameters: - (OverlayManagerSqueezeback): The created squeezeback element for later modification or removal. #### Remarks By default, the video is drawn first at the specified videoRect, then the overlay image is drawn on top. Use a PNG image with transparent areas where you want the scaled video to show through. ### Video_Overlay_AddZoom(double, double, int, int, string) Adds a zoom effect to the overlay manager. The zoom effect will scale and shift the video content. ```csharp public OverlayManagerZoom Video_Overlay_AddZoom(double zoomX, double zoomY, int shiftX = 0, int shiftY = 0, string name = "Zoom") ``` #### Parameters Parameters: - zoomX (double): The horizontal zoom ratio (1.0 = 100%). - zoomY (double): The vertical zoom ratio (1.0 = 100%). - shiftX (int): The horizontal shift in pixels. - shiftY (int): The vertical shift in pixels. - name (string): Optional name for the zoom effect. #### Returns Parameters: - (OverlayManagerZoom): The created zoom element for later modification or removal. ### Video_Overlay_AnimateImage(string, int, int, int, int, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts an animation on an image overlay to move/resize it to a target rectangle. ```csharp public bool Video_Overlay_AnimateImage(string name, int targetX, int targetY, int targetWidth, int targetHeight, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the image overlay. - targetX (int): The target X position. - targetY (int): The target Y position. - targetWidth (int): The target width (0 to keep current). - targetHeight (int): The target height (0 to keep current). - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the image was found and animation started; otherwise, false. ### Video_Overlay_BringToFront(string) Brings an overlay element to the front (highest Z-Index). ```csharp public bool Video_Overlay_BringToFront(string name) ``` #### Parameters Parameters: - name (string): The name of the overlay. #### Returns Parameters: - (bool): true if the overlay was found and updated; otherwise, false. ### Video_Overlay_Clear() Removes all overlay elements from the video composition. ```csharp public void Video_Overlay_Clear() ``` ### Video_Overlay_Count() Gets the total number of overlays currently in the composition. ```csharp public int Video_Overlay_Count() ``` #### Returns Parameters: - (int): The number of overlay elements in the composition. ### Video_Overlay_Get(int) Gets the overlay element at the specified index in the overlay list. ```csharp public IOverlayManagerElement Video_Overlay_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to retrieve. #### Returns Parameters: - (IOverlayManagerElement): The overlay element at the specified index. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown when index is out of range. ### Video_Overlay_GetByName(string) Gets an overlay element by its name. ```csharp public IOverlayManagerElement Video_Overlay_GetByName(string name) ``` #### Parameters Parameters: - name (string): The name of the overlay to find. #### Returns Parameters: - (IOverlayManagerElement): The overlay element with the specified name, or null if not found. ### Video_Overlay_ImageFadeIn(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation on an image overlay. ```csharp public bool Video_Overlay_ImageFadeIn(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the image overlay. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the image was found and fade started; otherwise, false. ### Video_Overlay_ImageFadeOut(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation on an image overlay. ```csharp public bool Video_Overlay_ImageFadeOut(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the image overlay. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the image was found and fade started; otherwise, false. ### Video_Overlay_Remove(IOverlayManagerElement) Removes a specific overlay element from the video composition. ```csharp public void Video_Overlay_Remove(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to remove from the composition. ### Video_Overlay_RemoveAt(int) Removes an overlay element at the specified index in the overlay list. ```csharp public void Video_Overlay_RemoveAt(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to remove. ### Video_Overlay_RemoveByName(string) Removes an overlay element by its name. ```csharp public bool Video_Overlay_RemoveByName(string name) ``` #### Parameters Parameters: - name (string): The name of the overlay to remove. #### Returns Parameters: - (bool): true if the overlay was found and removed; otherwise, false. ### Video_Overlay_SendToBack(string) Sends an overlay element to the back (lowest Z-Index). ```csharp public bool Video_Overlay_SendToBack(string name) ``` #### Parameters Parameters: - name (string): The name of the overlay. #### Returns Parameters: - (bool): true if the overlay was found and updated; otherwise, false. ### Video_Overlay_SetZIndex(string, int) Sets the Z-Index of an overlay element. ```csharp public bool Video_Overlay_SetZIndex(string name, int zIndex) ``` #### Parameters Parameters: - name (string): The name of the overlay. - zIndex (int): The new Z-Index value. #### Returns Parameters: - (bool): true if the overlay was found and updated; otherwise, false. ### Video_Overlay_Squeezeback_AnimateBackground(string, Rect, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts an animation for the background rectangle of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_AnimateBackground(string name, Rect targetRect, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - targetRect (Rect): The target rectangle. - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and animation started; otherwise, false. ### Video_Overlay_Squeezeback_AnimateVideo(string, Rect, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts an animation for the video rectangle of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_AnimateVideo(string name, Rect targetRect, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - targetRect (Rect): The target rectangle. - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and animation started; otherwise, false. ### Video_Overlay_Squeezeback_BackgroundFadeIn(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation for the background of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_BackgroundFadeIn(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and fade started; otherwise, false. ### Video_Overlay_Squeezeback_BackgroundFadeOut(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation for the background of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_BackgroundFadeOut(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and fade started; otherwise, false. ### Video_Overlay_Squeezeback_SetBackgroundOnTop(string) Sets the background layer to be on top in a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_SetBackgroundOnTop(string name) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. #### Returns Parameters: - (bool): true if the squeezeback was found and updated; otherwise, false. ### Video_Overlay_Squeezeback_SetVideoOnTop(string) Sets the video layer to be on top in a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_SetVideoOnTop(string name) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. #### Returns Parameters: - (bool): true if the squeezeback was found and updated; otherwise, false. ### Video_Overlay_Squeezeback_SwapLayers(string) Swaps the layers in a squeezeback element (video on top / background on top). ```csharp public bool Video_Overlay_Squeezeback_SwapLayers(string name) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. #### Returns Parameters: - (bool): true if the squeezeback was found and layers swapped; otherwise, false. ### Video_Overlay_Squeezeback_UpdateBackgroundImage(string, string, Rect) Updates the background image of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_UpdateBackgroundImage(string name, string filename, Rect backgroundRect = null) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - filename (string): The new background image filename. - backgroundRect (Rect): The new background rectangle (null to keep current). #### Returns Parameters: - (bool): true if the squeezeback was found and updated; otherwise, false. ### Video_Overlay_Squeezeback_UpdateVideoPosition(string, Rect) Updates the video position of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_UpdateVideoPosition(string name, Rect videoRect) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - videoRect (Rect): The new video rectangle. #### Returns Parameters: - (bool): true if the squeezeback was found and updated; otherwise, false. ### Video_Overlay_Squeezeback_VideoFadeIn(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation for the video of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_VideoFadeIn(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and fade started; otherwise, false. ### Video_Overlay_Squeezeback_VideoFadeOut(string, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation for the video of a squeezeback element. ```csharp public bool Video_Overlay_Squeezeback_VideoFadeOut(string name, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - name (string): The name of the squeezeback element. - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. #### Returns Parameters: - (bool): true if the squeezeback was found and fade started; otherwise, false. ### Video_Overlay_Update(IOverlayManagerElement) Updates an existing overlay element by removing and re-adding it with new properties. This method is used to refresh an overlay after modifying its properties. ```csharp public void Video_Overlay_Update(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to update with its new properties. ### Video_Overlay_UpdateImageFile(string, string) Updates the filename of an image overlay. ```csharp public bool Video_Overlay_UpdateImageFile(string name, string newFilename) ``` #### Parameters Parameters: - name (string): The name of the image overlay. - newFilename (string): The new image filename. #### Returns Parameters: - (bool): true if the image was found and updated; otherwise, false. ### Video_Overlay_UpdateImagePosition(string, int, int, int, int) Updates the position of an image overlay. ```csharp public bool Video_Overlay_UpdateImagePosition(string name, int x, int y, int width = 0, int height = 0) ``` #### Parameters Parameters: - name (string): The name of the image overlay. - x (int): The new X position. - y (int): The new Y position. - width (int): The new width (0 to keep current). - height (int): The new height (0 to keep current). #### Returns Parameters: - (bool): true if the image was found and updated; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this overlay manager block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class PanZoomBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.PanZoomBlock.html # Class PanZoomBlock # Class PanZoomBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that applies pan and zoom transformations to video frames using Cairo. This block provides static and dynamic zoom and pan effects for video streams. Implements the . Implements the . Implements the . ```csharp public class PanZoomBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PanZoomBlock() Initializes a new instance of the class. ```csharp public PanZoomBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the pan zoom filter and its associated GStreamer elements. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance. ### GetElement() Gets the underlying GStreamer element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance. ### IsAvailable() Determines whether the pan zoom filter is available on the current system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. ### SetDynamicPan(VideoStreamDynamicPanSettings) Sets the dynamic pan (translation) settings for the video stream. Dynamic pan interpolates between start and stop values based on the video timestamp. ```csharp public void SetDynamicPan(VideoStreamDynamicPanSettings settings) ``` #### Parameters Parameters: - settings (VideoStreamDynamicPanSettings): The dynamic pan settings to apply, or null to disable dynamic pan. ### SetDynamicZoom(VideoStreamDynamicZoomSettings) Sets the dynamic zoom settings for the video stream. Dynamic zoom interpolates between start and stop values based on the video timestamp. ```csharp public void SetDynamicZoom(VideoStreamDynamicZoomSettings settings) ``` #### Parameters Parameters: - settings (VideoStreamDynamicZoomSettings): The dynamic zoom settings to apply, or null to disable dynamic zoom. ### SetPan(VideoStreamPanSettings) Sets the static pan (translation) settings for the video stream. ```csharp public void SetPan(VideoStreamPanSettings settings) ``` #### Parameters Parameters: - settings (VideoStreamPanSettings): The pan settings to apply, or null to disable pan. ### SetRect(VideoStreamRectSettings) Sets the target rectangle settings for drawing the video into a specific rectangle. The video will be resized and positioned to fit within the specified rectangle. When enabled, this takes precedence over pan and zoom settings. ```csharp public void SetRect(VideoStreamRectSettings settings) ``` #### Parameters Parameters: - settings (VideoStreamRectSettings): The rect settings to apply, or null to disable rect mode. ### SetZoom(VideoStreamZoomSettings) Sets the static zoom settings for the video stream. ```csharp public void SetZoom(VideoStreamZoomSettings settings) ``` #### Parameters Parameters: - settings (VideoStreamZoomSettings): The zoom settings to apply, or null to disable zoom. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this block with a pipeline and initializes its internal context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class PerspectiveBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.PerspectiveBlock.html # Class PerspectiveBlock # Class PerspectiveBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video perspective transformation block for advanced geometric distortion and 3D projection effects. This block applies perspective transformation using 3x3 transformation matrices to create sophisticated geometric effects including 3D rotation, keystone correction, and perspective warping. Features matrix-based transformation control for precise geometric manipulation and correction. Essential for video correction, artistic effects, architectural visualization, and advanced geometric transformations requiring mathematical precision. Implements the . Implements the . Implements the . ```csharp public class PerspectiveBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PerspectiveBlock(int[]) Initializes a new instance of the class with the specified transformation matrix. ```csharp public PerspectiveBlock(int[] matrix) ``` #### Parameters Parameters: - matrix (int [ ]): A 3x3 transformation matrix passed as an array of 9 elements in row-major order that defines the perspective transformation to apply. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Matrix Gets or sets the perspective transformation matrix. A 3x3 transformation matrix passed as an array of 9 elements in row-major order that defines the geometric transformation to apply to the video content. ```csharp public int[] Matrix { get; set; } ``` #### Property Value Parameters: - (int [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the perspective filter and its associated GStreamer elements. This method creates the filter with the specified transformation matrix, establishes input and output pads, and prepares the block for applying complex geometric transformations including 3D rotation and keystone correction. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this perspective transformation block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer perspective filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer perspective filter. ### GetElement() Gets the underlying GStreamer element that performs the perspective transformation processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the perspective filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this perspective transformation block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class PinchBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.PinchBlock.html # Class PinchBlock # Class PinchBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video pinch distortion effect block that creates inward or outward warping from a center point. This block applies a pinch or bulge distortion to video content, pulling pixels toward or pushing them away from a central point. Features configurable intensity for both positive (bulge) and negative (pinch) effects, creating lens-like distortions. Essential for creative effects, caricature-style distortions, fisheye corrections, and artistic video transformations requiring radial compression or expansion effects. Implements the . Implements the . Implements the . ```csharp public class PinchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### PinchBlock(double) Initializes a new instance of the class with the specified pinch intensity. ```csharp public PinchBlock(double intensity = 0.5) ``` #### Parameters Parameters: - intensity (double): The pinch intensity (-1.0 to 1.0, default: 0.5). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Intensity Gets or sets the pinch intensity value. Positive values create a bulge effect (pushing pixels outward), negative values create a pinch effect (pulling pixels inward). Range typically from -1.0 to 1.0, with 0.0 being no effect. ```csharp public double Intensity { get; set; } ``` #### Property Value Parameters: - (double): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the pinch filter and its associated GStreamer elements. This method creates the filter with the specified intensity, establishes input and output pads, and prepares the block for applying radial pinch or bulge distortion effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this pinch effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer pinch filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer pinch filter. ### GetElement() Gets the underlying GStreamer element that performs the pinch distortion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the pinch filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this pinch effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class Pseudo3DBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.Pseudo3DBlock.html # Class Pseudo3DBlock # Class Pseudo3DBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Pseudo 3D video effect block that creates simulated three-dimensional perspective transformations. This block applies perspective distortions and transformations to create the illusion of 3D depth on 2D video content. Features include adjustable perspective angles, depth simulation, rotation in virtual 3D space, and various projection modes. Essential for creating 3D-like transitions, perspective corrections, architectural visualizations, and creative effects requiring simulated three-dimensional transformations without actual 3D rendering. Implements the . Implements the . Implements the . ```csharp public class Pseudo3DBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### Pseudo3DBlock(Pseudo3DVideoEffect) Initializes a new instance of the class with specified pseudo 3D effect settings. ```csharp public Pseudo3DBlock(Pseudo3DVideoEffect settings) ``` #### Parameters Parameters: - settings (Pseudo3DVideoEffect): The pseudo 3D effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the pseudo 3D effect settings. Contains parameters for perspective angles, rotation axes, depth simulation, and other properties that control the 3D transformation behavior. ```csharp public Pseudo3DVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (Pseudo3DVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the pseudo 3D filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying simulated 3D perspective transformations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this pseudo 3D block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer pseudo 3D filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer pseudo 3D filter. ### GetElement() Gets the underlying GStreamer element that performs the pseudo 3D transformation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the pseudo 3D filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this pseudo 3D block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class QRCodeOverlayBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.QRCodeOverlayBlock.html # Class QRCodeOverlayBlock # Class QRCodeOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll QR code overlay block for embedding scannable QR codes directly onto video content. This block generates and overlays QR codes containing custom data such as URLs, text, contact information, or any encoded data. Features include configurable size, position, error correction levels, and transparency settings. Essential for marketing videos, educational content, interactive media, ticketing systems, and any application requiring embedded scannable information within video streams. Implements the . Implements the . Implements the . ```csharp public class QRCodeOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### QRCodeOverlayBlock(string) Initializes a new instance of the class with the specified data to encode. ```csharp public QRCodeOverlayBlock(string data) ``` #### Parameters Parameters: - data (string): The data to encode in the QR code (URL, text, etc.). ## Properties ### Data Gets the data to be encoded in the QR code. This can be any text data including URLs, plain text, contact information, WiFi credentials, or other structured data formats. ```csharp public string Data { get; } ``` #### Property Value Parameters: - (string): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the QR code overlay filter and its associated GStreamer elements. This method creates the filter with the specified data, establishes input and output pads, and prepares the block for generating and overlaying QR codes on video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this QR code overlay block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer QR code overlay filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer QR code overlay filter. ### GetElement() Gets the underlying GStreamer element that performs the QR code generation and overlay. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the QR code overlay filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this QR code overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class QuarkBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.QuarkBlock.html # Class QuarkBlock # Class QuarkBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Quark video effect block that creates particle dissolution effects on moving objects. This block applies a unique visual effect that dissolves and disperses moving objects into particle-like fragments, creating a quantum or disintegration appearance. Features include motion detection sensitivity, particle density, dissolution speed, and regeneration patterns. Essential for sci-fi effects, creative transitions, motion-based visual effects, and artistic video production requiring dynamic object dissolution based on movement detection. Implements the . Implements the . Implements the . ```csharp public class QuarkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### QuarkBlock(QuarkVideoEffect) Initializes a new instance of the class with specified quark effect settings. ```csharp public QuarkBlock(QuarkVideoEffect settings) ``` #### Parameters Parameters: - settings (QuarkVideoEffect): The quark effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the quark effect settings. Contains parameters for motion detection threshold, particle behavior, dissolution patterns, and other properties controlling the quantum dissolution effect. ```csharp public QuarkVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (QuarkVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the quark filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying particle dissolution effects to moving objects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this quark effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer quark filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer quark filter. ### GetElement() Gets the underlying GStreamer element that performs the quark dissolution effect. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the quark filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this quark effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RippleBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.RippleBlock.html # Class RippleBlock # Class RippleBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Ripple effect block that creates water-like wave distortions and undulating visual patterns. This block applies dynamic ripple distortion effects that simulate water surface waves, heat shimmer, or liquid distortions across the video content. Features configurable amplitude, frequency, wave speed, and center point parameters for creating realistic fluid motion effects. Essential for artistic video production, liquid simulations, dream sequences, and creative effects requiring organic wave-based distortions. Implements the . Implements the . Implements the . ```csharp public class RippleBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RippleBlock(RippleVideoEffect) Initializes a new instance of the class with specified ripple effect settings. ```csharp public RippleBlock(RippleVideoEffect settings) ``` #### Parameters Parameters: - settings (RippleVideoEffect): The ripple effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the ripple effect settings. Contains parameters for controlling wave amplitude, frequency, speed, center point, and other characteristics of the ripple distortion effect. ```csharp public RippleVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (RippleVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the ripple filter and its associated GStreamer elements. This method creates the filter with the specified ripple settings, establishes input and output pads, and prepares the block for creating water-like wave distortions and organic undulating visual patterns. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this ripple effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer ripple filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer ripple filter. ### GetElement() Gets the underlying GStreamer element that performs the ripple wave distortion processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the ripple filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this ripple effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RotateBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.RotateBlock.html # Class RotateBlock # Class RotateBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video rotation block for precise angular transformation and orientation correction. This block provides smooth video rotation capabilities with sub-pixel accuracy using advanced interpolation algorithms. Features configurable rotation angles, center point adjustment, and anti-aliasing for high-quality results. Essential for correcting camera orientation, artistic rotation effects, device orientation handling, and video stabilization workflows requiring precise angular adjustments. Implements the . Implements the . Implements the . ```csharp public class RotateBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RotateBlock(double) Initializes a new instance of the class with the specified rotation angle. ```csharp public RotateBlock(double angleRadian) ``` #### Parameters Parameters: - angleRadian (double): The rotation angle in radians (positive = clockwise). ## Properties ### Angle Gets or sets the rotation angle in radians. Positive values rotate clockwise, negative values rotate counter-clockwise. ```csharp public double Angle { get; set; } ``` #### Property Value Parameters: - (double): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the rotation filter and its associated GStreamer elements. This method creates the filter with the specified angle, establishes input and output pads, and prepares the block for precise angular transformation of video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this rotation block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer rotate filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer rotate filter. ### GetElement() Gets the underlying GStreamer element that performs the video rotation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the rotate filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this rotation block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class RoundedCornersBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.RoundedCornersBlock.html # Class RoundedCornersBlock # Class RoundedCornersBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that applies rounded corners effect to video frames. This block adds rounded corners to video by creating an alpha mask that makes the corners transparent with a specified border radius. The effect can be used for aesthetic purposes, matching UI design patterns, or creating picture-in-picture effects with rounded corners. Implements the . Implements the . Implements the . ```csharp public class RoundedCornersBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### RoundedCornersBlock(int) Initializes a new instance of the class with the specified border radius. ```csharp public RoundedCornersBlock(int borderRadius = 0) ``` #### Parameters Parameters: - borderRadius (int): The border radius in pixels controlling corner roundness. Default value is 0. Typical range is 0 to 50 pixels. ## Properties ### BorderRadius Gets or sets the border radius in pixels that controls the roundness of the corners. Default value is 0 (no rounding). Larger values create more rounded corners. Typical range is 0 to 50 pixels depending on video resolution. ```csharp public int BorderRadius { get; set; } ``` #### Property Value Parameters: - (int): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the rounded corners filter and its associated GStreamer elements. This method creates the filter with the specified border radius value, establishes input and output pads, and prepares the block for video rounded corners processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this rounded corners block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer rounded corners filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer rounded corners filter. ### GetElement() Gets the underlying GStreamer element that performs the rounded corners processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the rounded corners filter. ### IsAvailable() Determines whether the rounded corners filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the rounded corners filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this rounded corners block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SimpleVideoMarkBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SimpleVideoMarkBlock.html # Class SimpleVideoMarkBlock # Class SimpleVideoMarkBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that embeds invisible digital watermarks into video streams for identification and tracking purposes. This block uses GStreamer's simplevideomark element to insert unique patterns into video frames that can be detected later using SimpleVideoMarkDetectBlock. The watermarks are designed to be imperceptible to viewers while providing robust identification capabilities for content tracking, copyright protection, and media forensics. Common use cases include broadcast monitoring, content distribution tracking, and digital rights management. Implements the . Implements the . Implements the . ```csharp public class SimpleVideoMarkBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SimpleVideoMarkBlock(uint) Initializes a new instance of the class. Creates a video watermarking block ready to embed invisible digital marks into video streams. ```csharp public SimpleVideoMarkBlock(uint pattern = 0) ``` #### Parameters Parameters: - pattern (uint): The pattern value to embed (default is 0). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Pattern Gets or sets the pattern value to embed in the video stream. This unique identifier will be invisibly embedded in the video frames. ```csharp public uint Pattern { get; set; } ``` #### Property Value Parameters: - (uint): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the simple video mark filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, and prepares the block for embedding invisible watermarks into video streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this simple video mark block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer simple video mark filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer simple video mark filter. ### GetElement() Gets the underlying GStreamer element that performs the video watermarking. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the simple video mark filter. ### IsAvailable() Determines whether the simple video mark filter is available on the current system. This checks if the required GStreamer videosignal plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the simple video mark filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this simple video mark block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SimpleVideoMarkDetectBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SimpleVideoMarkDetectBlock.html # Class SimpleVideoMarkDetectBlock # Class SimpleVideoMarkDetectBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that detects and extracts invisible digital watermarks from video streams for identification and verification. This block uses GStreamer's simplevideomarkdetect element to identify unique patterns embedded by SimpleVideoMarkBlock. The detection provides real-time notification when watermarks are found, enabling applications to track content, verify authenticity, and implement copyright protection systems. Essential for broadcast monitoring, content distribution tracking, digital rights management, and media forensics applications. Implements the . Implements the . Implements the . ```csharp public class SimpleVideoMarkDetectBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SimpleVideoMarkDetectBlock(uint) Initializes a new instance of the class. Creates a video watermark detection block ready to identify digital marks in video streams. ```csharp public SimpleVideoMarkDetectBlock(uint pattern = 0) ``` #### Parameters Parameters: - pattern (uint): The pattern value to detect (0 = detect any pattern, specific value = detect only that pattern). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Pattern Gets or sets the pattern value to search for in the video stream. When set to 0 (default), detects any pattern. When set to a specific value, only detects that pattern. ```csharp public uint Pattern { get; set; } ``` #### Property Value Parameters: - (uint): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the simple video mark detect filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, sets up event handlers, and prepares the block for detecting watermarks in video streams. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this simple video mark detect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer simple video mark detect filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer simple video mark detect filter. ### GetElement() Gets the underlying GStreamer element that performs the video watermark detection. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the simple video mark detect filter. ### IsAvailable() Determines whether the simple video mark detect filter is available on the current system. This checks if the required GStreamer videosignal plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the simple video mark detect filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this simple video mark detect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### VideoMarkDetected Event that fires when a video watermark is detected in the stream. Provides the detected pattern value and timestamp information. ```csharp public event EventHandler VideoMarkDetected ``` #### Event Type Parameters: - (EventHandler < VideoMarkDetectedEventArgs >): ## See Also --- # Class SmoothBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SmoothBlock.html # Class SmoothBlock # Class SmoothBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Smooth filter video block for noise reduction and image smoothing. This block applies advanced smoothing algorithms to reduce video noise, grain, and artifacts while preserving important edge details. Features include adjustable smoothing strength, edge preservation thresholds, temporal smoothing for motion areas, and selective filtering. Essential for video restoration, noise reduction, skin smoothing in beauty applications, and preprocessing for compression or analysis tasks requiring clean video input. Implements the . Implements the . Implements the . ```csharp public class SmoothBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SmoothBlock(SmoothVideoEffect) Initializes a new instance of the class with specified smooth filter settings. ```csharp public SmoothBlock(SmoothVideoEffect settings) ``` #### Parameters Parameters: - settings (SmoothVideoEffect): The smooth filter configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the smooth filter settings. Contains parameters for smoothing strength, edge preservation, temporal filtering, and other noise reduction properties. ```csharp public SmoothVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (SmoothVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the smooth filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying noise reduction and smoothing to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this smooth filter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer smooth filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer smooth filter. ### GetElement() Gets the underlying GStreamer element that performs the smoothing and noise reduction. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the smooth filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this smooth filter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SMPTEAlphaBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SMPTEAlphaBlock.html # Class SMPTEAlphaBlock # Class SMPTEAlphaBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll SMPTE alpha transition video effect block that creates wipe transitions with alpha channel support. This block applies SMPTE standard transition patterns with transparency control, enabling seamless compositing of video layers with proper alpha blending. Essential for creating professional overlays, transparent transitions, and advanced compositing effects with full alpha channel support. Implements the . Implements the . Implements the . ```csharp public class SMPTEAlphaBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SMPTEAlphaBlock(SMPTEAlphaVideoEffect) Initializes a new instance of the class with specified SMPTE alpha effect settings. ```csharp public SMPTEAlphaBlock(SMPTEAlphaVideoEffect settings) ``` #### Parameters Parameters: - settings (SMPTEAlphaVideoEffect): The SMPTE alpha effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SMPTE alpha effect settings. Contains parameters for controlling transition type, border, position, and direction of the SMPTE alpha wipe pattern. ```csharp public SMPTEAlphaVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (SMPTEAlphaVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the SMPTE alpha filter and its associated GStreamer elements. This method creates the filter with the specified SMPTE alpha settings, establishes input and output pads, and prepares the block for creating professional alpha-based transition effects with configurable patterns. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this SMPTE alpha effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer SMPTE alpha filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer SMPTE alpha filter. ### GetElement() Gets the underlying GStreamer element that performs the SMPTE alpha transition processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the SMPTE alpha filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this SMPTE alpha effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SMPTEBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SMPTEBlock.html # Class SMPTEBlock # Class SMPTEBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll SMPTE transition video effect block that creates wipe transitions between two video sources. This block applies SMPTE standard transition patterns including linear wipes, iris effects, and other geometric transitions commonly used in professional video editing. Essential for creating smooth transitions between video clips, broadcast-quality effects, and professional video production workflows. Implements the . Implements the . Implements the . ```csharp public class SMPTEBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SMPTEBlock(SMPTEVideoEffect) Initializes a new instance of the class with specified SMPTE effect settings. ```csharp public SMPTEBlock(SMPTEVideoEffect settings) ``` #### Parameters Parameters: - settings (SMPTEVideoEffect): The SMPTE effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the SMPTE effect settings. Contains parameters for controlling transition type, border, depth, and direction of the SMPTE wipe pattern. ```csharp public SMPTEVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (SMPTEVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the SMPTE filter and its associated GStreamer elements. This method creates the filter with the specified SMPTE settings, establishes input and output pads, and prepares the block for creating professional transition effects with configurable patterns. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this SMPTE effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer SMPTE filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer SMPTE filter. ### GetElement() Gets the underlying GStreamer element that performs the SMPTE transition processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the SMPTE filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this SMPTE effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SphereBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SphereBlock.html # Class SphereBlock # Class SphereBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video sphere distortion effect block that creates curved spherical lens projection. This block applies spherical geometric distortion to video content, simulating the effect of viewing the image through a spherical lens or bubble. Features configurable refraction index, radius control, and center point positioning for realistic optical effects. Essential for creative video production, optical simulation, VR content preparation, and artistic effects requiring curved spatial transformations. Implements the . Implements the . Implements the . ```csharp public class SphereBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SphereBlock(double) Initializes a new instance of the class with the specified refraction index. ```csharp public SphereBlock(double refraction = 1.5) ``` #### Parameters Parameters: - refraction (double): The refraction index for spherical distortion (default: 1.5). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Refraction Gets or sets the refraction index for the spherical distortion. Higher values create stronger spherical curvature effects, simulating different optical materials and lens characteristics. ```csharp public double Refraction { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the sphere filter and its associated GStreamer elements. This method creates the filter with the specified refraction index, establishes input and output pads, and prepares the block for applying curved spherical lens projection to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this sphere effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer sphere filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer sphere filter. ### GetElement() Gets the underlying GStreamer element that performs the spherical distortion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the sphere filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this sphere effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SquareBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SquareBlock.html # Class SquareBlock # Class SquareBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Square distortion effect block that warps the center region into a square shape. This block applies a geometric transformation that distorts a circular area in the center of the image into a square shape, creating a unique warping effect. Features include adjustable size, intensity, and center positioning for the square distortion. Essential for creative visual effects, abstract video art, kaleidoscope-like patterns, and experimental video production requiring geometric shape transformations. Implements the . Implements the . Implements the . ```csharp public class SquareBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SquareBlock(SquareVideoEffect) Initializes a new instance of the class with specified square effect settings. ```csharp public SquareBlock(SquareVideoEffect settings) ``` #### Parameters Parameters: - settings (SquareVideoEffect): The square effect configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the square effect settings. Contains parameters for distortion size, intensity, center position, and other properties controlling the square warping transformation. ```csharp public SquareVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (SquareVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the square filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for applying square shape distortion to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this square distortion block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer square filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer square filter. ### GetElement() Gets the underlying GStreamer element that performs the square distortion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the square filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this square distortion block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class StretchBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.StretchBlock.html # Class StretchBlock # Class StretchBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Stretch distortion effect block that creates circular radial stretching around a center point. This block applies a radial stretch transformation that pulls or pushes pixels in a circular pattern from a center point, creating effects similar to looking through a magnifying glass or funhouse mirror. Features adjustable intensity for both inward and outward stretching, center point positioning, and radius control. Essential for creative distortions, lens simulation effects, artistic transformations, and visual effects requiring radial warping. Implements the . Implements the . Implements the . ```csharp public class StretchBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### StretchBlock(double) Initializes a new instance of the class with the specified stretch intensity. ```csharp public StretchBlock(double intensity = 0.5) ``` #### Parameters Parameters: - intensity (double): The stretch intensity (-1.0 to 1.0, default: 0.5). ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Intensity Gets or sets the stretch intensity value. Positive values create outward stretching (magnification), negative values create inward stretching (compression). Range typically from -1.0 to 1.0, with 0.0 being no effect. ```csharp public double Intensity { get; set; } ``` #### Property Value Parameters: - (double): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the stretch filter and its associated GStreamer elements. This method creates the filter with the specified intensity, establishes input and output pads, and prepares the block for applying circular radial stretching effects. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this stretch effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer stretch filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer stretch filter. ### GetElement() Gets the underlying GStreamer element that performs the stretch distortion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the stretch filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this stretch effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class SVGOverlayBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.SVGOverlayBlock.html # Class SVGOverlayBlock # Class SVGOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll SVG overlay block for rendering scalable vector graphics on video content. This block overlays SVG (Scalable Vector Graphics) images or animations onto video streams, providing resolution-independent graphics perfect for logos, animated graphics, diagrams, and dynamic visual elements. Features include positioning, scaling, opacity control, and support for animated SVG content. Essential for broadcast graphics, watermarking, infographics, animated overlays, and any application requiring high-quality vector graphics overlaid on video content. Implements the . Implements the . Implements the . ```csharp public class SVGOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### SVGOverlayBlock(SVGOverlayVideoEffect) Initializes a new instance of the class with specified SVG overlay settings. ```csharp public SVGOverlayBlock(SVGOverlayVideoEffect settings) ``` #### Parameters Parameters: - settings (SVGOverlayVideoEffect): The SVG overlay configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the SVG overlay settings. Contains the SVG file path or content, positioning, scaling, opacity, and other properties controlling the vector graphics overlay. ```csharp public SVGOverlayVideoEffect Settings { get; } ``` #### Property Value Parameters: - (SVGOverlayVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the SVG overlay filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for rendering scalable vector graphics on video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this SVG overlay block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer SVG overlay filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer SVG overlay filter. ### GetElement() Gets the underlying GStreamer element that performs the SVG rendering and overlay. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the SVG overlay filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this SVG overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class TextOverlayBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.TextOverlayBlock.html # Class TextOverlayBlock # Class TextOverlayBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that renders dynamic text overlays onto video streams with full typography control. This block provides comprehensive text rendering capabilities including custom fonts, colors, sizing, positioning, shadows, outlines, and background effects. Supports real-time text updates, multiple text elements, and professional typography features commonly used for titles, subtitles, lower thirds, captions, timestamps, and branding. The text rendering engine supports Unicode, anti-aliasing, and advanced text layout with precise positioning control. Implements the . Implements the . Implements the . ```csharp public class TextOverlayBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### TextOverlayBlock(TextOverlaySettings) Initializes a new instance of the class with the specified text overlay settings. The settings define all aspects of text rendering including content, typography, positioning, and visual effects. ```csharp public TextOverlayBlock(TextOverlaySettings settings) ``` #### Parameters Parameters: - settings (TextOverlaySettings): The TextOverlaySettings instance defining text content, font, colors, positioning, and effects. ## Properties ### Fonts Gets a collection of available system fonts that can be used for text rendering. This collection includes all fonts installed on the system and accessible to the text rendering engine. Use these font descriptions to configure the Settings.Font property for text appearance. ```csharp public ObservableCollection Fonts { get; } ``` #### Property Value Parameters: - (ObservableCollection < FontDescriptionX >): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the text overlay settings that control text content, appearance, and positioning. These settings include font selection, text content, color, size, alignment, shadows, outlines, background effects, and positioning coordinates. Changes to these settings affect the rendered text. ```csharp public TextOverlaySettings Settings { get; set; } ``` #### Property Value Parameters: - (TextOverlaySettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the text overlay filter and its associated GStreamer elements. This method creates the filter with the specified text settings, establishes input and output pads, and prepares the block for text rendering operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this text overlay block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer text overlay filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer text overlay filter. ### GetElement() Gets the underlying GStreamer element that performs the text rendering and overlay processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the text overlay filter. ### IsAvailable() Determines whether the text overlay filter is available on the current system. This checks if the required GStreamer text rendering plugins and font subsystem are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the text overlay filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this text overlay block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class TunnelBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.TunnelBlock.html # Class TunnelBlock # Class TunnelBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video tunnel effect block that creates a perspective tunnel or vortex visual effect. This block applies a tunnel transformation that warps the video into a perspective tunnel, creating the illusion of depth and movement through a cylindrical or spiral passageway. Features include depth control, rotation effects, center positioning, and perspective adjustments. Essential for music videos, sci-fi transitions, hypnotic visual effects, and creative content requiring tunnel vision or vortex-like transformations. Implements the . Implements the . Implements the . ```csharp public class TunnelBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### TunnelBlock() Initializes a new instance of the class for creating tunnel or vortex visual effects. ```csharp public TunnelBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the tunnel filter and its associated GStreamer elements. This method creates the filter, establishes input and output pads, and prepares the block for applying perspective tunnel or vortex effects to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this tunnel effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer tunnel filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer tunnel filter. ### GetElement() Gets the underlying GStreamer element that performs the tunnel transformation. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the tunnel filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this tunnel effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class TwirlBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.TwirlBlock.html # Class TwirlBlock # Class TwirlBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video twirl distortion effect block that creates spiral rotating warping patterns. This block applies twirl distortion to video content by rotating pixels around a center point with intensity that decreases based on distance from the center. Features configurable twist angle, center point positioning, and radius control for creating various spiral effects. Essential for creative video production, artistic transitions, hypnotic effects, and abstract visual transformations requiring spiral-based geometric distortion. Implements the . Implements the . Implements the . ```csharp public class TwirlBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### TwirlBlock(double) Initializes a new instance of the class with the specified twirl angle. ```csharp public TwirlBlock(double angle = 3.14159) ``` #### Parameters Parameters: - angle (double): The maximum twirl angle in radians (default: π for half rotation). ## Properties ### Angle Gets or sets the maximum twirl angle in radians. This determines the intensity of the spiral distortion at the center point, with the effect diminishing towards the edges. ```csharp public double Angle { get; set; } ``` #### Property Value Parameters: - (double): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the twirl filter and its associated GStreamer elements. This method creates the filter with the specified angle, establishes input and output pads, and prepares the block for applying spiral rotating warping patterns to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this twirl effect block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer twirl filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer twirl filter. ### GetElement() Gets the underlying GStreamer element that performs the twirl distortion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the twirl filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this twirl effect block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoAspectRatioCropBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoAspectRatioCropBlock.html # Class VideoAspectRatioCropBlock # Class VideoAspectRatioCropBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video aspect ratio crop block for intelligent content-aware aspect ratio conversion. This block automatically crops video to match a target aspect ratio while preserving the most important visual content. Features intelligent cropping algorithms that detect and preserve key areas of interest, configurable crop positioning, and smooth transitions. Essential for format conversion between different display standards (16:9, 4:3, 21:9), social media format adaptation, and professional video production requiring automated aspect ratio adjustments without manual intervention. Implements the . Implements the . Implements the . ```csharp public class VideoAspectRatioCropBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoAspectRatioCropBlock(AspectRatioCropVideoEffect) Initializes a new instance of the class with specified aspect ratio crop settings. ```csharp public VideoAspectRatioCropBlock(AspectRatioCropVideoEffect settings) ``` #### Parameters Parameters: - settings (AspectRatioCropVideoEffect): The aspect ratio crop configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the aspect ratio crop settings. Contains the target aspect ratio, crop positioning preferences, content detection parameters, and transition options. ```csharp public AspectRatioCropVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (AspectRatioCropVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the aspect ratio crop filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for intelligent content-aware aspect ratio conversion. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this aspect ratio crop block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer aspect ratio crop filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer aspect ratio crop filter. ### GetElement() Gets the underlying GStreamer element that performs the aspect ratio cropping. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the aspect ratio crop filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this aspect ratio crop block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoBalanceBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoBalanceBlock.html # Class VideoBalanceBlock # Class VideoBalanceBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video balance block for professional color correction and image enhancement. This block provides comprehensive video color adjustment capabilities including brightness, contrast, saturation, hue, and gamma correction. Features real-time parameter adjustment, automatic white balance, and precise color space manipulation for broadcast-quality results. Essential for color grading, exposure correction, camera calibration, and professional video post-production workflows requiring accurate color representation. Implements the . Implements the . Implements the . ```csharp public class VideoBalanceBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoBalanceBlock(VideoBalanceVideoEffect) Initializes a new instance of the class with specified video balance settings. ```csharp public VideoBalanceBlock(VideoBalanceVideoEffect settings) ``` #### Parameters Parameters: - settings (VideoBalanceVideoEffect): The video balance configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video balance settings. Contains comprehensive color correction parameters including brightness, contrast, saturation, hue, and gamma adjustments for professional color grading. ```csharp public VideoBalanceVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (VideoBalanceVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video balance filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for professional color correction and image enhancement. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video balance block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video balance filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video balance filter. ### GetElement() Gets the underlying GStreamer element that performs the color balance adjustments. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video balance filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video balance block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoBoxBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoBoxBlock.html # Class VideoBoxBlock # Class VideoBoxBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video box effect block for adding borders, letterboxing, and pillarboxing to video content. This block adds configurable borders around video content, enabling letterboxing (horizontal bars), pillarboxing (vertical bars), or custom border layouts. Features include adjustable border thickness on all sides, custom border colors, and automatic aspect ratio preservation. Essential for format adaptation, cinema-style letterboxing, broadcast safe areas, video composition layouts, and professional presentations requiring precise video framing. Implements the . Implements the . Implements the . ```csharp public class VideoBoxBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoBoxBlock(BoxVideoEffect) Initializes a new instance of the class with specified video box settings. ```csharp public VideoBoxBlock(BoxVideoEffect settings) ``` #### Parameters Parameters: - settings (BoxVideoEffect): The video box configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video box settings. Contains border thickness for each side, border color, and other properties controlling the box effect appearance. ```csharp public BoxVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (BoxVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video box filter and its associated GStreamer elements. This method creates the filter with the specified settings, establishes input and output pads, and prepares the block for adding borders, letterboxing, or pillarboxing to video content. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video box block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video box filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video box filter. ### GetElement() Gets the underlying GStreamer element that performs the box border addition. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video box filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video box block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoConverterBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoConverterBlock.html # Class VideoConverterBlock # Class VideoConverterBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video format conversion block that transforms video frames between different colorspaces, pixel formats, and resolutions. This essential pipeline component handles conversions between formats like RGB, YUV, NV12, RGBA, and other pixel formats, ensuring compatibility between different blocks in the pipeline. It performs automatic format negotiation and can handle colorspace conversions, bit depth changes, and chroma subsampling adjustments as needed by connected pipeline elements. Commonly used when connecting blocks that require different input/output formats or when preparing video for specific encoders or renderers. Implements the . Implements the . Implements the . ```csharp public class VideoConverterBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoConverterBlock() Initializes a new instance of the class. Creates a video converter that can automatically handle format conversions between connected pipeline elements. The converter will perform format negotiation during pipeline connection to determine the optimal conversion path. ```csharp public VideoConverterBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video converter and its associated GStreamer elements. This method creates the converter element, establishes input and output pads, and prepares the block for automatic format conversion between connected pipeline elements. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the converter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video converter block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video converter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video converter. ### GetElement() Gets the underlying GStreamer element that performs the video format conversion processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video converter. ### IsAvailable() Determines whether video conversion functionality is available on the current system. This checks for the presence of required GStreamer video conversion plugins and libraries. Video conversion is typically available on all platforms with a complete GStreamer installation. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if video conversion is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video converter block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoCropBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoCropBlock.html # Class VideoCropBlock # Class VideoCropBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that crops video frames by removing specified regions from the edges or center. Video cropping allows precise trimming of unwanted areas from video content, supporting pixel-accurate region selection with top, bottom, left, and right margins. This is essential for removing black bars, focusing on specific areas of interest, changing aspect ratios, or preparing content for different display formats. The cropping operation is lossless and preserves the original video quality while reducing the frame dimensions. Implements the . Implements the . Implements the . ```csharp public class VideoCropBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoCropBlock(CropVideoEffect) Initializes a new instance of the class with the specified crop settings. The settings define how many pixels to remove from each edge of the video frames. ```csharp public VideoCropBlock(CropVideoEffect settings) ``` #### Parameters Parameters: - settings (CropVideoEffect): The CropVideoEffect settings specifying crop margins for top, bottom, left, and right edges. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the crop settings that define which regions to remove from the video frames. These settings specify the number of pixels to crop from the top, bottom, left, and right edges of each frame, allowing precise control over the final video dimensions and content area. ```csharp public CropVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (CropVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video crop filter and its associated GStreamer elements. This method creates the filter with the specified crop settings, establishes input and output pads, and prepares the block for video frame cropping operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video crop block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video crop filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video crop filter. ### GetElement() Gets the underlying GStreamer element that performs the video cropping operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video crop filter. ### IsAvailable() Determines whether the video crop filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the video crop filter is available and can be used; otherwise, false. ### Update() Updates the crop settings in real-time while the pipeline is running. Call this method after modifying the Settings property to apply new crop margins immediately. This allows dynamic adjustment of the crop area during video processing. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video crop block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoEffectsBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoEffectsBlock.html # Class VideoEffectsBlock # Class VideoEffectsBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video effects block for dynamic effect chain management and real-time effect processing. This block provides a flexible framework for applying multiple video effects in sequence, with support for dynamic addition, removal, and modification of effects during playback. Features include automatic effect chaining, runtime parameter updates, intelligent pipeline management, and support for all major effect types (color correction, geometric transforms, overlays, filters). Essential for video editing applications, live streaming with effects, post-production workflows, and any scenario requiring complex, dynamic video effect chains. Implements the . Implements the . Implements the . ```csharp public class VideoEffectsBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoEffectsBlock() Initializes a new instance of the class with an empty effects chain ready for dynamic effect management. ```csharp public VideoEffectsBlock() ``` ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### VideoEffectsCount Gets the current number of active video effects in the processing chain. ```csharp public int VideoEffectsCount { get; } ``` #### Property Value Parameters: - (int): ## Methods ### AddOrUpdateAsync(IBaseVideoEffect) Adds a new video effect or updates an existing effect in the processing chain. Supports dynamic effect modification during playback with automatic pipeline reconfiguration. ```csharp public Task AddOrUpdateAsync(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect to add or update. #### Returns Parameters: - (Task): A Task representing the asynchronous operation. ### Build() Constructs and initializes the video effects processing chain. This method creates the video converter, effects processor, and connects all effects in the specified order, establishing proper pad connections and pipeline integration. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the effects chain was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video effects block. This method disposes of the effects processor and video converter elements. ```csharp public void CleanUp() ``` ### Clear() Removes all video effects from the processing chain. Restores the pipeline to pass-through mode. ```csharp public void Clear() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Get(string) Gets a video effect interface by its unique name. Enables direct access to specific effects for parameter updates. ```csharp public IBaseVideoEffect Get(string name) ``` #### Parameters Parameters: - name (string): The unique effect name used during creation. #### Returns Parameters: - (IBaseVideoEffect): The instance if found; otherwise, null. ### GetByID(VideoEffectID) Gets a video effect interface by its effect type ID. Finds the first effect with the specified ID regardless of its name. Useful for finding effects like ResizeVideoEffect that may have custom names. ```csharp public IBaseVideoEffect GetByID(VideoEffectID id) ``` #### Parameters Parameters: - id (VideoEffectID): The video effect type identifier to search for. #### Returns Parameters: - (IBaseVideoEffect): The first instance with the matching ID if found; otherwise, null. ### GetCore() Gets the core BaseElement wrapper. Returns null as this is a composite block. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): Always returns null for this composite effect block. ### GetElement() Gets the underlying GStreamer element. Returns null as this is a composite block. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Always returns null for this composite effect block. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### Remove(IBaseVideoEffect) Removes a video effect from the processing chain. Automatically reconfigures the pipeline to maintain continuity. ```csharp public void Remove(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect to remove. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video effects block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoMixerBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoMixerBlock.html # Class VideoMixerBlock # Class VideoMixerBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that combines multiple video inputs into a single output with advanced compositing features. The video mixer provides professional broadcast-quality mixing capabilities including multi-layer compositing, real-time positioning, scaling, transparency control, chroma key effects, and transition animations. Supports hardware acceleration through Direct3D11 and OpenGL backends for optimal performance. Essential for live streaming, broadcast production, video conferencing, and any application requiring multiple video source composition with professional-grade features like picture-in-picture, overlays, and dynamic layer management with smooth transitions and effects. Implements the . Implements the . Implements the . ```csharp public class VideoMixerBlock : MediaBlock, IMediaBlock, IDisposable, IVideoMixerControl, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoMixerBlock(VideoMixerBaseSettings) Initializes a new instance of the class with the specified mixing settings. Creates input pads for each configured video stream and sets up the mixing environment. ```csharp public VideoMixerBlock(VideoMixerBaseSettings settings) ``` #### Parameters Parameters: - settings (VideoMixerBaseSettings): The VideoMixerBaseSettings defining the number of inputs, layout, and mixing behavior. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video mixer settings that define composition layout, stream properties, and mixing behavior. These settings control how multiple video inputs are combined, including layer ordering, positioning, transparency, chroma key effects, and hardware acceleration options. ```csharp public VideoMixerBaseSettings Settings { get; set; } ``` #### Property Value Parameters: - (VideoMixerBaseSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### AddInputPadLive() Dynamically adds a new input pad for live video mixing operations. This allows adding video sources to the mixer while the pipeline is running, enabling dynamic composition changes without stopping the stream. ```csharp public MediaBlockPad AddInputPadLive() ``` #### Returns Parameters: - (MediaBlockPad): A new MediaBlockPad that can be connected to a video source, or null if the operation failed. ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### CleanUp() Releases all resources and performs cleanup operations for this video mixer block. This method disposes of the mixer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### Input_Get(Guid) Retrieves a specific video input stream configuration by its unique identifier. This allows access to individual layer properties within the video composition. ```csharp public VideoMixerStream Input_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream. #### Returns Parameters: - (VideoMixerStream): The VideoMixerStream configuration for the specified input, or null if not found. ### Input_List() Retrieves all active input stream configurations currently being mixed. Provides access to the complete list of video layers and their properties. ```csharp public VideoMixerStream[] Input_List() ``` #### Returns Parameters: - (VideoMixerStream [ ]): An array of VideoMixerStream objects representing all active input streams. ### Input_Move(Guid, Rect, TimeSpan, double?, double?) Animates an input stream from its current position and transparency to new values over a specified duration. Creates smooth transitions for professional video production effects like slides and cross-fades. ```csharp public void Input_Move(Guid id, Rect rect, TimeSpan duration, double? startAlpha, double? endAlpha) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to animate. - rect (Rect): The target position and size rectangle for the animation endpoint. - duration (TimeSpan): The duration of the animation transition. - startAlpha (double ?): Optional starting transparency value (0.0 = transparent, 1.0 = opaque). - endAlpha (double ?): Optional ending transparency value (0.0 = transparent, 1.0 = opaque). ### Input_SetChromaKeyEnabled(Guid, bool) Enables or disables chroma key processing for a specific input stream. When enabled, the configured key color becomes transparent, allowing background replacement for green screen and blue screen compositing effects. ```csharp public void Input_SetChromaKeyEnabled(Guid id, bool enabled) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream. - enabled (bool): True to enable chroma key processing, false to disable and show the original video. ### Input_Update(VideoMixerStream) Updates the configuration of a specific input stream in real-time. Changes to position, size, transparency, and other properties take effect immediately. ```csharp public void Input_Update(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The VideoMixerStream with updated configuration parameters. ### Input_UpdateChromaKeySettings(Guid, ChromaKeySettingsX) Updates the chroma key (green screen) settings for a specific input stream in real-time. Allows dynamic adjustment of color keying parameters including key color, tolerance, and edge softness for professional compositing effects commonly used in broadcast and film production. ```csharp public void Input_UpdateChromaKeySettings(Guid id, ChromaKeySettingsX settings) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream. - settings (ChromaKeySettingsX): The ChromaKeySettingsX containing key color, tolerance, and edge processing parameters. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetSettings(VideoMixerBaseSettings) Updates the video mixer settings in real-time while the pipeline is running. Changes to stream configurations, layout, and mixing parameters take effect immediately. ```csharp public void SetSettings(VideoMixerBaseSettings settings) ``` #### Parameters Parameters: - settings (VideoMixerBaseSettings): The VideoMixerBaseSettings containing updated configuration parameters. ### StartFadeIn(Guid, TimeSpan) Initiates a smooth fade-in transition for the specified input stream. Gradually increases opacity from transparent to opaque over the specified duration. ```csharp public void StartFadeIn(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to fade in. - duration (TimeSpan): The duration of the fade-in transition. ### StartFadeOut(Guid, TimeSpan) Initiates a smooth fade-out transition for the specified input stream. Gradually decreases opacity from opaque to transparent over the specified duration. ```csharp public void StartFadeOut(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The unique GUID identifier for the input stream to fade out. - duration (TimeSpan): The duration of the fade-out transition. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class VideoRateBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoRateBlock.html # Class VideoRateBlock # Class VideoRateBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video frame rate changer block for temporal resampling and frame rate conversion. This block intelligently adjusts video frame rates by duplicating or dropping frames while maintaining smooth playback. Features advanced temporal interpolation algorithms that minimize visual artifacts during rate conversion. Supports conversion between standard frame rates (24, 25, 30, 50, 60 fps), custom rates, and variable frame rate handling. Essential for format conversion, broadcast standards compliance, slow motion effects, time-lapse creation, and ensuring compatibility across different playback systems. Implements the . Implements the . Implements the . ```csharp public class VideoRateBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoRateBlock(VideoFrameRate) Initializes a new instance of the class with the specified target frame rate. ```csharp public VideoRateBlock(VideoFrameRate rate) ``` #### Parameters Parameters: - rate (VideoFrameRate): The target frame rate for video conversion. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Rate Gets or sets the target frame rate for video conversion. Specifies the desired output frame rate using standard or custom values. ```csharp public VideoFrameRate Rate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video rate converter and its associated GStreamer elements. This method creates the converter with the specified frame rate, establishes input and output pads, and prepares the block for temporal resampling operations. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the converter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video rate block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video rate element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video rate converter. ### GetElement() Gets the underlying GStreamer element that performs the frame rate conversion. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video rate converter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video rate block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoResizeBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoResizeBlock.html # Class VideoResizeBlock # Class VideoResizeBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that resizes video frames to specified dimensions with configurable scaling algorithms. Video resizing is fundamental for format conversion, quality optimization, and display adaptation. The block supports various interpolation methods including bilinear, bicubic, and lanczos algorithms to maintain visual quality during scaling operations. Essential for adapting content to different resolutions, aspect ratios, and delivery formats while preserving image quality through advanced resampling techniques. Commonly used for streaming optimization, device compatibility, and broadcast standards. Implements the . Implements the . Implements the . ```csharp public class VideoResizeBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoResizeBlock(ResizeVideoEffect) Initializes a new instance of the class with custom resize settings. Allows full control over scaling algorithm, aspect ratio handling, and quality parameters. ```csharp public VideoResizeBlock(ResizeVideoEffect settings) ``` #### Parameters Parameters: - settings (ResizeVideoEffect): The ResizeVideoEffect settings defining target dimensions, scaling method, and quality options. ### VideoResizeBlock(int, int) Initializes a new instance of the class with specific dimensions. Uses default scaling algorithm for simple dimension changes. ```csharp public VideoResizeBlock(int width, int height) ``` #### Parameters Parameters: - width (int): The target width in pixels for the resized video. - height (int): The target height in pixels for the resized video. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the resize settings that control the target dimensions and scaling algorithm. These settings specify the output width, height, and interpolation method used for scaling. The choice of scaling algorithm affects both performance and visual quality of the resized video. ```csharp public ResizeVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (ResizeVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video resize filter and its associated GStreamer elements. This method creates the filter with the specified resize settings, establishes input and output pads, and prepares the block for video scaling operations with the chosen interpolation algorithm. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video resize block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video resize filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video resize filter. ### GetElement() Gets the underlying GStreamer element that performs the video scaling operations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video resize filter. ### IsAvailable() Determines whether the video resize filter is available on the current system. This checks if the required GStreamer video processing plugins are installed and accessible. The correct NuGet SDK redistribution package should be included in your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if the video resize filter is available and can be used; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video resize block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class VideoSampleGrabberBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoSampleGrabberBlock.html # Class VideoSampleGrabberBlock # Class VideoSampleGrabberBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video sample grabber block for frame capture and analysis during playback. This block provides real-time access to video frames as they pass through the pipeline, enabling frame extraction, analysis, processing, and snapshot capabilities. Features multiple output formats (buffer, SKBitmap, System.Drawing.Bitmap), configurable pixel formats, frame caching for snapshots, and event-based frame delivery. Essential for video analysis applications, thumbnail generation, motion detection, computer vision integration, real-time monitoring, and any scenario requiring access to raw video data. Implements the . Implements the . Implements the . ```csharp public class VideoSampleGrabberBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoSampleGrabberBlock(VideoFormatX, bool, bool) Initializes a new instance of the class with specified capture format and rendering options. ```csharp public VideoSampleGrabberBlock(VideoFormatX format = VideoFormatX.RGBA, bool addNullRenderer = false, bool nullRendererSync = false) ``` #### Parameters Parameters: - format (VideoFormatX): The pixel format for captured frames (default: RGBA). - addNullRenderer (bool): if set to true add null renderer for capture-only scenarios. - nullRendererSync (bool): if set to true null renderer synchronizes to pipeline clock. ## Fields ### TAG Logging tag used to identify log messages from this video sample grabber block. ```csharp protected const string TAG = "VideoSampleGrabberBlock" ``` #### Field Value Parameters: - (string): ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### SaveLastFrame Gets or sets a value indicating whether to save the last frame. You can use it to take a snapshot with GetFrame() method. When enabled, maintains a cache of the most recent frame for on-demand retrieval. ```csharp public bool SaveLastFrame { get; set; } ``` #### Property Value Parameters: - (bool): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the video sample grabber and its associated elements. This method creates the grabber with the specified format, establishes event handlers, configures pads, and prepares the block for frame capture and analysis. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the grabber was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this sample grabber block. This method disposes of the grabber elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the video sample grabber element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the sample grabber. ### GetElement() Gets the underlying GStreamer element that performs the frame capture. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the sample grabber. ### GetLastFrame() Gets the last captured video frame as raw data. Requires SaveLastFrame to be enabled before capture. ```csharp public VideoFrameX GetLastFrame() ``` #### Returns Parameters: - (VideoFrameX): The last captured VideoFrameX object, or null if not available. ### GetLastFrameAsSKBitmap() Gets the last captured frame as a SkiaSharp.SKBitmap. Requires SaveLastFrame to be enabled and BGRA/RGBA format. ```csharp public SKBitmap GetLastFrameAsSKBitmap() ``` #### Returns Parameters: - (SKBitmap): The last captured frame as SKBitmap, or null if not available. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this sample grabber block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ### OnVideoFrameBuffer This event occurs whenever each new video frame is received. Provides raw frame data as a buffer for custom processing. ```csharp public event EventHandler OnVideoFrameBuffer ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): ### OnVideoFrameSKBitmap This event occurs whenever each new video frame is received (SkiaSharp Bitmap). Provides frames as SKBitmap objects for cross-platform image processing. ```csharp public event EventHandler OnVideoFrameSKBitmap ``` #### Event Type Parameters: - (EventHandler < VideoFrameSKBitmapEventArgs >): ## See Also --- # Class VideoScaleBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.VideoScaleBlock.html # Class VideoScaleBlock # Class VideoScaleBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll MediaBlock that performs video frame scaling and resizing operations with support for various interpolation methods. This block can resize video to specific dimensions, maintain aspect ratios, and apply different scaling algorithms including nearest neighbor and bilinear filtering. It's essential for adapting video content to different display sizes, preparing content for encoding at specific resolutions, or creating picture-in-picture effects. Implements the . Implements the . Implements the . ```csharp public class VideoScaleBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoScaleBlock() Initializes a new instance of the class with default settings (no specific dimensions, bilinear scaling). ```csharp public VideoScaleBlock() ``` ### VideoScaleBlock(int, int) Initializes a new instance of the class with the specified target dimensions. ```csharp public VideoScaleBlock(int width, int height) ``` #### Parameters Parameters: - width (int): The target width in pixels (0 to maintain aspect ratio). - height (int): The target height in pixels (0 to maintain aspect ratio). ### VideoScaleBlock(int, int, VideoScaleMethod) Initializes a new instance of the class with the specified target dimensions and scaling method. ```csharp public VideoScaleBlock(int width, int height, VFVideoScale.VideoScaleMethod method) ``` #### Parameters Parameters: - width (int): The target width in pixels (0 to maintain aspect ratio). - height (int): The target height in pixels (0 to maintain aspect ratio). - method (VFVideoScale . VideoScaleMethod): The scaling interpolation method to use. ## Properties ### AddBorders Gets or sets whether to add black borders to maintain aspect ratio. When true, the video will be scaled to fit within the target dimensions while preserving aspect ratio, with black borders added as needed. ```csharp public bool AddBorders { get; set; } ``` #### Property Value Parameters: - (bool): ### Height Gets or sets the target height for video scaling. Set to 0 to maintain original height or calculate from width and aspect ratio. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### ScaleMethod Gets or sets the scaling interpolation method. Different methods provide different quality/performance trade-offs. ```csharp public VFVideoScale.VideoScaleMethod ScaleMethod { get; set; } ``` #### Property Value Parameters: - (VFVideoScale . VideoScaleMethod): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ### Width Gets or sets the target width for video scaling. Set to 0 to maintain original width or calculate from height and aspect ratio. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Build() Constructs and initializes the video scale transformation filter and its associated GStreamer elements. This method creates the filter with the specified dimensions and scaling method, establishes input and output pads, and prepares the block for video scaling processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this video scale transformation block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer video scale filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer video scale filter. ### GetElement() Gets the underlying GStreamer element that performs the video scaling transformations. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video scale filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video scale transformation block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WarpBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.WarpBlock.html # Class WarpBlock # Class WarpBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video warp distortion effect block for advanced geometric transformations and spatial warping. This block applies sophisticated warping algorithms to video content, creating curved distortions, perspective corrections, and artistic deformations. Features configurable warping parameters including intensity, center point, and distortion patterns for precise control over the effect. Essential for creative video production, lens correction, perspective adjustment, and artistic visual transformations requiring complex geometric manipulation. Implements the . Implements the . Implements the . ```csharp public class WarpBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WarpBlock(WarpVideoEffect) Initializes a new instance of the class with specified warp distortion settings. ```csharp public WarpBlock(WarpVideoEffect settings) ``` #### Parameters Parameters: - settings (WarpVideoEffect): The warp distortion configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the warp distortion settings. Contains comprehensive warping parameters including intensity, center point coordinates, distortion patterns, and transformation modes for precise geometric control. ```csharp public WarpVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (WarpVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the warp distortion filter and its associated GStreamer elements. This method creates the filter with the specified warp settings, establishes input and output pads, and prepares the block for video geometric transformation processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this warp distortion block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer warp filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer warp filter. ### GetElement() Gets the underlying GStreamer element that performs the warp distortion processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the warp filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this warp distortion block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Class WaterRippleBlock Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.WaterRippleBlock.html # Class WaterRippleBlock # Class WaterRippleBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoProcessing **Assembly**: VisioForge.Core.dll Video water ripple distortion effect block that creates fluid wave-like animations. This block simulates water surface ripples by applying dynamic wave distortions to video content. Features configurable wave amplitude, frequency, and center point for realistic water effects. Creates animated concentric ripples emanating from a specified point, perfect for artistic transitions, fluid simulations, and dynamic visual effects requiring liquid-like distortion. Essential for creating water drop effects, pond ripples, and animated distortion sequences. Implements the . Implements the . Implements the . ```csharp public class WaterRippleBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### WaterRippleBlock(WaterRippleVideoEffect) Initializes a new instance of the class with specified water ripple distortion settings. ```csharp public WaterRippleBlock(WaterRippleVideoEffect settings) ``` #### Parameters Parameters: - settings (WaterRippleVideoEffect): The water ripple distortion configuration settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the water ripple distortion settings. Contains wave parameters including amplitude, frequency, center point coordinates, and animation speed for creating realistic water surface effects. ```csharp public WaterRippleVideoEffect Settings { get; set; } ``` #### Property Value Parameters: - (WaterRippleVideoEffect): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Constructs and initializes the water ripple distortion filter and its associated GStreamer elements. This method creates the filter with the specified ripple settings, establishes input and output pads, and prepares the block for video wave distortion processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if the filter was successfully built and configured; false if initialization failed. ### CleanUp() Releases all resources and performs cleanup operations for this water ripple distortion block. This method disposes of the GStreamer elements and resets the build state. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the GStreamer water ripple filter element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the GStreamer water ripple filter. ### GetElement() Gets the underlying GStreamer element that performs the water ripple distortion processing. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the water ripple filter. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this water ripple distortion block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.VideoProcessing Link: api/VisioForge.Core.MediaBlocks.VideoProcessing.html # Namespace VisioForge.Core.MediaBlocks.VideoProcessing # Namespace VisioForge.Core.MediaBlocks.VideoProcessing ### Classes Parameters: - (): Aging video effect block that simulates vintage film deterioration and weathering effects. This block applies realistic aging effects to video content including film scratches, dust particles, color degradation, sepia toning, and temporal fluctuations to create authentic vintage film appearance. Features configurable scratch density, dust intensity, color shift parameters, and flickering effects. Essential for creative video production, historical documentaries, artistic filters, and retro-style content creation requiring authentic aged film aesthetics. Implements the . Implements the . Implements the . - (): Alpha combine block that merges a video stream with a separate alpha channel stream into a single video stream with transparency information. This block takes two input streams (one for RGB/YUV color data and one for alpha channel) and combines them into RGBA/YUVA output. Essential for compositing separate color and alpha streams into transparent video.

Supported features: Combining separate color and alpha streams into RGBA/YUVA

Use cases: Video compositing, merging decoded color and alpha streams, custom alpha processing

Implements the . Implements the . Implements the . - (): Automatic deinterlacing video processing block that intelligently removes interlacing artifacts. This block automatically detects interlaced video content and applies appropriate deinterlacing algorithms to convert it to progressive format. Features adaptive field detection, motion analysis, and multiple deinterlacing methods including linear, blend, and edge-directed interpolation. Essential for processing broadcast video, DVD content, and legacy interlaced sources to ensure smooth playback on modern progressive displays without visual artifacts or field tearing. Implements the . Implements the . Implements the . - (): MediaBlock that converts Bayer pattern raw images to RGB format. This block performs demosaicing of Bayer pattern images commonly used in digital cameras and image sensors. Bayer filters arrange color filters in a specific pattern (RGGB, BGGR, GRBG, or GBRG) over the image sensor pixels. This block reconstructs full RGB color images from the raw Bayer data. Commonly used when working with raw camera data or specialized image sensors. Implements the . Implements the . Implements the . - (): A media block that integrates the Cascade Face Detector into a video processing pipeline. - (): ChromaKey video effect block for professional green screen compositing and color keying. This block provides advanced chroma key functionality for removing specific colors from video content and compositing foreground subjects onto different backgrounds. Features sophisticated color selection algorithms, edge refinement, spill suppression, and alpha channel generation for seamless compositing. Supports multiple color spaces, fine-tuned sensitivity controls, noise reduction, and edge smoothing for professional-quality results. Essential for virtual production, broadcast graphics, video conferencing backgrounds, and creative content creation requiring precise color-based video compositing. Implements the . Implements the . Implements the . - (): Codec alpha demultiplexer block that separates VP8/VP9 encoded streams with alpha channel into two separate streams: one containing color data and one containing alpha channel data. This block is used to extract and separate the alpha channel from encoded VP8/VP9 streams for independent processing or decoding.

Supported features: VP8/VP9 alpha demuxing from WebM/MKV containers

Use cases: Custom alpha processing, separate color/alpha decoding pipelines

Implements the . Implements the . Implements the . - (): Color effects block providing preset-based color manipulation and artistic filtering. This block applies predefined color effects and artistic filters to video content including color temperature adjustments, saturation changes, hue shifts, contrast enhancement, and creative color grading presets. Features various built-in presets for common color effects such as sepia, black and white, vintage, high contrast, and cinematic color grading. Essential for video post-production, creative content creation, broadcast enhancement, and artistic video filtering applications. Implements the . Implements the . Implements the . - (): A media block that integrates the DNN Face Detector into a video processing pipeline. - (): Deinterlace block for converting interlaced video content to progressive format. This block removes interlacing artifacts from video content captured or transmitted in interlaced format by applying sophisticated deinterlacing algorithms. Features multiple deinterlacing methods including field blending, edge-adaptive interpolation, motion-adaptive processing, and temporal filtering. Essential for processing legacy broadcast content, security camera feeds, and older video formats to create smooth progressive video suitable for modern displays and streaming applications. Implements the . Implements the . Implements the . - (): Dice video effect block that creates a fragmented mosaic appearance by dividing video into rotated squares. This block applies a unique visual effect that segments the video into many small square tiles, each randomly rotated in 90-degree increments (0°, 90°, 180°, or 270°). Creates an artistic fragmented appearance with configurable tile size and rotation parameters. Essential for creative video production, artistic filters, music videos, and experimental visual effects requiring geometric fragmentation and tile-based distortion. Implements the . Implements the . Implements the . - (): Edge detection video effect block that highlights object boundaries and structural features. This block applies advanced edge detection algorithms to identify and emphasize edges, contours, and boundaries in video content using gradient analysis and convolution filters. Creates artistic line-art style visuals by converting images to edge-only representations with adjustable sensitivity and threshold parameters. Essential for computer vision applications, artistic video filters, technical analysis, and creative content requiring structural outline visualization. Implements the . Implements the . Implements the . - (): Face detector block. Implements the . Implements the . Implements the . - (): Video effect block that applies a fish-eye lens distortion to the video stream. This effect creates a wide-angle, barrel distortion similar to looking through a fish-eye camera lens, where the center of the image appears magnified and the edges are compressed with increasing curvature. The effect is non-configurable and applies a fixed distortion pattern. Implements the . Implements the . Implements the . - (): MediaBlock that applies geometric transformations to video including flipping and rotation operations. This block provides horizontal flip, vertical flip, and rotation capabilities (90°, 180°, 270°) commonly used for correcting camera orientation, creating mirror effects, or adjusting video captured from mobile devices. The transformations are performed efficiently without quality loss. Implements the . Implements the . Implements the . - (): MediaBlock that applies gamma correction to video, adjusting the luminance and overall brightness. Gamma correction is essential for color management and display calibration, compensating for the non-linear response of display devices. Values less than 1.0 brighten the image, while values greater than 1.0 darken it. This effect is commonly used for HDR processing, color grading, and ensuring consistent appearance across different displays and devices. Implements the . Implements the . Implements the . - (): MediaBlock that applies Gaussian blur or sharpening effects to video. Gaussian blur is a widely used image processing technique that reduces noise and detail by averaging neighboring pixels using a Gaussian distribution. Positive sigma values create blur effects, while negative values create sharpening effects. This filter is commonly used for creating artistic blur effects, privacy masking, or image enhancement. Implements the . Implements the . Implements the . - (): MediaBlock that converts color video to grayscale (black and white) output. This effect removes color information while preserving luminance values, creating a monochrome representation of the input video. Commonly used for artistic effects, reducing bandwidth requirements, or creating vintage-style video content. The conversion maintains proper brightness levels by using luminance weighting. Implements the . Implements the . Implements the . - (): MediaBlock that overlays static images onto video streams with positioning, scaling, and transparency control. This block composites image files (PNG, JPEG, BMP, etc.) over video content, supporting features like alpha blending, custom positioning, rotation, scaling, and fade effects. Commonly used for watermarks, logos, brand overlays, lower thirds, and creative graphic elements in video production workflows. The overlay supports real-time updates and animation effects including fade-in and fade-out transitions. Implements the . Implements the . Implements the . - (): MediaBlock that overlays static images onto video streams using Cairo rendering with positioning, scaling, and transparency control. This block composites image files (PNG, JPEG, BMP, etc.) over video content using the Cairo graphics library, supporting features like alpha blending, custom positioning, rotation, scaling, and fade effects. Commonly used for watermarks, logos, brand overlays, lower thirds, and creative graphic elements in video production workflows. The overlay supports real-time updates and animation effects including fade-in and fade-out transitions. This Cairo-based implementation provides high-quality rendering and better cross-platform compatibility. Implements the . Implements the . Implements the . - (): Interlace block for converting progressive video content to interlaced format. This block applies interlacing effects to progressive video content by combining alternating scan lines to create traditional broadcast-compatible interlaced video. Features configurable field order, pattern selection, and temporal processing for creating authentic interlaced output. Essential for broadcast delivery, legacy system compatibility, and creating specific visual effects that require interlaced video characteristics for technical or artistic purposes. Implements the . Implements the . Implements the . - (): Key frame detector block for automatic identification and analysis of significant video frames. This block analyzes video content to detect key frames (I-frames) and scene changes using advanced computer vision algorithms. Features real-time detection, configurable sensitivity, JSON export functionality, and event-driven notifications for each detected key frame. Essential for video indexing, thumbnail generation, scene analysis, content summarization, and automated video editing applications requiring frame-level precision. Implements the . Implements the . Implements the . - (): LUT (Look-Up Table) processor block for professional color grading and color correction. This block applies industry-standard LUT files to transform video colors, enabling cinematic color grading, film emulation, and consistent color workflows. Supports various LUT formats including 3D LUTs (.cube, .3dl), provides real-time color transformation, and maintains color accuracy throughout the processing pipeline. Essential for professional video production, color matching between cameras, creative color styling, and ensuring consistent visual aesthetics across different video sources and display devices. Implements the . Implements the . Implements the . - (): Video mirror effect block that creates reflective and symmetrical visual effects. This block applies various mirroring transformations to video content including horizontal flipping, vertical flipping, and combinations for creating symmetrical patterns and kaleidoscope-like effects. Features multiple mirror modes for different artistic and practical applications including left-right mirroring, top-bottom mirroring, and quad-mirroring. Essential for creative video production, artistic filters, webcam applications, and visual effects requiring symmetrical transformations. Implements the . Implements the . Implements the . - (): Moving blur effect block that creates motion-sensitive blur based on frame differences. This block analyzes temporal changes between consecutive frames to detect motion areas and applies selective blur effects to moving objects while preserving static elements. Features configurable motion sensitivity, blur intensity, and temporal filtering for creating dynamic visual effects. Essential for artistic video production, motion emphasis, background isolation, and creative effects requiring motion-aware processing. Implements the . Implements the . Implements the . - (): Moving echo effect block that creates ghosting trails and echo images of moving objects. This block analyzes motion between frames to detect moving elements and generates visual echo trails that follow the movement path. Features configurable echo intensity, trail length, and fade parameters for creating dynamic motion-tracking visual effects. Essential for artistic video production, motion visualization, sports analysis, and creative effects requiring motion trail emphasis. Implements the . Implements the . Implements the . - (): Moving-zoom echo effect block that creates dynamic echo trails with animated transformations. This block generates multiple echo images with configurable scaling, rotation, and movement patterns, creating psychedelic and motion-based visual effects. Features include adjustable echo count, zoom factors, rotation speeds, and movement trajectories for creating complex visual feedback loops. Essential for music videos, creative transitions, artistic effects, and experimental video production requiring dynamic multi-layered echo patterns with animated transformations. Implements the . Implements the . Implements the . - (): Black and white optical animation effect block that creates retro optical art patterns. This block generates animated black and white optical illusion effects reminiscent of classic op-art and psychedelic animations. Features include pattern generation, motion dynamics, contrast controls, and temporal variations for creating hypnotic visual effects. Essential for artistic video production, retro-style animations, music visualizations, and experimental content requiring animated optical illusion patterns. Implements the . Implements the . Implements the . - (): Overlay manager block for dynamic multi-layer video overlay composition and management. This block provides a centralized system for managing multiple overlay elements on video content, supporting various overlay types including images, text, shapes, and animated graphics. Features include layer ordering, opacity control, positioning, blending modes, and real-time overlay updates. Essential for broadcast graphics, live production, watermarking, subtitles, and any application requiring dynamic overlay composition with runtime management capabilities. Implements the . Implements the . Implements the . - (): MediaBlock that applies pan and zoom transformations to video frames using Cairo. This block provides static and dynamic zoom and pan effects for video streams. Implements the . Implements the . Implements the . - (): Video perspective transformation block for advanced geometric distortion and 3D projection effects. This block applies perspective transformation using 3x3 transformation matrices to create sophisticated geometric effects including 3D rotation, keystone correction, and perspective warping. Features matrix-based transformation control for precise geometric manipulation and correction. Essential for video correction, artistic effects, architectural visualization, and advanced geometric transformations requiring mathematical precision. Implements the . Implements the . Implements the . - (): Video pinch distortion effect block that creates inward or outward warping from a center point. This block applies a pinch or bulge distortion to video content, pulling pixels toward or pushing them away from a central point. Features configurable intensity for both positive (bulge) and negative (pinch) effects, creating lens-like distortions. Essential for creative effects, caricature-style distortions, fisheye corrections, and artistic video transformations requiring radial compression or expansion effects. Implements the . Implements the . Implements the . - (): Pseudo 3D video effect block that creates simulated three-dimensional perspective transformations. This block applies perspective distortions and transformations to create the illusion of 3D depth on 2D video content. Features include adjustable perspective angles, depth simulation, rotation in virtual 3D space, and various projection modes. Essential for creating 3D-like transitions, perspective corrections, architectural visualizations, and creative effects requiring simulated three-dimensional transformations without actual 3D rendering. Implements the . Implements the . Implements the . - (): QR code overlay block for embedding scannable QR codes directly onto video content. This block generates and overlays QR codes containing custom data such as URLs, text, contact information, or any encoded data. Features include configurable size, position, error correction levels, and transparency settings. Essential for marketing videos, educational content, interactive media, ticketing systems, and any application requiring embedded scannable information within video streams. Implements the . Implements the . Implements the . - (): Quark video effect block that creates particle dissolution effects on moving objects. This block applies a unique visual effect that dissolves and disperses moving objects into particle-like fragments, creating a quantum or disintegration appearance. Features include motion detection sensitivity, particle density, dissolution speed, and regeneration patterns. Essential for sci-fi effects, creative transitions, motion-based visual effects, and artistic video production requiring dynamic object dissolution based on movement detection. Implements the . Implements the . Implements the . - (): Ripple effect block that creates water-like wave distortions and undulating visual patterns. This block applies dynamic ripple distortion effects that simulate water surface waves, heat shimmer, or liquid distortions across the video content. Features configurable amplitude, frequency, wave speed, and center point parameters for creating realistic fluid motion effects. Essential for artistic video production, liquid simulations, dream sequences, and creative effects requiring organic wave-based distortions. Implements the . Implements the . Implements the . - (): Video rotation block for precise angular transformation and orientation correction. This block provides smooth video rotation capabilities with sub-pixel accuracy using advanced interpolation algorithms. Features configurable rotation angles, center point adjustment, and anti-aliasing for high-quality results. Essential for correcting camera orientation, artistic rotation effects, device orientation handling, and video stabilization workflows requiring precise angular adjustments. Implements the . Implements the . Implements the . - (): MediaBlock that applies rounded corners effect to video frames. This block adds rounded corners to video by creating an alpha mask that makes the corners transparent with a specified border radius. The effect can be used for aesthetic purposes, matching UI design patterns, or creating picture-in-picture effects with rounded corners. Implements the . Implements the . Implements the . - (): SMPTE alpha transition video effect block that creates wipe transitions with alpha channel support. This block applies SMPTE standard transition patterns with transparency control, enabling seamless compositing of video layers with proper alpha blending. Essential for creating professional overlays, transparent transitions, and advanced compositing effects with full alpha channel support. Implements the . Implements the . Implements the . - (): SMPTE transition video effect block that creates wipe transitions between two video sources. This block applies SMPTE standard transition patterns including linear wipes, iris effects, and other geometric transitions commonly used in professional video editing. Essential for creating smooth transitions between video clips, broadcast-quality effects, and professional video production workflows. Implements the . Implements the . Implements the . - (): SVG overlay block for rendering scalable vector graphics on video content. This block overlays SVG (Scalable Vector Graphics) images or animations onto video streams, providing resolution-independent graphics perfect for logos, animated graphics, diagrams, and dynamic visual elements. Features include positioning, scaling, opacity control, and support for animated SVG content. Essential for broadcast graphics, watermarking, infographics, animated overlays, and any application requiring high-quality vector graphics overlaid on video content. Implements the . Implements the . Implements the . - (): MediaBlock that embeds invisible digital watermarks into video streams for identification and tracking purposes. This block uses GStreamer's simplevideomark element to insert unique patterns into video frames that can be detected later using SimpleVideoMarkDetectBlock. The watermarks are designed to be imperceptible to viewers while providing robust identification capabilities for content tracking, copyright protection, and media forensics. Common use cases include broadcast monitoring, content distribution tracking, and digital rights management. Implements the . Implements the . Implements the . - (): MediaBlock that detects and extracts invisible digital watermarks from video streams for identification and verification. This block uses GStreamer's simplevideomarkdetect element to identify unique patterns embedded by SimpleVideoMarkBlock. The detection provides real-time notification when watermarks are found, enabling applications to track content, verify authenticity, and implement copyright protection systems. Essential for broadcast monitoring, content distribution tracking, digital rights management, and media forensics applications. Implements the . Implements the . Implements the . - (): Smooth filter video block for noise reduction and image smoothing. This block applies advanced smoothing algorithms to reduce video noise, grain, and artifacts while preserving important edge details. Features include adjustable smoothing strength, edge preservation thresholds, temporal smoothing for motion areas, and selective filtering. Essential for video restoration, noise reduction, skin smoothing in beauty applications, and preprocessing for compression or analysis tasks requiring clean video input. Implements the . Implements the . Implements the . - (): Video sphere distortion effect block that creates curved spherical lens projection. This block applies spherical geometric distortion to video content, simulating the effect of viewing the image through a spherical lens or bubble. Features configurable refraction index, radius control, and center point positioning for realistic optical effects. Essential for creative video production, optical simulation, VR content preparation, and artistic effects requiring curved spatial transformations. Implements the . Implements the . Implements the . - (): Square distortion effect block that warps the center region into a square shape. This block applies a geometric transformation that distorts a circular area in the center of the image into a square shape, creating a unique warping effect. Features include adjustable size, intensity, and center positioning for the square distortion. Essential for creative visual effects, abstract video art, kaleidoscope-like patterns, and experimental video production requiring geometric shape transformations. Implements the . Implements the . Implements the . - (): Stretch distortion effect block that creates circular radial stretching around a center point. This block applies a radial stretch transformation that pulls or pushes pixels in a circular pattern from a center point, creating effects similar to looking through a magnifying glass or funhouse mirror. Features adjustable intensity for both inward and outward stretching, center point positioning, and radius control. Essential for creative distortions, lens simulation effects, artistic transformations, and visual effects requiring radial warping. Implements the . Implements the . Implements the . - (): MediaBlock that renders dynamic text overlays onto video streams with full typography control. This block provides comprehensive text rendering capabilities including custom fonts, colors, sizing, positioning, shadows, outlines, and background effects. Supports real-time text updates, multiple text elements, and professional typography features commonly used for titles, subtitles, lower thirds, captions, timestamps, and branding. The text rendering engine supports Unicode, anti-aliasing, and advanced text layout with precise positioning control. Implements the . Implements the . Implements the . - (): Video tunnel effect block that creates a perspective tunnel or vortex visual effect. This block applies a tunnel transformation that warps the video into a perspective tunnel, creating the illusion of depth and movement through a cylindrical or spiral passageway. Features include depth control, rotation effects, center positioning, and perspective adjustments. Essential for music videos, sci-fi transitions, hypnotic visual effects, and creative content requiring tunnel vision or vortex-like transformations. Implements the . Implements the . Implements the . - (): Video twirl distortion effect block that creates spiral rotating warping patterns. This block applies twirl distortion to video content by rotating pixels around a center point with intensity that decreases based on distance from the center. Features configurable twist angle, center point positioning, and radius control for creating various spiral effects. Essential for creative video production, artistic transitions, hypnotic effects, and abstract visual transformations requiring spiral-based geometric distortion. Implements the . Implements the . Implements the . - (): Video aspect ratio crop block for intelligent content-aware aspect ratio conversion. This block automatically crops video to match a target aspect ratio while preserving the most important visual content. Features intelligent cropping algorithms that detect and preserve key areas of interest, configurable crop positioning, and smooth transitions. Essential for format conversion between different display standards (16:9, 4:3, 21:9), social media format adaptation, and professional video production requiring automated aspect ratio adjustments without manual intervention. Implements the . Implements the . Implements the . - (): Video balance block for professional color correction and image enhancement. This block provides comprehensive video color adjustment capabilities including brightness, contrast, saturation, hue, and gamma correction. Features real-time parameter adjustment, automatic white balance, and precise color space manipulation for broadcast-quality results. Essential for color grading, exposure correction, camera calibration, and professional video post-production workflows requiring accurate color representation. Implements the . Implements the . Implements the . - (): Video box effect block for adding borders, letterboxing, and pillarboxing to video content. This block adds configurable borders around video content, enabling letterboxing (horizontal bars), pillarboxing (vertical bars), or custom border layouts. Features include adjustable border thickness on all sides, custom border colors, and automatic aspect ratio preservation. Essential for format adaptation, cinema-style letterboxing, broadcast safe areas, video composition layouts, and professional presentations requiring precise video framing. Implements the . Implements the . Implements the . - (): Video format conversion block that transforms video frames between different colorspaces, pixel formats, and resolutions. This essential pipeline component handles conversions between formats like RGB, YUV, NV12, RGBA, and other pixel formats, ensuring compatibility between different blocks in the pipeline. It performs automatic format negotiation and can handle colorspace conversions, bit depth changes, and chroma subsampling adjustments as needed by connected pipeline elements. Commonly used when connecting blocks that require different input/output formats or when preparing video for specific encoders or renderers. Implements the . Implements the . Implements the . - (): MediaBlock that crops video frames by removing specified regions from the edges or center. Video cropping allows precise trimming of unwanted areas from video content, supporting pixel-accurate region selection with top, bottom, left, and right margins. This is essential for removing black bars, focusing on specific areas of interest, changing aspect ratios, or preparing content for different display formats. The cropping operation is lossless and preserves the original video quality while reducing the frame dimensions. Implements the . Implements the . Implements the . - (): Video effects block for dynamic effect chain management and real-time effect processing. This block provides a flexible framework for applying multiple video effects in sequence, with support for dynamic addition, removal, and modification of effects during playback. Features include automatic effect chaining, runtime parameter updates, intelligent pipeline management, and support for all major effect types (color correction, geometric transforms, overlays, filters). Essential for video editing applications, live streaming with effects, post-production workflows, and any scenario requiring complex, dynamic video effect chains. Implements the . Implements the . Implements the . - (): MediaBlock that combines multiple video inputs into a single output with advanced compositing features. The video mixer provides professional broadcast-quality mixing capabilities including multi-layer compositing, real-time positioning, scaling, transparency control, chroma key effects, and transition animations. Supports hardware acceleration through Direct3D11 and OpenGL backends for optimal performance. Essential for live streaming, broadcast production, video conferencing, and any application requiring multiple video source composition with professional-grade features like picture-in-picture, overlays, and dynamic layer management with smooth transitions and effects. Implements the . Implements the . Implements the . - (): Video frame rate changer block for temporal resampling and frame rate conversion. This block intelligently adjusts video frame rates by duplicating or dropping frames while maintaining smooth playback. Features advanced temporal interpolation algorithms that minimize visual artifacts during rate conversion. Supports conversion between standard frame rates (24, 25, 30, 50, 60 fps), custom rates, and variable frame rate handling. Essential for format conversion, broadcast standards compliance, slow motion effects, time-lapse creation, and ensuring compatibility across different playback systems. Implements the . Implements the . Implements the . - (): MediaBlock that resizes video frames to specified dimensions with configurable scaling algorithms. Video resizing is fundamental for format conversion, quality optimization, and display adaptation. The block supports various interpolation methods including bilinear, bicubic, and lanczos algorithms to maintain visual quality during scaling operations. Essential for adapting content to different resolutions, aspect ratios, and delivery formats while preserving image quality through advanced resampling techniques. Commonly used for streaming optimization, device compatibility, and broadcast standards. Implements the . Implements the . Implements the . - (): Video sample grabber block for frame capture and analysis during playback. This block provides real-time access to video frames as they pass through the pipeline, enabling frame extraction, analysis, processing, and snapshot capabilities. Features multiple output formats (buffer, SKBitmap, System.Drawing.Bitmap), configurable pixel formats, frame caching for snapshots, and event-based frame delivery. Essential for video analysis applications, thumbnail generation, motion detection, computer vision integration, real-time monitoring, and any scenario requiring access to raw video data. Implements the . Implements the . Implements the . - (): MediaBlock that performs video frame scaling and resizing operations with support for various interpolation methods. This block can resize video to specific dimensions, maintain aspect ratios, and apply different scaling algorithms including nearest neighbor and bilinear filtering. It's essential for adapting video content to different display sizes, preparing content for encoding at specific resolutions, or creating picture-in-picture effects. Implements the . Implements the . Implements the . - (): Video warp distortion effect block for advanced geometric transformations and spatial warping. This block applies sophisticated warping algorithms to video content, creating curved distortions, perspective corrections, and artistic deformations. Features configurable warping parameters including intensity, center point, and distortion patterns for precise control over the effect. Essential for creative video production, lens correction, perspective adjustment, and artistic visual transformations requiring complex geometric manipulation. Implements the . Implements the . Implements the . - (): Video water ripple distortion effect block that creates fluid wave-like animations. This block simulates water surface ripples by applying dynamic wave distortions to video content. Features configurable wave amplitude, frequency, and center point for realistic water effects. Creates animated concentric ripples emanating from a specified point, perfect for artistic transitions, fluid simulations, and dynamic visual effects requiring liquid-like distortion. Essential for creating water drop effects, pond ripples, and animated distortion sequences. Implements the . Implements the . Implements the . --- # Class VideoRendererBlock Link: api/VisioForge.Core.MediaBlocks.VideoRendering.VideoRendererBlock.html # Class VideoRendererBlock # Class VideoRendererBlock **Namespace**: VisioForge.Core.MediaBlocks.VideoRendering **Assembly**: VisioForge.Core.dll Cross-platform video renderer block providing display output for video streams. This block serves as the final destination for video in a media pipeline, rendering frames to various display surfaces across different platforms and UI frameworks. Features include hardware-accelerated rendering using platform-specific APIs (Direct3D 11 on Windows, OpenGL ES on mobile, Metal on Apple platforms), support for multiple UI frameworks (WPF, WinForms, MAUI, WinUI, Android Views, iOS/macOS views), subtitle overlay rendering, snapshot capture functionality, frame stepping, and playback rate control. The renderer automatically selects the optimal rendering path based on the platform and UI framework, providing native performance while maintaining a consistent API. Essential for media players, video editors, streaming clients, video conferencing apps, and any application requiring high-quality video display with minimal latency. Implements the . Implements the . Implements the . ```csharp public class VideoRendererBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals, IMediaBlockRenderer, IGetVideoStreamInfo ``` #### Inheritance #### Implements #### Inherited Members #### Extension Methods ## Constructors ### VideoRendererBlock(MediaBlocksPipeline, IVideoView) Initializes a new instance of the class. ```csharp public VideoRendererBlock(MediaBlocksPipeline pipeline, IVideoView videoView) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): Tthe pipeline. - videoView (IVideoView): The video view. ### VideoRendererBlock(MediaBlocksPipeline, nint) Initializes a new instance of the class. ```csharp public VideoRendererBlock(MediaBlocksPipeline pipeline, nint windowHandle) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): Tthe pipeline. - windowHandle (nint): The window handle. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### IsSync Gets or sets a value indicating whether to synchronize video rendering with the pipeline clock. Should be true for real-time playback to maintain audio/video sync, false for offline processing or transcoding where maximum throughput is desired. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets or sets the video renderer configuration settings. Contains platform-specific rendering options, performance tuning parameters, and display preferences such as aspect ratio handling and scaling mode. ```csharp public VideoRendererSettingsX Settings { get; set; } ``` #### Property Value Parameters: - (VideoRendererSettingsX): ### SubtitleEnabled Gets or sets a value indicating whether subtitle rendering is enabled. When enabled, subtitles from the stream or external file will be overlaid on the video. ```csharp public bool SubtitleEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### SubtitleExternalFile Gets or sets the path to an external subtitle file (optional). Supports common subtitle formats like SRT, ASS, VTT. Takes precedence over embedded subtitles. ```csharp public string SubtitleExternalFile { get; set; } ``` #### Property Value Parameters: - (string): ### SubtitleSettings Gets or sets the subtitle overlay configuration settings. Contains font, color, position, and styling options for subtitle rendering. ```csharp public SubtitleOverlaySettings SubtitleSettings { get; set; } ``` #### Property Value Parameters: - (SubtitleOverlaySettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Releases all resources and performs cleanup operations for this video renderer block. This method disposes of rendering elements, clears frame buffers, and releases display resources. ```csharp public void CleanUp() ``` ### ClearHandle() Clears the window handle or display surface association. Call this before changing the rendering target or when the display window is destroyed. ```csharp public void ClearHandle() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### FrameStep(int, double) Advances the video by a specified number of frames. Useful for frame-accurate seeking and video analysis applications. ```csharp public bool FrameStep(int framesCount, double rate) ``` #### Parameters Parameters: - framesCount (int): The number of frames to advance. - rate (double): The rate at which to perform the frame step. #### Returns Parameters: - (bool): true if frame stepping was successful; false otherwise. ### GetCore() Gets the core BaseElement wrapper that provides additional functionality around the platform-specific video renderer element. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): The BaseElement wrapper instance that encapsulates the video renderer. ### GetElement() Gets the underlying GStreamer element that performs video rendering. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): The GStreamer Element instance representing the video renderer. ### GetVideoStreamInfo() Gets detailed information about the current video stream being rendered. Includes resolution, frame rate, pixel format, and codec information. ```csharp public VideoStreamInfo GetVideoStreamInfo() ``` #### Returns Parameters: - (VideoStreamInfo): VideoStreamInfo containing stream metadata, or null if no stream is active. ### GetVideoView() Gets the video view interface associated with this renderer. ```csharp public IVideoView GetVideoView() ``` #### Returns Parameters: - (IVideoView): The IVideoView instance used for rendering, or null if using window handle. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### SetRate(double, Pipeline) Sets the playback rate for the video renderer. Supports variable speed playback including slow motion and fast forward. ```csharp public bool SetRate(double rate, Pipeline pipeline) ``` #### Parameters Parameters: - rate (double): The playback rate (1.0 = normal, 0.5 = half speed, 2.0 = double speed). - pipeline (Pipeline): The GStreamer pipeline containing this renderer. #### Returns Parameters: - (bool): true if the rate was successfully set; false otherwise. ### Snapshot_Get() Gets the snapshot as SKBitmap. ```csharp public SKBitmap Snapshot_Get() ``` #### Returns Parameters: - (SKBitmap): SKBitmap. ### Snapshot_GetAsync() Gets the snapshot as SKBitmap (async). ```csharp public Task Snapshot_GetAsync() ``` #### Returns Parameters: - (Task < SKBitmap >): Task<SKBitmap>. ### Snapshot_Save(string, SKEncodedImageFormat, int) Saves snapshot to a file. ```csharp public bool Snapshot_Save(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): File name. - format (SKEncodedImageFormat): Format. - quality (int): Quality. #### Returns Parameters: - (bool): true if successful, false otherwise. ### Snapshot_SaveAsync(string, SKEncodedImageFormat, int) Saves snapshot to a file (async). ```csharp public Task Snapshot_SaveAsync(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): File name. - format (SKEncodedImageFormat): Format. - quality (int): Quality. #### Returns Parameters: - (Task < bool >): true if successful, false otherwise. ### UpdateSubtitleOverlay(SubtitleOverlaySettings) Updates the subtitle overlay settings in real-time. Changes take effect immediately without interrupting video playback. ```csharp public void UpdateSubtitleOverlay(SubtitleOverlaySettings settings) ``` #### Parameters Parameters: - settings (SubtitleOverlaySettings): The new subtitle overlay settings to apply. ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Associates this video renderer block with a pipeline and initializes its internal context. This method is called internally when the block is added to a pipeline. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The MediaBlocksPipeline instance that will manage this block. ## See Also --- # Namespace VisioForge.Core.MediaBlocks.VideoRendering Link: api/VisioForge.Core.MediaBlocks.VideoRendering.html # Namespace VisioForge.Core.MediaBlocks.VideoRendering # Namespace VisioForge.Core.MediaBlocks.VideoRendering ### Classes Parameters: - (): Cross-platform video renderer block providing display output for video streams. This block serves as the final destination for video in a media pipeline, rendering frames to various display surfaces across different platforms and UI frameworks. Features include hardware-accelerated rendering using platform-specific APIs (Direct3D 11 on Windows, OpenGL ES on mobile, Metal on Apple platforms), support for multiple UI frameworks (WPF, WinForms, MAUI, WinUI, Android Views, iOS/macOS views), subtitle overlay rendering, snapshot capture functionality, frame stepping, and playback rate control. The renderer automatically selects the optimal rendering path based on the platform and UI framework, providing native performance while maintaining a consistent API. Essential for media players, video editors, streaming clients, video conferencing apps, and any application requiring high-quality video display with minimal latency. Implements the . Implements the . Implements the . --- # Class YAMLBlock Link: api/VisioForge.Core.MediaBlocks.YAMLBlock.html # Class YAMLBlock # Class YAMLBlock **Namespace**: VisioForge.Core.MediaBlocks **Assembly**: VisioForge.Core.dll Represents a MediaBlock configuration in YAML format for serialization and deserialization. This class provides a lightweight data structure for storing and transferring MediaBlock settings in a human-readable YAML format, enabling pipeline configuration persistence and sharing. Used primarily for saving and loading pipeline configurations. ```csharp public class YAMLBlock ``` #### Inheritance #### Inherited Members ## Properties ### Name Gets or sets the unique name identifier for the MediaBlock. This name is used to reference the block within the pipeline configuration and must be unique within a pipeline to avoid conflicts. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): --- # Namespace VisioForge.Core.MediaBlocks Link: api/VisioForge.Core.MediaBlocks.html # Namespace VisioForge.Core.MediaBlocks # Namespace VisioForge.Core.MediaBlocks ### Namespaces Parameters: - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): ### Classes Parameters: - (): Shared context object that contains pipeline-wide resources, state, and configuration for MediaBlocks operations. This context is passed to all blocks in a pipeline to provide access to the underlying GStreamer pipeline, event handling, timing information, and cross-block communication. It serves as the central coordination point for pipeline lifecycle management and resource sharing. - (): Base implementation of a media processing block in the VisioForge MediaBlocks pipeline system. This abstract base class provides core functionality for all media blocks including pipeline management, context handling, and basic lifecycle operations. Media blocks are the fundamental building blocks that can be connected together to create complex media processing pipelines. Implements the interface. - (): Extension methods for MediaBlock operations. - (): Static helper class providing extension methods for MediaBlock operations. These utility methods simplify common MediaBlock operations by providing convenient access to underlying GStreamer element functionality for state management and event handling. - (): Represents a connection point (pad) on a MediaBlock that enables data flow between blocks in the pipeline. Pads can be input (sink) or output (source) and are typed by media content (video, audio, subtitles, data). This class manages the underlying GStreamer pad, connection state, and provides methods for dynamic linking/unlinking during pipeline execution. Essential for building flexible media processing workflows. - (): MediaBlocks pipeline bus message handling implementation. This partial class contains all message bus processing, event handling, and pipeline state management. Handles video overlay setup, stream collection detection, specialized block messaging, and pipeline lifecycle events. - (): High-level video frame extraction utility that creates a simplified pipeline for processing video frames. This class provides an easy-to-use interface for extracting individual frames from video files or camera sources, with optional resizing and format conversion. Designed for applications that need frame-by-frame video analysis, thumbnail generation, or computer vision processing without complex pipeline management. - (): Represents a MediaBlock configuration in YAML format for serialization and deserialization. This class provides a lightweight data structure for storing and transferring MediaBlock settings in a human-readable YAML format, enabling pipeline configuration persistence and sharing. Used primarily for saving and loading pipeline configurations. ### Interfaces Parameters: - (): Main Media Block interface that defines the contract for all media processing blocks in the pipeline system. Media blocks are the fundamental building blocks of media processing pipelines, representing individual processing units such as sources, filters, encoders, decoders, and sinks. Each block can have input and output pads for connecting to other blocks, forming a directed graph of media processing operations. - (): Interface for MediaBlocks that support dynamic creation of input pads at runtime. This interface enables blocks like mixers and multiplexers to create new input connections on demand, allowing for flexible pipeline topologies that can change during execution. - (): Internal interface providing low-level access to MediaBlock implementation details. This interface exposes the underlying GStreamer elements and pipeline management methods that are used internally by the MediaBlocks framework for pipeline construction and lifecycle management. Not intended for direct use in application code. - (): Extended internal interface for MediaBlocks that require post-connection initialization. This interface provides additional lifecycle hooks for blocks that need to perform configuration or setup after their pads have been connected in the pipeline. - (): Interface for MediaBlocks that perform rendering operations (audio playback, video display, etc.). This interface provides control over synchronization behavior for blocks that present media to users, ensuring proper timing and smooth playback of multimedia content. - (): Interface for configuration objects that can create and configure MediaBlock instances. This interface enables a factory pattern where settings objects encapsulate all necessary configuration parameters and can instantiate properly configured MediaBlocks on demand. - (): Defines the core interface for the modern MediaBlocks pipeline system, enabling flexible, cross-platform media processing workflows. This interface provides the foundation for building modular media processing applications by composing reusable media blocks (sources, effects, encoders, sinks) into complete processing pipelines. Built on GStreamer, it delivers high-performance media handling across Windows, macOS, Linux, iOS, and Android platforms with a unified API. ### Enums Parameters: - (): Specifies the data flow direction for a MediaBlockPad, determining whether it receives or sends media data. This enumeration defines the role of a pad in the MediaBlocks pipeline system. - (): Specifies the type of media content that flows through a MediaBlockPad. This enumeration determines what kind of media streams can be connected and processed by the pad. - (): Enumeration defining the types of media processing blocks available in the MediaBlocks pipeline system. This includes sources (file, camera, stream), processors (effects, converters, mixers), encoders (H.264, AAC, etc.), and sinks (file writers, streamers, hardware outputs). Each type represents a specific functional category that determines how the block processes and routes media data within the pipeline. --- # Class MediaInfoReaderX Link: api/VisioForge.Core.MediaInfoReaderX.MediaInfoReaderX.html # Class MediaInfoReaderX # Class MediaInfoReaderX **Namespace**: VisioForge.Core.MediaInfoReaderX **Assembly**: VisioForge.Core.dll Provides cross-platform media file analysis capabilities, extracting detailed metadata such as video resolution, frame rate, audio channels, codec information, and duration. ```csharp public class MediaInfoReaderX ``` #### Inheritance #### Inherited Members ## Remarks

This class serves as the primary entry point for reading media file information across different platforms. It automatically selects the appropriate underlying implementation:

  • iOS: Uses AVFoundation-based IOSMediaInfoReader for native performance.
  • Other platforms (Windows, macOS, Linux, Android): Uses GStreamer-based MediaInfoReaderCore.

The class supports both local files and remote URIs, providing synchronous and asynchronous methods for opening media sources. After successfully opening a file, access the property to retrieve all discovered media information.

## Constructors ### MediaInfoReaderX(ContextX) Initializes a new instance of the class. ```csharp public MediaInfoReaderX(ContextX context = null) ``` #### Parameters Parameters: - context (ContextX): The context object providing logging, debugging, and platform-specific configuration. If null, a default context will be created internally. #### Remarks The context allows customization of logging behavior and provides platform-specific settings. When sharing a context across multiple SDK instances, logging output will be consolidated for easier debugging. ### MediaInfoReaderX(MediaPlayerCoreX) Initializes a new instance of the class using the context from an existing instance. ```csharp public MediaInfoReaderX(MediaPlayerCoreX player) ``` #### Parameters Parameters: - player (MediaPlayerCoreX): The instance from which to obtain the context. This allows the media info reader to share logging and configuration with the player. #### Remarks Use this constructor when you want the media info reader to use the same context as an existing media player instance. This ensures consistent logging output and shared platform-specific settings between components. #### Exceptions Parameters: - (ArgumentNullException): Thrown when player is null. ## Properties ### DeepDiscovery Gets or sets a value indicating whether deep discovery mode is enabled. ```csharp public bool DeepDiscovery { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

When enabled, deep discovery mode uses GStreamer's uridecodebin element directly instead of the GstDiscoverer API. This approach can be more reliable for:

  • Files with non-standard or unusual container formats.
  • Media files that GstDiscoverer fails to analyze correctly.
  • Sources requiring custom decoding pipelines.

The trade-off is that deep discovery may be slower for standard media files where GstDiscoverer would work efficiently. Consider enabling this option only when the default discovery mode fails to extract complete information.

This property is not available on iOS platforms where AVFoundation is used instead.

### Info Gets the media file information discovered after opening a media source. ```csharp public MediaFileInfo Info { get; } ``` #### Property Value Parameters: - (MediaFileInfo): ## Methods ### GetFileSnapshotRGB(Stream, TimeSpan?, ContextX, CancellationToken, TimeSpan?) Captures a snapshot from a media stream and returns 24-bit RGB pixel data. ```csharp public static Tuple GetFileSnapshotRGB(Stream stream, TimeSpan? position = null, ContextX context = null, CancellationToken cancellationToken = default, TimeSpan? timeout = null) ``` #### Parameters Parameters: - stream (Stream): Input stream containing a media file. The stream is copied to a temporary file before decoding. The current stream position is used (no rewinding is performed). - position (TimeSpan ?): Optional timestamp to seek to before capturing. If null, the first frame (0 seconds) is used. - context (ContextX): Optional SDK context for logging. If null, a default context is created. - cancellationToken (CancellationToken): Token used to cancel snapshot capture. - timeout (TimeSpan ?): Optional timeout for receiving a frame. If null, defaults to 10 seconds. #### Returns Parameters: - (Tuple < byte [ ] , int , int >): A tuple containing: (RGB byte array, width, height). The byte array is interleaved RGB (3 bytes per pixel), row-major order. The byte array can be null if no frame could be captured. #### Remarks This overload writes the stream to a temporary file on disk, then delegates to . #### Exceptions Parameters: - (ArgumentNullException): Thrown when stream is null. ### GetFileSnapshotRGB(string, TimeSpan?, ContextX, CancellationToken, TimeSpan?) Captures a snapshot from a media file and returns 24-bit RGB pixel data. ```csharp public static Tuple GetFileSnapshotRGB(string filename, TimeSpan? position = null, ContextX context = null, CancellationToken cancellationToken = default, TimeSpan? timeout = null) ``` #### Parameters Parameters: - filename (string): Path to the media file to decode. - position (TimeSpan ?): Optional timestamp to seek to before capturing. If null, the first frame (0 seconds) is used. - context (ContextX): Optional SDK context for logging. If null, a default context is created. - cancellationToken (CancellationToken): Token used to cancel snapshot capture. - timeout (TimeSpan ?): Optional timeout for receiving a frame. If null, defaults to 10 seconds. #### Returns Parameters: - (Tuple < byte [ ] , int , int >): A tuple containing: (RGB byte array, width, height). The byte array is interleaved RGB (3 bytes per pixel), row-major order. The byte array can be null if no frame could be captured. #### Remarks The implementation builds a small GStreamer pipeline based on uridecodebin and performs an accurate seek where possible. Some formats/containers may return the nearest decodable frame rather than an exact timestamp. #### Exceptions Parameters: - (ArgumentException): Thrown when filename is null or empty. ### GetFileSnapshotSKBitmap(string, TimeSpan?, ContextX, CancellationToken, TimeSpan?) Captures a snapshot from a media file and returns it as an . ```csharp public static SKBitmap GetFileSnapshotSKBitmap(string filename, TimeSpan? position = null, ContextX context = null, CancellationToken cancellationToken = default, TimeSpan? timeout = null) ``` #### Parameters Parameters: - filename (string): Path to the media file to decode. - position (TimeSpan ?): Optional timestamp to seek to before capturing. - context (ContextX): Optional SDK context for logging. - cancellationToken (CancellationToken): Token used to cancel snapshot capture. - timeout (TimeSpan ?): Optional timeout for receiving a frame. #### Returns Parameters: - (SKBitmap): An containing the captured frame, or null if a frame could not be captured. #### Exceptions Parameters: - (ArgumentException): Thrown when filename is null or empty. ### GetFileSnapshotSKBitmap(Stream, TimeSpan?, ContextX, CancellationToken, TimeSpan?) Captures a snapshot from a media stream and returns it as an . ```csharp public static SKBitmap GetFileSnapshotSKBitmap(Stream stream, TimeSpan? position = null, ContextX context = null, CancellationToken cancellationToken = default, TimeSpan? timeout = null) ``` #### Parameters Parameters: - stream (Stream): Input stream containing a media file. - position (TimeSpan ?): Optional timestamp to seek to before capturing. - context (ContextX): Optional SDK context for logging. - cancellationToken (CancellationToken): Token used to cancel snapshot capture. - timeout (TimeSpan ?): Optional timeout for receiving a frame. #### Returns Parameters: - (SKBitmap): An containing the captured frame, or null if a frame could not be captured. #### Exceptions Parameters: - (ArgumentNullException): Thrown when stream is null. ### Open(string) Opens the specified file synchronously for media information extraction. ```csharp public bool Open(string filename) ``` #### Parameters Parameters: - filename (string): The absolute or relative path to the media file to analyze. The path will be automatically converted to a file URI internally. #### Returns Parameters: - (bool): true if the file was successfully opened and analyzed; false if the filename is null or empty, or if the file could not be opened. #### Remarks

This method blocks the calling thread until the media file analysis is complete. For UI applications or scenarios where responsiveness is important, prefer the asynchronous method instead.

After successful completion, access the property to retrieve the discovered media information.

### OpenAsync(Uri) Opens the specified URI asynchronously for media information extraction. ```csharp public Task OpenAsync(Uri uri) ``` #### Parameters Parameters: - uri (Uri): The URI of the media file to analyze. Supports both local file URIs (file://) and remote URIs (http://, https://, rtsp://, etc.). #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous open operation. The task result is true if the media file was successfully opened and analyzed; otherwise, false. #### Remarks After successful completion, access the property to retrieve the discovered media information including video streams, audio streams, duration, and metadata. ### OpenAsync(string) Opens the specified file asynchronously for media information extraction. ```csharp public Task OpenAsync(string filename) ``` #### Parameters Parameters: - filename (string): The absolute or relative path to the media file to analyze. The path will be automatically converted to a file URI internally. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous open operation. The task result is true if the media file was successfully opened and analyzed; false if the filename is null or empty, or if the file could not be opened. #### Remarks This is the most common method for opening local media files. After successful completion, access the property to retrieve the discovered media information. For remote sources, use the overload. ## See Also --- # Namespace VisioForge.Core.MediaInfoReaderX Link: api/VisioForge.Core.MediaInfoReaderX.html # Namespace VisioForge.Core.MediaInfoReaderX # Namespace VisioForge.Core.MediaInfoReaderX ### Classes Parameters: - (): Provides cross-platform media file analysis capabilities, extracting detailed metadata such as video resolution, frame rate, audio channels, codec information, and duration. --- # Class MediaPlayerCoreX Link: api/VisioForge.Core.MediaPlayerX.MediaPlayerCoreX.html # Class MediaPlayerCoreX # Class MediaPlayerCoreX **Namespace**: VisioForge.Core.MediaPlayerX **Assembly**: VisioForge.Core.dll MediaPlayerX audio effects processing and real-time audio manipulation implementation. Provides dynamic audio effect management including equalizers, filters, dynamic range control, spatial processing, and real-time audio manipulation during playback. Supports both cross-platform and platform-specific DSP audio processing pipelines for maximum flexibility and performance. ```csharp public class MediaPlayerCoreX : IDisposable, IAsyncDisposable, IMediaPlayerControls, IVideoEffectsControls, INotifyPropertyChanged ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This is the modern, cross-platform media player SDK recommended for new development projects. It replaces legacy platform-specific players and provides unified API across all supported platforms. Built on a cross-platform media framework for maximum format compatibility and MediaBlocks for modular pipeline construction. ## Constructors ### MediaPlayerCoreX() Initializes a new instance of the class with default settings. Configures logging infrastructure, platform-specific media framework redistribution paths, and initializes core components. ```csharp public MediaPlayerCoreX() ``` ### MediaPlayerCoreX(IVideoView) Initializes a new instance of the class with a video view control for rendering. Associates the player with a video rendering control to display video output on screen. Configures logging infrastructure, platform-specific media framework redistribution paths, and initializes core components. ```csharp public MediaPlayerCoreX(IVideoView videoView) ``` #### Parameters Parameters: - videoView (IVideoView): The video view control that will be used for video rendering and display output. ## Properties ### Audio_OutputDevice Gets or sets the audio output device. ```csharp public IAudioRendererSettings Audio_OutputDevice { get; set; } ``` #### Property Value Parameters: - (IAudioRendererSettings): ### Audio_OutputDevice_Mute Gets or sets a value indicating whether the audio output is muted. When muted, audio playback continues but no sound is produced. ```csharp public bool Audio_OutputDevice_Mute { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Muting is different from setting to 0:

  • Mute: Silences output while preserving the volume setting; unmuting restores previous volume
  • Volume 0: Sets volume to zero; requires explicitly setting volume back to desired level

This property can be changed during playback for instant mute/unmute control. Changes take effect immediately without interrupting the audio stream. The volume level is preserved when muting and restored when unmuting.

If no audio renderer is active, getting this property returns false, and setting it updates a cached value that will be applied when playback starts.

### Audio_OutputDevice_Volume Gets or sets the audio output volume level for the media player. This controls the volume of the audio rendered to the output device. ```csharp public double Audio_OutputDevice_Volume { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks

This property can be changed during playback for real-time volume adjustment. Changes take effect immediately. The volume setting is applied to the audio renderer in the pipeline before the signal reaches the audio output device.

Setting values above 1.0 amplifies the audio signal, which may result in clipping and distortion if the audio is already at or near maximum levels. For pure muting without volume adjustment, use instead.

If no audio renderer is active (pipeline not started), getting this property returns the cached volume value, and setting it updates the cached value that will be applied when playback starts.

### Audio_Play Gets or sets a value indicating whether audio playback is enabled in the media player. When set to false, the audio stream is muted and no audio processing occurs. ```csharp public bool Audio_Play { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks This property must be set before calling or to take effect. Changing this property during playback requires stopping and restarting the player. When disabled, audio decoding and rendering blocks are not added to the pipeline, improving performance for video-only scenarios. If no audio output device is configured, this property is automatically set to false. ### Audio_Streams Gets an observable collection of all audio streams detected in the currently loaded media. Each stream contains metadata about codec, sample rate, bit depth, channel configuration, and language. ```csharp public ObservableCollection Audio_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < AudioStreamInfo >): #### Remarks

This collection is populated after opening a media source and the event is raised. Common scenarios with multiple audio streams include:

  • Multi-language content (movies, documentaries with multiple dubbed audio tracks)
  • Music videos with instrumental/vocal tracks
  • Content with commentary tracks or descriptive audio for accessibility
  • Different audio quality levels (stereo, 5.1 surround, Dolby Atmos)

Use to switch between available audio streams during playback for features like language selection or audio track switching. The collection supports data binding for displaying available audio tracks in the UI.

### Audio_VU_Meter_Enabled Gets or sets a value indicating whether the audio VU (Volume Unit) meter is enabled for real-time audio level monitoring. When enabled, the event is raised periodically with current audio level information. ```csharp public bool Audio_VU_Meter_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks The VU meter provides real-time audio level data useful for:
  • Displaying audio level visualizations in the UI
  • Monitoring for audio clipping or silence
  • Implementing audio-based triggers or automation
  • Creating audio meters and spectrum analyzers
This property must be set before starting playback. Enabling the VU meter has minimal performance impact. ### Custom_Audio_Outputs Gets the collection of custom audio output blocks that receive processed audio samples from the pipeline. These blocks can encode audio to files, stream to network, or perform custom audio processing. ```csharp public List Custom_Audio_Outputs { get; } ``` #### Property Value Parameters: - (List < MediaBlock >): #### Remarks

Custom audio outputs enable advanced scenarios such as:

  • Recording audio to multiple formats simultaneously (MP3, AAC, WAV)
  • Streaming audio to multiple destinations (Icecast, SHOUTcast, RTMP audio-only)
  • Analyzing audio in real-time for speech-to-text or music recognition
  • Creating audio archives or podcasts from live playback
  • Routing audio to multiple sound cards or virtual audio devices

Output blocks must be added to this collection before starting playback. When multiple outputs are configured, an audio tee (splitter) is automatically inserted in the pipeline to distribute samples to all outputs. Each output receives a copy of the processed audio after effects have been applied.

Performance note: Each output block processes audio independently. Multiple outputs may increase CPU usage depending on the operations performed by each output, though audio processing is generally less resource-intensive than video processing.

### Custom_Video_Outputs Gets the collection of custom video output blocks that receive processed video frames from the pipeline. These blocks can encode video to files, stream to network, or perform custom processing. ```csharp public List Custom_Video_Outputs { get; } ``` #### Property Value Parameters: - (List < MediaBlock >): #### Remarks

Custom video outputs enable advanced scenarios such as:

  • Recording video to multiple formats simultaneously
  • Streaming video to multiple destinations (RTMP, RTSP, HLS)
  • Creating video thumbnails or time-lapse sequences during playback
  • Sending video to custom processing pipelines or AI inference engines
  • Multi-target encoding with different resolutions or bitrates

Output blocks must be added to this collection before starting playback. When multiple outputs are configured, a video tee (splitter) is automatically inserted in the pipeline to distribute frames to all outputs.

Performance note: Each output block processes video independently. Multiple outputs may significantly increase CPU/GPU usage depending on the operations performed by each output.

### Debug_Dir Gets or sets the directory path where debug log files and pipeline graphs will be saved. This directory is used for storing debug information including Serilog logs and GStreamer pipeline DOT files. ```csharp public string Debug_Dir { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When is enabled, log files are automatically created in this directory with names like: media_player_log_YYYYMMDD_HHMMSS.txt

Pipeline graph files created by are also saved to this directory. Ensure the application has write permissions to this directory, or debug file creation will fail.

Changing this property triggers a logger reconfiguration, closing the current log file and creating a new one in the new directory if is enabled.

### Debug_DisableMessageDialogs Gets or sets a value indicating whether error message dialogs will be shown automatically when errors occur and the event is not handled. This property only affects Windows platforms. ```csharp public bool Debug_DisableMessageDialogs { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

This property controls the default error notification behavior:

  • When event is handled: Message dialogs are never shown regardless of this property
  • When is not handled and this is false: Error dialogs are shown automatically (Windows only)
  • When is not handled and this is true: Errors are logged but no dialogs appear

Set to true in production applications to prevent unexpected dialogs from disrupting the user experience. Always implement event handling for proper error management in production code.

### Debug_Mode Gets or sets a value indicating whether debug mode is enabled for detailed logging and diagnostics. When enabled, comprehensive debug information is logged to files for troubleshooting and development. ```csharp public bool Debug_Mode { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Debug mode affects logging behavior:

  • Enabled: Logs at Debug level to both files and debug output with detailed pipeline information
  • Disabled: Logs only Error level messages to debug output, no file logging

Debug log files are created in with automatic rotation (1MB per file, 3 files retained). Changing this property triggers immediate logger reconfiguration.

Warning: Keep debug mode disabled in production to avoid performance impact and excessive disk usage from detailed logging. Enable only during development or when diagnosing issues.

### Debug_Telemetry Gets or sets a value indicating whether anonymous telemetry data should be sent during development and debugging. Telemetry helps improve SDK quality by providing anonymous crash reports and error diagnostics. ```csharp public bool Debug_Telemetry { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Privacy Notice: Only anonymous diagnostic data is collected. No personally identifiable information, media content, or application-specific data is transmitted. Telemetry only functions when:

  • A debugger is attached (development environment)
  • This property is set to true

Collected data includes: exception types, error messages, SDK version, and general usage patterns. This helps VisioForge identify and fix issues more quickly.

Note: Telemetry functionality is currently disabled in the SDK.

### Face_Detector Gets or sets the face detection processor for real-time face detection and tracking in video frames. When configured, the detector analyzes each video frame and raises events with detected face information. ```csharp public IFaceDetector Face_Detector { get; set; } ``` #### Property Value Parameters: - (IFaceDetector): #### Remarks

Face detection enables applications to:

  • Track faces in video for security and surveillance applications
  • Apply face-based effects or filters (blur, emoji replacement, augmented reality)
  • Analyze video content for people counting or attendance tracking
  • Create smart video cropping that keeps faces centered
  • Implement facial recognition workflows

The face detector must support the video format being processed. Not all pixel formats are supported by all detectors. If the video format is incompatible, an error is logged and face detection is skipped for those frames.

This property must be set before starting playback. Face detection has performance implications; the impact depends on the detector implementation, video resolution, and frame rate.

### Fonts Gets a collection of all available system fonts that can be used for text overlays, subtitles, and other text rendering. This collection is populated by enumerating fonts installed on the system. ```csharp public ObservableCollection Fonts { get; } ``` #### Property Value Parameters: - (ObservableCollection < FontDescriptionX >): #### Remarks

This property is useful when implementing:

  • Font selection UI for subtitle customization
  • Text overlay configuration in video editors
  • Dynamic font selection based on language or content
  • Font availability validation before applying text effects

The font collection includes system fonts, custom installed fonts, and application-bundled fonts. Font availability may vary across platforms and system configurations.

### Loop Gets or sets a value indicating whether media playback will automatically restart from the beginning when the end is reached, creating continuous looping playback. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

When enabled, the player automatically seeks back to the start position when reaching the end of the media, creating seamless continuous playback. This is useful for:

  • Background video loops for kiosks or digital signage
  • Music players with repeat functionality
  • Video preview loops in media browsers
  • Testing and demonstration scenarios

This property must be set before calling to take effect. The loop behavior respects and if they are configured, looping only the specified segment.

### PauseOnStop Gets or sets a value indicating whether the player will pause instead of stopping when the end-of-stream is reached. When enabled, the player pauses at the last frame rather than transitioning to the stopped state. ```csharp public bool PauseOnStop { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

This property changes the end-of-playback behavior:

  • When true: Player pauses at the last frame, keeping the video visible and allowing immediate resume or seeking
  • When false: Player stops completely, releases resources, and may clear the display

This is useful for:

  • Video players where you want to keep the last frame visible after playback ends
  • Applications that allow reviewing content by seeking backward after playback completes
  • Scenarios where you want to avoid the visual disruption of stopping and clearing the video display
  • Media analysis tools that need to examine the final frame

This property must be set before calling to take effect.

### SDK_BuildDate Gets the build date of the SDK assembly, indicating when this version of the MediaPlayerX was compiled. Useful for version tracking, support requests, and ensuring you're running the expected SDK version. ```csharp public static DateTime SDK_BuildDate { get; } ``` #### Property Value Parameters: - (DateTime): #### Remarks This property is static and returns the same value for all instances of . When reporting issues to VisioForge support, include both and to help identify the exact SDK build you're using. ### SDK_Version Gets the version number of the SDK assembly in the format Major.Minor.Build.Revision. This version indicates the SDK's feature set, bug fixes, and compatibility level. ```csharp public static Version SDK_Version { get; } ``` #### Property Value Parameters: - (Version): #### Remarks This property is static and returns the same value for all instances of . Use this version to:
  • Check compatibility with your application's requirements
  • Display SDK version in your application's About dialog
  • Report to VisioForge support when requesting assistance
  • Verify you're using the intended SDK version in your deployment
### Segment_Start Gets or sets the start position for segment playback, defining where playback should begin in the media. When set, playback starts from this position instead of the media's beginning. ```csharp public TimeSpan Segment_Start { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks

This property enables segment playback for scenarios such as:

  • Playing only a portion of a video (e.g., chapter playback)
  • Creating video clips from larger media files
  • Skipping intros or outros automatically
  • Implementing A-B repeat functionality

When used with , creates a playback range. When used with , the player loops only within the defined segment. This property must be set before calling .

The start position should be less than the media duration and less than if specified. Invalid values may result in playback errors or no playback.

### Segment_Stop Gets or sets the stop position for segment playback, defining where playback should end in the media. When set, playback automatically stops (or pauses, if is enabled) at this position. ```csharp public TimeSpan Segment_Stop { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks

This property enables limited playback duration for scenarios such as:

  • Playing only a portion of a video (e.g., scene or chapter playback)
  • Creating timed previews or trailers from full content
  • Implementing automatic stop at specific timestamps
  • A-B repeat functionality when combined with and

When used with , creates a playback range. When combined with , the player loops only within the defined segment (between and ). This property must be set before calling .

The stop position should be greater than and less than the media duration. If is or not set, playback continues until the end of the media.

### Snapshot_Grabber_Enabled Gets or sets a value indicating whether the snapshot grabber is enabled to capture the last displayed video frame. When enabled, the player maintains a copy of the most recent frame that can be retrieved using snapshot methods. ```csharp public bool Snapshot_Grabber_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

This property must be enabled before calling or to activate the snapshot grabber. Once enabled, the following snapshot methods become available:

  • - Get the last frame as
  • - Get the last frame as
  • - Save the last frame to a file

The snapshot grabber maintains a single frame buffer updated with each new frame during playback. This has minimal memory overhead (one frame) and negligible performance impact. The stored frame is always the most recently rendered frame.

Use cases include:

  • Creating video thumbnails
  • Capturing frames for user galleries or preview images
  • Implementing "save current frame" functionality
  • Frame-accurate image extraction from video

### State Gets the current playback state of the media player. This property reflects the real-time state of the underlying media processing pipeline. ```csharp public PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): #### Remarks This property is read-only and reflects the state managed by the internal MediaBlocks pipeline. To change the playback state, use methods like , , , and . Subscribe to state change events (, , , ) to be notified when the state changes. ### Subtitle_Streams Gets an observable collection of all subtitle/caption streams embedded in the currently loaded media. Each stream contains metadata about format, language, and subtitle characteristics. ```csharp public ObservableCollection Subtitle_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < SubtitleStreamInfo >): #### Remarks

This collection is populated after opening a media source and the event is raised. It only includes subtitles/captions embedded within the media container (MKV, MP4, etc.), not external subtitle files.

Common subtitle formats detected:

  • SRT (SubRip) - Text-based subtitles
  • SSA/ASS (SubStation Alpha) - Styled subtitles with formatting
  • VobSub - Image-based DVD subtitles
  • PGS (Presentation Graphic Stream) - Blu-ray subtitles
  • WebVTT - Web video text tracks

For external subtitle files, use the property to load additional subtitles not embedded in the media. The collection supports data binding for displaying available subtitle tracks in the UI.

### Subtitles_Enabled Gets or sets a value indicating whether subtitle display is enabled for both embedded and external subtitles. When enabled, subtitles from the media or external files will be rendered on the video. ```csharp public bool Subtitles_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

This property controls subtitle visibility for:

  • Embedded subtitles within the media container (MKV, MP4, etc.)
  • External subtitle files loaded via

This property can be toggled during playback to show/hide subtitles in real-time. Subtitle appearance is controlled by , which can be updated using .

If the media has no subtitle streams and no external subtitle file is specified, this property has no visible effect.

### Subtitles_ExternalFile Gets or sets the path to an external subtitle file to be displayed along with the video. Supports common subtitle formats including SRT, SSA, ASS, and VTT. ```csharp public string Subtitles_ExternalFile { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks

Supported subtitle file formats:

  • SRT (SubRip): Simple text-based format with timestamps
  • SSA/ASS (SubStation Alpha): Advanced format with styling and effects
  • VTT (WebVTT): Web video text track format
  • Other formats supported by the underlying media framework

This property should be set before calling or to load the subtitle file. External subtitles are rendered using the appearance defined in and can be enabled/disabled using .

External subtitles are useful when:

  • The media container doesn't have embedded subtitles
  • You want to provide subtitle files in multiple languages
  • Subtitles need to be updated independently of the video file
  • Working with legacy formats that don't support embedded subtitles

### Subtitles_Settings Gets or sets the subtitle rendering appearance settings including font, color, position, and background. These settings control how subtitles are displayed on the video. ```csharp public SubtitleOverlaySettings Subtitles_Settings { get; set; } ``` #### Property Value Parameters: - (SubtitleOverlaySettings): #### Remarks

Subtitle settings include:

  • Font properties: Family, size, weight, style
  • Colors: Text color, outline color, shadow color
  • Position: Vertical and horizontal alignment
  • Background: Background box, opacity, padding
  • Effects: Outline width, shadow offset

After modifying subtitle settings, call to apply changes during playback. Settings can be changed at any time and updated without interrupting playback.

These settings affect both embedded subtitles and external subtitle files loaded via .

### Video_Composition_Enabled Gets or sets a value indicating whether video composition (multi-layer video mixing) is enabled. When enabled, allows adding overlay images and graphics on top of the main video stream using the method. ```csharp public bool Video_Composition_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

Video composition enables:

  • Picture-in-picture effects
  • Logo and watermark overlays
  • Real-time graphics composition
  • Multi-layer video mixing
  • Dynamic visual elements on top of video content

This property must be set to true before starting playback to activate the composition pipeline. Once enabled, use , , and to manage composition elements during playback.

Performance note: Enabling video composition adds processing overhead. The impact depends on the number and complexity of composition elements.

### Video_Play Gets or sets a value indicating whether video playback and rendering is enabled in the media player. When set to false, only audio is processed and no video rendering occurs. ```csharp public bool Video_Play { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks This property must be set before calling or to take effect. Changing this property during playback requires stopping and restarting the player. When disabled, video decoding and rendering blocks are not added to the pipeline, significantly improving performance and reducing resource usage for audio-only scenarios such as music playback or podcast streaming. If no video renderer is configured or no video streams are detected in the source, this property is automatically set to false. ### Video_Processors Gets the collection of custom video processors that will be applied to each video frame during playback. Video processors enable custom frame analysis, computer vision operations, and real-time video modifications. ```csharp public List Video_Processors { get; } ``` #### Property Value Parameters: - (List < IVideoProcessor >): #### Remarks

Video processors enable custom video frame processing for:

  • Computer vision and image analysis (object detection, OCR, pattern recognition)
  • Custom video effects not available in the built-in effects
  • Frame-by-frame analysis for quality control or content verification
  • Integration with machine learning models for real-time inference
  • Custom overlays, annotations, or augmented reality effects

Each processor receives every video frame and can analyze or modify it. Processors must be added to this collection before starting playback. Each processor must support the video pixel format being used, or frames will be skipped with error logging.

Performance consideration: Video processors run on the video frame callback thread. Complex processing may impact playback performance and cause frame drops. Consider using async processing or dedicated threads for computationally intensive operations.

### Video_Streams Gets an observable collection of all video streams detected in the currently loaded media. Each stream contains metadata about codec, resolution, frame rate, and other video properties. ```csharp public ObservableCollection Video_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < VideoStreamInfo >): #### Remarks

This collection is populated after opening a media source and the event is raised. Common scenarios with multiple video streams include:

  • Multi-angle video content (concert videos, sports with multiple camera angles)
  • Container formats with multiple video tracks
  • Picture-in-picture content
  • Video with alternate versions (different resolutions or crops)

Use to switch between available video streams during playback. The collection supports data binding for displaying available video tracks in the UI.

### IMediaPlayerControls.State Gets the state. ```csharp PlaybackState IMediaPlayerControls.State { get; } ``` #### Property Value Parameters: - (PlaybackState): #### Exceptions Parameters: - (NotImplementedException): ## Methods ### Audio_Effects_AddOrUpdate(BaseAudioEffect) Adds a new audio effect to the pipeline or updates an existing effect with the same name. The effect is applied in real-time to the audio stream during playback without interrupting the media. If an effect with the same name already exists, its parameters will be updated with the new values. Effects are processed in the order they were added to the pipeline. ```csharp public void Audio_Effects_AddOrUpdate(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect to add or update in the effects pipeline. Must not be null. #### Remarks This method supports dynamic audio effect management during playback. When updating an existing effect, the audio stream will smoothly transition to the new effect parameters without artifacts. Effect names are used as unique identifiers, so ensure each effect has a distinct name if you want to apply multiple effects of the same type simultaneously. ### Audio_Effects_Clear() Clears all audio effects from the pipeline, returning audio processing to the original unmodified stream. This method removes all active audio effects and resets the audio processing chain to its default state. The audio playback continues without interruption using the original, unprocessed audio signal. ```csharp public void Audio_Effects_Clear() ``` #### Remarks This method is useful when you want to quickly disable all audio processing and return to the original audio. All effect update event handlers are disconnected, and both cross-platform effects and platform-specific DSP effects are cleared from the pipeline. The operation completes smoothly without audio artifacts. ### Audio_Effects_Remove(BaseAudioEffect) Removes an audio effect from the pipeline by its instance. Once removed, the effect will no longer be applied to the audio stream. The audio processing will continue with the remaining active effects in the pipeline. ```csharp public void Audio_Effects_Remove(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect instance to remove from the pipeline. Must not be null. #### Remarks This method disconnects the effect's update event handlers and removes it from the internal effects collection. If the effect is not found in the pipeline, this method completes without error. The audio stream will smoothly adapt to the removal without interruption. ### Audio_OutputDevicesAsync(AudioOutputDeviceAPI?) Gets the output audio devices asynchronous. ```csharp public Task Audio_OutputDevicesAsync(AudioOutputDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioOutputDeviceAPI ?): The API. #### Returns Parameters: - (Task < AudioOutputDeviceInfo [ ] >): Task<AudioOutputDeviceInfo[]>. ### Audio_Stream_Select(AudioStreamInfo) Switches to a different audio stream in multi-stream media content. This method allows dynamic switching between audio tracks during playback, commonly used for multi-language content or content with multiple audio channels (commentary, music, etc.). The switch occurs seamlessly without interrupting video playback. ```csharp public bool Audio_Stream_Select(AudioStreamInfo stream) ``` #### Parameters Parameters: - stream (AudioStreamInfo): The target audio stream to switch to. Must be a valid from the media's available audio streams. #### Returns Parameters: - (bool): true if the audio stream was successfully switched; false if the operation failed due to invalid source, null stream, or stream event failure. #### Remarks Audio stream switching behavior: - Maintains current video stream while switching audio - Sends a SELECT_STREAMS event to the underlying media pipeline - Works during active playback without interruption - Requires the media to contain multiple audio streams - The target stream must be available in the current media content Use this method for implementing audio track selection in media players with multi-language or multi-channel content. ### Debug_SavePipeline(string) Saves the current media processing pipeline graph to a DOT file for debugging and visualization. The DOT file can be converted to an image using Graphviz tools to visualize the complete pipeline structure, including all MediaBlocks elements, their connections, and their current state. This is invaluable for debugging complex pipeline configurations and understanding the data flow through the media processing chain. ```csharp public void Debug_SavePipeline(string name) ``` #### Parameters Parameters: - name (string): The base name to use for the saved pipeline graph file (without extension). The file will be saved in the directory specified by with a .dot extension. #### Remarks The generated DOT file follows the Graphviz format and can be visualized using tools such as:
  • Graphviz command-line tools: dot -Tpng filename.dot -o output.png
  • Online Graphviz editors like WebGraphviz or edotor.net
  • Visual Studio Code extensions for Graphviz
The pipeline graph shows element names, pad connections, capabilities, and current element states. This method does nothing if name is null/empty or if no pipeline is currently active. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### DisposeAsync() Disposes the MediaPlayerCoreX instance asynchronously. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): A ValueTask representing the asynchronous dispose operation. ### Duration() Gets the total duration of the currently loaded media content. ```csharp public TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): The media duration as a , or if no media is loaded or duration is unavailable. ### DurationAsync() Asynchronously gets the total duration of the currently loaded media. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task containing the media duration as a TimeSpan. ### ~MediaPlayerCoreX() Finalizes an instance of the class. ```csharp protected ~MediaPlayerCoreX() ``` ### GetContext() Gets the media framework context used for logging and MediaBlocks pipeline operations. Provides access to the Serilog logger instance and logging methods used throughout the MediaPlayerX and underlying pipeline infrastructure. The context is used internally by all MediaBlocks components for consistent error reporting and debugging information. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The instance containing the configured logger and context information; null if not initialized. The context includes Info, Warning, and Error logging methods with support for structured logging and exception tracking. #### Remarks The context provides a unified logging interface that all MediaBlocks components use for reporting their status, warnings, and errors. Applications can access this context to understand the internal state of the pipeline or to add custom logging that integrates with the SDK's logging system. ### GetLogger() Gets the Serilog logger instance used by the MediaPlayerX for centralized logging across all components. This logger is used throughout the MediaPlayerX and underlying MediaBlocks pipeline for consistent logging. Applications can use this logger to integrate their own logging with the SDK's logging infrastructure. ```csharp public ILogger GetLogger() ``` #### Returns Parameters: - (ILogger): The instance configured for this MediaPlayerX instance. The logger configuration is determined by the and properties. #### Remarks The logger configuration varies based on the setting:
  • When is enabled: Logs at Debug level to both file and debug output with detailed information.
  • When is disabled: Logs only Error level messages to debug output.
Log files are automatically rotated when they reach 1MB in size, with up to 3 retained files. ### NextFrame() Advances the video playback by exactly one frame (frame stepping forward). This method pauses the player and moves forward by a single frame, useful for precise video analysis or frame-by-frame examination. The operation requires a video renderer to be present and only works with seekable sources like media files, not live streams. ```csharp public bool NextFrame() ``` #### Returns Parameters: - (bool): true if the frame step operation was successful; false if it failed due to missing video renderer or unsupported source. #### Remarks Frame stepping behavior: - Automatically pauses playback before stepping to ensure precise control - Handles negative playback rates by switching to positive rate during the step - Requires a video renderer to be configured in the player - Only works with seekable media sources (files), not live streams - The step size respects the current playback rate for timing calculations Use this method for precise video analysis, educational content, or debugging purposes. ### OnPropertyChanged(string) Raises the event for the specified property to notify data-bound controls and observers. This method is called automatically by property setters to support WPF, MAUI, Avalonia, and other MVVM framework data binding. ```csharp protected virtual void OnPropertyChanged(string propertyName = null) ``` #### Parameters Parameters: - propertyName (string): The name of the property that changed. Automatically populated by the compiler when called from a property setter using [CallerMemberName] attribute. #### Remarks This method implements the pattern, enabling two-way data binding in UI frameworks. UI elements bound to MediaPlayerX properties will automatically update when property values change. ### OpenAsync(IMediaPlayerBaseSourceSettings) Asynchronously opens a media source for playback using the specified source configuration settings. Prepares the MediaBlocks pipeline and begins loading media content from the specified source. ```csharp public Task OpenAsync(IMediaPlayerBaseSourceSettings source) ``` #### Parameters Parameters: - source (IMediaPlayerBaseSourceSettings): The media source settings defining what content to play (file, network stream, IP camera, etc.). #### Returns Parameters: - (Task < bool >): A task that returns true if the source was successfully opened; false otherwise. ### OpenAsync(string) Asynchronously opens a media file or network URL for playback. This convenience method automatically creates appropriate source settings based on the filename or URL. ```csharp public Task OpenAsync(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file or network URL to open for playback. #### Returns Parameters: - (Task < bool >): A task that returns true if the file or URL was successfully opened; false otherwise. ### OpenAsync(Uri) Asynchronously opens a media source from the specified URI for playback. This convenience method automatically creates appropriate source settings based on the URI scheme. ```csharp public Task OpenAsync(Uri uri) ``` #### Parameters Parameters: - uri (Uri): The URI pointing to the media source to open. #### Returns Parameters: - (Task < bool >): A task that returns true if the URI was successfully opened; false otherwise. ### Pause() Pauses media playback synchronously while preserving the current playback position. ```csharp public bool Pause() ``` #### Returns Parameters: - (bool): true if pause was successful; false otherwise. ### PauseAsync() Asynchronously pauses media playback while preserving the current playback position. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if pause was successful; false otherwise. ### Play(bool) Starts media playback synchronously or preloads the media content without starting playback. ```csharp public bool Play(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, only preloads the media pipeline without starting playback; otherwise starts playback immediately. #### Returns Parameters: - (bool): true if playback started or preload completed successfully; false otherwise. ### PlayAsync(bool) Asynchronously starts media playback or preloads the media content without starting playback. ```csharp public Task PlayAsync(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, only preloads the media pipeline without starting playback; otherwise starts playback immediately. #### Returns Parameters: - (Task < bool >): A task that returns true if playback started or preload completed successfully; false otherwise. ### Position_Get() Gets the current playback position in the media. ```csharp public TimeSpan Position_Get() ``` #### Returns Parameters: - (TimeSpan): The current position as a TimeSpan, or TimeSpan.Zero if no media is loaded. ### Position_GetAsync() Asynchronously gets the current playback position in the media. ```csharp public Task Position_GetAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task containing the current position as a TimeSpan. ### Position_Set(TimeSpan, bool) Sets the playback position in the media (seeks to a specific time). ```csharp public void Position_Set(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target position to seek to. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for faster seeking. ### Position_SetAsync(TimeSpan, bool) Asynchronously sets the playback position in the media (seeks to a specific time). ```csharp public Task Position_SetAsync(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target position to seek to. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for faster seeking. #### Returns Parameters: - (Task): A task representing the asynchronous seek operation. ### Position_SetRange(TimeSpan, TimeSpan, bool) Sets the playback range with start and stop positions. ```csharp public void Position_SetRange(TimeSpan startPosition, TimeSpan stopPosition, bool seekToKeyframe = false) ``` #### Parameters Parameters: - startPosition (TimeSpan): The start position for playback. - stopPosition (TimeSpan): The stop position where playback will end. - seekToKeyframe (bool): If set to true, seeks to the nearest keyframe. ### Position_SetRangeAsync(TimeSpan, TimeSpan, bool) Asynchronously sets the playback range with start and stop positions. ```csharp public Task Position_SetRangeAsync(TimeSpan startPosition, TimeSpan stopPosition, bool seekToKeyframe = false) ``` #### Parameters Parameters: - startPosition (TimeSpan): The start position for playback. - stopPosition (TimeSpan): The stop position where playback will end. - seekToKeyframe (bool): If set to true, seeks to the nearest keyframe. #### Returns Parameters: - (Task): A task representing the asynchronous operation. ### PrevFrame() Steps backward by exactly one frame (reverse frame stepping). This method moves the playback position backward by a single frame using seek operations, useful for precise video analysis in reverse. The operation requires seekable video content and may be slower than forward frame stepping due to the need for precise backward seeking. ```csharp public bool PrevFrame() ``` #### Returns Parameters: - (bool): true if the backward frame step was successful; false if it failed due to missing pipeline, no video streams, or seek limitations. #### Remarks Backward frame stepping limitations and behavior: - Requires a valid pipeline and at least one video stream - Only works with seekable media sources (files), not live streams - Uses seek operations which may be slower than forward stepping - Accuracy depends on the underlying codec's ability to seek to exact frames - May not work reliably with all video formats or codecs - Performance varies based on video compression and keyframe intervals This method is primarily intended for video analysis and educational purposes where precise backward navigation is needed. ### Rate_Get() Gets the current playback rate. ```csharp public double Rate_Get() ``` #### Returns Parameters: - (double): The playback rate (1.0 = normal speed, 2.0 = double speed, etc.). ### Rate_GetAsync() Asynchronously gets the current playback rate. ```csharp public Task Rate_GetAsync() ``` #### Returns Parameters: - (Task < double >): A task containing the playback rate (1.0 = normal speed). ### Rate_Set(double) Sets the playback rate. ```csharp public bool Rate_Set(double rate) ``` #### Parameters Parameters: - rate (double): The playback rate to set (1.0 = normal speed, 2.0 = double speed, 0.5 = half speed, etc.). #### Returns Parameters: - (bool): Returns true if the rate was set successfully, false otherwise. ### Rate_SetAsync(double) Asynchronously sets the playback rate. ```csharp public Task Rate_SetAsync(double rate) ``` #### Parameters Parameters: - rate (double): The playback rate to set (1.0 = normal speed, 2.0 = double speed, etc.). #### Returns Parameters: - (Task < bool >): A task that returns true if the rate was set successfully, false otherwise. ### Resume() Resumes media playback synchronously from a paused state. ```csharp public bool Resume() ``` #### Returns Parameters: - (bool): true if resume was successful; false otherwise. ### ResumeAsync() Asynchronously resumes media playback from a paused state. ```csharp public Task ResumeAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if resume was successful; false otherwise. ### SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler) Sets a custom error handler for the media blocks pipeline to override default error handling behavior. This allows applications to implement specialized error handling logic for pipeline errors, such as automatic retry logic, error logging to external systems, or graceful degradation strategies. ```csharp public void SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler errorHandler) ``` #### Parameters Parameters: - errorHandler (IMediaBlocksPipelineCustomErrorHandler): The custom error handler implementation. Set to null to use default error handling. #### Remarks The custom error handler will receive all errors from the MediaBlocks pipeline before they are processed by the default error handling system. This provides an opportunity to inspect, log, or handle errors in application-specific ways. The handler can choose to suppress errors or allow them to propagate to the default handlers. ### SetLicenseKey(string, string, string) Activates the MediaPlayerX with a commercial license key to remove trial limitations and enable full functionality. This method must be called before opening any media source to apply the license. Without a valid license, the player operates in trial mode with evaluation watermarks and time restrictions. ```csharp public void SetLicenseKey(string licenseKey, string username, string email) ``` #### Parameters Parameters: - licenseKey (string): The license key string received after purchase from VisioForge. This key is unique to your license. - username (string): The username or company name associated with the license purchase (currently not validated but reserved for future use). - email (string): The email address associated with the license purchase (currently not validated but reserved for future use). #### Examples
mediaPlayer.SetLicenseKey("your_license_key", "username", "email@example.com");
#### Remarks

The license key determines which features and edition capabilities are available:

  • Standard Edition: Core playback features for common media formats
  • Professional Edition: Advanced features including RTSP/RTMP streaming, motion detection, and network sources

Best practices:

  • Call this method immediately after creating the MediaPlayerCoreX instance
  • Store the license key securely (encrypted or in secure configuration)
  • Do not share or expose the license key in public repositories or client-side code

### Settings_Load(string) Loads player settings from a JSON configuration file to restore a previously saved player state. This method deserializes the JSON file and applies the saved configuration to the current player instance. ```csharp public bool Settings_Load(string jsonFilename) ``` #### Parameters Parameters: - jsonFilename (string): The path to the JSON settings file to load. The file must exist and contain valid JSON. #### Returns Parameters: - (bool): Returns true if settings were loaded and applied successfully; false if the file doesn't exist, contains invalid JSON, or deserialization fails. #### Remarks This method is currently not implemented and will always return false. It is reserved for future functionality to support saving and loading complete player configurations including effects, source settings, and playback parameters. When implemented, it will allow users to save player presets and quickly restore them across sessions. ### Settings_Save(string, string) Saves current player settings to a JSON file with optional SDK information file for version tracking. The JSON file contains serialized player configuration that can be loaded later using . ```csharp public bool Settings_Save(string jsonFilename, string infoFilename) ``` #### Parameters Parameters: - jsonFilename (string): The path where the JSON settings file will be saved. Parent directories will be created if they don't exist. - infoFilename (string): Optional path for a separate SDK information file containing version details. Set to null or empty string to skip creating the info file. #### Returns Parameters: - (bool): Returns true if the settings files were saved successfully; false if file creation or writing fails. #### Remarks The method creates two files when infoFilename is provided:
  1. jsonFilename: Contains serialized player configuration
  2. infoFilename: Contains SDK version information for compatibility tracking
Existing files at the target paths will be deleted before new files are created. Any IO exceptions during file operations are logged and cause the method to return false. ### Snapshot_Get() Gets a snapshot of the current video frame as a VideoFrameX object. ```csharp public VideoFrameX Snapshot_Get() ``` #### Returns Parameters: - (VideoFrameX): The video frame snapshot, or null if unavailable. ### Snapshot_GetAsync() Asynchronously gets a snapshot of the current video frame as a VideoFrameX object. ```csharp public Task Snapshot_GetAsync() ``` #### Returns Parameters: - (Task < VideoFrameX >): A task containing the video frame snapshot, or null if unavailable. ### Snapshot_GetSK() Gets a snapshot of the current video frame as an SKBitmap. ```csharp public SKBitmap Snapshot_GetSK() ``` #### Returns Parameters: - (SKBitmap): The video frame snapshot as SKBitmap, or null if unavailable. ### Snapshot_GetSKAsync() Asynchronously gets a snapshot of the current video frame as an SKBitmap. ```csharp public Task Snapshot_GetSKAsync() ``` #### Returns Parameters: - (Task < SKBitmap >): A task containing the video frame snapshot as SKBitmap, or null if unavailable. ### Snapshot_Save(string, SKEncodedImageFormat, int) Saves a snapshot of the current video frame to a file. ```csharp public bool Snapshot_Save(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): The path where the snapshot file will be saved. - format (SKEncodedImageFormat): The image format for the snapshot (JPEG, PNG, etc.). - quality (int): The image quality for lossy formats [0..100], default is 85. #### Returns Parameters: - (bool): Returns true if the snapshot was saved successfully, false otherwise. ### Snapshot_SaveAsync(string, SKEncodedImageFormat, int) Asynchronously saves a snapshot of the current video frame to a file. ```csharp public Task Snapshot_SaveAsync(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): The path where the snapshot file will be saved. - format (SKEncodedImageFormat): The image format for the snapshot (JPEG, PNG, etc.). - quality (int): The image quality for lossy formats [0..100], default is 85. #### Returns Parameters: - (Task < bool >): A task that returns true if the snapshot was saved successfully, false otherwise. ### Stop() Stops media playback synchronously and releases all pipeline resources. ```csharp public void Stop() ``` ### StopAsync() Asynchronously stops media playback and releases all pipeline resources. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A task representing the asynchronous stop operation. ### Subtitles_Settings_Update() Updates subtitle rendering settings in real-time during playback without requiring a restart. Applies the current configuration to the video renderer for immediate visual effect. Changes include font, size, color, position, background, and other subtitle appearance properties. ```csharp public void Subtitles_Settings_Update() ``` #### Remarks This method allows dynamic subtitle appearance adjustment while media is playing. Common use cases include:
  • Adjusting subtitle font size for better readability
  • Changing subtitle color to improve contrast
  • Repositioning subtitles on screen
  • Toggling subtitle background for better visibility
The changes take effect immediately without interrupting playback. If no video renderer is active or subtitle settings are null, this method completes without error. ### Tags_Read(string) Reads metadata tags from a media file including artist, album, title, artwork, and technical information. This method supports a wide variety of media formats and container types for comprehensive metadata extraction. Uses TagLib-Sharp library for robust tag reading across different format specifications. ```csharp public MediaFileTags Tags_Read(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file from which to extract metadata tags. #### Returns Parameters: - (MediaFileTags): A MediaFileTags object containing all extracted metadata including text fields and embedded artwork. #### Remarks All metadata values except pictures are returned as strings. Embedded artwork is returned as byte arrays. ### Video_Composition_Add(VideoCompositionElement) Adds a video composition element to the composition layer for multi-layer video mixing. The element will be composited over the main video stream according to its position and blending settings. ```csharp public void Video_Composition_Add(VideoCompositionElement element) ``` #### Parameters Parameters: - element (VideoCompositionElement): The video composition element to add to the composition layer. ### Video_Composition_Clear() Removes all video composition elements from the composition layer and releases their resources. ```csharp public void Video_Composition_Clear() ``` ### Video_Composition_Remove(VideoCompositionElement) Removes a video composition element from the composition layer and releases its associated resources. ```csharp public void Video_Composition_Remove(VideoCompositionElement element) ``` #### Parameters Parameters: - element (VideoCompositionElement): The video composition element to remove from the composition layer. ### Video_Effects_AddOrUpdateAsync(IBaseVideoEffect) Asynchronously adds a new video effect to the pipeline or updates an existing effect with the same name. The effect is applied in real-time to the video stream without interrupting playback. ```csharp public Task Video_Effects_AddOrUpdateAsync(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect to add or update in the effects pipeline. #### Returns Parameters: - (Task): A task representing the asynchronous operation. ### Video_Effects_Clear() Clears all video effects from the pipeline, returning video processing to the original unmodified stream. ```csharp public void Video_Effects_Clear() ``` ### Video_Effects_Get(string) Retrieves a video effect from the pipeline by its unique name. ```csharp public IBaseVideoEffect Video_Effects_Get(string effectName) ``` #### Parameters Parameters: - effectName (string): The name of the effect to retrieve. #### Returns Parameters: - (IBaseVideoEffect): The video effect instance if found; null otherwise. ### Video_Effects_RemoveAsync(IBaseVideoEffect) Asynchronously removes a video effect from the pipeline. Temporarily pauses playback during removal to ensure smooth effect removal without artifacts. ```csharp public Task Video_Effects_RemoveAsync(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect instance to remove from the pipeline. #### Returns Parameters: - (Task): A task representing the asynchronous operation. ### Video_Effects_RemoveAsync(string) Removes a video effect by name asynchronously. Pauses playback during removal. ```csharp public Task Video_Effects_RemoveAsync(string name) ``` #### Parameters Parameters: - name (string): The name of the effect to remove. #### Returns Parameters: - (Task): A Task representing the asynchronous operation. ### Video_Stream_Select(VideoStreamInfo) Switches to a different video stream in multi-stream media content. This method allows dynamic switching between video tracks during playback, useful for content with multiple video angles, resolutions, or different video content tracks. The switch occurs seamlessly while maintaining audio playback if present. ```csharp public bool Video_Stream_Select(VideoStreamInfo stream) ``` #### Parameters Parameters: - stream (VideoStreamInfo): The target video stream to switch to. Must be a valid from the media's available video streams. #### Returns Parameters: - (bool): true if the video stream was successfully switched; false if the operation failed due to invalid source, null stream, or stream event failure. #### Remarks Video stream switching behavior: - Maintains current audio stream while switching video - Sends a SELECT_STREAMS event to the underlying media pipeline - Works during active playback without stopping - Requires the media to contain multiple video streams - May cause brief visual interruption during the switch - The target stream must be available in the current media content Common use cases include multi-angle video content, adaptive bitrate streaming, or educational content with multiple camera views. ### IMediaPlayerControls.GetFileThumbnail(string) Gets a thumbnail image from the specified media file. ```csharp SKBitmap IMediaPlayerControls.GetFileThumbnail(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file. #### Returns Parameters: - (SKBitmap): An SKBitmap containing the thumbnail image. #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IMediaPlayerControls.NextFrame() Advances to and displays the next frame in the video. ```csharp bool IMediaPlayerControls.NextFrame() ``` #### Returns Parameters: - (bool): Returns true if successful, false otherwise. ### IMediaPlayerControls.OpenAsync(string) Opens the specified file or URL asynchronously. ```csharp Task IMediaPlayerControls.OpenAsync(string path) ``` #### Parameters Parameters: - path (string): The file path or URL to open. #### Returns Parameters: - (Task < bool >): A Task returning true if opened successfully, false otherwise. ### IMediaPlayerControls.PrevFrame() Moves back to and displays the previous frame in the video. ```csharp bool IMediaPlayerControls.PrevFrame() ``` #### Returns Parameters: - (bool): Returns true if successful, false otherwise. ### IMediaPlayerControls.SetSpeed(double) Sets the playback speed/rate. ```csharp bool IMediaPlayerControls.SetSpeed(double value) ``` #### Parameters Parameters: - value (double): The playback rate multiplier (e.g., 1.0 = normal, 2.0 = double speed). #### Returns Parameters: - (bool): Returns true if the speed was set successfully, false otherwise. ### IMediaPlayerControls.SetSpeedAsync(double) Sets the playback speed/rate asynchronously. ```csharp Task IMediaPlayerControls.SetSpeedAsync(double value) ``` #### Parameters Parameters: - value (double): The playback rate multiplier (e.g., 1.0 = normal, 2.0 = double speed). #### Returns Parameters: - (Task < bool >): A Task returning true if the speed was set successfully, false otherwise. ### IMediaPlayerControls.Volume_Get() Gets the current audio output volume. ```csharp double IMediaPlayerControls.Volume_Get() ``` #### Returns Parameters: - (double): The volume level (0.0 to 1.0). ### IMediaPlayerControls.Volume_Set(double) Sets the audio output volume. ```csharp void IMediaPlayerControls.Volume_Set(double volume) ``` #### Parameters Parameters: - volume (double): The volume level (0.0 to 1.0). ### IVideoEffectsControls.VideoEffects_Clear() Clears all applied video effects. ```csharp void IVideoEffectsControls.VideoEffects_Clear() ``` ### IVideoEffectsControls.VideoEffects_SetBrightness(double) Sets the video brightness adjustment level. ```csharp void IVideoEffectsControls.VideoEffects_SetBrightness(double value) ``` #### Parameters Parameters: - value (double): The brightness value (typically -1.0 to 1.0). #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetContrast(double) Sets the video contrast adjustment level. ```csharp void IVideoEffectsControls.VideoEffects_SetContrast(double value) ``` #### Parameters Parameters: - value (double): The contrast value (typically -1.0 to 1.0). #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetFlipX(bool) Enables or disables horizontal video flipping. ```csharp void IVideoEffectsControls.VideoEffects_SetFlipX(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, video is flipped horizontally. #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetFlipY(bool) Enables or disables vertical video flipping. ```csharp void IVideoEffectsControls.VideoEffects_SetFlipY(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, video is flipped vertically. #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetGrayscale(bool) Enables or disables the grayscale video effect. ```csharp void IVideoEffectsControls.VideoEffects_SetGrayscale(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, grayscale effect is enabled. #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetInvert(bool) Enables or disables the color invert video effect. ```csharp void IVideoEffectsControls.VideoEffects_SetInvert(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, color invert effect is enabled. #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### IVideoEffectsControls.VideoEffects_SetSaturation(double) Sets the video saturation adjustment level. ```csharp void IVideoEffectsControls.VideoEffects_SetSaturation(double value) ``` #### Parameters Parameters: - value (double): The saturation value (typically -1.0 to 1.0). #### Exceptions Parameters: - (NotImplementedException): This method is not yet implemented. ### OnAudioFrameBuffer Occurs whenever a new audio frame is received from the pipeline. Provides access to raw audio data for analysis, processing, or custom rendering. ```csharp public event EventHandler OnAudioFrameBuffer ``` #### Event Type Parameters: - (EventHandler < AudioFrameBufferEventArgs >): ### OnAudioVUMeter Occurs whenever audio VU meter data is received from the audio pipeline. Provides real-time audio level information for visualization or monitoring. ```csharp public event EventHandler OnAudioVUMeter ``` #### Event Type Parameters: - (EventHandler < VUMeterXEventArgs >): ### OnBarcodeDetected Occurs when a barcode is detected and decoded in video frames. Provides the decoded barcode data including type and content. ```csharp public event EventHandler OnBarcodeDetected ``` #### Event Type Parameters: - (EventHandler < BarcodeEventArgs >): ### OnError Occurs when an error happens during media playback, pipeline construction, or processing. Subscribe to this event to implement custom error handling and logging. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): ### OnFaceDetected Occurs whenever video frames are processed and faces are detected by the face detector. Provides information about detected faces including location, confidence, and facial landmarks. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < AFFaceDetectionEventArgs >): ### OnLicenseRequired Occurs when a license is required for specific features being used. The event provides details about the required license level and features requiring licensing. ```csharp public event EventHandler OnLicenseRequired ``` #### Event Type Parameters: - (EventHandler < LicenseEventArgs >): ### OnMotionDetection Occurs when motion is detected in video frames. Provides detailed motion information including motion regions, amount, and grid analysis. ```csharp public event EventHandler OnMotionDetection ``` #### Event Type Parameters: - (EventHandler < MotionDetectionExEventArgs >): ### OnPause Occurs when playback is paused. ```csharp public event EventHandler OnPause ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnResume Occurs when playback resumes from a paused state. ```csharp public event EventHandler OnResume ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStart Occurs when playback starts successfully. ```csharp public event EventHandler OnStart ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStop Occurs when playback stops or reaches the end of the media. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): ### OnStreamsInfoAvailable Occurs when media stream information becomes available after opening a media source. Provides access to detected audio, video, and subtitle streams in the media content. ```csharp public event EventHandler OnStreamsInfoAvailable ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnVideoFrameBuffer Occurs whenever a new video frame is received from the pipeline. Provides access to raw video data in VideoFrameX format for custom processing or analysis. ```csharp public event EventHandler OnVideoFrameBuffer ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): ### OnVideoFrameSKBitmap Occurs whenever a new video frame is received from the pipeline. Provides access to video data as an SKBitmap for easy image processing with SkiaSharp. ```csharp public event EventHandler OnVideoFrameSKBitmap ``` #### Event Type Parameters: - (EventHandler < VideoFrameSKBitmapEventArgs >): ### PropertyChanged Property changed event. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): ## See Also --- # Namespace VisioForge.Core.MediaPlayerX Link: api/VisioForge.Core.MediaPlayerX.html # Namespace VisioForge.Core.MediaPlayerX # Namespace VisioForge.Core.MediaPlayerX ### Classes Parameters: - (): MediaPlayerX audio effects processing and real-time audio manipulation implementation. Provides dynamic audio effect management including equalizers, filters, dynamic range control, spatial processing, and real-time audio manipulation during playback. Supports both cross-platform and platform-specific DSP audio processing pipelines for maximum flexibility and performance. --- # Class BaseValue Link: api/VisioForge.Core.Metadata.KLV.BaseValue.html # Class BaseValue # Class BaseValue **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Abstract base class used to insure internal interfaces are maintained. ```csharp public class BaseValue ``` #### Inheritance #### Derived #### Inherited Members ## Properties ### Value Gets or sets the value. ```csharp public object Value { get; set; } ``` #### Property Value Parameters: - (object): ## Methods ### Bytes() Returns the bytes of the value. ```csharp public virtual byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The bytes of the value. --- # Class BytesElementParser Link: api/VisioForge.Core.Metadata.KLV.BytesElementParser.html # Class BytesElementParser # Class BytesElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a bytes element parser. ```csharp public class BytesElementParser : ElementParser ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### BytesElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public BytesElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. ## Methods ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class BytesValue Link: api/VisioForge.Core.Metadata.KLV.BytesValue.html # Class BytesValue # Class BytesValue **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a bytes value. ```csharp public class BytesValue : BaseValue ``` #### Inheritance #### Inherited Members ## Constructors ### BytesValue(byte[]) Initializes a new instance of the class. ```csharp public BytesValue(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Methods ### Bytes() Returns the bytes of the value. ```csharp public override byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The bytes of the value. ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class DateTimeElementParser Link: api/VisioForge.Core.Metadata.KLV.DateTimeElementParser.html # Class DateTimeElementParser # Class DateTimeElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a datetime element parser. ```csharp public class DateTimeElementParser : ElementParser ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### DateTimeElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public DateTimeElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. ## Methods ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class DateTimeValue Link: api/VisioForge.Core.Metadata.KLV.DateTimeValue.html # Class DateTimeValue # Class DateTimeValue **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a datetime value. ```csharp public class DateTimeValue : BaseValue ``` #### Inheritance #### Inherited Members ## Constructors ### DateTimeValue(byte[]) Initializes a new instance of the class. ```csharp public DateTimeValue(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Methods ### Bytes() Returns the bytes of the value. ```csharp public override byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The bytes of the value. ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class Element Link: api/VisioForge.Core.Metadata.KLV.Element.html # Class Element # Class Element **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Construct a key, length, value tuplet. Elements provide the basic mechanisms to constitute the basic encoding requirements of key, length, value tuplet as specified by STMPE 336. The length is dynamically calculated based off the value. ```csharp public class Element ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### Element(byte[], byte[]) Initializes a new instance of the class. ```csharp public Element(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. ## Properties ### Key Gets the key of the element. ```csharp public virtual byte[] Key { get; } ``` #### Property Value Parameters: - (byte [ ]): ### Length Gets the BER encoded byte length of the value. ```csharp public byte[] Length { get; } ``` #### Property Value Parameters: - (byte [ ]): ### Name Gets or sets the name of the element. ```csharp public virtual string Name { get; set; } ``` #### Property Value Parameters: - (string): ### OriginalData Gets or sets the original data of the element. ```csharp public byte[] OriginalData { get; set; } ``` #### Property Value Parameters: - (byte [ ]): ### Value Gets or sets the value of the element. ```csharp public virtual byte[] Value { get; set; } ``` #### Property Value Parameters: - (byte [ ]): ## Methods ### Bytes() Returns the MISB encoded representation of a Key, Length, Value element. ```csharp public virtual byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The MISB encoded byte array. ### Len() Returns the byte length of the value. ```csharp public virtual int Len() ``` #### Returns Parameters: - (int): The length of the value. ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class ElementParser Link: api/VisioForge.Core.Metadata.KLV.ElementParser.html # Class ElementParser # Class ElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Construct a Element Parser base class. Element Parsers are used to enforce the convention that all Element Parsers already know the key of the element they are constructing. Element Parser is a helper class that simplifies known element definition and makes a layer of abstraction for functionality that all known elements can share. The parsing interfaces are cleaner and require less coding as their definitions (subclasses of Element Parser) do not need to call init on super with class key and instance value. ```csharp public class ElementParser : Element ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### ElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public ElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. --- # Class IEEE754ElementParser Link: api/VisioForge.Core.Metadata.KLV.IEEE754ElementParser.html # Class IEEE754ElementParser # Class IEEE754ElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a IEEE754 element parser. ```csharp public class IEEE754ElementParser : ElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### IEEE754ElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public IEEE754ElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. --- # Class KLVBaseParser Link: api/VisioForge.Core.Metadata.KLV.KLVBaseParser.html # Class KLVBaseParser # Class KLVBaseParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll KLV base parser. ```csharp public class KLVBaseParser ``` #### Inheritance #### Inherited Members ## Constructors ### KLVBaseParser(Stream, int, uint) Initializes a new instance of the class. ```csharp public KLVBaseParser(Stream source, int key_length = 16, uint maxKeys = 0) ``` #### Parameters Parameters: - source (Stream): The source. - key_length (int): Length of the key. - maxKeys (uint): The maximum keys. ### KLVBaseParser(string, int, uint) Initializes a new instance of the class. ```csharp public KLVBaseParser(string filename, int key_length = 16, uint maxKeys = 0) ``` #### Parameters Parameters: - filename (string): The filename. - key_length (int): Length of the key. - maxKeys (uint): The maximum keys. ### KLVBaseParser(byte[], int, uint) Initializes a new instance of the class. ```csharp public KLVBaseParser(byte[] source, int key_length = 16, uint maxKeys = 0) ``` #### Parameters Parameters: - source (byte [ ]): The source. - key_length (int): Length of the key. - maxKeys (uint): The maximum keys. ## Fields ### Elements The elements. ```csharp public List> Elements ``` #### Field Value Parameters: - (List < Tuple < byte [ ] , byte [ ] , byte [ ] > >): --- # Class KLVParser Link: api/VisioForge.Core.Metadata.KLV.KLVParser.html # Class KLVParser # Class KLVParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll KLV MISB 0601 metadata parser. Key length is 16. ```csharp public class KLVParser ``` #### Inheritance #### Inherited Members ## Constructors ### KLVParser(Stream) Initializes a new instance of the class. ```csharp public KLVParser(Stream source) ``` #### Parameters Parameters: - source (Stream): The stream source. ### KLVParser(string) Initializes a new instance of the class. ```csharp public KLVParser(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Elements Gets the elements. ```csharp public List Elements { get; } ``` #### Property Value Parameters: - (List < Element >): --- # Class MappedElementParser Link: api/VisioForge.Core.Metadata.KLV.MappedElementParser.html # Class MappedElementParser # Class MappedElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a mapped element parser. ```csharp public class MappedElementParser : ElementParser ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### MappedElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public MappedElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. ## Fields ### Domain The domain of the mapped value. ```csharp public Tuple Domain ``` #### Field Value Parameters: - (Tuple < double , double >): ### Error The error of the mapped value. ```csharp public double? Error ``` #### Field Value Parameters: - (double ?): ### Range The range of the mapped value. ```csharp public Tuple Range ``` #### Field Value Parameters: - (Tuple < double , double >): ## Methods ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class MappedValue Link: api/VisioForge.Core.Metadata.KLV.MappedValue.html # Class MappedValue # Class MappedValue **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a mapped value. ```csharp public class MappedValue : BaseValue ``` #### Inheritance #### Inherited Members ## Constructors ### MappedValue(byte[], Tuple, Tuple, double?) Initializes a new instance of the class. ```csharp public MappedValue(byte[] value, Tuple domain, Tuple range, double? error) ``` #### Parameters Parameters: - value (byte [ ]): The value. - domain (Tuple < double , double >): The domain. - range (Tuple < double , double >): The range. - error (double ?): The error. ## Fields ### Domain The domain of the mapped value. ```csharp public Tuple Domain ``` #### Field Value Parameters: - (Tuple < double , double >): ### Error The error of the mapped value. ```csharp public double? Error ``` #### Field Value Parameters: - (double ?): ### Range The range of the mapped value. ```csharp public Tuple Range ``` #### Field Value Parameters: - (Tuple < double , double >): ## Methods ### Bytes() Returns the bytes of the value. ```csharp public override byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The bytes of the value. ### Float() Returns the float value. ```csharp public virtual float[] Float() ``` #### Returns Parameters: - (float [ ]): The float value. ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class AirfieldBarometricPressure Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AirfieldBarometricPressure.html # Class AirfieldBarometricPressure # Class AirfieldBarometricPressure **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AirfieldBarometricPressure : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AirfieldBarometricPressure(byte[]) ```csharp public AirfieldBarometricPressure(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AirfieldElevation Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AirfieldElevation.html # Class AirfieldElevation # Class AirfieldElevation **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AirfieldElevation : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AirfieldElevation(byte[]) ```csharp public AirfieldElevation(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformAltitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformAltitude.html # Class AlternatePlatformAltitude # Class AlternatePlatformAltitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformAltitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformAltitude(byte[]) ```csharp public AlternatePlatformAltitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformEllipsoidHeight Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformEllipsoidHeight.html # Class AlternatePlatformEllipsoidHeight # Class AlternatePlatformEllipsoidHeight **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformEllipsoidHeight : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformEllipsoidHeight(byte[]) ```csharp public AlternatePlatformEllipsoidHeight(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformEllipsoidHeightExtended Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformEllipsoidHeightExtended.html # Class AlternatePlatformEllipsoidHeightExtended # Class AlternatePlatformEllipsoidHeightExtended **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformEllipsoidHeightExtended : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformEllipsoidHeightExtended(byte[]) ```csharp public AlternatePlatformEllipsoidHeightExtended(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### units ```csharp public string units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformHeading Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformHeading.html # Class AlternatePlatformHeading # Class AlternatePlatformHeading **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformHeading : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformHeading(byte[]) ```csharp public AlternatePlatformHeading(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformLatitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformLatitude.html # Class AlternatePlatformLatitude # Class AlternatePlatformLatitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformLatitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformLatitude(byte[]) ```csharp public AlternatePlatformLatitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformLongitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformLongitude.html # Class AlternatePlatformLongitude # Class AlternatePlatformLongitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformLongitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformLongitude(byte[]) ```csharp public AlternatePlatformLongitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class AlternatePlatformName Link: api/VisioForge.Core.Metadata.KLV.MISB0601.AlternatePlatformName.html # Class AlternatePlatformName # Class AlternatePlatformName **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class AlternatePlatformName : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### AlternatePlatformName(byte[]) ```csharp public AlternatePlatformName(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class Checksum Link: api/VisioForge.Core.Metadata.KLV.MISB0601.Checksum.html # Class Checksum # Class Checksum **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Checksum used to detect errors within a UAV Local Set packet. Checksum formed as lower 16-bits of summation performed on entire LS packet, including 16-byte US key and 1-byte checksum length. Initialized from bytes value as BytesValue. ```csharp public class Checksum : BytesElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### Checksum(byte[]) Initializes a new instance of the class. ```csharp public Checksum(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class CornerLatitudePoint1Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLatitudePoint1Full.html # Class CornerLatitudePoint1Full # Class CornerLatitudePoint1Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLatitudePoint1Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLatitudePoint1Full(byte[]) ```csharp public CornerLatitudePoint1Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLatitudePoint2Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLatitudePoint2Full.html # Class CornerLatitudePoint2Full # Class CornerLatitudePoint2Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLatitudePoint2Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLatitudePoint2Full(byte[]) ```csharp public CornerLatitudePoint2Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLatitudePoint3Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLatitudePoint3Full.html # Class CornerLatitudePoint3Full # Class CornerLatitudePoint3Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLatitudePoint3Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLatitudePoint3Full(byte[]) ```csharp public CornerLatitudePoint3Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLatitudePoint4Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLatitudePoint4Full.html # Class CornerLatitudePoint4Full # Class CornerLatitudePoint4Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLatitudePoint4Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLatitudePoint4Full(byte[]) ```csharp public CornerLatitudePoint4Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLongitudePoint1Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLongitudePoint1Full.html # Class CornerLongitudePoint1Full # Class CornerLongitudePoint1Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLongitudePoint1Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLongitudePoint1Full(byte[]) ```csharp public CornerLongitudePoint1Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLongitudePoint2Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLongitudePoint2Full.html # Class CornerLongitudePoint2Full # Class CornerLongitudePoint2Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLongitudePoint2Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLongitudePoint2Full(byte[]) ```csharp public CornerLongitudePoint2Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLongitudePoint3Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLongitudePoint3Full.html # Class CornerLongitudePoint3Full # Class CornerLongitudePoint3Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLongitudePoint3Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLongitudePoint3Full(byte[]) ```csharp public CornerLongitudePoint3Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class CornerLongitudePoint4Full Link: api/VisioForge.Core.Metadata.KLV.MISB0601.CornerLongitudePoint4Full.html # Class CornerLongitudePoint4Full # Class CornerLongitudePoint4Full **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class CornerLongitudePoint4Full : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### CornerLongitudePoint4Full(byte[]) ```csharp public CornerLongitudePoint4Full(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class DensityAltitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.DensityAltitude.html # Class DensityAltitude # Class DensityAltitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class DensityAltitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### DensityAltitude(byte[]) ```csharp public DensityAltitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class DensityAltitudeExtended Link: api/VisioForge.Core.Metadata.KLV.MISB0601.DensityAltitudeExtended.html # Class DensityAltitudeExtended # Class DensityAltitudeExtended **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class DensityAltitudeExtended : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### DensityAltitudeExtended(byte[]) ```csharp public DensityAltitudeExtended(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class DifferentialPressure Link: api/VisioForge.Core.Metadata.KLV.MISB0601.DifferentialPressure.html # Class DifferentialPressure # Class DifferentialPressure **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class DifferentialPressure : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### DifferentialPressure(byte[]) ```csharp public DifferentialPressure(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class EventStartTime Link: api/VisioForge.Core.Metadata.KLV.MISB0601.EventStartTime.html # Class EventStartTime # Class EventStartTime **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class EventStartTime : DateTimeElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### EventStartTime(byte[]) ```csharp public EventStartTime(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class FrameCenterElevation Link: api/VisioForge.Core.Metadata.KLV.MISB0601.FrameCenterElevation.html # Class FrameCenterElevation # Class FrameCenterElevation **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class FrameCenterElevation : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### FrameCenterElevation(byte[]) ```csharp public FrameCenterElevation(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class FrameCenterHeightAboveEllipsoid Link: api/VisioForge.Core.Metadata.KLV.MISB0601.FrameCenterHeightAboveEllipsoid.html # Class FrameCenterHeightAboveEllipsoid # Class FrameCenterHeightAboveEllipsoid **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class FrameCenterHeightAboveEllipsoid : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### FrameCenterHeightAboveEllipsoid(byte[]) ```csharp public FrameCenterHeightAboveEllipsoid(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class FrameCenterLatitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.FrameCenterLatitude.html # Class FrameCenterLatitude # Class FrameCenterLatitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class FrameCenterLatitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### FrameCenterLatitude(byte[]) ```csharp public FrameCenterLatitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class FrameCenterLongitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.FrameCenterLongitude.html # Class FrameCenterLongitude # Class FrameCenterLongitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class FrameCenterLongitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### FrameCenterLongitude(byte[]) ```csharp public FrameCenterLongitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class GenericFlagData01 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.GenericFlagData01.html # Class GenericFlagData01 # Class GenericFlagData01 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class GenericFlagData01 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### GenericFlagData01(byte[]) ```csharp public GenericFlagData01(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class GroundRange Link: api/VisioForge.Core.Metadata.KLV.MISB0601.GroundRange.html # Class GroundRange # Class GroundRange **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class GroundRange : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### GroundRange(byte[]) ```csharp public GroundRange(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class IcingDetected Link: api/VisioForge.Core.Metadata.KLV.MISB0601.IcingDetected.html # Class IcingDetected # Class IcingDetected **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class IcingDetected : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### IcingDetected(byte[]) ```csharp public IcingDetected(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class ImageCoordinateSystem Link: api/VisioForge.Core.Metadata.KLV.MISB0601.ImageCoordinateSystem.html # Class ImageCoordinateSystem # Class ImageCoordinateSystem **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class ImageCoordinateSystem : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### ImageCoordinateSystem(byte[]) ```csharp public ImageCoordinateSystem(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class ImageSourceSensor Link: api/VisioForge.Core.Metadata.KLV.MISB0601.ImageSourceSensor.html # Class ImageSourceSensor # Class ImageSourceSensor **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Image Source Sensor. ```csharp public class ImageSourceSensor : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### ImageSourceSensor(byte[]) Initializes a new instance of the class. ```csharp public ImageSourceSensor(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class LaserPRFCode Link: api/VisioForge.Core.Metadata.KLV.MISB0601.LaserPRFCode.html # Class LaserPRFCode # Class LaserPRFCode **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class LaserPRFCode : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### LaserPRFCode(byte[]) ```csharp public LaserPRFCode(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class MISB0601Parsers Link: api/VisioForge.Core.Metadata.KLV.MISB0601.MISB0601Parsers.html # Class MISB0601Parsers # Class MISB0601Parsers **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll MISB 0601 parsers. ```csharp public static class MISB0601Parsers ``` #### Inheritance #### Inherited Members ## Properties ### Parsers Gets the parsers. ```csharp public static Dictionary Parsers { get; } ``` #### Property Value Parameters: - (Dictionary < byte [ ] , Type >): ## Methods ### GetParserByKey(byte[], byte[]) Gets the parser by key. ```csharp public static Element GetParserByKey(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key. - value (byte [ ]): The value. #### Returns Parameters: - (Element): The element parser. --- # Class MissionID Link: api/VisioForge.Core.Metadata.KLV.MISB0601.MissionID.html # Class MissionID # Class MissionID **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Mission ID is the descriptive mission identifier. Mission ID value field free text with maximum of 127 characters describing the event. ```csharp public class MissionID : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### MissionID(byte[]) Initializes a new instance of the class. ```csharp public MissionID(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLatitudePoint1 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLatitudePoint1.html # Class OffsetCornerLatitudePoint1 # Class OffsetCornerLatitudePoint1 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLatitudePoint1 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLatitudePoint1(byte[]) ```csharp public OffsetCornerLatitudePoint1(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLatitudePoint2 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLatitudePoint2.html # Class OffsetCornerLatitudePoint2 # Class OffsetCornerLatitudePoint2 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLatitudePoint2 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLatitudePoint2(byte[]) ```csharp public OffsetCornerLatitudePoint2(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLatitudePoint3 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLatitudePoint3.html # Class OffsetCornerLatitudePoint3 # Class OffsetCornerLatitudePoint3 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLatitudePoint3 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLatitudePoint3(byte[]) ```csharp public OffsetCornerLatitudePoint3(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLatitudePoint4 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLatitudePoint4.html # Class OffsetCornerLatitudePoint4 # Class OffsetCornerLatitudePoint4 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLatitudePoint4 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLatitudePoint4(byte[]) ```csharp public OffsetCornerLatitudePoint4(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLongitudePoint1 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLongitudePoint1.html # Class OffsetCornerLongitudePoint1 # Class OffsetCornerLongitudePoint1 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLongitudePoint1 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLongitudePoint1(byte[]) ```csharp public OffsetCornerLongitudePoint1(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLongitudePoint2 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLongitudePoint2.html # Class OffsetCornerLongitudePoint2 # Class OffsetCornerLongitudePoint2 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLongitudePoint2 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLongitudePoint2(byte[]) ```csharp public OffsetCornerLongitudePoint2(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLongitudePoint3 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLongitudePoint3.html # Class OffsetCornerLongitudePoint3 # Class OffsetCornerLongitudePoint3 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLongitudePoint3 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLongitudePoint3(byte[]) ```csharp public OffsetCornerLongitudePoint3(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OffsetCornerLongitudePoint4 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OffsetCornerLongitudePoint4.html # Class OffsetCornerLongitudePoint4 # Class OffsetCornerLongitudePoint4 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OffsetCornerLongitudePoint4 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OffsetCornerLongitudePoint4(byte[]) ```csharp public OffsetCornerLongitudePoint4(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class OperationalMode Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OperationalMode.html # Class OperationalMode # Class OperationalMode **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OperationalMode : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OperationalMode(byte[]) ```csharp public OperationalMode(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class OutsideAirTemperature Link: api/VisioForge.Core.Metadata.KLV.MISB0601.OutsideAirTemperature.html # Class OutsideAirTemperature # Class OutsideAirTemperature **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class OutsideAirTemperature : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### OutsideAirTemperature(byte[]) ```csharp public OutsideAirTemperature(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformAngleOfAttack Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformAngleOfAttack.html # Class PlatformAngleOfAttack # Class PlatformAngleOfAttack **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformAngleOfAttack : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformAngleOfAttack(byte[]) ```csharp public PlatformAngleOfAttack(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformAngleOfAttackFull Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformAngleOfAttackFull.html # Class PlatformAngleOfAttackFull # Class PlatformAngleOfAttackFull **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformAngleOfAttackFull : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformAngleOfAttackFull(byte[]) ```csharp public PlatformAngleOfAttackFull(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformCallSign Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformCallSign.html # Class PlatformCallSign # Class PlatformCallSign **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformCallSign : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformCallSign(byte[]) ```csharp public PlatformCallSign(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class PlatformDesignation Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformDesignation.html # Class PlatformDesignation # Class PlatformDesignation **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Platform Designation. ```csharp public class PlatformDesignation : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformDesignation(byte[]) Initializes a new instance of the class. ```csharp public PlatformDesignation(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class PlatformFuelRemaining Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformFuelRemaining.html # Class PlatformFuelRemaining # Class PlatformFuelRemaining **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformFuelRemaining : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformFuelRemaining(byte[]) ```csharp public PlatformFuelRemaining(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformGroundSpeed Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformGroundSpeed.html # Class PlatformGroundSpeed # Class PlatformGroundSpeed **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformGroundSpeed : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformGroundSpeed(byte[]) ```csharp public PlatformGroundSpeed(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformHeadingAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformHeadingAngle.html # Class PlatformHeadingAngle # Class PlatformHeadingAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Platform Heading Angle. ```csharp public class PlatformHeadingAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformHeadingAngle(byte[]) Initializes a new instance of the class. ```csharp public PlatformHeadingAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class PlatformIndicatedAirspeed Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformIndicatedAirspeed.html # Class PlatformIndicatedAirspeed # Class PlatformIndicatedAirspeed **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformIndicatedAirspeed : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformIndicatedAirspeed(byte[]) ```csharp public PlatformIndicatedAirspeed(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformMagneticHeading Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformMagneticHeading.html # Class PlatformMagneticHeading # Class PlatformMagneticHeading **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformMagneticHeading : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformMagneticHeading(byte[]) ```csharp public PlatformMagneticHeading(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformPitchAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformPitchAngle.html # Class PlatformPitchAngle # Class PlatformPitchAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Platform Pitch Angle. ```csharp public class PlatformPitchAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformPitchAngle(byte[]) Initializes a new instance of the class. ```csharp public PlatformPitchAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class PlatformPitchAngleFull Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformPitchAngleFull.html # Class PlatformPitchAngleFull # Class PlatformPitchAngleFull **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformPitchAngleFull : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformPitchAngleFull(byte[]) ```csharp public PlatformPitchAngleFull(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformRollAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformRollAngle.html # Class PlatformRollAngle # Class PlatformRollAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Platform Roll Angle. ```csharp public class PlatformRollAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformRollAngle(byte[]) Initializes a new instance of the class. ```csharp public PlatformRollAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units The units. ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformRollAngleFull Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformRollAngleFull.html # Class PlatformRollAngleFull # Class PlatformRollAngleFull **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformRollAngleFull : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformRollAngleFull(byte[]) ```csharp public PlatformRollAngleFull(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformSideslipAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformSideslipAngle.html # Class PlatformSideslipAngle # Class PlatformSideslipAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformSideslipAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformSideslipAngle(byte[]) ```csharp public PlatformSideslipAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformSideslipAngleFull Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformSideslipAngleFull.html # Class PlatformSideslipAngleFull # Class PlatformSideslipAngleFull **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformSideslipAngleFull : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformSideslipAngleFull(byte[]) ```csharp public PlatformSideslipAngleFull(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformTailNumber Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformTailNumber.html # Class PlatformTailNumber # Class PlatformTailNumber **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Platform Tail Number. ```csharp public class PlatformTailNumber : StringElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformTailNumber(byte[]) Initializes a new instance of the class. ```csharp public PlatformTailNumber(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class PlatformTrueAirspeed Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformTrueAirspeed.html # Class PlatformTrueAirspeed # Class PlatformTrueAirspeed **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformTrueAirspeed : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformTrueAirspeed(byte[]) ```csharp public PlatformTrueAirspeed(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PlatformVerticalSpeed Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PlatformVerticalSpeed.html # Class PlatformVerticalSpeed # Class PlatformVerticalSpeed **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class PlatformVerticalSpeed : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PlatformVerticalSpeed(byte[]) ```csharp public PlatformVerticalSpeed(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class PrecisionTimeStamp Link: api/VisioForge.Core.Metadata.KLV.MISB0601.PrecisionTimeStamp.html # Class PrecisionTimeStamp # Class PrecisionTimeStamp **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll Precision Timestamp represented in microseconds. Precision Timestamp represented in the number of microseconds elapsed since midnight (00:00:00), January 1, 1970 not including leap seconds. See MISB ST 0601.11 for additional details. ```csharp public class PrecisionTimeStamp : DateTimeElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### PrecisionTimeStamp(byte[]) Initializes a new instance of the class. ```csharp public PrecisionTimeStamp(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName The ESD name. ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName The LDS name. ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG The tag. ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey The UDS key. ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName The UDS name. ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class RelativeHumidity Link: api/VisioForge.Core.Metadata.KLV.MISB0601.RelativeHumidity.html # Class RelativeHumidity # Class RelativeHumidity **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class RelativeHumidity : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### RelativeHumidity(byte[]) ```csharp public RelativeHumidity(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class RVTLocalSet Link: api/VisioForge.Core.Metadata.KLV.MISB0601.RVTLocalSet.html # Class RVTLocalSet # Class RVTLocalSet **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class RVTLocalSet : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### RVTLocalSet(byte[]) ```csharp public RVTLocalSet(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class SensorEastVelocity Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorEastVelocity.html # Class SensorEastVelocity # Class SensorEastVelocity **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorEastVelocity : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorEastVelocity(byte[]) ```csharp public SensorEastVelocity(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorEllipsoidHeightConversion Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorEllipsoidHeightConversion.html # Class SensorEllipsoidHeightConversion # Class SensorEllipsoidHeightConversion **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorEllipsoidHeightConversion : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorEllipsoidHeightConversion(byte[]) ```csharp public SensorEllipsoidHeightConversion(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorEllipsoidHeightExtended Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorEllipsoidHeightExtended.html # Class SensorEllipsoidHeightExtended # Class SensorEllipsoidHeightExtended **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorEllipsoidHeightExtended : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorEllipsoidHeightExtended(byte[]) ```csharp public SensorEllipsoidHeightExtended(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### units ```csharp public string units ``` #### Field Value Parameters: - (string): --- # Class SensorFieldOfViewName Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorFieldOfViewName.html # Class SensorFieldOfViewName # Class SensorFieldOfViewName **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorFieldOfViewName : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorFieldOfViewName(byte[]) ```csharp public SensorFieldOfViewName(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class SensorHorizontalFieldOfView Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorHorizontalFieldOfView.html # Class SensorHorizontalFieldOfView # Class SensorHorizontalFieldOfView **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorHorizontalFieldOfView : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorHorizontalFieldOfView(byte[]) ```csharp public SensorHorizontalFieldOfView(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorLatitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorLatitude.html # Class SensorLatitude # Class SensorLatitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorLatitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorLatitude(byte[]) ```csharp public SensorLatitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorLongitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorLongitude.html # Class SensorLongitude # Class SensorLongitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorLongitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorLongitude(byte[]) ```csharp public SensorLongitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorNorthVelocity Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorNorthVelocity.html # Class SensorNorthVelocity # Class SensorNorthVelocity **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorNorthVelocity : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorNorthVelocity(byte[]) ```csharp public SensorNorthVelocity(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorRelativeAzimuthAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorRelativeAzimuthAngle.html # Class SensorRelativeAzimuthAngle # Class SensorRelativeAzimuthAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorRelativeAzimuthAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorRelativeAzimuthAngle(byte[]) ```csharp public SensorRelativeAzimuthAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorRelativeElevationAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorRelativeElevationAngle.html # Class SensorRelativeElevationAngle # Class SensorRelativeElevationAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorRelativeElevationAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorRelativeElevationAngle(byte[]) ```csharp public SensorRelativeElevationAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorRelativeRollAngle Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorRelativeRollAngle.html # Class SensorRelativeRollAngle # Class SensorRelativeRollAngle **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorRelativeRollAngle : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorRelativeRollAngle(byte[]) ```csharp public SensorRelativeRollAngle(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorTrueAltitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorTrueAltitude.html # Class SensorTrueAltitude # Class SensorTrueAltitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorTrueAltitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorTrueAltitude(byte[]) ```csharp public SensorTrueAltitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SensorVerticalFieldOfView Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SensorVerticalFieldOfView.html # Class SensorVerticalFieldOfView # Class SensorVerticalFieldOfView **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SensorVerticalFieldOfView : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SensorVerticalFieldOfView(byte[]) ```csharp public SensorVerticalFieldOfView(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class SlantRange Link: api/VisioForge.Core.Metadata.KLV.MISB0601.SlantRange.html # Class SlantRange # Class SlantRange **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class SlantRange : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### SlantRange(byte[]) ```csharp public SlantRange(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class StaticPressure Link: api/VisioForge.Core.Metadata.KLV.MISB0601.StaticPressure.html # Class StaticPressure # Class StaticPressure **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class StaticPressure : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### StaticPressure(byte[]) ```csharp public StaticPressure(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetErrorEstimateCE90 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetErrorEstimateCE90.html # Class TargetErrorEstimateCE90 # Class TargetErrorEstimateCE90 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetErrorEstimateCE90 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetErrorEstimateCE90(byte[]) ```csharp public TargetErrorEstimateCE90(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetErrorEstimateLE90 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetErrorEstimateLE90.html # Class TargetErrorEstimateLE90 # Class TargetErrorEstimateLE90 **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetErrorEstimateLE90 : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetErrorEstimateLE90(byte[]) ```csharp public TargetErrorEstimateLE90(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetLocationElevation Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetLocationElevation.html # Class TargetLocationElevation # Class TargetLocationElevation **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetLocationElevation : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetLocationElevation(byte[]) ```csharp public TargetLocationElevation(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetLocationLatitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetLocationLatitude.html # Class TargetLocationLatitude # Class TargetLocationLatitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetLocationLatitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetLocationLatitude(byte[]) ```csharp public TargetLocationLatitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetLocationLongitude Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetLocationLongitude.html # Class TargetLocationLongitude # Class TargetLocationLongitude **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetLocationLongitude : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetLocationLongitude(byte[]) ```csharp public TargetLocationLongitude(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetTrackGateHeight Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetTrackGateHeight.html # Class TargetTrackGateHeight # Class TargetTrackGateHeight **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetTrackGateHeight : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetTrackGateHeight(byte[]) ```csharp public TargetTrackGateHeight(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetTrackGateWidth Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetTrackGateWidth.html # Class TargetTrackGateWidth # Class TargetTrackGateWidth **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetTrackGateWidth : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetTrackGateWidth(byte[]) ```csharp public TargetTrackGateWidth(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetWidth Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetWidth.html # Class TargetWidth # Class TargetWidth **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetWidth : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetWidth(byte[]) ```csharp public TargetWidth(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class TargetWidthExtended Link: api/VisioForge.Core.Metadata.KLV.MISB0601.TargetWidthExtended.html # Class TargetWidthExtended # Class TargetWidthExtended **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class TargetWidthExtended : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### TargetWidthExtended(byte[]) ```csharp public TargetWidthExtended(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class UASLocalMetadataSet Link: api/VisioForge.Core.Metadata.KLV.MISB0601.UASLocalMetadataSet.html # Class UASLocalMetadataSet # Class UASLocalMetadataSet **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll MISB ST0601 UAS Local Metadata Set. ```csharp public class UASLocalMetadataSet : SetParser ``` #### Inheritance #### Inherited Members ## Constructors ### UASLocalMetadataSet(byte[]) Initializes a new instance of the class. ```csharp public UASLocalMetadataSet(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Fields ### ConstKey The constant key. ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### KeyLength The key length. ```csharp public static int KeyLength ``` #### Field Value Parameters: - (int): --- # Class UASLSVersionNumber Link: api/VisioForge.Core.Metadata.KLV.MISB0601.UASLSVersionNumber.html # Class UASLSVersionNumber # Class UASLSVersionNumber **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class UASLSVersionNumber : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### UASLSVersionNumber(byte[]) ```csharp public UASLSVersionNumber(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class VMTILocalSet Link: api/VisioForge.Core.Metadata.KLV.MISB0601.VMTILocalSet.html # Class VMTILocalSet # Class VMTILocalSet **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class VMTILocalSet : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### VMTILocalSet(byte[]) ```csharp public VMTILocalSet(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class WeaponFired Link: api/VisioForge.Core.Metadata.KLV.MISB0601.WeaponFired.html # Class WeaponFired # Class WeaponFired **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class WeaponFired : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### WeaponFired(byte[]) ```csharp public WeaponFired(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class WeaponLoad Link: api/VisioForge.Core.Metadata.KLV.MISB0601.WeaponLoad.html # Class WeaponLoad # Class WeaponLoad **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class WeaponLoad : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### WeaponLoad(byte[]) ```csharp public WeaponLoad(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): --- # Class WindDirection Link: api/VisioForge.Core.Metadata.KLV.MISB0601.WindDirection.html # Class WindDirection # Class WindDirection **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class WindDirection : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### WindDirection(byte[]) ```csharp public WindDirection(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Class WindSpeed Link: api/VisioForge.Core.Metadata.KLV.MISB0601.WindSpeed.html # Class WindSpeed # Class WindSpeed **Namespace**: VisioForge.Core.Metadata.KLV.MISB0601 **Assembly**: VisioForge.Core.dll ```csharp public class WindSpeed : MappedElementParser ``` #### Inheritance #### Inherited Members ## Constructors ### WindSpeed(byte[]) ```csharp public WindSpeed(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): ## Fields ### ConstKey ```csharp public static byte[] ConstKey ``` #### Field Value Parameters: - (byte [ ]): ### ESDName ```csharp public string ESDName ``` #### Field Value Parameters: - (string): ### LDSName ```csharp public string LDSName ``` #### Field Value Parameters: - (string): ### TAG ```csharp public int TAG ``` #### Field Value Parameters: - (int): ### UDSKey ```csharp public string UDSKey ``` #### Field Value Parameters: - (string): ### UDSName ```csharp public string UDSName ``` #### Field Value Parameters: - (string): ### Units ```csharp public string Units ``` #### Field Value Parameters: - (string): --- # Namespace VisioForge.Core.Metadata.KLV.MISB0601 Link: api/VisioForge.Core.Metadata.KLV.MISB0601.html # Namespace VisioForge.Core.Metadata.KLV.MISB0601 # Namespace VisioForge.Core.Metadata.KLV.MISB0601 ### Classes Parameters: - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): Checksum used to detect errors within a UAV Local Set packet. Checksum formed as lower 16-bits of summation performed on entire LS packet, including 16-byte US key and 1-byte checksum length. Initialized from bytes value as BytesValue. - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): Image Source Sensor. - (): - (): MISB 0601 parsers. - (): Mission ID is the descriptive mission identifier. Mission ID value field free text with maximum of 127 characters describing the event. - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): Platform Designation. - (): - (): - (): Platform Heading Angle. - (): - (): - (): Platform Pitch Angle. - (): - (): Platform Roll Angle. - (): - (): - (): - (): Platform Tail Number. - (): - (): - (): Precision Timestamp represented in microseconds. Precision Timestamp represented in the number of microseconds elapsed since midnight (00:00:00), January 1, 1970 not including leap seconds. See MISB ST 0601.11 for additional details. - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): MISB ST0601 UAS Local Metadata Set. - (): - (): - (): - (): - (): --- # Class SetParser Link: api/VisioForge.Core.Metadata.KLV.SetParser.html # Class SetParser # Class SetParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Parsable Element. Not intended to be used directly. Always as super class. ```csharp public class SetParser : ElementParser ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### SetParser(byte[], byte[], int) Initializes a new instance of the class. ```csharp public SetParser(byte[] key, byte[] value, int key_length) ``` #### Parameters Parameters: - key (byte [ ]): The key. - value (byte [ ]): The value. - key_length (int): Length of the key. ## Properties ### Elements Gets the elements. ```csharp public List Elements { get; } ``` #### Property Value Parameters: - (List < Element >): ### KeyLength Gets the key length. ```csharp public int KeyLength { get; } ``` #### Property Value Parameters: - (int): ## Methods ### Parse() Parse the parent into items. Called on init and modification of parent value. If a known parser is not available for key, parse as generic KLV element. ```csharp public virtual void Parse() ``` ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class StringElementParser Link: api/VisioForge.Core.Metadata.KLV.StringElementParser.html # Class StringElementParser # Class StringElementParser **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a string element parser. ```csharp public class StringElementParser : ElementParser ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### StringElementParser(byte[], byte[]) Initializes a new instance of the class. ```csharp public StringElementParser(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. --- # Class StringValue Link: api/VisioForge.Core.Metadata.KLV.StringValue.html # Class StringValue # Class StringValue **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents a string value. ```csharp public class StringValue : BaseValue ``` #### Inheritance #### Inherited Members ## Constructors ### StringValue(byte[]) Initializes a new instance of the class. ```csharp public StringValue(byte[] value) ``` #### Parameters Parameters: - value (byte [ ]): The value. ## Methods ### Bytes() Returns the bytes of the value. ```csharp public override byte[] Bytes() ``` #### Returns Parameters: - (byte [ ]): The bytes of the value. ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class UnknownElement Link: api/VisioForge.Core.Metadata.KLV.UnknownElement.html # Class UnknownElement # Class UnknownElement **Namespace**: VisioForge.Core.Metadata.KLV **Assembly**: VisioForge.Core.dll Represents an unknown KLV element. ```csharp public class UnknownElement : Element ``` #### Inheritance #### Inherited Members ## Constructors ### UnknownElement(byte[], byte[]) Initializes a new instance of the class. ```csharp public UnknownElement(byte[] key, byte[] value) ``` #### Parameters Parameters: - key (byte [ ]): The key of the element. - value (byte [ ]): The value of the element. --- # Namespace VisioForge.Core.Metadata.KLV Link: api/VisioForge.Core.Metadata.KLV.html # Namespace VisioForge.Core.Metadata.KLV # Namespace VisioForge.Core.Metadata.KLV ### Namespaces Parameters: - (): ### Classes Parameters: - (): Abstract base class used to insure internal interfaces are maintained. - (): Represents a bytes element parser. - (): Represents a bytes value. - (): Represents a datetime element parser. - (): Represents a datetime value. - (): Construct a key, length, value tuplet. Elements provide the basic mechanisms to constitute the basic encoding requirements of key, length, value tuplet as specified by STMPE 336. The length is dynamically calculated based off the value. - (): Construct a Element Parser base class. Element Parsers are used to enforce the convention that all Element Parsers already know the key of the element they are constructing. Element Parser is a helper class that simplifies known element definition and makes a layer of abstraction for functionality that all known elements can share. The parsing interfaces are cleaner and require less coding as their definitions (subclasses of Element Parser) do not need to call init on super with class key and instance value. - (): Represents a IEEE754 element parser. - (): KLV base parser. - (): KLV MISB 0601 metadata parser. Key length is 16. - (): Represents a mapped element parser. - (): Represents a mapped value. - (): Parsable Element. Not intended to be used directly. Always as super class. - (): Represents a string element parser. - (): Represents a string value. - (): Represents an unknown KLV element. --- # Class KLVDecoder Link: api/VisioForge.Core.Metadata.KLVDecoder.html # Class KLVDecoder # Class KLVDecoder **Namespace**: VisioForge.Core.Metadata **Assembly**: VisioForge.Core.dll Represents a KLV decoder. ```csharp public class KLVDecoder ``` #### Inheritance #### Inherited Members ## Methods ### DecodeFromBytes(byte[]) Decodes KLV data from bytes. ```csharp public static List DecodeFromBytes(byte[] klvData) ``` #### Parameters Parameters: - klvData (byte [ ]): The KLV data. #### Returns Parameters: - (List < KLVItem >): A list of KLV items. ### DecodeFromFile(string) Decodes a KLV file. ```csharp public static List DecodeFromFile(string filePath) ``` #### Parameters Parameters: - filePath (string): The file path. #### Returns Parameters: - (List < KLVItem >): A list of KLV items. --- # Class KLVItem Link: api/VisioForge.Core.Metadata.KLVItem.html # Class KLVItem # Class KLVItem **Namespace**: VisioForge.Core.Metadata **Assembly**: VisioForge.Core.dll Represents a KLV item. ```csharp public class KLVItem ``` #### Inheritance #### Inherited Members ## Constructors ### KLVItem(string, byte[]) Initializes a new instance of the class. ```csharp public KLVItem(string key, byte[] value) ``` #### Parameters Parameters: - key (string): The key. - value (byte [ ]): The value. ## Properties ### Key Gets or sets the key. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): ### Value Gets or sets the value. ```csharp public byte[] Value { get; set; } ``` #### Property Value Parameters: - (byte [ ]): --- # Namespace VisioForge.Core.Metadata Link: api/VisioForge.Core.Metadata.html # Namespace VisioForge.Core.Metadata # Namespace VisioForge.Core.Metadata ### Namespaces Parameters: - (): ### Classes Parameters: - (): Represents a KLV decoder. - (): Represents a KLV item. --- # Class CVFaceMLKit Link: api/VisioForge.Core.MLKit.CVFaceMLKit.html # Class CVFaceMLKit # Class CVFaceMLKit **Namespace**: VisioForge.Core.MLKit **Assembly**: VisioForge.Core.MLKit.dll Represents a detected face with ML Kit-specific features including contours, landmarks, and facial attributes. Extends with detailed face analysis data from Google ML Kit. ```csharp public class CVFaceMLKit : CVFace ``` #### Inheritance #### Inherited Members ## Properties ### FaceContours Gets the detected face contours representing the outline of facial features. Face contours provide detailed shape information for the detected face regions. ```csharp public FaceContour[] FaceContours { get; } ``` #### Property Value Parameters: - (FaceContour [ ]): ### FaceLandmarks Gets the detected facial landmarks identifying key points on the face such as eyes, nose, and mouth. Landmarks provide precise coordinates for specific facial features. ```csharp public FaceLandmark[] FaceLandmarks { get; } ``` #### Property Value Parameters: - (FaceLandmark [ ]): ### HeadEulerAngleX Gets the rotation of the face about the horizontal axis of the image, in degrees. Positive values indicate the face is tilted upward, negative values indicate downward tilt. ```csharp public float HeadEulerAngleX { get; } ``` #### Property Value Parameters: - (float): ### HeadEulerAngleY Gets the rotation of the face about the vertical axis of the image, in degrees. Positive values indicate the face is turned to the right, negative values indicate left turn. ```csharp public float HeadEulerAngleY { get; } ``` #### Property Value Parameters: - (float): ### HeadEulerAngleZ Gets the rotation of the face about the axis pointing out of the image, in degrees. Positive values indicate clockwise rotation, negative values indicate counterclockwise rotation. ```csharp public float HeadEulerAngleZ { get; } ``` #### Property Value Parameters: - (float): ### LeftEyeOpenProbability Gets a value between 0.0 and 1.0 giving a probability that the face's left eye is open. Higher values indicate greater confidence that the eye is open. ```csharp public float LeftEyeOpenProbability { get; } ``` #### Property Value Parameters: - (float): ### RightEyeOpenProbability Gets a value between 0.0 and 1.0 giving a probability that the face's right eye is open. Higher values indicate greater confidence that the eye is open. ```csharp public float RightEyeOpenProbability { get; } ``` #### Property Value Parameters: - (float): ### SmilingProbability Gets a value between 0.0 and 1.0 giving a probability that the face is smiling. Higher values indicate greater confidence that the person is smiling. ```csharp public float SmilingProbability { get; } ``` #### Property Value Parameters: - (float): ### TrackingId Gets the tracking ID if face tracking is enabled in the detector configuration. The tracking ID allows associating the same face across multiple consecutive frames. ```csharp public int TrackingId { get; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class FaceDetector Link: api/VisioForge.Core.MLKit.FaceDetector.html # Class FaceDetector # Class FaceDetector **Namespace**: VisioForge.Core.MLKit **Assembly**: VisioForge.Core.MLKit.dll Provides face detection functionality using Google ML Kit for Android platforms. Implements the interface to process video frames and detect faces. This class handles the creation of ML Kit detectors, frame conversion, and asynchronous processing. ```csharp public class FaceDetector : IFaceDetector, IVideoProcessor, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FaceDetector() Initializes a new instance of the class with default settings. Configures the detector with real-time options: all contours enabled and fast performance mode. ```csharp public FaceDetector() ``` ### FaceDetector(FaceDetectorOptions) Initializes a new instance of the class. ```csharp public FaceDetector(FaceDetectorOptions options) ``` #### Parameters Parameters: - options (FaceDetectorOptions): The options. ## Properties ### JSONFile Gets or sets the file path for exporting face detection results in JSON Lines format. ```csharp public string JSONFile { get; set; } ``` #### Property Value Parameters: - (string): ### SkipFrames Gets or sets the number of frames to skip between face detection operations for performance optimization. Skipping frames reduces CPU usage by not processing every single video frame. ```csharp public int SkipFrames { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### DoFacesDetected(CVFace[], TimeSpan) Raises the FacesDetected event with the detected faces. ```csharp public void DoFacesDetected(CVFace[] faces, TimeSpan timestamp) ``` #### Parameters Parameters: - faces (CVFace [ ]): Array of detected faces. - timestamp (TimeSpan): The timestamp when faces were detected. ### GetSupportedFrameFormats() Gets the supported video frame formats for face detection. ```csharp public VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): Array of supported video formats. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented. ### ProcessFrame(VideoFrameX) Processes a video frame for face detection. Checks if the frame should be skipped and initiates asynchronous processing if suitable. ```csharp public void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The to process. ### ProcessFrame(VideoFrame) Processes a standard video frame for face detection. ```csharp public void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The video frame to process. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented for standard VideoFrame. ### SetContext(BaseContext) Sets the base context for the face detector. ```csharp public void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The base context to set. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented. ### FacesDetected Occurs when faces are detected in a video frame. ```csharp public event EventHandler FacesDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): ## See Also --- # Class FaceDetectorBlock Link: api/VisioForge.Core.MLKit.FaceDetectorBlock.html # Class FaceDetectorBlock # Class FaceDetectorBlock **Namespace**: VisioForge.Core.MLKit **Assembly**: VisioForge.Core.MLKit.dll Represents a media block that performs real-time face detection on video frames using Google ML Kit. This block processes video frames in the pipeline and raises events when faces are detected. Implements the ```csharp public class FaceDetectorBlock : VideoSampleGrabberBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FaceDetectorBlock(bool, bool) Initializes a new instance of the class. ```csharp public FaceDetectorBlock(bool addNullRenderer = false, bool nullRendererSync = false) ``` #### Parameters Parameters: - addNullRenderer (bool): If set to true, adds a null renderer to consume frames without display, useful for processing-only scenarios. - nullRendererSync (bool): If set to true, enables synchronization for the null renderer to maintain frame timing. ## Fields ### TAG The logging tag used to identify this block in debug output and logging systems. ```csharp protected const string TAG = "FaceDetectorBlock" ``` #### Field Value Parameters: - (string): ## Properties ### JSONFile Gets or sets the file path for exporting face detection results in JSON Lines format. Each detected face will be written as a separate JSON line containing position and timestamp information. ```csharp public string JSONFile { get; set; } ``` #### Property Value Parameters: - (string): ### Type Gets the media block type identifier for this face detector block. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## See Also --- # Class Resource Link: api/VisioForge.Core.MLKit.Resource.html # Class Resource # Class Resource **Namespace**: VisioForge.Core.MLKit **Assembly**: VisioForge.Core.MLKit.dll Android Resource Designer class. Exposes the Android Resource designer assembly into the project Namespace. ```csharp public class Resource : Resource ``` #### Inheritance #### Inherited Members --- # Namespace VisioForge.Core.MLKit Link: api/VisioForge.Core.MLKit.html # Namespace VisioForge.Core.MLKit # Namespace VisioForge.Core.MLKit ### Classes Parameters: - (): Represents a detected face with ML Kit-specific features including contours, landmarks, and facial attributes. Extends with detailed face analysis data from Google ML Kit. - (): Provides face detection functionality using Google ML Kit for Android platforms. Implements the interface to process video frames and detect faces. This class handles the creation of ML Kit detectors, frame conversion, and asynchronous processing. - (): Represents a media block that performs real-time face detection on video frames using Google ML Kit. This block processes video frames in the pipeline and raises events when faces are detected. Implements the - (): Android Resource Designer class. Exposes the Android Resource designer assembly into the project Namespace. --- # Class NativeAPI Link: api/VisioForge.Core.NativeAPI.html # Class NativeAPI # Class NativeAPI **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll Class NativeAPI. ```csharp public static class NativeAPI ``` #### Inheritance #### Inherited Members ## Fields ### X86 Is X86. ```csharp public static bool X86 ``` #### Field Value Parameters: - (bool): ## Methods ### CopyMemory(nint, nint, int) Copies the memory. ```csharp public static void CopyMemory(nint dest, nint source, int len) ``` #### Parameters Parameters: - dest (nint): The destination. - source (nint): The source. - len (int): The length. ### MemSet(nint, int, int) Sets the memory. ```csharp public static void MemSet(nint dest, int c, int byteCount) ``` #### Parameters Parameters: - dest (nint): The destination. - c (int): The value. - byteCount (int): The byte count. ### MoveMemory(nint, nint, uint) Copies the memory. ```csharp public static void MoveMemory(nint dest, nint source, uint len) ``` #### Parameters Parameters: - dest (nint): The destination. - source (nint): The source. - len (uint): The length. --- # Class EquirectangularViewBlock Link: api/VisioForge.Core.OpenGL.EquirectangularViewBlock.html # Class EquirectangularViewBlock # Class EquirectangularViewBlock **Namespace**: VisioForge.Core.OpenGL **Assembly**: VisioForge.Core.OpenGL.dll Equirectangular view block (OpenGL). Implements the . Implements the . Implements the . ```csharp public class EquirectangularViewBlock : MediaBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### EquirectangularViewBlock(GLEquirectangularViewSettings) Initializes a new instance of the class. ```csharp public EquirectangularViewBlock(GLEquirectangularViewSettings settings) ``` #### Parameters Parameters: - settings (GLEquirectangularViewSettings): The settings. ## Properties ### Input Gets the input. ```csharp public override MediaBlockPad Input { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Inputs Gets the inputs. ```csharp public override MediaBlockPad[] Inputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Output Gets the output. ```csharp public override MediaBlockPad Output { get; } ``` #### Property Value Parameters: - (MediaBlockPad): ### Outputs Gets the outputs. ```csharp public override MediaBlockPad[] Outputs { get; } ``` #### Property Value Parameters: - (MediaBlockPad [ ]): ### Settings Gets the settings. ```csharp public GLEquirectangularViewSettings Settings { get; } ``` #### Property Value Parameters: - (GLEquirectangularViewSettings): ### Type Gets the type. ```csharp public override MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### Build() Builds this instance. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): true if successfull, false otherwise. ### CleanUp() Cleans up. ```csharp public void CleanUp() ``` ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### GetCore() Gets core. ```csharp public BaseElement GetCore() ``` #### Returns Parameters: - (BaseElement): VisioForge.Core.GStreamer.Base.BaseElement. ### GetElement() Gets the element. ```csharp public Element GetElement() ``` #### Returns Parameters: - (Element): Gst.Element. ### IsAvailable() Determines whether this media block is available. Correct NuGet SDK redist should be included into your project. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this media block is available; otherwise, false. ### Update() Updates the settings. ```csharp public void Update() ``` ### IMediaBlockInternals.SetContext(MediaBlocksPipeline) Sets the context. ```csharp void IMediaBlockInternals.SetContext(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The pipeline. ## See Also --- # Class GLFrameProcessor Link: api/VisioForge.Core.OpenGL.GLFrameProcessor.html # Class GLFrameProcessor # Class GLFrameProcessor **Namespace**: VisioForge.Core.OpenGL **Assembly**: VisioForge.Core.OpenGL.dll This class creates a hidden OpenGL context and encapsulates processing. It uploads input frame data into an input texture, renders a full-screen quad with a custom shader (here applying a grayscale conversion), and then reads back the processed result. ```csharp public class GLFrameProcessor : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GLFrameProcessor(GLShaderSettings) Initializes a new instance of the class. ```csharp public GLFrameProcessor(GLShaderSettings settings) ``` #### Parameters Parameters: - settings (GLShaderSettings): The settings. ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~GLFrameProcessor() Finalizes an instance of the class. ```csharp protected ~GLFrameProcessor() ``` ### ProcessFrame(nint, int, int) Processes the frame. ```csharp public void ProcessFrame(nint data, int width, int height) ``` #### Parameters Parameters: - data (nint): The data. - width (int): The width. - height (int): The height. ### UpdateSettings(GLShaderSettings) Updates the settings. ```csharp public void UpdateSettings(GLShaderSettings settings) ``` #### Parameters Parameters: - settings (GLShaderSettings): The settings. ### UpdateUniforms() Updates custom float uniforms in the shader. Pass a Dictionary where keys are uniform names and values are the float values to set. ```csharp public void UpdateUniforms() ``` --- # Namespace VisioForge.Core.OpenGL Link: api/VisioForge.Core.OpenGL.html # Namespace VisioForge.Core.OpenGL # Namespace VisioForge.Core.OpenGL ### Classes Parameters: - (): Equirectangular view block (OpenGL). Implements the . Implements the . Implements the . - (): This class creates a hidden OpenGL context and encapsulates processing. It uploads input frame data into an input texture, renders a full-screen quad with a custom shader (here applying a grayscale conversion), and then reads back the processed result. --- # Class CameraInfo Link: api/VisioForge.Core.PhotoCapture.CameraInfo.html # Class CameraInfo # Class CameraInfo **Namespace**: VisioForge.Core.PhotoCapture **Assembly**: VisioForge.Core.dll Represents information about a camera device including its capabilities and properties. ```csharp public class CameraInfo ``` #### Inheritance #### Inherited Members ## Properties ### AvailableResolutions Gets the list of available capture resolutions supported by the camera. ```csharp public List AvailableResolutions { get; } ``` #### Property Value Parameters: - (List < Size >): ### DeviceId Gets the unique identifier of the camera device. ```csharp public string DeviceId { get; } ``` #### Property Value Parameters: - (string): ### HasFlashUnit Gets a value indicating whether the camera has a flash unit. ```csharp public bool HasFlashUnit { get; } ``` #### Property Value Parameters: - (bool): ### HorizontalViewAngle Gets the horizontal field of view angle in degrees. ```csharp public float HorizontalViewAngle { get; } ``` #### Property Value Parameters: - (float): ### MaxZoomFactor Gets the maximum zoom factor supported by the camera. ```csharp public float MaxZoomFactor { get; } ``` #### Property Value Parameters: - (float): ### MinZoomFactor Gets the minimum zoom factor supported by the camera. ```csharp public float MinZoomFactor { get; } ``` #### Property Value Parameters: - (float): ### Name Gets the display name of the camera device. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Position Gets the physical position of the camera (e.g., front or back). ```csharp public CameraPosition Position { get; } ``` #### Property Value Parameters: - (CameraPosition): ### VerticalViewAngle Gets the vertical field of view angle in degrees. ```csharp public float VerticalViewAngle { get; } ``` #### Property Value Parameters: - (float): ## Methods ### ToString() Returns a string representation of the camera. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): The name of the camera device. --- # Enum CameraPosition Link: api/VisioForge.Core.PhotoCapture.CameraPosition.html # Enum CameraPosition # Enum CameraPosition **Namespace**: VisioForge.Core.PhotoCapture **Assembly**: VisioForge.Core.dll Specifies the physical position of a camera on a device. ```csharp public enum CameraPosition ``` ## Fields Parameters: - Back (): The camera is positioned on the back of the device. - Front (): The camera is positioned on the front of the device (facing the user). - Unknown (): The camera position is unknown or unspecified. --- # Enum CameraResult Link: api/VisioForge.Core.PhotoCapture.CameraResult.html # Enum CameraResult # Enum CameraResult **Namespace**: VisioForge.Core.PhotoCapture **Assembly**: VisioForge.Core.dll Represents the result of camera operations and initialization attempts. ```csharp public enum CameraResult ``` ## Fields Parameters: - Success (): The operation completed successfully. - AccessDenied (): Access to the camera was denied by the system or user. - NoCameraSelected (): No camera device has been selected for the operation. - AccessError (): An error occurred while accessing the camera. - NoVideoFormatsAvailable (): No compatible video formats are available for the selected camera. - NotInitiated (): The camera has not been initialized. - NoMicrophoneSelected (): No microphone device has been selected for audio capture. - ResolutionNotAvailable (): The requested resolution is not available for the selected camera. --- # Enum FlashMode Link: api/VisioForge.Core.PhotoCapture.FlashMode.html # Enum FlashMode # Enum FlashMode **Namespace**: VisioForge.Core.PhotoCapture **Assembly**: VisioForge.Core.dll Specifies the flash mode for camera capture operations. ```csharp public enum FlashMode ``` ## Fields Parameters: - Auto (): The flash will automatically fire based on lighting conditions. - Enabled (): The flash is enabled and will always fire. - Disabled (): The flash is disabled and will not fire. --- # Class MicrophoneInfo Link: api/VisioForge.Core.PhotoCapture.MicrophoneInfo.html # Class MicrophoneInfo # Class MicrophoneInfo **Namespace**: VisioForge.Core.PhotoCapture **Assembly**: VisioForge.Core.dll Represents information about a microphone device. ```csharp public class MicrophoneInfo ``` #### Inheritance #### Inherited Members ## Properties ### DeviceId Gets the unique identifier of the microphone device. ```csharp public string DeviceId { get; } ``` #### Property Value Parameters: - (string): ### Name Gets the display name of the microphone device. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### ToString() Returns a string representation of the microphone. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): The name of the microphone device. --- # Namespace VisioForge.Core.PhotoCapture Link: api/VisioForge.Core.PhotoCapture.html # Namespace VisioForge.Core.PhotoCapture # Namespace VisioForge.Core.PhotoCapture ### Classes Parameters: - (): Represents information about a camera device including its capabilities and properties. - (): Represents information about a microphone device. ### Enums Parameters: - (): Specifies the physical position of a camera on a device. - (): Represents the result of camera operations and initialization attempts. - (): Specifies the flash mode for camera capture operations. --- # Class RedistLinks Link: api/VisioForge.Core.RedistLinks.html # Class RedistLinks # Class RedistLinks **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll Redist links. ```csharp public static class RedistLinks ``` #### Inheritance #### Inherited Members ## Fields ### BaseX64 The base X64 redist. ```csharp public static string BaseX64 ``` #### Field Value Parameters: - (string): ### BaseX86 The base X86 redist. ```csharp public static string BaseX86 ``` #### Field Value Parameters: - (string): ### FFMPEG_DLL_X86 The FFMPEG DLL X86 redist. ```csharp public static string FFMPEG_DLL_X86 ``` #### Field Value Parameters: - (string): ### FFMPEG_EXE_X64 The FFMPEG executable X64 redist. ```csharp public static string FFMPEG_EXE_X64 ``` #### Field Value Parameters: - (string): ### FFMPEG_EXE_X86 The FFMPEG executable X86 redist. ```csharp public static string FFMPEG_EXE_X86 ``` #### Field Value Parameters: - (string): ### LAVX64 The LAV X64 redist. ```csharp public static string LAVX64 ``` #### Field Value Parameters: - (string): ### LAVX86 The LAV X86 redist. ```csharp public static string LAVX86 ``` #### Field Value Parameters: - (string): ### MP4X64 The MP4 X64 redist. ```csharp public static string MP4X64 ``` #### Field Value Parameters: - (string): ### MP4X86 The MP4 X86 redist. ```csharp public static string MP4X86 ``` #### Field Value Parameters: - (string): ### NDI The NDI redist. ```csharp public static string NDI ``` #### Field Value Parameters: - (string): ### VLCX64 The VLC X64 redist. ```csharp public static string VLCX64 ``` #### Field Value Parameters: - (string): ### VLCX64UI The VLC X64 UI redist. ```csharp public static string VLCX64UI ``` #### Field Value Parameters: - (string): ### VLCX86 The VLC X86 redist. ```csharp public static string VLCX86 ``` #### Field Value Parameters: - (string): ### VLCX86UI The VLC X86 UI redist. ```csharp public static string VLCX86UI ``` #### Field Value Parameters: - (string): ### WebMX86 The WebM X86 redist. ```csharp public static string WebMX86 ``` #### Field Value Parameters: - (string): ### XIPHX64 The Xiph X64 redist. ```csharp public static string XIPHX64 ``` #### Field Value Parameters: - (string): ### XIPHX86 The Xiph X86 redist. ```csharp public static string XIPHX86 ``` #### Field Value Parameters: - (string): --- # Class SimplePlayerCoreX Link: api/VisioForge.Core.SimplePlayerX.SimplePlayerCoreX.html # Class SimplePlayerCoreX # Class SimplePlayerCoreX **Namespace**: VisioForge.Core.SimplePlayerX **Assembly**: VisioForge.Core.dll Provides GStreamer bus message handling for SimplePlayerX, managing PlayBin3 pipeline events and state changes. This partial class handles asynchronous communication from the GStreamer pipeline including video overlay setup, stream collection parsing, error propagation, end-of-stream notifications, and state transition monitoring. Essential for maintaining player state and providing event notifications in the simplified player implementation. Implements the . Implements the . ```csharp public class SimplePlayerCoreX : IDisposable, IAsyncDisposable, INotifyPropertyChanged ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### SimplePlayerCoreX(IVideoView) Initializes a new instance of the class. ```csharp public SimplePlayerCoreX(IVideoView videoView) ``` #### Parameters Parameters: - videoView (IVideoView): The video view control that will render video output. Can be null for audio-only playback. #### Remarks This constructor initializes the VisioForgeX SDK context and associates the player with a video view control. The video view must implement interface and provide platform-specific video rendering capabilities. If videoView is null, video rendering is disabled and only audio playback is supported. ## Properties ### Audio_Mute Gets or sets a value indicating whether audio output is muted. ```csharp public bool Audio_Mute { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Muting preserves the current setting. When unmuted, audio resumes at the previous volume level. This property can be changed during playback and takes effect immediately. Muting is implemented at the GStreamer PlayBin3 element level, not at the system audio level. ### Audio_Streams Gets a collection of available audio streams in the current media. ```csharp public ObservableCollection Audio_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < AudioStreamInfo >): #### Remarks This collection is populated after media playback starts and the GStreamer pipeline has parsed the stream information. Each contains metadata such as language, codec, channels, and stream identifier. The collection is empty when no media is loaded or before stream information becomes available. Use methods in Streams.cs to select a specific audio stream for playback. Subscribe to to be notified when stream information is ready. ### Audio_Streams_MixAll Gets or sets a value indicating whether to mix all audio streams together during playback. ```csharp public bool Audio_Streams_MixAll { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, an 'adder' element is configured as the audio-stream-combiner for the PlayBin3 element. This allows simultaneous playback of multiple audio streams from multi-language or multi-track content. The adder element mixes the audio samples from all streams into a single output stream. This property must be set before calling or to take effect. ### Audio_Volume Gets or sets the audio volume level for playback. ```csharp public double Audio_Volume { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The volume can be adjusted during playback. Changes take effect immediately. This property controls the GStreamer PlayBin3 element's volume property. The actual output volume also depends on the system volume settings and audio output device capabilities. ### Debug_Dir Gets or sets the directory path where debug files and logs will be saved. ```csharp public string Debug_Dir { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When is enabled, this directory will contain: - Log files with detailed player operations - GStreamer pipeline graph DOT files for visualization Debug files are named with timestamps to prevent overwrites. Changing this property during runtime reconfigures the logger. ### Debug_DisableMessageDialogs Gets or sets a value indicating whether to suppress error message dialogs on Windows platforms when no error handler is attached. ```csharp public bool Debug_DisableMessageDialogs { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks On Windows platforms, when event has no handlers attached, the player will display error message dialogs unless this property is set to true. This property only affects Windows builds (NET_WINDOWS). When set to true, errors are only logged and no UI dialogs are shown. ### Debug_Mode Gets or sets a value indicating whether detailed debug logging is enabled. ```csharp public bool Debug_Mode { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, debug mode: - Sets Serilog minimum log level to Debug (instead of Error) - Creates detailed log files in the directory - Enables pipeline graph export via method - Logs include timestamps, thread information, and detailed event data Debug mode should be disabled in production to minimize performance impact and log file size. Changing this property during runtime reconfigures the logger. ### Debug_Telemetry Gets or sets a value indicating whether telemetry data collection is enabled for debugging purposes. ```csharp public bool Debug_Telemetry { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

When enabled and running under a debugger, telemetry includes: - Exception stack traces and breadcrumbs - Environment PATH variables - Application version information - Custom tags for debugging context

Only anonymous data is collected and sent to Sentry. Telemetry is only active when is true. This feature requires a valid Sentry DSN to be configured. Changing this property during runtime reconfigures the logger.

### SDK_BuildDate Gets the build date of the VisioForge SDK. ```csharp public static DateTime SDK_BuildDate { get; } ``` #### Property Value Parameters: - (DateTime): #### Remarks This property provides version tracking and diagnostic information. The build date is extracted from the assembly's build timestamp. ### SDK_Version Gets the version number of the VisioForge SDK. ```csharp public static Version SDK_Version { get; } ``` #### Property Value Parameters: - (Version): #### Remarks This property provides version tracking and compatibility checking. The version is extracted from the assembly's version attribute. Use this to verify SDK compatibility and for support diagnostics. ### State Gets the current playback state of the player. ```csharp public PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): #### Remarks This property reflects the player's current operational state: - : Player is not playing (initial state or after stop) - : Player is actively playing media - : Playback is paused The property implements INotifyPropertyChanged to support data binding in UI frameworks. State changes are managed internally by playback control methods and GStreamer state changes. ### Subtitle_Streams Gets a collection of available subtitle streams in the current media. ```csharp public ObservableCollection Subtitle_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < SubtitleStreamInfo >): #### Remarks This collection is populated after media playback starts and the GStreamer pipeline has parsed the stream information. Each contains metadata such as language, format, and stream identifier. The collection is empty when no media is loaded, before stream information becomes available, or if the media has no subtitle streams. Subscribe to to be notified when stream information is ready. ### Video_Streams Gets a collection of available video streams in the current media. ```csharp public ObservableCollection Video_Streams { get; } ``` #### Property Value Parameters: - (ObservableCollection < VideoStreamInfo >): #### Remarks This collection is populated after media playback starts and the GStreamer pipeline has parsed the stream information. Each contains metadata such as resolution, codec, and stream identifier. The collection is empty when no media is loaded or before stream information becomes available. Subscribe to to be notified when stream information is ready. ## Methods ### Audio_Stream_Select(AudioStreamInfo) Selects and activates a specific audio stream for playback. ```csharp public bool Audio_Stream_Select(AudioStreamInfo stream) ``` #### Parameters Parameters: - stream (AudioStreamInfo): The object representing the audio stream to activate. #### Returns Parameters: - (bool): true if the stream selection was successful; false if the pipeline is not initialized or the stream selection event failed. #### Remarks

This method sends a select-streams event to the GStreamer pipeline to switch the active audio stream. The stream parameter should be obtained from the collection.

Stream selection can be performed during playback without stopping. The change may not be instantaneous depending on buffering and codec switching time. If the current video stream exists, it is preserved during audio stream switching.

Common use cases: - Switching between different language tracks in multi-language content - Selecting between stereo and surround sound audio tracks - Choosing commentary or descriptive audio tracks

### Audio_Streams_Current() Gets the index of the currently playing audio stream. ```csharp public int Audio_Streams_Current() ``` #### Returns Parameters: - (int): The zero-based index of the currently active audio stream, or 0 if the playbin is not initialized. #### Remarks This method queries the current audio stream index from the GStreamer PlayBin3 element. If the pipeline is not initialized, an error is logged and 0 is returned. Use this method to determine which audio stream from the collection is currently active. ### Debug_SavePipeline(string) Saves the current GStreamer pipeline graph to a DOT file for debugging purposes. The file is saved in the debug directory if configured. ```csharp public void Debug_SavePipeline(string name) ``` #### Parameters Parameters: - name (string): The name of the DOT file to create (without extension). ### Dispose(bool) Releases unmanaged and - optionally - managed resources used by the player. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### DisposeAsync() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): A task that represents the asynchronous dispose operation. ### Duration() Gets the total duration of the currently playing media synchronously. ```csharp public TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): The total media duration as a , or if no media is loaded or duration query fails. #### Remarks This method queries the GStreamer pipeline for the media duration in nanoseconds and converts it to milliseconds. Duration may be unavailable or inaccurate for: - Live streams (returns zero or maximum value) - Files with incomplete or missing index information - Certain streaming protocols that don't provide duration metadata If the duration query fails, an error is raised via event. ### DurationAsync() Gets the total duration of the currently playing media asynchronously. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains the media duration, or if duration cannot be determined. #### Remarks Duration may not be available for live streams or certain streaming protocols. The duration is queried from the GStreamer pipeline and may not be accurate for files with variable bitrate or incomplete index. ### ~SimplePlayerCoreX() Finalizes an instance of the class. Ensures resources are released if Dispose was not called explicitly. ```csharp protected ~SimplePlayerCoreX() ``` ### GetContext() Gets the execution context containing logging configuration and GStreamer environment settings. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The instance that manages logging and GStreamer initialization for this player. #### Remarks The context provides access to: - Serilog logger instance - Debug, Info, Warning, and Error logging methods - GStreamer initialization state - Thread-safe logging operations Use this context when you need lower-level access to the player's execution environment. ### GetLogger() Gets the current Serilog logger instance associated with this player for structured logging operations. ```csharp public ILogger GetLogger() ``` #### Returns Parameters: - (ILogger): The instance configured with the player's debug settings. #### Remarks The returned logger is configured based on the and settings. Use this logger to write custom log entries that integrate with the player's logging infrastructure. Log entries are written to both debug output and file (when debug mode is enabled). The logger is automatically reconfigured when debug settings change. ### OnPropertyChanged(string) Raises the PropertyChanged event for data binding support. ```csharp protected virtual void OnPropertyChanged(string propertyName = null) ``` #### Parameters Parameters: - propertyName (string): The name of the property that changed. Automatically populated by CallerMemberName. ### Pause() Pauses media playback synchronously. ```csharp public bool Pause() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully paused; false if no media is loaded or the state change failed. #### Remarks This method transitions the GStreamer pipeline to Paused state, suspending audio and video output while maintaining current position. The player state is updated to before the pipeline state change. If the state change fails, an error is raised via event and the method returns false. ### PauseAsync() Pauses media playback asynchronously. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous pause operation. #### Remarks When paused, the player maintains its current position and can be resumed with or . Audio and video output are suspended, but buffered data is retained. The player state transitions to . ### Position_Get() Gets the current playback position synchronously. ```csharp public TimeSpan Position_Get() ``` #### Returns Parameters: - (TimeSpan): The current playback position as a , or if no media is loaded or position query fails. #### Remarks This method queries the GStreamer pipeline for the current time position. The position is converted from nanoseconds (GStreamer's internal time unit) to milliseconds. Position accuracy depends on the media format and seeking capabilities of the source. ### Position_GetAsync() Gets the current playback position asynchronously. ```csharp public Task Position_GetAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains the current playback position, or if position cannot be determined. #### Remarks The position represents the elapsed time from the start of the media. Position updates continuously during playback and can be used for displaying time information or progress bars. For live streams, the returned position may represent buffered data position rather than actual broadcast time. ### Position_Set(TimeSpan, bool) Seeks to a specific position in the media synchronously. ```csharp public void Position_Set(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target playback position to seek to. - seekToKeyframe (bool): True to seek to the nearest keyframe (faster but less accurate); false for frame-accurate seeking. #### Remarks

This method performs a seek operation with flush semantics, clearing buffered data before seeking. When seekToKeyframe is true, the flag is added to snap to the nearest keyframe.

Keyframe seeking is recommended for: - Quick navigation in large files - Live stream rewind operations - Preview thumbnails generation Frame-accurate seeking is recommended for: - Precise editing operations - Subtitle synchronization - Frame-by-frame analysis

If the seek operation fails, an error is raised via event.

### Position_SetAsync(TimeSpan, bool) Seeks to a specific position in the media asynchronously. ```csharp public Task Position_SetAsync(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target playback position to seek to. - seekToKeyframe (bool): True to seek to the nearest keyframe (faster but less accurate); false for frame-accurate seeking. #### Returns Parameters: - (Task): A task that represents the asynchronous seek operation. #### Remarks Seeking to a keyframe is faster but may result in a position slightly different from the requested position. Frame-accurate seeking is slower but positions more precisely at the requested time. Not all media formats support accurate seeking. Errors during seeking are reported via the event. ### Resume() Resumes paused media playback synchronously. ```csharp public bool Resume() ``` #### Returns Parameters: - (bool): true if the pipeline was successfully resumed; false if no media is loaded or the state change failed. #### Remarks This method transitions the GStreamer pipeline from Paused state back to Playing state. The player state is updated to before the pipeline state change. If the state change fails, an error is raised via event and the method returns false. Playback continues from the position where it was paused. ### ResumeAsync() Resumes paused media playback asynchronously. ```csharp public Task ResumeAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous resume operation. #### Remarks This method resumes playback from the position where it was paused. It should only be called when the player is in state. After resuming, the player state transitions to . ### Start(UniversalSourceSettings) Starts media playback synchronously with the specified settings. ```csharp public bool Start(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The universal source settings containing media URI and playback configuration. #### Returns Parameters: - (bool): true if the GStreamer pipeline was created and started successfully; false if pipeline initialization or state change failed. #### Remarks

This method performs the following operations: - Creates a new PlayBin3 element instance - Configures the media URI from settings - Optionally configures audio stream mixing if is enabled - Attaches bus message handlers for error and state change notifications - Invokes video view initialization - Transitions the pipeline to Playing state

This is a synchronous operation that blocks until the pipeline state change completes. For non-blocking operation, use instead.

### StartAsync(UniversalSourceSettings) Starts media playback asynchronously with the specified settings. ```csharp public Task StartAsync(UniversalSourceSettings settings) ``` #### Parameters Parameters: - settings (UniversalSourceSettings): The universal source settings containing media URI and playback configuration. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if playback started successfully; otherwise, false. #### Remarks This method creates a GStreamer PlayBin3 pipeline, configures it with the specified settings, and starts playback on a background thread. The PlayBin3 element automatically handles format detection, codec selection, and stream management. Use this method when you need to start playback without blocking the calling thread. Subscribe to event to handle playback errors. ### Stop() Stops media playback synchronously and releases GStreamer resources. ```csharp public bool Stop() ``` #### Returns Parameters: - (bool): Always returns true. This method does not fail if resources are already released. #### Remarks This method performs the following operations: - Sets the async flag to false - Transitions the GStreamer pipeline to Null state (if active) - Disposes the PlayBin3 element and releases resources - Sets the player state to This is a synchronous operation that blocks until cleanup completes. For non-blocking operation, use instead. ### StopAsync() Stops media playback asynchronously and releases GStreamer resources. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if playback was stopped successfully; false if the player was already in Free state. #### Remarks This method transitions the GStreamer pipeline to Null state, disposes the PlayBin3 element, and sets the player state to Free. If the player is already stopped ( is ), the method returns immediately. Use this method when you need to stop playback without blocking the calling thread. ### Video_Stream_Select(VideoStreamInfo) Selects and activates a specific video stream for playback. ```csharp public bool Video_Stream_Select(VideoStreamInfo stream) ``` #### Parameters Parameters: - stream (VideoStreamInfo): The object representing the video stream to activate. #### Returns Parameters: - (bool): true if the stream selection was successful; false if the pipeline is not initialized or the stream selection event failed. #### Remarks

This method sends a select-streams event to the GStreamer pipeline to switch the active video stream. The stream parameter should be obtained from the collection.

Stream selection can be performed during playback without stopping. The change may not be instantaneous depending on buffering and codec switching time. Video switching may cause a brief display disruption while the new stream is decoded and rendered.

Common use cases: - Switching between different camera angles in multi-angle content - Selecting between different quality/resolution video tracks - Choosing between main video and picture-in-picture streams

### OnError Event raised when an error occurs during media playback or player operations. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): #### Remarks This event provides error information through , including error level and message. Errors can originate from: - GStreamer pipeline errors (media format issues, missing codecs, I/O errors) - Playback operations (seek failures, state change failures) - Serilog logger errors (when error event propagation is enabled) If no event handler is attached on Windows platforms and is false, error messages will be displayed in dialogs. ### OnStop Event raised when media playback stops, either explicitly via or due to end-of-stream. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): #### Remarks This event is triggered when: - or is called - Media playback reaches the end of the stream (EOS) - An unrecoverable error causes playback to halt After this event, the player enters the state and can be started again with new media. ### OnStreamsInfoAvailable Event raised when media stream information becomes available after playback starts. ```csharp public event EventHandler OnStreamsInfoAvailable ``` #### Event Type Parameters: - (EventHandler < EventArgs >): #### Remarks This event is triggered after the GStreamer pipeline has parsed the media file and extracted stream metadata. At this point, the , , and collections are populated with available streams. Subscribe to this event to perform stream selection, display stream information in UI, or configure stream-specific settings. The event is raised during the initial playback start, not on resume or seek operations. ### PropertyChanged Property changed event. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): ## See Also --- # Namespace VisioForge.Core.SimplePlayerX Link: api/VisioForge.Core.SimplePlayerX.html # Namespace VisioForge.Core.SimplePlayerX # Namespace VisioForge.Core.SimplePlayerX ### Classes Parameters: - (): Provides GStreamer bus message handling for SimplePlayerX, managing PlayBin3 pipeline events and state changes. This partial class handles asynchronous communication from the GStreamer pipeline including video overlay setup, stream collection parsing, error propagation, end-of-stream notifications, and state transition monitoring. Essential for maintaining player state and providing event notifications in the simplified player implementation. Implements the . Implements the . --- # Class TagLibHelper Link: api/VisioForge.Core.TagLibHelper.html # Class TagLibHelper # Class TagLibHelper **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll TagLib helper for tags copying. ```csharp public static class TagLibHelper ``` #### Inheritance #### Inherited Members ## Methods ### CopyTags(File, ILogger) Copies tags from TagLib to VisioForge class. ```csharp public static MediaFileTags CopyTags(File file, ILogger logger = null) ``` #### Parameters Parameters: - file (File): File. - logger (ILogger): Logger?. #### Returns Parameters: - (MediaFileTags): Returns . ### ReadTags(string) Reads tags from file. ```csharp public static MediaFileTags ReadTags(string filename) ``` #### Parameters Parameters: - filename (string): File name. #### Returns Parameters: - (MediaFileTags): Returns MediaFileTags. ### ReadTags(string, ILogger) Reads tags from file. ```csharp public static MediaFileTags ReadTags(string filename, ILogger logger) ``` #### Parameters Parameters: - filename (string): File name. - logger (ILogger): Logger?. #### Returns Parameters: - (MediaFileTags): Returns MediaFileTags. ### WriteTags(MediaFileTags, string, ILogger) Writes tags to output file. ```csharp public static void WriteTags(MediaFileTags tags, string filename, ILogger logger = null) ``` #### Parameters Parameters: - tags (MediaFileTags): The tags. - filename (string): The filename. - logger (ILogger): The logger. --- # Enum DSI3DL2ReverbPreset Link: api/VisioForge.Core.Types.AudioEffects.DSI3DL2ReverbPreset.html # Enum DSI3DL2ReverbPreset # Enum DSI3DL2ReverbPreset **Namespace**: VisioForge.Core.Types.AudioEffects **Assembly**: VisioForge.Core.dll Defines a collection of preset environments for the I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) reverb effect. These presets simulate the acoustic properties of various physical spaces. ```csharp public enum DSI3DL2ReverbPreset ``` ## Fields Parameters: - Default (): Default reverb settings, typically a neutral or balanced environment. - Generic (): A generic, non-specific room acoustic. - Paddedcell (): Simulates a small, highly absorbent room, like a padded cell, with very short reverb. - Room (): Simulates the acoustics of a typical room. - Bathroom (): Simulates the acoustics of a bathroom, characterized by hard, reflective surfaces. - LivingRoom (): Simulates the acoustics of a living room, typically with moderate reflections. - StoneRoom (): Simulates the acoustics of a stone room, with strong, distinct reflections. - Auditorium (): Simulates the acoustics of an auditorium, with a longer, more spacious reverb. - Concerthall (): Simulates the acoustics of a concert hall, providing a rich and expansive reverberation. - Cave (): Simulates the acoustics of a cave, with long, echoing reverberations. - Arena (): Simulates the acoustics of an arena, characterized by very large spaces and long decay times. - Hangar (): Simulates the acoustics of a large, open hangar, with distinct echoes. - CarpetedHallway (): Simulates the acoustics of a carpeted hallway, with minimal reflections. - Hallway (): Simulates the acoustics of a typical hallway. - StoneCorridor (): Simulates the acoustics of a stone corridor, with noticeable echoes. - Alley (): Simulates the acoustics of an alley, with distinct, short echoes. - Forest (): Simulates the acoustics of a forest, with diffused and natural-sounding reflections. - City (): Simulates the acoustics of a city environment, with complex and varied reflections. - Mountains (): Simulates the acoustics of mountains, with very long and expansive echoes. - Quarry (): Simulates the acoustics of a quarry, with strong, hard reflections. - Plain (): Simulates the acoustics of a plain, with minimal reflections. - ParkingLot (): Simulates the acoustics of a parking lot, with distinct, hard echoes. - Sewerpipe (): Simulates the acoustics of a sewer pipe, with a distinct, resonant echo. - Underwater (): Simulates the muffled and resonant acoustics of an underwater environment. - SmallRoom (): Simulates the acoustics of a small room. - MediumRoom (): Simulates the acoustics of a medium-sized room. - LargeRoom (): Simulates the acoustics of a large room. - MediumHall (): Simulates the acoustics of a medium-sized hall. - LargeHall (): Simulates the acoustics of a large hall. - Plate (): Simulates the acoustics of a plate reverb, a classic artificial reverb effect. ## Remarks I3DL2 reverb is used to add spatial realism to audio by simulating reflections and echoes within a virtual environment. Each preset configures parameters like decay time, early reflections, and late reverberation to mimic a specific type of room or space. I3DL2 is an industry-standard reverb specification providing realistic environmental acoustics. The presets range from small enclosed spaces (PaddedCell) to vast open areas (Arena), each with distinct acoustic characteristics. Reverb effects are crucial for game audio, music production, VR applications, and any scenario requiring spatial audio immersion. These presets provide ready-to-use configurations optimized for common acoustic environments without requiring manual parameter tuning. The Default preset provides a neutral starting point for custom adjustments. --- # Namespace VisioForge.Core.Types.AudioEffects Link: api/VisioForge.Core.Types.AudioEffects.html # Namespace VisioForge.Core.Types.AudioEffects # Namespace VisioForge.Core.Types.AudioEffects ### Enums Parameters: - (): Defines a collection of preset environments for the I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) reverb effect. These presets simulate the acoustic properties of various physical spaces. --- # Enum AudioFormat Link: api/VisioForge.Core.Types.AudioFormat.html # Enum AudioFormat # Enum AudioFormat **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines the audio format for raw audio data, specifying whether it is Pulse-Code Modulation (PCM), IEEE floating-point, or encoded. This enumeration is crucial for configuring audio streams and ensuring correct data interpretation throughout the framework. ```csharp public enum AudioFormat ``` ## Fields Parameters: - PCM8 (): 8-bit unsigned integer Pulse-Code Modulation (PCM) format. This format provides a basic level of audio quality. - PCM16 (): 16-bit signed integer PCM format. This is a standard format for CD-quality audio. - PCM24 (): 24-bit signed integer PCM format. Used in professional audio for higher dynamic range. - PCM32 (): 32-bit signed integer PCM format. Offers even greater precision than 24-bit PCM. - IEEE32 (): 32-bit floating-point (IEEE 754) format. Commonly used in audio processing to prevent clipping and preserve quality during intermediate calculations. - Unknown (): Represents an unknown or unspecified audio format. This value is typically used as a default or to indicate an error state. - IEEE64 (): 64-bit double-precision floating-point (IEEE 754) format. Provides the highest level of precision for audio processing, though it is less common and more resource-intensive. - Encoded (): Indicates that the audio data is in a compressed or encoded format (e.g., MP3, AAC), rather than raw PCM samples. ## Remarks Use this enumeration to specify the sample format for audio capture, processing, and playback. When setting up an audio source, select a member of this enum to define the expected audio data format. PCM formats are uncompressed and represent the actual audio waveform as digital samples. IEEE formats use floating-point representation for greater precision in audio processing workflows. The Encoded format indicates that audio data is compressed using a codec such as MP3, AAC, or Opus. --- # Class AudioFrame Link: api/VisioForge.Core.Types.AudioFrame.html # Class AudioFrame # Class AudioFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a single frame of audio data, including its raw data, format information, and timing. This class is used to pass audio data between different components of the framework. ```csharp public class AudioFrame ``` #### Inheritance #### Inherited Members ## Remarks Audio frames encapsulate a buffer of audio samples along with metadata describing the format (channels, sample rate, bit depth) and timing information (presentation timestamp and duration). This class provides both pointer-based access to unmanaged memory and helper methods for working with audio data. When working with the Data pointer, ensure proper memory management to avoid leaks or corruption. ## Constructors ### AudioFrame() Initializes a new instance of the class. A new object is created by default. ```csharp public AudioFrame() ``` ## Properties ### Caps Gets or sets the GStreamer caps string that describes the media format. This is typically used for advanced scenarios involving direct GStreamer pipeline manipulation. ```csharp public string Caps { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks A caps string might look like: "audio/x-raw, format=S16LE, layout=interleaved, rate=44100, channels=2". ### Data Gets or sets a pointer to the raw audio data buffer. ```csharp public nint Data { get; set; } ``` #### Property Value Parameters: - (nint): #### Remarks This pointer provides direct memory access to the audio samples. Handle with care to avoid memory corruption. ### DataSize Gets or sets the size of the audio data buffer in bytes. ```csharp public int DataSize { get; set; } ``` #### Property Value Parameters: - (int): ### Duration Gets or sets the duration of the audio frame. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Info Gets or sets the audio format information for this frame. ```csharp public RAWBaseAudioInfo Info { get; set; } ``` #### Property Value Parameters: - (RAWBaseAudioInfo): #### See Also ### Timestamp Gets or sets the presentation timestamp of the frame. This indicates the time at which the frame should be rendered. ```csharp public TimeSpan Timestamp { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### ClearData() Clears the audio data buffer by setting its contents to zero. This does not release the memory, but overwrites it. ```csharp public void ClearData() ``` ### GetDataArray() Copies the raw audio data from the unmanaged memory buffer into a managed byte array. ```csharp public byte[] GetDataArray() ``` #### Returns Parameters: - (byte [ ]): A new byte array containing the audio data, or null if no data is present. ### ToString() Returns a string that represents the current audio frame, including its timestamp, duration, and data size. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string representation of this instance. --- # Class DataFrame Link: api/VisioForge.Core.Types.DataFrame.html # Class DataFrame # Class DataFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a generic frame of data, which can be used for various media types, not limited to audio or video. This class provides a buffer for raw data along with timing and format information. It includes methods for manual memory management of the underlying data buffer. ```csharp public class DataFrame ``` #### Inheritance #### Inherited Members ## Examples
// Create and populate a data frame
var dataFrame = new DataFrame();
try
{
    byte[] myData = new byte[] { 0x01, 0x02, 0x03, 0x04 };
    dataFrame.Alloc(myData.Length);
    System.Runtime.InteropServices.Marshal.Copy(myData, 0, dataFrame.Data, myData.Length);

    dataFrame.Timestamp = TimeSpan.FromSeconds(5);
    dataFrame.DataType = "CustomMetadata";

    // Use the frame
    ProcessCustomData(dataFrame);
}
finally
{
    // Ensure memory is always freed
    dataFrame.Free();
}
## Remarks This class is particularly useful for handling custom data streams or metadata. The consumer of this class is responsible for allocating and freeing the memory for the data buffer using the and methods. ## Properties ### Caps Gets or sets a GStreamer-style caps string describing the data format. ```csharp public string Caps { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Example: "application/x-custom, format=binary". ### Data Gets or sets a pointer to the raw data buffer. ```csharp public nint Data { get; set; } ``` #### Property Value Parameters: - (nint): #### Remarks This buffer must be managed manually using and . ### DataSize Gets or sets the size of the data buffer in bytes. ```csharp public int DataSize { get; set; } ``` #### Property Value Parameters: - (int): ### DataType Gets or sets a string identifying the type of data in the frame. ```csharp public string DataType { get; set; } ``` #### Property Value Parameters: - (string): #### Examples "Klv", "JsonMetadata" ### Duration Gets or sets the duration of the data frame. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Timestamp Gets or sets the presentation timestamp of the frame. ```csharp public TimeSpan Timestamp { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### Alloc(int) Allocates a block of unmanaged memory of a specified size for the data buffer. ```csharp public void Alloc(int size) ``` #### Parameters Parameters: - size (int): The number of bytes to allocate. ### Free() Frees the unmanaged memory previously allocated for the data buffer. ```csharp public void Free() ``` ### ToArray() Copies the data from the unmanaged buffer into a new managed byte array. ```csharp public byte[] ToArray() ``` #### Returns Parameters: - (byte [ ]): A byte array containing the frame's data. --- # Enum DebugLevel Link: api/VisioForge.Core.Types.DebugLevel.html # Enum DebugLevel # Enum DebugLevel **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the severity level for logging and debug messages. This enumeration is used to filter the verbosity of diagnostic output. ```csharp public enum DebugLevel ``` ## Fields Parameters: - Info (): Informational messages that are useful for tracing application flow and state. This is the most verbose level and is typically used during development and debugging. - Warning (): Indicates a potential issue that is not critical but should be brought to the developer's attention. The application can continue to run, but the issue may lead to problems. - Error (): Indicates a significant problem or error that has occurred. This level is used for issues that may prevent a specific operation from completing or cause application instability. ## Remarks Debug levels allow applications to control the amount of diagnostic information produced during execution. Setting a higher severity level (Error) reduces output to only critical issues, while lower levels (Info) provide detailed tracing. This is typically used with logging frameworks or debug output handlers to manage verbosity in development versus production environments. Messages are generally hierarchical: setting the level to Warning will show both Warning and Error messages, while Info shows all levels. --- # Class AFFaceDetectionEventArgs Link: api/VisioForge.Core.Types.Events.AFFaceDetectionEventArgs.html # Class AFFaceDetectionEventArgs # Class AFFaceDetectionEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for the OnFaceDetected event, containing information about detected faces in a video frame. ```csharp public class AFFaceDetectionEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This class is used to pass details about face detection results, including the bounding rectangles of faces, the raw video frame data, and its properties. It supports platform-specific rectangle and pixel format types. The property allows the event handler to signal if the frame data has been modified and needs to be saved or re-rendered. FaceRectangles array contains bounding boxes for all detected faces in the current frame. Buffer provides direct access to raw video frame data for custom processing or rendering. BufferLen indicates buffer size in bytes, essential for safe memory operations. Width and Height define frame dimensions for coordinate mapping and rendering. PixelFormat identifies color space (RGB, RGBA, YUV, etc.) for proper data interpretation. Platform-specific types (System.Drawing on Windows, custom types on other platforms) ensure optimal integration. Applications can overlay visual feedback (rectangles, labels) or extract face regions for recognition processing. Face detection typically uses Cascade classifiers, HOG+SVM, or deep learning models (MTCNN, RetinaFace). Set UpdateData to true if you modify the buffer to ensure changes are propagated to output or display. Multiple faces generate multiple rectangles in the FaceRectangles array. Events are raised on processing threads, requiring thread-safe handling for UI updates. ## Constructors ### AFFaceDetectionEventArgs(Rect[], nint, int, int, int, PixelFormatX, TimeSpan, TimeSpan, ref bool) Initializes a new instance of the class. ```csharp public AFFaceDetectionEventArgs(Rect[] faceRectangles, nint buffer, int bufferLen, int width, int height, PixelFormatX pixelFormat, TimeSpan startTime, TimeSpan stopTime, ref bool updateData) ``` #### Parameters Parameters: - faceRectangles (Rect [ ]): An array of bounding rectangles for the detected faces. - buffer (nint): A pointer to the raw video frame data. - bufferLen (int): The length of the raw video frame data buffer in bytes. - width (int): The width of the video frame. - height (int): The height of the video frame. - pixelFormat (PixelFormatX): The pixel format of the video frame. - startTime (TimeSpan): The start time of the video frame. - stopTime (TimeSpan): The stop time of the video frame. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. ## Properties ### Buffer Gets a pointer to the raw video frame data buffer where faces were detected. ```csharp public nint Buffer { get; } ``` #### Property Value Parameters: - (nint): ### BufferLen Gets the length of the raw video frame data buffer in bytes. ```csharp public int BufferLen { get; } ``` #### Property Value Parameters: - (int): ### FaceRectangles Gets an array of objects, each representing the bounding box of a detected face. This property is available on non-Windows platforms. ```csharp public Rect[] FaceRectangles { get; } ``` #### Property Value Parameters: - (Rect [ ]): ### Height Gets the height of the video frame in pixels. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### PixelFormat Gets the pixel format of the video frame as a . This property is available on non-Windows platforms. ```csharp public PixelFormatX PixelFormat { get; } ``` #### Property Value Parameters: - (PixelFormatX): ### StartTime Gets the start time of the video frame within the media stream. ```csharp public TimeSpan StartTime { get; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets the stop time of the video frame within the media stream. ```csharp public TimeSpan StopTime { get; } ``` #### Property Value Parameters: - (TimeSpan): ### UpdateData Gets or sets a value indicating whether the video frame data has been updated by the event handler. Set this to true if you modify the data and want the changes to be reflected (e.g., saved to a file or rendered). ```csharp public bool UpdateData { get; set; } ``` #### Property Value Parameters: - (bool): ### Width Gets the width of the video frame in pixels. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): --- # Class AudioFrameBufferEventArgs Link: api/VisioForge.Core.Types.Events.AudioFrameBufferEventArgs.html # Class AudioFrameBufferEventArgs # Class AudioFrameBufferEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that deliver audio frame buffers. This class encapsulates an and additional metadata, allowing it to be passed as an argument in event handlers. ```csharp public class AudioFrameBufferEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event argument is typically used in scenarios where an application needs to process audio data directly, such as for custom audio analysis, visualization, or real-time effects. The property allows the event handler to signal if the frame data has been modified and needs to be saved or re-rendered. Frame property provides access to raw audio data buffer, sample rate, channel count, and timestamp. StreamID identifies which audio stream the frame came from in multi-stream scenarios. UpdateData should be set to true if you modify the audio buffer and want changes reflected in output. Audio frames contain PCM data in various formats (S16LE, F32LE, etc.) requiring appropriate format handling. Sample rate determines temporal resolution (44100Hz=CD quality, 48000Hz=professional, 96000Hz=high-resolution). Channels indicate audio configuration: 1=mono, 2=stereo, 6=5.1 surround, 8=7.1 surround. BPS (bits per sample) affects dynamic range and quality: 16-bit=standard, 24-bit=professional, 32-bit float=maximum precision. Applications can implement custom audio processing: equalizers, compressors, reverb, noise reduction, or audio analysis. Memory management is critical - audio buffers are often reused, so copy data if needed beyond event scope. High sample rates generate frequent events, so handlers must be optimized for real-time performance. Consider buffering and batch processing for computationally expensive audio effects. Events are raised on processing threads, requiring careful synchronization for UI updates or shared resource access. ## Constructors ### AudioFrameBufferEventArgs(nint, int, int, int, int, TimeSpan, AudioFormat, ref bool) Initializes a new instance of the class with raw audio data parameters. ```csharp public AudioFrameBufferEventArgs(nint data, int dataSize, int sampleRate, int channels, int bps, TimeSpan timestamp, AudioFormat audioFormat, ref bool updateData) ``` #### Parameters Parameters: - data (nint): A pointer to the raw audio data buffer. - dataSize (int): The size of the audio data buffer in bytes. - sampleRate (int): The audio sample rate in Hz. - channels (int): The number of audio channels. - bps (int): The bits per sample of the audio data. - timestamp (TimeSpan): The timestamp of the audio frame. - audioFormat (AudioFormat): The format of the audio data. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. ### AudioFrameBufferEventArgs(nint, int, int, int, int, TimeSpan, AudioFormat) Initializes a new instance of the class with raw audio data parameters. ```csharp public AudioFrameBufferEventArgs(nint data, int dataSize, int sampleRate, int channels, int bps, TimeSpan timestamp, AudioFormat audioFormat) ``` #### Parameters Parameters: - data (nint): A pointer to the raw audio data buffer. - dataSize (int): The size of the audio data buffer in bytes. - sampleRate (int): The audio sample rate in Hz. - channels (int): The number of audio channels. - bps (int): The bits per sample of the audio data. - timestamp (TimeSpan): The timestamp of the audio frame. - audioFormat (AudioFormat): The format of the audio data. ### AudioFrameBufferEventArgs(RAWAudioFrame, ref bool) Initializes a new instance of the class with a . ```csharp public AudioFrameBufferEventArgs(RAWAudioFrame frame, ref bool updateData) ``` #### Parameters Parameters: - frame (RAWAudioFrame): The to be encapsulated by these event arguments. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. ### AudioFrameBufferEventArgs(RAWAudioFrame) Initializes a new instance of the class with a . ```csharp public AudioFrameBufferEventArgs(RAWAudioFrame frame) ``` #### Parameters Parameters: - frame (RAWAudioFrame): The to be encapsulated by these event arguments. ### AudioFrameBufferEventArgs(AudioFrame, ref bool) Initializes a new instance of the class with an . ```csharp public AudioFrameBufferEventArgs(AudioFrame frame, ref bool updateData) ``` #### Parameters Parameters: - frame (AudioFrame): The to be encapsulated by these event arguments. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. ### AudioFrameBufferEventArgs(AudioFrame) Initializes a new instance of the class with an . ```csharp public AudioFrameBufferEventArgs(AudioFrame frame) ``` #### Parameters Parameters: - frame (AudioFrame): The to be encapsulated by these event arguments. ## Properties ### Frame Gets the associated with this event. This frame contains the audio data and its metadata. ```csharp public AudioFrame Frame { get; } ``` #### Property Value Parameters: - (AudioFrame): ### StreamID Gets or sets the identifier of the audio stream from which the frame originated. This is useful when handling multiple audio streams. ```csharp public int StreamID { get; set; } ``` #### Property Value Parameters: - (int): ### UpdateData Gets or sets a value indicating whether the audio frame data has been updated by the event handler. Set this to true if you modify the and want the changes to be reflected (e.g., saved to a file or re-rendered). ```csharp public bool UpdateData { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class BarcodeEventArgs Link: api/VisioForge.Core.Types.Events.BarcodeEventArgs.html # Class BarcodeEventArgs # Class BarcodeEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for barcode detection events, containing information about the detected barcode. ```csharp public class BarcodeEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a barcode detection event.
public void OnBarcodeDetected(object sender, BarcodeEventArgs e)
{
    Console.WriteLine($"Barcode Detected! Type: {e.BarcodeType}, Value: {e.Value}");

    if (e.RawBytes != null)
    {
        Console.WriteLine($"  Raw Bytes: {BitConverter.ToString(e.RawBytes)}");
    }

    if (e.Points != null && e.Points.Length > 0)
    {
        Console.WriteLine($"  Points: ");
        foreach (var point in e.Points)
        {
            Console.WriteLine($"    ({point.X}, {point.Y})");
        }
    }

    // Optionally disable the detector after a barcode is found.
    // e.DetectorEnabled = false;
}
## Remarks This class is used to pass details about a barcode that has been successfully detected and decoded from a video frame or image. It includes the barcode type, its decoded value, raw bytes, and optional metadata and corner points. The property allows for temporary disabling of the barcode detector from within the event handler. The BarcodeType property identifies the symbology (QR Code, Code 128, EAN-13, UPC-A, Data Matrix, PDF417, etc.). Value contains the decoded human-readable text extracted from the barcode. RawBytes provides access to the binary-encoded data, which may differ from the text representation for some barcode types. Points array contains the detected corner or control points of the barcode, useful for overlaying visual feedback or cropping. Metadata dictionary provides additional detection information like orientation, character encoding, or error correction level. Timestamp indicates the exact frame time when the barcode was detected, useful for synchronization and logging. DetectorEnabled can be set to false within the event handler to stop further detection after successfully reading a barcode. Multiple barcodes in the same frame will generate separate event invocations. Detection accuracy depends on image quality, resolution, lighting, barcode size, and camera focus. Applications should validate decoded data format and implement checksums or error correction for critical scenarios. These events are typically raised on background processing threads, requiring thread-safe handling and UI marshaling. Consider implementing timeouts or maximum read limits to prevent excessive processing on continuous streams. ## Constructors ### BarcodeEventArgs(BarcodeType, string, IDictionary, TimeSpan, byte[], BarcodeResultPoint[], ref bool) Initializes a new instance of the class. ```csharp public BarcodeEventArgs(BarcodeType barcodeType, string value, IDictionary metadata, TimeSpan timeStamp, byte[] rawBytes, BarcodeResultPoint[] points, ref bool detectorEnabled) ``` #### Parameters Parameters: - barcodeType (BarcodeType): The type of the detected barcode. - value (string): The decoded string value of the barcode. - metadata (IDictionary < BarcodeResultMetadataType , object >): Optional metadata about the barcode detection. - timeStamp (TimeSpan): The timestamp of the frame where the barcode was detected. - rawBytes (byte [ ]): The raw bytes encoded by the barcode. - points (BarcodeResultPoint [ ]): Key points related to the barcode in the image. - detectorEnabled (bool): A reference to a boolean flag indicating if the detector is enabled. Can be set to false to disable the detector. ## Properties ### BarcodeType Gets the type of the detected barcode (e.g., QR Code, EAN-13, Code 39). ```csharp public BarcodeType BarcodeType { get; } ``` #### Property Value Parameters: - (BarcodeType): ### DetectorEnabled Gets or sets a value indicating whether the barcode detector should remain enabled after this event. Setting this to false will temporarily disable the detector. ```csharp public bool DetectorEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Metadata Gets optional metadata about what was detected about the barcode, such as orientation or character set. The keys are of type . ```csharp public IDictionary Metadata { get; } ``` #### Property Value Parameters: - (IDictionary < BarcodeResultMetadataType , object >): ### Points Gets an array of objects representing key points related to the barcode in the image. These are typically points identifying finder patterns or the corners of the barcode, and their exact meaning is specific to the type of barcode that was decoded. ```csharp public BarcodeResultPoint[] Points { get; } ``` #### Property Value Parameters: - (BarcodeResultPoint [ ]): ### RawBytes Gets the raw bytes encoded by the barcode, if applicable and available; otherwise, null. ```csharp public byte[] RawBytes { get; } ``` #### Property Value Parameters: - (byte [ ]): ### Timestamp Gets the timestamp of the video frame or image from which the barcode was detected. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Value Gets the decoded string value of the barcode. ```csharp public string Value { get; } ``` #### Property Value Parameters: - (string): --- # Class CVCarDetectedEventArgs Link: api/VisioForge.Core.Types.Events.CVCarDetectedEventArgs.html # Class CVCarDetectedEventArgs # Class CVCarDetectedEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate the detection of cars in a video frame. This class encapsulates the number of cars detected and the time elapsed during the detection process. ```csharp public class CVCarDetectedEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a car detection event.
public void OnCarDetected(object sender, CVCarDetectedEventArgs e)
{
    Console.WriteLine($"Detected {e.CarsCount} cars in {e.ElapsedTime.TotalMilliseconds} ms.");

    if (e.CarsCount > 0)
    {
        // Perform actions when cars are detected, e.g., log, trigger an alert.
    }
}
## Remarks This event argument is typically used in computer vision applications for traffic monitoring, autonomous driving simulations, or object counting. Car detection uses trained machine learning models (often Haar cascades or deep learning models) to identify vehicle shapes in video frames. The CarsCount property provides the total number of distinct cars detected in the current frame. ElapsedTime indicates the processing time for the detection algorithm, useful for performance monitoring and optimization. Detection accuracy depends on camera angle, lighting conditions, vehicle occlusion, and model training quality. These events are typically raised for each processed frame in real-time video analysis scenarios. Applications can use car counting for traffic flow analysis, parking lot occupancy, or security monitoring. Consider implementing temporal filtering or tracking to reduce false positives from frame-to-frame variations. Performance optimization may involve frame skipping, region-of-interest processing, or lower resolution processing. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVCarDetectedEventArgs(int, TimeSpan) Initializes a new instance of the class. ```csharp public CVCarDetectedEventArgs(int carsCount, TimeSpan elapsedTime) ``` #### Parameters Parameters: - carsCount (int): The number of cars detected. - elapsedTime (TimeSpan): The time taken for detection. ## Properties ### CarsCount Gets the number of cars detected in the current frame. ```csharp public int CarsCount { get; } ``` #### Property Value Parameters: - (int): ### ElapsedTime Gets the time elapsed to perform the car detection operation for the current frame. ```csharp public TimeSpan ElapsedTime { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class CVFaceDetectedEventArgs Link: api/VisioForge.Core.Types.Events.CVFaceDetectedEventArgs.html # Class CVFaceDetectedEventArgs # Class CVFaceDetectedEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate the detection of faces in a video frame. This class encapsulates an array of objects, each representing a detected face, along with the timestamp of the frame. ```csharp public class CVFaceDetectedEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a face detection event.
public void OnFaceDetected(object sender, CVFaceDetectedEventArgs e)
{
    Console.WriteLine($"Faces detected at {e.TimeStamp}: {e.Faces.Length}");

    foreach (var face in e.Faces)
    {
        Console.WriteLine($"  Face: {face.Rectangle} (Confidence: {face.Confidence})");
        // Further process face data, e.g., draw bounding boxes, identify emotions.
    }
}
## Remarks This event argument is typically used in computer vision applications for facial recognition, emotion analysis, or audience engagement tracking. Face detection uses trained machine learning models (Haar cascades, HOG descriptors, or deep learning models like MTCNN, RetinaFace) to locate faces. Each CVFace object contains bounding box coordinates, confidence score, and potentially facial landmarks (eyes, nose, mouth positions). The Faces array may contain multiple faces when several people are visible in the frame. TimeStamp provides temporal context for tracking face movement across frames or synchronizing with other events. Confidence scores help filter false positives by setting appropriate thresholds. Detection accuracy is affected by face angle, lighting conditions, partial occlusion, and image resolution. Applications include access control, attendance tracking, emotion analysis, demographic analytics, and interactive experiences. Consider implementing face tracking across frames to maintain identity consistency and reduce redundant processing. Privacy considerations are important when processing facial data - ensure compliance with applicable regulations (GDPR, CCPA, etc.). Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVFaceDetectedEventArgs(CVFace[], TimeSpan) Initializes a new instance of the class. ```csharp public CVFaceDetectedEventArgs(CVFace[] faces, TimeSpan timeStamp) ``` #### Parameters Parameters: - faces (CVFace [ ]): An array of objects representing the detected faces. - timeStamp (TimeSpan): The timestamp of the frame where faces were detected. ## Properties ### Faces Gets an array of objects, each representing a detected face in the frame. ```csharp public CVFace[] Faces { get; } ``` #### Property Value Parameters: - (CVFace [ ]): ### TimeStamp Gets the timestamp of the video frame at which the faces were detected. ```csharp public TimeSpan TimeStamp { get; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the number of detected faces and details for each face. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class CVHandDetectedEventArgs Link: api/VisioForge.Core.Types.Events.CVHandDetectedEventArgs.html # Class CVHandDetectedEventArgs # Class CVHandDetectedEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate the detection of hands in a video frame. This class encapsulates an array of objects, each representing a detected hand. ```csharp public class CVHandDetectedEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a hand detection event.
public void OnHandDetected(object sender, CVHandDetectedEventArgs e)
{
    Console.WriteLine($"Hands detected: {e.Hands.Length}");

    foreach (var hand in e.Hands)
    {
        Console.WriteLine($"  Hand: {hand.Rectangle} (Gesture: {hand.Gesture})");
        // Further process hand data, e.g., track hand movements, recognize specific gestures.
    }
}
## Remarks This event argument is typically used in computer vision applications for gesture recognition, human-computer interaction, or activity monitoring. Hand detection uses trained machine learning models (Haar cascades, MediaPipe, or deep learning models) to locate hands in video frames. Each CVHand object contains bounding box coordinates, detected gesture type, and optionally hand landmarks (fingertip positions, palm center). The Hands array may contain multiple hands when both hands are visible or multiple people are in the frame. Gesture recognition enables touchless interaction for gaming, presentations, smart home control, and accessibility applications. Common gestures include open palm, closed fist, pointing, thumbs up/down, and custom gesture configurations. Detection accuracy is affected by hand position, orientation, lighting conditions, skin tone, and background complexity. Hand tracking across frames provides smoother interaction and enables gesture sequences or trajectory-based commands. Applications include virtual reality controllers, sign language recognition, medical applications, and industrial control systems. Consider implementing gesture state machines to recognize complex multi-step gestures and reduce false triggers. Performance optimization may involve region-of-interest processing focused on expected hand locations. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVHandDetectedEventArgs(CVHand[]) Initializes a new instance of the class. ```csharp public CVHandDetectedEventArgs(CVHand[] hands) ``` #### Parameters Parameters: - hands (CVHand [ ]): An array of objects representing the detected hands. ## Properties ### Hands Gets an array of objects, each representing a detected hand in the frame. ```csharp public CVHand[] Hands { get; } ``` #### Property Value Parameters: - (CVHand [ ]): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the number of detected hands and details for each hand. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class CVMotionCellsEventArgs Link: api/VisioForge.Core.Types.Events.CVMotionCellsEventArgs.html # Class CVMotionCellsEventArgs # Class CVMotionCellsEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate motion detection based on a grid of cells. This class encapsulates information about which cells have detected motion, along with timing details. ```csharp public class CVMotionCellsEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a motion cells event.
public void OnMotionCellsDetected(object sender, CVMotionCellsEventArgs e)
{
    if (e.IsMotion)
    {
        Console.WriteLine($"Motion detected in cells: {e.Cells}");
        if (e.StartedTime.HasValue)
        {
            Console.WriteLine($"  Motion started at: {e.StartedTime.Value}");
        }
        Console.WriteLine($"  Current time: {e.CurrentTime}");
    }
    else
    {
        Console.WriteLine($"No motion detected at {e.CurrentTime}");
        if (e.FinishedTime.HasValue)
        {
            Console.WriteLine($"  Motion finished at: {e.FinishedTime.Value}");
        }
    }
}
## Remarks This event argument is typically used in surveillance or activity monitoring applications where motion is tracked across defined regions of a video frame. The property provides a string representation of the motion grid, while , , and provide context about the duration and timing of the detected motion. The Cells string represents a grid overlaid on the video frame, with each character indicating motion status for that region. IsMotion indicates whether motion is currently active in the frame. StartedTime marks when a new motion sequence began, useful for measuring motion duration. FinishedTime marks when motion ceased, enabling post-motion actions and duration calculations. CurrentTime provides the frame timestamp for temporal correlation with other events. Grid-based motion detection allows zone-specific monitoring and reduces false positives from irrelevant areas. Applications can define custom response strategies based on which zones show activity. Motion events can trigger recording, alerts, lighting, or other automated responses. Consider implementing motion persistence thresholds to filter brief transient movements. These events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVMotionCellsEventArgs(string, TimeSpan?, TimeSpan?, TimeSpan?, bool) Initializes a new instance of the class. ```csharp public CVMotionCellsEventArgs(string cells, TimeSpan? startedTime, TimeSpan? finishedTime, TimeSpan? currentTime, bool isMotion) ``` #### Parameters Parameters: - cells (string): A string representing the motion cells. - startedTime (TimeSpan ?): The time when motion started (can be null). - finishedTime (TimeSpan ?): The time when motion finished (can be null). - currentTime (TimeSpan ?): The current time of the frame. - isMotion (bool): A boolean indicating if motion is detected. ## Properties ### Cells Gets a string representation of the motion cells, typically a grid where each character represents a cell's motion state. ```csharp public string Cells { get; } ``` #### Property Value Parameters: - (string): ### CurrentTime Gets the current timestamp of the frame being processed. ```csharp public TimeSpan? CurrentTime { get; } ``` #### Property Value Parameters: - (TimeSpan ?): ### FinishedTime Gets the timestamp when motion ceased in the current sequence. This value is available when motion finishes. ```csharp public TimeSpan? FinishedTime { get; } ``` #### Property Value Parameters: - (TimeSpan ?): ### IsMotion Gets a value indicating whether motion is currently detected. ```csharp public bool IsMotion { get; } ``` #### Property Value Parameters: - (bool): ### StartedTime Gets the timestamp when motion was first detected in the current sequence. This value is available when motion starts. ```csharp public TimeSpan? StartedTime { get; } ``` #### Property Value Parameters: - (TimeSpan ?): ## Methods ### ToString() Returns a string that represents the current instance. The string provides a summary of the motion detection status, including cell information and relevant timestamps. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class CVPedestrianDetectedEventArgs Link: api/VisioForge.Core.Types.Events.CVPedestrianDetectedEventArgs.html # Class CVPedestrianDetectedEventArgs # Class CVPedestrianDetectedEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate the detection of pedestrians in a video frame. This class encapsulates an array of objects, each representing the bounding box of a detected pedestrian, along with the time elapsed during the detection process. ```csharp public class CVPedestrianDetectedEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a pedestrian detection event.
public void OnPedestrianDetected(object sender, CVPedestrianDetectedEventArgs e)
{
    Console.WriteLine($"Detected {e.Items.Length} pedestrians in {e.ElapsedTime.TotalMilliseconds} ms.");

    foreach (var rect in e.Items)
    {
        Console.WriteLine($"  Pedestrian at: Left={rect.Left}, Top={rect.Top}, Right={rect.Right}, Bottom={rect.Bottom}");
        // Further process pedestrian data, e.g., track movements, count entries/exits.
    }
}
## Remarks This event argument is typically used in computer vision applications for surveillance, crowd analysis, or autonomous systems. Pedestrian detection uses trained machine learning models (HOG+SVM, R-CNN, YOLO, or similar) to identify human figures in video frames. Each Rect in the Items array defines the bounding box coordinates of a detected pedestrian. The ElapsedTime property indicates processing duration, useful for performance monitoring and optimization. Detection works best with upright pedestrians; accuracy decreases with unusual poses, occlusion, or distance from camera. Applications include people counting, crowd density analysis, security monitoring, traffic safety, and retail analytics. Multiple pedestrians in the same frame generate multiple bounding boxes in the Items array. Consider implementing tracking algorithms to maintain pedestrian identity across frames and reduce redundant processing. False positives can be reduced by applying size filters, confidence thresholds, or temporal consistency checks. Lighting conditions, camera angle, resolution, and pedestrian clothing affect detection reliability. Privacy considerations apply when processing pedestrian data - ensure compliance with applicable regulations. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVPedestrianDetectedEventArgs(Rect[], TimeSpan) Initializes a new instance of the class with detected items and elapsed time. ```csharp public CVPedestrianDetectedEventArgs(Rect[] items, TimeSpan elapsedTime) ``` #### Parameters Parameters: - items (Rect [ ]): An array of objects representing the detected pedestrians. - elapsedTime (TimeSpan): The time taken for detection. ### CVPedestrianDetectedEventArgs(Rect[]) Initializes a new instance of the class with detected items. The will be initialized to . ```csharp public CVPedestrianDetectedEventArgs(Rect[] items) ``` #### Parameters Parameters: - items (Rect [ ]): An array of objects representing the detected pedestrians. ## Properties ### ElapsedTime Gets the time elapsed to perform the pedestrian detection operation for the current frame. ```csharp public TimeSpan ElapsedTime { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Items Gets an array of objects, each representing the bounding box of a detected pedestrian. ```csharp public Rect[] Items { get; } ``` #### Property Value Parameters: - (Rect [ ]): --- # Class CVTemplateMatchEventArgs Link: api/VisioForge.Core.Types.Events.CVTemplateMatchEventArgs.html # Class CVTemplateMatchEventArgs # Class CVTemplateMatchEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate the result of a template matching operation. This class encapsulates the bounding rectangle of the matched area and a confidence score. ```csharp public class CVTemplateMatchEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks Template matching is a technique for finding small parts of an image (templates) within a larger image. This event argument is typically used in computer vision applications for object recognition, tracking, or quality control. The Rectangle property defines the location and size of the best matching region in the source image. The Result property provides a confidence score indicating match quality, with interpretation depending on the matching method. Common matching methods include squared difference, correlation coefficient, and normalized cross-correlation. Higher correlation values (closer to 1.0) typically indicate better matches, while lower squared difference values indicate better matches. Template matching is sensitive to scale, rotation, and lighting variations - templates must closely match target appearance. Applications include logo detection, UI automation, defect detection in manufacturing, and pattern recognition. Multi-scale template matching can improve robustness to size variations by testing templates at different scales. For rotation-invariant matching, consider using feature-based methods instead of template matching. Performance can be optimized by limiting search regions or using image pyramids for coarse-to-fine matching. False positives can be reduced by setting appropriate confidence thresholds based on the matching method used. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### CVTemplateMatchEventArgs(Rect, double) Initializes a new instance of the class. ```csharp public CVTemplateMatchEventArgs(Rect rectangle, double result) ``` #### Parameters Parameters: - rectangle (Rect): The bounding rectangle of the matched area. - result (double): The confidence score of the match. ## Properties ### Rectangle Gets the representing the bounding box of the area in the source image that best matches the template. ```csharp public Rect Rectangle { get; } ``` #### Property Value Parameters: - (Rect): ### Result Gets the match result, which is a confidence score indicating how well the template matched the area. The interpretation of this value depends on the specific template matching method used (e.g., correlation coefficient). ```csharp public double Result { get; } ``` #### Property Value Parameters: - (double): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the matched rectangle and the result score. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class DataFrameEventArgs Link: api/VisioForge.Core.Types.Events.DataFrameEventArgs.html # Class DataFrameEventArgs # Class DataFrameEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that deliver generic data frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. ```csharp public class DataFrameEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a data frame event.
public void OnDataFrameReceived(object sender, DataFrameEventArgs e)
{
    DataFrame dataFrame = e.Frame;

    // Access data and information
    Console.WriteLine($"Data frame received: Size = {dataFrame.DataSize} bytes, Type = {dataFrame.DataType}");

    // Convert data to a byte array for processing
    byte[] dataBytes = dataFrame.ToArray();

    // Process dataBytes based on dataFrame.DataType
    if (dataFrame.DataType == "CustomMetadata")
    {
        // Parse custom metadata
    }
}
## Remarks This event argument is typically used in scenarios where an application needs to process arbitrary data streams, such as metadata, custom protocols, or other non-audio/video data. DataFrame encapsulates raw data buffers with associated metadata like data type, size, and timestamps. Common use cases include processing subtitle streams, closed captions, timecode data, or custom application protocols. The Frame.Data property provides a pointer to the raw data buffer for direct memory access. Frame.DataSize indicates the buffer size in bytes for safe data access and copying. Frame.DataType identifies the data format, enabling appropriate parsing and handling logic. Applications should validate data type and size before processing to ensure correct interpretation. Data frames may contain text, binary, JSON, XML, or any custom format depending on the source. Memory management is important - data buffers may be reused by the framework, so copy data if needed beyond event scope. Consider using Frame.ToArray() to create a managed byte array copy for asynchronous or deferred processing. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### DataFrameEventArgs(nint, int) Initializes a new instance of the class with a pointer to the data and its size. A new instance is created internally. ```csharp public DataFrameEventArgs(nint data, int dataSize) ``` #### Parameters Parameters: - data (nint): A pointer to the raw data buffer. - dataSize (int): The size of the data buffer in bytes. ### DataFrameEventArgs(DataFrame) Initializes a new instance of the class with an existing object. ```csharp public DataFrameEventArgs(DataFrame frame) ``` #### Parameters Parameters: - frame (DataFrame): The to be encapsulated by these event arguments. ## Properties ### Frame Gets the associated with this event. This frame contains the generic data and its metadata. ```csharp public DataFrame Frame { get; } ``` #### Property Value Parameters: - (DataFrame): --- # Class ErrorsEventArgs Link: api/VisioForge.Core.Types.Events.ErrorsEventArgs.html # Class ErrorsEventArgs # Class ErrorsEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for error events, encapsulating details about an error or warning that occurred within the framework. ```csharp public class ErrorsEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for an error event.
public void OnErrorOccurred(object sender, ErrorsEventArgs e)
{
    Console.WriteLine($"[{e.Timestamp}] {e.Level}: {e.Message}");

    if (!string.IsNullOrEmpty(e.CallSite))
    {
        Console.WriteLine($"  Call Site: {e.CallSite}");
    }
    if (!string.IsNullOrEmpty(e.StackTrace))
    {
        Console.WriteLine($"  Stack Trace:{e.StackTrace}");
    }
    if (!string.IsNullOrEmpty(e.AssemblyVersion))
    {
        Console.WriteLine($"  Assembly Version: {e.AssemblyVersion}");
    }

    // Depending on the error level, you might log to a file, display a message to the user, or take corrective action.
    if (e.Level == DebugLevel.Error)
    {
        // Log critical error and potentially shut down or restart a component.
    }
}
## Remarks This class is used to convey diagnostic information, including the severity level, a descriptive message, and contextual details like the call site and stack trace. It is crucial for debugging and monitoring the health of applications built with VisioForge components. The Level property indicates severity (Error, Warning, Info, Debug) allowing appropriate response handling. Timestamp property provides precise timing for correlation with other application events and logs. CallSite and StackTrace properties offer detailed diagnostic information for debugging production issues. AssemblyVersion helps identify which framework version generated the error, useful for version-specific troubleshooting. Error events may be raised from background processing threads, requiring thread-safe handling and UI marshaling. Applications should implement appropriate logging, user notifications, and recovery strategies based on error severity. Critical errors (Level.Error) may require stopping operations, while warnings can often be logged without interruption. Consider integrating with application logging frameworks (Serilog, NLog, etc.) for comprehensive error tracking. ## Constructors ### ErrorsEventArgs(DebugLevel, DateTime, string, string, string, string) Initializes a new instance of the class with full details. ```csharp public ErrorsEventArgs(DebugLevel level, DateTime timestamp, string message, string callsite = "", string assemblyVersion = "", string stackTrace = "") ``` #### Parameters Parameters: - level (DebugLevel): The of the error. - timestamp (DateTime): The when the error occurred. - message (string): The error message text. - callsite (string): The call site where the error originated (optional). - assemblyVersion (string): The version of the assembly where the error occurred (optional). - stackTrace (string): The stack trace of the error (optional). ### ErrorsEventArgs(DebugLevel, string) Initializes a new instance of the class with a specified level and message. The timestamp is set to the current time. ```csharp public ErrorsEventArgs(DebugLevel level, string message) ``` #### Parameters Parameters: - level (DebugLevel): The of the error. - message (string): The error message text. ## Properties ### AssemblyVersion Gets the version of the assembly where the error or event occurred. ```csharp public string AssemblyVersion { get; } ``` #### Property Value Parameters: - (string): ### CallSite Gets the location in the code where the error or event originated. ```csharp public string CallSite { get; } ``` #### Property Value Parameters: - (string): ### Level Gets the severity level of the error or message. ```csharp public DebugLevel Level { get; } ``` #### Property Value Parameters: - (DebugLevel): ### Message Gets a descriptive message about the error or event. ```csharp public string Message { get; } ``` #### Property Value Parameters: - (string): ### StackTrace Gets the stack trace associated with the error, providing details about the call sequence. ```csharp public string StackTrace { get; } ``` #### Property Value Parameters: - (string): ### Timestamp Gets the timestamp when the error or event occurred. ```csharp public DateTime Timestamp { get; } ``` #### Property Value Parameters: - (DateTime): ## Methods ### ToString() Returns a string that represents the current instance. By default, this returns the . ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum FFMPEGSourceMediaType Link: api/VisioForge.Core.Types.Events.FFMPEGSourceMediaType.html # Enum FFMPEGSourceMediaType # Enum FFMPEGSourceMediaType **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Defines the types of media streams that can be found in an FFmpeg source. This enumeration helps categorize different tracks within a multimedia file or stream. ```csharp public enum FFMPEGSourceMediaType ``` ## Fields Parameters: - Unknown (): The media stream type is unknown or not specified. - Video (): The stream contains video data. - Audio (): The stream contains audio data. - Data (): The stream contains generic data, often used for private data or custom formats. - Subtitle (): The stream contains subtitle data. - Attachment (): The stream contains attachment data, such as fonts or images embedded in the media file. - NB (): Represents the number of media types. Not a valid media type itself. ## Remarks These media types are commonly encountered when parsing or processing multimedia containers using FFmpeg-based components. FFmpeg supports a wide variety of container formats (MP4, MKV, AVI, MOV, etc.) which can contain multiple stream types. Video streams contain compressed or raw video frames. Audio streams contain compressed or raw audio samples. Subtitle streams provide text overlays, closed captions, or SDH (Subtitles for Deaf and Hard of hearing). Data streams carry arbitrary data like timecode, metadata, or custom application data. Attachment streams contain embedded files like fonts (used by styled subtitles), cover art, or other resources. NB (Number of types) is used internally for array sizing and iteration, not as an actual media type. Unknown type indicates unrecognized or unsupported stream types that may require special handling. Stream type identification is essential for proper demuxing, decoding, and routing of media data. Applications typically filter streams by type to process only relevant data (e.g., video+audio for playback, subtitles for rendering). Understanding stream types enables multi-track selection, language selection, and advanced media processing workflows. --- # Class FFMPEGSourceTimestampEventArgs Link: api/VisioForge.Core.Types.Events.FFMPEGSourceTimestampEventArgs.html # Class FFMPEGSourceTimestampEventArgs # Class FFMPEGSourceTimestampEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that deliver timestamp information from an FFmpeg source. This class is used to convey the current playback or processing time for different media types within an FFmpeg stream. ```csharp public class FFMPEGSourceTimestampEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event argument is crucial for synchronizing operations with the media timeline, especially when dealing with complex FFmpeg sources that might have multiple streams (video, audio, data, subtitles). It provides timestamps relative to the media stream itself, as well as the demuxer's start time. MediaType indicates which stream type the timestamp applies to (video, audio, subtitle, etc.). Timestamp represents the current position in the media stream, essential for playback synchronization. StreamStartTime provides the starting timestamp of the specific stream, which may differ from the container start time. DemuxerStartTime represents the demuxer's reference start point, used for calculating relative timestamps. Different streams in the same container may have different start times, requiring offset calculations for synchronization. Timestamp events enable precise seeking, position display, synchronization across multiple streams, and frame-accurate editing. Applications can use these events to update progress bars, current time displays, or trigger time-based actions. Timestamps are typically in presentation time stamp (PTS) format, representing when the frame should be displayed/played. Understanding timestamp relationships is crucial for A/V sync, subtitle timing, and accurate media processing. Events are raised frequently during playback or processing, so handlers should be lightweight to avoid performance issues. ## Constructors ### FFMPEGSourceTimestampEventArgs(FFMPEGSourceMediaType, TimeSpan, TimeSpan, TimeSpan) Initializes a new instance of the class. ```csharp public FFMPEGSourceTimestampEventArgs(FFMPEGSourceMediaType mediaType, TimeSpan timestamp, TimeSpan demuxerStartTime, TimeSpan streamStartTime) ``` #### Parameters Parameters: - mediaType (FFMPEGSourceMediaType): The of the media. - timestamp (TimeSpan): The current timestamp of the media. - demuxerStartTime (TimeSpan): The start time of the demuxer. - streamStartTime (TimeSpan): The start time of the specific stream. ## Properties ### DemuxerStartTime Gets the start time of the demuxer, which is the component responsible for splitting the media container into individual streams. ```csharp public TimeSpan DemuxerStartTime { get; } ``` #### Property Value Parameters: - (TimeSpan): ### MediaType Gets the type of the media stream associated with this timestamp. ```csharp public FFMPEGSourceMediaType MediaType { get; } ``` #### Property Value Parameters: - (FFMPEGSourceMediaType): ### StreamStartTime Gets the start time of the specific stream (e.g., video stream, audio stream) within the media file. ```csharp public TimeSpan StreamStartTime { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Timestamp Gets the current timestamp of the media stream. This represents the current position in the media playback or processing. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class LicenseEventArgs Link: api/VisioForge.Core.Types.Events.LicenseEventArgs.html # Class LicenseEventArgs # Class LicenseEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for license-related events, such as license validation or status updates. This class encapsulates the license level and a descriptive message. ```csharp public class LicenseEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event argument is typically used to inform the application about the current licensing status, which might affect available features or require user interaction. The Level property indicates the license tier (Trial, Standard, Professional, Enterprise) which determines feature availability. The Message property provides human-readable information about license status, expiration warnings, or validation errors. Applications should handle license events to enable/disable features based on the license level. License validation may occur at startup, periodically during runtime, or when license files are updated. Trial licenses may have time limitations, feature restrictions, or watermarking enabled. Professional and Enterprise licenses typically unlock advanced features like hardware acceleration, unlimited resolution, or additional codecs. License events can indicate expiration warnings, allowing proactive renewal notifications to users. Invalid or expired licenses may trigger graceful degradation to trial mode rather than application failure. Applications should provide clear user feedback about license status and upgrade options. Consider implementing license caching to avoid repeated validation checks that could impact performance. License validation may require network connectivity for online activation or verification. Events are typically raised on the main thread but verify thread context for UI updates. ## Constructors ### LicenseEventArgs(LicenseLevel, string) Initializes a new instance of the class. ```csharp public LicenseEventArgs(LicenseLevel level, string message) ``` #### Parameters Parameters: - level (LicenseLevel): The of the event. - message (string): The message text describing the license event. ## Properties ### Level Gets the associated with the event. ```csharp public LicenseLevel Level { get; } ``` #### Property Value Parameters: - (LicenseLevel): ### Message Gets a descriptive message related to the license event. ```csharp public string Message { get; } ``` #### Property Value Parameters: - (string): --- # Class MotionDetectionEventArgs Link: api/VisioForge.Core.Types.Events.MotionDetectionEventArgs.html # Class MotionDetectionEventArgs # Class MotionDetectionEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for motion detection events, indicating the level of motion and a matrix representing motion areas. ```csharp public class MotionDetectionEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a motion detection event.
public void OnMotionDetected(object sender, MotionDetectionEventArgs e)
{
    Console.WriteLine($"Motion detected! Level: {e.Level}");

    // The Matrix represents a grid of motion, where each byte corresponds to a cell.
    // A non-zero value indicates motion in that cell.
    if (e.Matrix != null)
    {
        Console.WriteLine("Motion Matrix (first 10 bytes): ");
        for (int i = 0; i < Math.Min(e.Matrix.Length, 10); i++)
        {
            Console.Write($"{e.Matrix[i]} ");
        }
        Console.WriteLine();
    }

    if (e.Level > 50) // Example threshold
    {
        Console.WriteLine("  Significant motion detected!");
        // Trigger an alarm, start recording, etc.
    }
}
## Remarks This class is used to convey information about detected movement within a video frame. The property provides an overall intensity of motion, while the offers a more granular view of where motion occurred within the frame. Motion detection works by analyzing frame-to-frame differences and can be configured with sensitivity thresholds and detection zones. The Level value typically ranges from 0 (no motion) to 100 (maximum motion), though exact interpretation depends on the detection algorithm. The Matrix is a byte array representing a grid overlaid on the video frame, with each element indicating motion intensity in that region. Grid dimensions are determined by the motion detector configuration and affect detection granularity. Applications can use motion events to trigger recording, send alerts, activate lights, or implement interactive features. Zone-based analysis of the Matrix allows different responses based on which areas of the frame show activity. These events may be raised frequently during continuous motion, so handlers should be efficient to avoid performance degradation. Consider implementing debouncing, throttling, or aggregation when processing motion events to reduce computational overhead. Events are typically raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### MotionDetectionEventArgs(int, byte[]) Initializes a new instance of the class. ```csharp public MotionDetectionEventArgs(int level, byte[] matrix) ``` #### Parameters Parameters: - level (int): The motion level. - matrix (byte [ ]): The motion matrix. ## Properties ### Level Gets the overall level or intensity of motion detected. The interpretation of this value depends on the motion detection algorithm used. ```csharp public int Level { get; } ``` #### Property Value Parameters: - (int): ### Matrix Gets a byte array representing a grid or matrix of motion activity. Each element in the array corresponds to a specific area in the video frame, with its value indicating the amount of motion in that area. ```csharp public byte[] Matrix { get; } ``` #### Property Value Parameters: - (byte [ ]): --- # Class MotionDetectionExEventArgs Link: api/VisioForge.Core.Types.Events.MotionDetectionExEventArgs.html # Class MotionDetectionExEventArgs # Class MotionDetectionExEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for extended motion and object detection events. This class offers more detailed information about detected motion, including an overall motion level, detected objects, and a motion grid. ```csharp public class MotionDetectionExEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for an extended motion detection event.
public void OnMotionDetectedEx(object sender, MotionDetectionExEventArgs e)
{
    Console.WriteLine($"Motion Detected (Extended)! Overall Level: {e.Level:F2} ({e.LevelPercent}%)");

    if (e.ObjectsCount > 0)
    {
        Console.WriteLine($"  Detected {e.ObjectsCount} moving objects.");
        foreach (var objRect in e.ObjectRectangles)
        {
            Console.WriteLine($"    Object at: {objRect}");
        }
    }

    if (e.MotionGrid != null)
    {
        Console.WriteLine("  Motion Grid (sample):");
        // Print a small portion of the motion grid for demonstration
        for (int i = 0; i < Math.Min(e.MotionGrid.GetLength(0), 3); i++)
        {
            for (int j = 0; j < Math.Min(e.MotionGrid.GetLength(1), 5); j++)
            {
                Console.Write($"{e.MotionGrid[i, j]:F1} ");
            }
            Console.WriteLine();
        }
    }

    if (e.LevelPercent > 75)
    {
        Console.WriteLine("  High level of activity detected!");
    }
}
## Remarks This event argument is designed for advanced surveillance, security, and analytical applications where precise motion tracking and object identification are required. The property provides a granular view of motion activity across the frame, allowing for detailed analysis of movement patterns. Level property provides overall motion intensity as a float value, while LevelPercent converts it to 0-100 range for easier interpretation. ObjectsCount and ObjectRectangles enable tracking of discrete moving objects detected through blob analysis or object segmentation. MotionGrid is a 2D array where each element represents motion percentage (0.0 to 1.0) in that grid cell. Grid dimensions are configurable and affect detection granularity and processing performance. Applications can implement zone-based alerts, heatmap visualizations, or trajectory tracking using the motion grid data. Object rectangles can be used for targeted tracking, counting, or triggering zone-specific actions. This extended motion detection is more computationally intensive than basic motion detection but provides richer analytical data. Consider adjusting grid resolution based on frame size and processing power - finer grids provide more detail but require more computation. Events are raised on background processing threads, requiring thread-safe handling and UI marshaling. ## Constructors ### MotionDetectionExEventArgs(float, int, Rect[], ref float[,]) Initializes a new instance of the class. ```csharp public MotionDetectionExEventArgs(float level, int objectsCount, Rect[] objectRectangles, ref float[,] motionGrid) ``` #### Parameters Parameters: - level (float): The overall motion level. - objectsCount (int): The number of detected objects. - objectRectangles (Rect [ ]): An array of rectangles for detected moving objects. - motionGrid (float [ , ]): A 2D array representing the motion levels of each grid cell. ## Properties ### Level Gets the overall motion level, typically a floating-point value representing the intensity or percentage of change. ```csharp public float Level { get; } ``` #### Property Value Parameters: - (float): ### LevelPercent Gets the overall motion level as a percentage (0-100). This is derived from the property. ```csharp public int LevelPercent { get; } ``` #### Property Value Parameters: - (int): ### MotionGrid Gets a 2D array representing the motion levels of each cell in a grid overlaying the video frame. Each element (float) indicates the percentage of change within that specific grid cell (e.g., 0.2 means 20% change). The dimensions of the array correspond to the configured grid height and width. ```csharp public float[,] MotionGrid { get; } ``` #### Property Value Parameters: - (float [ , ]): ### ObjectRectangles Gets an array of objects, representing the bounding boxes of detected moving objects. This is typically used with blob counting or object tracking processors. ```csharp public Rect[] ObjectRectangles { get; } ``` #### Property Value Parameters: - (Rect [ ]): ### ObjectsCount Gets the total number of moving objects detected. ```csharp public int ObjectsCount { get; } ``` #### Property Value Parameters: - (int): --- # Class ProgressEventArgs Link: api/VisioForge.Core.Types.Events.ProgressEventArgs.html # Class ProgressEventArgs # Class ProgressEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for progress update events, indicating the completion percentage of an operation. ```csharp public class ProgressEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a progress event.
public void OnProgressUpdate(object sender, ProgressEventArgs e)
{
    Console.WriteLine($"Operation progress: {e.Progress}%");

    // Update a progress bar in a UI application.
    // progressBar.Value = e.Progress;

    if (e.Progress == 100)
    {
        Console.WriteLine("Operation completed!");
    }
}
## Remarks This class is typically used to update user interfaces (e.g., progress bars) or log the progress of long-running tasks like file conversions, downloads, or processing. Progress value ranges from 0 (operation started) to 100 (operation completed). Events are raised periodically during lengthy operations to provide real-time feedback to users. Applications should update UI elements like progress bars, percentage labels, or estimated time remaining displays. Progress events help prevent applications from appearing frozen during long-running operations. Consider throttling UI updates if progress events are raised very frequently to avoid performance degradation. The frequency of progress updates depends on the operation type and may vary from every few frames to every second. Progress value of 100 indicates completion, but applications should still wait for completion events before cleanup. For operations that may fail, progress reaching 100 doesn't guarantee success - check stop or completion events for status. Progress events are typically raised on background threads, so UI updates must be marshaled to the appropriate thread. Long operations include video transcoding, file downloads, media analysis, or batch processing tasks. ## Constructors ### ProgressEventArgs(int) Initializes a new instance of the class. ```csharp public ProgressEventArgs(int progress) ``` #### Parameters Parameters: - progress (int): The progress value in percentage (0-100). ## Properties ### Progress Gets the current progress of the operation, expressed as a percentage (0-100). ```csharp public int Progress { get; } ``` #### Property Value Parameters: - (int): --- # Class SilenceDetectionEventArgs Link: api/VisioForge.Core.Types.Events.SilenceDetectionEventArgs.html # Class SilenceDetectionEventArgs # Class SilenceDetectionEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Event arguments for silence detection events that are raised when silence starts or ends in an audio stream. Provides detailed information about the timing and characteristics of the detected silence period, enabling applications to respond to audio level changes in real-time for recording, streaming, or analysis purposes. ```csharp public class SilenceDetectionEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Constructors ### SilenceDetectionEventArgs(TimeSpan, bool, double, double, SilencePeriod) Initializes a new instance of the class for a silence start or end event. ```csharp public SilenceDetectionEventArgs(TimeSpan timestamp, bool isSilenceStart, double levelDb, double thresholdDb, SilencePeriod period = null) ``` #### Parameters Parameters: - timestamp (TimeSpan): The timestamp of the event. - isSilenceStart (bool): True if this is a silence start event, false for silence end. - levelDb (double): The audio level in decibels at the time of the event. - thresholdDb (double): The silence detection threshold in decibels. - period (SilencePeriod): The completed silence period (for silence end events only), or null. ## Properties ### IsSilenceStart Gets a value indicating whether this event represents the start of a silence period. True for silence start events, false for silence end events. ```csharp public bool IsSilenceStart { get; } ``` #### Property Value Parameters: - (bool): ### LevelDb Gets the audio level in decibels (dB) at the time of this event. This is the RMS level that triggered the silence state change. ```csharp public double LevelDb { get; } ``` #### Property Value Parameters: - (double): ### Period Gets the complete silence period information when silence ends. This property is only populated for silence end events and contains the start time, end time, and duration of the completed silence period. Returns null for silence start events. ```csharp public SilencePeriod Period { get; } ``` #### Property Value Parameters: - (SilencePeriod): ### ThresholdDb Gets the configured silence detection threshold in decibels (dB). Audio levels below this threshold are considered silence. ```csharp public double ThresholdDb { get; } ``` #### Property Value Parameters: - (double): ### Timestamp Gets the timestamp of the silence detection event in the audio stream. For silence start events, this is when audio level dropped below threshold. For silence end events, this is when audio level rose above threshold. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class StopEventArgs Link: api/VisioForge.Core.Types.Events.StopEventArgs.html # Class StopEventArgs # Class StopEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that indicate a media operation has stopped. This class encapsulates information about the success of the operation and the final position reached. ```csharp public class StopEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event argument is typically used to signal the completion or interruption of playback, recording, or other media processing tasks. It allows the application to react to the stopping event, check its success, and determine the last known position. The Successful property indicates whether the operation completed normally (true) or was interrupted by an error (false). Position property provides the final media position, useful for resuming playback or determining how much content was processed. In Video Edit SDK context, Successful indicates if conversion or processing finished without errors. In Media Player SDK context, Position indicates the last played position before stopping. Stop events can be triggered by user actions (stop button), completion (end of file), or errors (format issues, missing codecs). Applications should perform cleanup operations in response to stop events, such as releasing resources or resetting UI state. For failed operations (Successful=false), check error events for detailed failure information. Stop events are typically raised on the main thread but verify thread context before updating UI elements. Consider saving Position for resume functionality in media players or progress tracking in editors. ## Constructors ### StopEventArgs(bool, TimeSpan) Initializes a new instance of the class with success status and position. ```csharp public StopEventArgs(bool successful, TimeSpan position) ``` #### Parameters Parameters: - successful (bool): A boolean indicating if the operation was successful. - position (TimeSpan): The representing the position when the operation stopped. ### StopEventArgs(bool) Initializes a new instance of the class with only the success status. The will be initialized to . ```csharp public StopEventArgs(bool successful) ``` #### Parameters Parameters: - successful (bool): A boolean indicating if the operation was successful. ### StopEventArgs(TimeSpan) Initializes a new instance of the class with only the current position. The status will be set to true by default. ```csharp public StopEventArgs(TimeSpan position) ``` #### Parameters Parameters: - position (TimeSpan): The representing the position when the operation stopped. ### StopEventArgs() Initializes a new instance of the class with default values. is true and is . ```csharp public StopEventArgs() ``` ## Properties ### Position Gets the current position in the media stream when the operation stopped. This is typically used in the context of the Media Player SDK to indicate the last played position. ```csharp public TimeSpan Position { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Successful Gets a value indicating whether the media operation completed successfully. This is often used in the context of the Video Edit SDK to indicate if a conversion or processing task finished without errors. ```csharp public bool Successful { get; } ``` #### Property Value Parameters: - (bool): --- # Class VideoFrameBufferEventArgs Link: api/VisioForge.Core.Types.Events.VideoFrameBufferEventArgs.html # Class VideoFrameBufferEventArgs # Class VideoFrameBufferEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Provides data for events that deliver video frame buffers. This class encapsulates a and additional metadata, allowing it to be passed as an argument in event handlers. ```csharp public class VideoFrameBufferEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a video frame buffer event.
public void OnVideoFrameBufferReceived(object sender, VideoFrameBufferEventArgs e)
{
    VideoFrame videoFrame = e.Frame;

    // Access video data and information
    Console.WriteLine($"Video frame received: {videoFrame.Info.Width}x{videoFrame.Info.Height}, Timestamp = {videoFrame.Timestamp}, Stream Type = {e.SourceStream}");

    // If you modify the frame data (e.g., draw on it), set UpdateData to true.
    // e.UpdateData = true;

    // Important: If the VideoFrame.Data was allocated by a native component,
    // ensure it is freed when no longer needed, typically by the component that allocated it.
}
## Remarks This event argument is typically used in scenarios where an application needs to process video data directly, such as for custom video analysis, rendering, or real-time effects. The property allows the event handler to signal if the frame data has been modified and needs to be saved or re-rendered. Frame property provides access to raw video data buffer, dimensions, color space, and timestamp. FrameArray provides an optional managed byte array copy of the frame data for easier manipulation. FrameRate indicates the video stream's frame rate, important for proper timing and playback. UpdateData should be set to true if you modify the frame buffer and want changes reflected in output. SourceStream identifies which video source the frame came from in multi-stream scenarios. SourceName and FourCC provide additional metadata about the video source and format. Applications can implement custom video processing: overlays, filters, color corrections, analysis, or computer vision. Frame data is typically in raw format (RGB, YUV, etc.) requiring appropriate color space handling. Memory management is critical - frame buffers are often reused, so copy data if needed beyond event scope. High-resolution or high-framerate video generates frequent events, so handlers must be optimized for performance. Consider offloading heavy processing to background threads while ensuring thread-safe buffer access. Events are raised on processing threads, requiring careful synchronization for UI updates or shared resource access. ## Constructors ### VideoFrameBufferEventArgs(nint, int, int, int, int, RAWVideoColorSpace, VideoFrameRate, TimeSpan, ref bool, VideoStreamType) Initializes a new instance of the class with raw video data parameters. ```csharp public VideoFrameBufferEventArgs(nint data, int dataSize, int width, int height, int stride, RAWVideoColorSpace colorSpace, VideoFrameRate frameRate, TimeSpan timestamp, ref bool updateData, VideoStreamType sourceStream) ``` #### Parameters Parameters: - data (nint): A pointer to the raw video data buffer. - dataSize (int): The size of the video data buffer in bytes. - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. If 0, it will be calculated based on color space and width. - colorSpace (RAWVideoColorSpace): The color space of the video frame. - frameRate (VideoFrameRate): The frame rate of the video stream. - timestamp (TimeSpan): The timestamp of the video frame. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. - sourceStream (VideoStreamType): The type of the source video stream. ### VideoFrameBufferEventArgs(ref RAWVideoFrame, VideoFrameRate, ref bool, VideoStreamType) Initializes a new instance of the class with a . ```csharp public VideoFrameBufferEventArgs(ref RAWVideoFrame frame, VideoFrameRate frameRate, ref bool updateData, VideoStreamType sourceStream = VideoStreamType.Main) ``` #### Parameters Parameters: - frame (RAWVideoFrame): The to be encapsulated by these event arguments. - frameRate (VideoFrameRate): The frame rate of the video stream. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. - sourceStream (VideoStreamType): The type of the source video stream (defaults to ). ### VideoFrameBufferEventArgs(VideoFrame, VideoFrameRate, ref bool, VideoStreamType) Initializes a new instance of the class with an existing . ```csharp public VideoFrameBufferEventArgs(VideoFrame frame, VideoFrameRate frameRate, ref bool updateData, VideoStreamType sourceStream = VideoStreamType.Main) ``` #### Parameters Parameters: - frame (VideoFrame): The to be encapsulated by these event arguments. - frameRate (VideoFrameRate): The frame rate of the video stream. - updateData (bool): A reference to a boolean flag indicating if the data has been updated. - sourceStream (VideoStreamType): The type of the source video stream (defaults to ). ## Properties ### FourCC Gets or sets the FourCC code of the video format (optional). ```csharp public string FourCC { get; set; } ``` #### Property Value Parameters: - (string): ### Frame Gets the associated with this event. This frame contains the video data and its metadata. ```csharp public VideoFrame Frame { get; } ``` #### Property Value Parameters: - (VideoFrame): ### FrameArray Gets the video frame data as a byte array. This property can be null if the data is not directly copied to a managed array. ```csharp public byte[] FrameArray { get; } ``` #### Property Value Parameters: - (byte [ ]): ### FrameRate Gets the frame rate of the video stream. ```csharp public VideoFrameRate FrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### SourceName Gets or sets the name of the source from which the frame originated (optional). ```csharp public string SourceName { get; set; } ``` #### Property Value Parameters: - (string): ### SourceStream Gets or sets the type of the source video stream from which the frame originated. ```csharp public VideoStreamType SourceStream { get; set; } ``` #### Property Value Parameters: - (VideoStreamType): ### UpdateData Set this to true if you modify the and want the changes to be reflected (e.g., saved to a file or re-rendered). ```csharp public bool UpdateData { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class VideoFrameXBufferEventArgs Link: api/VisioForge.Core.Types.Events.VideoFrameXBufferEventArgs.html # Class VideoFrameXBufferEventArgs # Class VideoFrameXBufferEventArgs **Namespace**: VisioForge.Core.Types.Events **Assembly**: VisioForge.Core.dll Video frame buffer event args (for X engines). Implements the . ```csharp public class VideoFrameXBufferEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Constructors ### VideoFrameXBufferEventArgs(nint, int, int, int, int, VideoFormatX, VideoFrameRate, TimeSpan, ref bool) Initializes a new instance of the class. ```csharp public VideoFrameXBufferEventArgs(nint data, int dataSize, int width, int height, int stride, VideoFormatX format, VideoFrameRate frameRate, TimeSpan timestamp, ref bool updateData) ``` #### Parameters Parameters: - data (nint): The data. - dataSize (int): Size of the data. - width (int): The width. - height (int): The height. - stride (int): The stride. - format (VideoFormatX): The format. - frameRate (VideoFrameRate): The frame rate. - timestamp (TimeSpan): The timestamp. - updateData (bool): if set to true update data. ### VideoFrameXBufferEventArgs(VideoFrameX, ref bool) Initializes a new instance of the class. ```csharp public VideoFrameXBufferEventArgs(VideoFrameX frame, ref bool updateData) ``` #### Parameters Parameters: - frame (VideoFrameX): The frame. - updateData (bool): if set to true update data. ### VideoFrameXBufferEventArgs(VideoFrameX) Initializes a new instance of the class. ```csharp public VideoFrameXBufferEventArgs(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The frame. ## Properties ### Frame Gets frame. ```csharp public VideoFrameX Frame { get; } ``` #### Property Value Parameters: - (VideoFrameX): ### UpdateData Gets or sets a value indicating whether frame has been updates and changes must be saved. ```csharp public bool UpdateData { get; set; } ``` #### Property Value Parameters: - (bool): ## See Also --- # Namespace VisioForge.Core.Types.Events Link: api/VisioForge.Core.Types.Events.html # Namespace VisioForge.Core.Types.Events # Namespace VisioForge.Core.Types.Events ### Classes Parameters: - (): Provides data for the OnFaceDetected event, containing information about detected faces in a video frame. - (): Provides data for events that deliver audio frame buffers. This class encapsulates an and additional metadata, allowing it to be passed as an argument in event handlers. - (): Provides data for barcode detection events, containing information about the detected barcode. - (): Provides data for events that indicate the detection of cars in a video frame. This class encapsulates the number of cars detected and the time elapsed during the detection process. - (): Provides data for events that indicate the detection of faces in a video frame. This class encapsulates an array of objects, each representing a detected face, along with the timestamp of the frame. - (): Provides data for events that indicate the detection of hands in a video frame. This class encapsulates an array of objects, each representing a detected hand. - (): Provides data for events that indicate motion detection based on a grid of cells. This class encapsulates information about which cells have detected motion, along with timing details. - (): Provides data for events that indicate the detection of pedestrians in a video frame. This class encapsulates an array of objects, each representing the bounding box of a detected pedestrian, along with the time elapsed during the detection process. - (): Provides data for events that indicate the result of a template matching operation. This class encapsulates the bounding rectangle of the matched area and a confidence score. - (): Provides data for events that deliver generic data frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. - (): Provides data for error events, encapsulating details about an error or warning that occurred within the framework. - (): Provides data for events that deliver timestamp information from an FFmpeg source. This class is used to convey the current playback or processing time for different media types within an FFmpeg stream. - (): Provides data for license-related events, such as license validation or status updates. This class encapsulates the license level and a descriptive message. - (): Provides data for motion detection events, indicating the level of motion and a matrix representing motion areas. - (): Provides data for extended motion and object detection events. This class offers more detailed information about detected motion, including an overall motion level, detected objects, and a motion grid. - (): Provides data for progress update events, indicating the completion percentage of an operation. - (): Event arguments for silence detection events that are raised when silence starts or ends in an audio stream. Provides detailed information about the timing and characteristics of the detected silence period, enabling applications to respond to audio level changes in real-time for recording, streaming, or analysis purposes. - (): Provides data for events that indicate a media operation has stopped. This class encapsulates information about the success of the operation and the final position reached. - (): Provides data for events that deliver video frame buffers. This class encapsulates a and additional metadata, allowing it to be passed as an argument in event handlers. - (): Video frame buffer event args (for X engines). Implements the . ### Enums Parameters: - (): Defines the types of media streams that can be found in an FFmpeg source. This enumeration helps categorize different tracks within a multimedia file or stream. --- # Enum FFMPEGCodecID Link: api/VisioForge.Core.Types.FFMPEGCodecID.html # Enum FFMPEGCodecID # Enum FFMPEGCodecID **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines a comprehensive list of codec identifiers from the FFmpeg library. These IDs are used to uniquely identify specific audio, video, subtitle, and data compression formats. ```csharp public enum FFMPEGCodecID ``` ## Fields Parameters: - AV_CODEC_ID_NONE (): No codec or unrecognized codec. - AV_CODEC_ID_MPEG1VIDEO (): MPEG-1 video codec. - AV_CODEC_ID_MPEG2VIDEO (): MPEG-2 video codec (preferred ID for MPEG-1/2 video decoding). - AV_CODEC_ID_H261 (): H.261 video codec. - AV_CODEC_ID_H263 (): H.263 video codec. - AV_CODEC_ID_RV10 (): RealVideo 1.0 codec. - AV_CODEC_ID_RV20 (): RealVideo 2.0 codec. - AV_CODEC_ID_MJPEG (): Motion JPEG codec. - AV_CODEC_ID_MJPEGB (): MJPEG-B codec (similar to Motion JPEG). - AV_CODEC_ID_LJPEG (): Lossless JPEG codec. - AV_CODEC_ID_SP5X (): SP5X codec. - AV_CODEC_ID_JPEGLS (): JPEG-LS codec. - AV_CODEC_ID_MPEG4 (): MPEG-4 video codec. - AV_CODEC_ID_RAWVIDEO (): Raw video codec. - AV_CODEC_ID_MSMPEG4V1 (): Microsoft MPEG-4 version 1 codec. - AV_CODEC_ID_MSMPEG4V2 (): Microsoft MPEG-4 version 2 codec. - AV_CODEC_ID_MSMPEG4V3 (): Microsoft MPEG-4 version 3 codec. - AV_CODEC_ID_WMV1 (): Windows Media Video 7 codec. - AV_CODEC_ID_WMV2 (): Windows Media Video 8 codec. - AV_CODEC_ID_H263P (): H.263+ video codec. - AV_CODEC_ID_H263I (): H.263 interlaced codec. - AV_CODEC_ID_FLV1 (): FLV1 (Flash Video) codec. - AV_CODEC_ID_SVQ1 (): Sorenson Vector Quantizer 1 codec. - AV_CODEC_ID_SVQ3 (): Sorenson Vector Quantizer 3 codec. - AV_CODEC_ID_DVVIDEO (): DV video codec. - AV_CODEC_ID_HUFFYUV (): Huffyuv codec (lossless). - AV_CODEC_ID_CYUV (): Creative YUV (CYUV) codec. - AV_CODEC_ID_H264 (): H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10. - AV_CODEC_ID_INDEO3 (): Indeo 3 video codec. - AV_CODEC_ID_VP3 (): On2 VP3 video codec. - AV_CODEC_ID_THEORA (): Theora video codec. - AV_CODEC_ID_ASV1 (): ASUS V1 video codec. - AV_CODEC_ID_ASV2 (): ASUS V2 video codec. - AV_CODEC_ID_FFV1 (): FFV1 (FFmpeg's lossless video codec). - AV_CODEC_ID_4XM (): 4X Movie video codec. - AV_CODEC_ID_VCR1 (): VCR1 codec. - AV_CODEC_ID_CLJR (): Cirrus Logic AccuPak codec. - AV_CODEC_ID_MDEC (): Sony PlayStation MDEC (Motion DECoder). - AV_CODEC_ID_ROQ (): Id RoQ video codec. - AV_CODEC_ID_INTERPLAY_VIDEO (): Interplay MVE video codec. - AV_CODEC_ID_XAN_WC3 (): Wing Commander III / Xan video codec. - AV_CODEC_ID_XAN_WC4 (): Wing Commander IV / Xan video codec. - AV_CODEC_ID_RPZA (): QuickTime RPZA (Road Pizza) codec. - AV_CODEC_ID_CINEPAK (): Cinepak video codec. - AV_CODEC_ID_WS_VQA (): Westwood VQA video codec. - AV_CODEC_ID_MSRLE (): Microsoft RLE codec. - AV_CODEC_ID_MSVIDEO1 (): Microsoft Video 1 codec. - AV_CODEC_ID_IDCIN (): id Quake II CIN video (IDCIN). - AV_CODEC_ID_8BPS (): Planar RGB (8BPS). - AV_CODEC_ID_SMC (): QuickTime Graphics (SMC). - AV_CODEC_ID_FLIC (): Autodesk Animator Flic video codec. - AV_CODEC_ID_TRUEMOTION1 (): Duck TrueMotion 1.0 video codec. - AV_CODEC_ID_VMDVIDEO (): Sierra VMD video codec. - AV_CODEC_ID_MSZH (): LCL (LossLess Codec Library) MSZH. - AV_CODEC_ID_ZLIB (): LCL (LossLess Codec Library) ZLIB. - AV_CODEC_ID_QTRLE (): QuickTime RLE video codec. - AV_CODEC_ID_TSCC (): TechSmith Screen Capture Codec (TSCC). - AV_CODEC_ID_ULTI (): Ut Video (Ulti) codec (for older TechSmith encodes). - AV_CODEC_ID_QDRAW (): QuickDraw codec (QD). - AV_CODEC_ID_VIXL (): VIXL codec. - AV_CODEC_ID_QPEG (): QPEG codec. - AV_CODEC_ID_PNG (): PNG image codec. - AV_CODEC_ID_PPM (): Portable Pixmap (PPM) image codec. - AV_CODEC_ID_PBM (): Portable Bitmap (PBM) image codec. - AV_CODEC_ID_PGM (): Portable GrayMap (PGM) image codec. - AV_CODEC_ID_PGMYUV (): Portable GrayMap with YUV (PGMYUV) image codec. - AV_CODEC_ID_PAM (): Portable AnyMap (PAM) image codec. - AV_CODEC_ID_FFVHUFF (): FFVHuff codec (Huffyuv with FFmpeg enhancements). - AV_CODEC_ID_RV30 (): RealVideo 3.0 codec. - AV_CODEC_ID_RV40 (): RealVideo 4.0 codec. - AV_CODEC_ID_VC1 (): SMPTE VC-1 codec. - AV_CODEC_ID_WMV3 (): Windows Media Video 9 codec. - AV_CODEC_ID_LOCO (): LOCO video codec. - AV_CODEC_ID_WNV1 (): Winnov WNV1 codec. - AV_CODEC_ID_AASC (): Autodesk RLE (AASC) codec. - AV_CODEC_ID_INDEO2 (): Indeo 2 video codec. - AV_CODEC_ID_FRAPS (): FRAPS video codec. - AV_CODEC_ID_TRUEMOTION2 (): Duck TrueMotion 2 video codec. - AV_CODEC_ID_BMP (): BMP (Windows and OS/2 bitmap) codec. - AV_CODEC_ID_CSCD (): CamStudio (CSCD) video codec. - AV_CODEC_ID_MMVIDEO (): American Laser Games MM Video codec. - AV_CODEC_ID_ZMBV (): Zip Motion Blocks Video codec. - AV_CODEC_ID_AVS (): AVS Video codec (Chinese AVS1-P2). - AV_CODEC_ID_SMACKVIDEO (): Smacker video codec. - AV_CODEC_ID_NUV (): NuppelVideo/RTJPEG video codec. - AV_CODEC_ID_KMVC (): Karl Morton's video codec (KMVC). - AV_CODEC_ID_FLASHSV (): Flash Screen Video codec. - AV_CODEC_ID_CAVS (): Chinese AVS (Audio Video Standard) video codec. - AV_CODEC_ID_JPEG2000 (): JPEG 2000 (ISO/IEC 15444-1). - AV_CODEC_ID_VMNC (): VMware Screen Codec / VMware Video. - AV_CODEC_ID_VP5 (): On2 VP5 video codec. - AV_CODEC_ID_VP6 (): On2 VP6 video codec. - AV_CODEC_ID_VP6F (): On2 VP6 (Flash version) video codec. - AV_CODEC_ID_TARGA (): Truevision Targa image codec. - AV_CODEC_ID_DSICINVIDEO (): DSICIN (Delphine Software International CIN) video codec. - AV_CODEC_ID_TIERTEXSEQVIDEO (): Tiertex Limited SEQ video codec. - AV_CODEC_ID_TIFF (): TIFF (Tag Image File Format) image codec. - AV_CODEC_ID_GIF (): GIF (Graphics Interchange Format) codec. - AV_CODEC_ID_DXA (): Feeble Files/ScummVM DXA codec. - AV_CODEC_ID_DNXHD (): VC3/DNxHD (SMPTE VC-3) codec. - AV_CODEC_ID_THP (): THP (Nintendo GameCube) video codec. - AV_CODEC_ID_SGI (): SGI image codec. - AV_CODEC_ID_C93 (): Interplay C93 video codec. - AV_CODEC_ID_BETHSOFTVID (): Bethesda Softworks VID video codec. - AV_CODEC_ID_PTX (): V.Flash PTX format image codec. - AV_CODEC_ID_TXD (): Renderware TXD (TeXture Dictionary) image codec. - AV_CODEC_ID_VP6A (): On2 VP6A (with alpha channel) video codec. - AV_CODEC_ID_AMV (): AMV video codec. - AV_CODEC_ID_VB (): Beam Software VB video codec. - AV_CODEC_ID_PCX (): ZSoft PC Paintbrush PCX image codec. - AV_CODEC_ID_SUNRAST (): Sun Rasterfile (SUNRAST) image codec. - AV_CODEC_ID_INDEO4 (): Indeo 4 video codec. - AV_CODEC_ID_INDEO5 (): Indeo 5 video codec. - AV_CODEC_ID_MIMIC (): Mimic video codec. - AV_CODEC_ID_RL2 (): RL2 video codec. - AV_CODEC_ID_ESCAPE124 (): Escape 124 video codec. - AV_CODEC_ID_DIRAC (): Dirac video codec (wavelet-based). - AV_CODEC_ID_BFI (): Brute Force & Ignorance (BFI) video codec. - AV_CODEC_ID_CMV (): Sega FILM/CPK video codec (CMV). - AV_CODEC_ID_MOTIONPIXELS (): Motion Pixels video codec. - AV_CODEC_ID_TGV (): Electronic Arts TGV video codec. - AV_CODEC_ID_TGQ (): Electronic Arts TGQ video codec. - AV_CODEC_ID_TQI (): Electronic Arts TQI video codec. - AV_CODEC_ID_AURA (): Aura video codec. - AV_CODEC_ID_AURA2 (): Aura 2 video codec. - AV_CODEC_ID_V210X (): V210X Uncompressed 10-bit 4:2:2 video codec. - AV_CODEC_ID_TMV (): 8088flex TMV video codec. - AV_CODEC_ID_V210 (): Uncompressed 4:2:2 10-bit video codec. - AV_CODEC_ID_DPX (): Digital Picture Exchange (DPX) image codec. - AV_CODEC_ID_MAD (): Magicyuv (MAD) codec. - AV_CODEC_ID_FRWU (): Forward Uncompressed Video (FRWU). - AV_CODEC_ID_FLASHSV2 (): Flash Screen Video 2 codec. - AV_CODEC_ID_CDGRAPHICS (): CD Graphics video codec. - AV_CODEC_ID_R210 (): R210 (Uncompressed RGB 10-bit) codec. - AV_CODEC_ID_ANM (): Deluxe Paint Animation (ANM) codec. - AV_CODEC_ID_BINKVIDEO (): Bink video codec. - AV_CODEC_ID_IFF_ILBM (): Interleaved IFF ILBM (Amiga) video codec. - AV_CODEC_ID_IFF_BYTERUN1 (): Alias for IFF_BYTERUN1 (same ID). - AV_CODEC_ID_KGV1 (): Kega Game Video (KGV1) codec. - AV_CODEC_ID_YOP (): Psygnosis YOP Video. - AV_CODEC_ID_VP8 (): On2 VP8 video codec. - AV_CODEC_ID_PICTOR (): Pictor/PC Paint/Pictor PIC image codec. - AV_CODEC_ID_ANSI (): ANSI text (RLE) video codec. - AV_CODEC_ID_A64_MULTI (): Multicolor charset for Commodore 64. - AV_CODEC_ID_A64_MULTI5 (): Multicolor charset for Commodore 64, extended. - AV_CODEC_ID_R10K (): AJA Kona 10-bit RGB codec. - AV_CODEC_ID_MXPEG (): Mobotix MXPEG video codec. - AV_CODEC_ID_LAGARITH (): Lagarith lossless video codec. - AV_CODEC_ID_PRORES (): Apple ProRes codec. - AV_CODEC_ID_JV (): Bitmap Brothers JV video codec. - AV_CODEC_ID_DFA (): Chronomaster DFA codec. - AV_CODEC_ID_WMV3IMAGE (): Windows Media Video 9 Image codec. - AV_CODEC_ID_VC1IMAGE (): SMPTE VC-1 Image codec. - AV_CODEC_ID_UTVIDEO (): Ut Video codec. - AV_CODEC_ID_BMV_VIDEO (): Discworld II BMV video codec. - AV_CODEC_ID_VBLE (): VBLE Lossless codec. - AV_CODEC_ID_DXTORY (): Dxtory capture codec. - AV_CODEC_ID_V410 (): Uncompressed 4:4:4 10-bit video codec. - AV_CODEC_ID_XWD (): X Window Dump (XWD) image codec. - AV_CODEC_ID_CDXL (): Commodore CDXL video codec. - AV_CODEC_ID_XBM (): XBM (X BitMap) image codec. - AV_CODEC_ID_ZEROCODEC (): ZeroCodec lossless video codec. - AV_CODEC_ID_MSS1 (): MS Screen 1 codec. - AV_CODEC_ID_MSA1 (): MS ATC Screen codec. - AV_CODEC_ID_TSCC2 (): TechSmith Screen Codec 2. - AV_CODEC_ID_MTS2 (): MS Expression Encoder Screen codec (MTS2). - AV_CODEC_ID_CLLC (): Canopus Lossless codec. - AV_CODEC_ID_MSS2 (): MS Screen 2 codec. - AV_CODEC_ID_VP9 (): Google VP9 video codec. - AV_CODEC_ID_AIC (): Advanced Imagine Codec (AIC). - AV_CODEC_ID_ESCAPE130 (): Escape 130 video codec. - AV_CODEC_ID_G2M (): GoToMeeting (G2M) screen-sharing codec. - AV_CODEC_ID_WEBP (): WebP image codec (VP8-based). - AV_CODEC_ID_HNM4_VIDEO (): HNM version 4 video. - AV_CODEC_ID_HEVC (): High Efficiency Video Coding (HEVC), also H.265. - AV_CODEC_ID_H265 (): H.265 (alias for HEVC). - AV_CODEC_ID_FIC (): FIC video codec. - AV_CODEC_ID_ALIAS_PIX (): Alias PIX image format. - AV_CODEC_ID_BRENDER_PIX (): BRender PIX image format. - AV_CODEC_ID_PAF_VIDEO (): Amazing Studio PAF video codec. - AV_CODEC_ID_EXR (): OpenEXR image codec. - AV_CODEC_ID_VP7 (): On2 VP7 video codec. - AV_CODEC_ID_SANM (): LucasArts SANM/Smush video codec. - AV_CODEC_ID_SGIRLE (): Silicon Graphics RLE 8-bit video codec. - AV_CODEC_ID_MVC1 (): H.264 MVC 3D – Stereo Picture (MVC1). - AV_CODEC_ID_MVC2 (): H.264 MVC 3D – Stereo Picture (MVC2). - AV_CODEC_ID_HQX (): Canopus HQX video codec. - AV_CODEC_ID_TDSC (): TDSC (TDSC MPEG4-based codec). - AV_CODEC_ID_HQ_HQA (): Canopus HQ / HQA. - AV_CODEC_ID_HAP (): Vidvox Hap video codec. - AV_CODEC_ID_DDS (): DirectDraw Surface (DDS) image codec. - AV_CODEC_ID_DXV (): Resolume DXV video codec. - AV_CODEC_ID_SCREENPRESSO (): Screenpresso video codec. - AV_CODEC_ID_RSCC (): RSCC codec (Remote Session Compression). - AV_CODEC_ID_AVS2 (): AVS2-P2/IEEE1857.4 Chinese video codec. - AV_CODEC_ID_PGX (): PGX image codec. - AV_CODEC_ID_AVS3 (): AVS3-P2 video codec. - AV_CODEC_ID_MSP2 (): MSP2 video codec. - AV_CODEC_ID_VVC (): Versatile Video Coding (VVC), also H.266. - AV_CODEC_ID_H266 (): H.266 (alias for VVC). - AV_CODEC_ID_Y41P (): Brooktree ProVideo (Y41P). - AV_CODEC_ID_AVRP (): Avid 1:1 10-bit RGB Packer (AVRP). - AV_CODEC_ID_012V (): Uncompressed 4:2:2 10-bit (012V). - AV_CODEC_ID_AVUI (): Avid UYVY422 (AVUI). - AV_CODEC_ID_AYUV (): Uncompressed packed MS 4:4:4:4 (AYUV). - AV_CODEC_ID_TARGA_Y216 (): TARGA Y216 codec (16-bit YUV). - AV_CODEC_ID_V308 (): Uncompressed 4:4:4 (V308). - AV_CODEC_ID_V408 (): Uncompressed 4:4:4 8-bit (V408). - AV_CODEC_ID_YUV4 (): Uncompressed packed 4:2:0 (YUV4). - AV_CODEC_ID_AVRN (): Avid AVI Codec (AVrn). - AV_CODEC_ID_CPIA (): CPiA video format. - AV_CODEC_ID_XFACE (): X-face image codec. - AV_CODEC_ID_SNOW (): Snow wavelet video codec. - AV_CODEC_ID_SMVJPEG (): SMV JPEG video codec. - AV_CODEC_ID_APNG (): Animated Portable Network Graphics (APNG). - AV_CODEC_ID_DAALA (): Daala video codec (experimental). - AV_CODEC_ID_CFHD (): CineForm HD (CFHD) codec. - AV_CODEC_ID_TRUEMOTION2RT (): Duck TrueMotion 2 RT codec. - AV_CODEC_ID_M101 (): M101 codec (Wing Commander IV). - AV_CODEC_ID_MAGICYUV (): MagicYUV lossless codec. - AV_CODEC_ID_SHEERVIDEO (): BitJazz SheerVideo codec. - AV_CODEC_ID_YLC (): YLC codec. - AV_CODEC_ID_PSD (): Adobe Photoshop PSD codec. - AV_CODEC_ID_PIXLET (): Apple Pixlet video codec. - AV_CODEC_ID_SPEEDHQ (): Grass Valley SpeedHQ codec. - AV_CODEC_ID_FMVC (): FM Screen Capture codec. - AV_CODEC_ID_SCPR (): ScreenPressor (SCPR) codec. - AV_CODEC_ID_CLEARVIDEO (): ClearVideo / RealVideo 1.3 codec. - AV_CODEC_ID_XPM (): XPM (X PixMap) image codec. - AV_CODEC_ID_AV1 (): AV1 video codec (Alliance for Open Media). - AV_CODEC_ID_BITPACKED (): Bitpacked codec for subtitles or other data. - AV_CODEC_ID_MSCC (): MS Screen Codec 2 (MSCC). - AV_CODEC_ID_SRGC (): Screen Recorder Gold Codec (SRGC). - AV_CODEC_ID_SVG (): SVG (Scalable Vector Graphics) image. - AV_CODEC_ID_GDV (): Gremlin Digital Video (GDV). - AV_CODEC_ID_FITS (): Flexible Image Transport System (FITS) codec. - AV_CODEC_ID_IMM4 (): Infinity IMM4 codec. - AV_CODEC_ID_PROSUMER (): Blackmagic ProRes (ProRes-based) Producer, also called Prosumer. - AV_CODEC_ID_MWSC (): MWaveSoft Capture (MWSC). - AV_CODEC_ID_WCMV (): WinCAM Motion Video (WCMV). - AV_CODEC_ID_RASC (): RemotelyAnywhere Screen Capture (RASC). - AV_CODEC_ID_HYMT (): HuffYUV MT (HYMT). - AV_CODEC_ID_ARBC (): ARBC (Arbitrary bitmap) codec. - AV_CODEC_ID_AGM (): Amuse Graphics Movie (AGM). - AV_CODEC_ID_LSCR (): LEAD Screen Capture (LSCR). - AV_CODEC_ID_VP4 (): On2 VP4 video codec. - AV_CODEC_ID_IMM5 (): Infinity IMM5 codec. - AV_CODEC_ID_MVDV (): MidiVid Archive Codec (MVDV). - AV_CODEC_ID_MVHA (): MidiVid Archive Codec (MVHA). - AV_CODEC_ID_CDTOONS (): CDToons codec. - AV_CODEC_ID_MV30 (): MidiVid 3.0 (MV30). - AV_CODEC_ID_NOTCHLC (): Notch LC video codec. - AV_CODEC_ID_PFM (): Portable FloatMap (PFM) image codec. - AV_CODEC_ID_MOBICLIP (): Mobiclip video codec. - AV_CODEC_ID_PHOTOCD (): Photo CD codec. - AV_CODEC_ID_IPU (): PlayStation IPU video codec. - AV_CODEC_ID_ARGO (): Argonaut Games video codec (Argo). - AV_CODEC_ID_CRI (): CRI codec (CRIWARE). - AV_CODEC_ID_SIMBIOSIS_IMX (): Simbiosis Interactive IMX video codec. - AV_CODEC_ID_SGA_VIDEO (): Sega Genesis/32X SGA Video. - AV_CODEC_ID_FIRST_AUDIO (): Dummy ID pointing to the start of audio codecs. - AV_CODEC_ID_PCM_S16LE (): PCM signed 16-bit little-endian. - AV_CODEC_ID_PCM_S16BE (): PCM signed 16-bit big-endian. - AV_CODEC_ID_PCM_U16LE (): PCM unsigned 16-bit little-endian. - AV_CODEC_ID_PCM_U16BE (): PCM unsigned 16-bit big-endian. - AV_CODEC_ID_PCM_S8 (): PCM signed 8-bit. - AV_CODEC_ID_PCM_U8 (): PCM unsigned 8-bit. - AV_CODEC_ID_PCM_MULAW (): PCM μ-law (G.711). - AV_CODEC_ID_PCM_ALAW (): PCM A-law (G.711). - AV_CODEC_ID_PCM_S32LE (): PCM signed 32-bit little-endian. - AV_CODEC_ID_PCM_S32BE (): PCM signed 32-bit big-endian. - AV_CODEC_ID_PCM_U32LE (): PCM unsigned 32-bit little-endian. - AV_CODEC_ID_PCM_U32BE (): PCM unsigned 32-bit big-endian. - AV_CODEC_ID_PCM_S24LE (): PCM signed 24-bit little-endian. - AV_CODEC_ID_PCM_S24BE (): PCM signed 24-bit big-endian. - AV_CODEC_ID_PCM_U24LE (): PCM unsigned 24-bit little-endian. - AV_CODEC_ID_PCM_U24BE (): PCM unsigned 24-bit big-endian. - AV_CODEC_ID_PCM_S24DAUD (): PCM signed 24-bit planar format. - AV_CODEC_ID_PCM_ZORK (): PCM Zork. - AV_CODEC_ID_PCM_S16LE_PLANAR (): PCM signed 16-bit little-endian planar. - AV_CODEC_ID_PCM_DVD (): PCM DVD format. - AV_CODEC_ID_PCM_F32BE (): PCM float 32-bit big-endian. - AV_CODEC_ID_PCM_F32LE (): PCM float 32-bit little-endian. - AV_CODEC_ID_PCM_F64BE (): PCM float 64-bit big-endian. - AV_CODEC_ID_PCM_F64LE (): PCM float 64-bit little-endian. - AV_CODEC_ID_PCM_BLURAY (): PCM Blu-ray format. - AV_CODEC_ID_PCM_LXF (): PCM LXF format. - AV_CODEC_ID_S302M (): SMPTE 302M (AES3) audio. - AV_CODEC_ID_PCM_S8_PLANAR (): PCM signed 8-bit planar. - AV_CODEC_ID_PCM_S24LE_PLANAR (): PCM signed 24-bit little-endian planar. - AV_CODEC_ID_PCM_S32LE_PLANAR (): PCM signed 32-bit little-endian planar. - AV_CODEC_ID_PCM_S16BE_PLANAR (): PCM signed 16-bit big-endian planar. - AV_CODEC_ID_PCM_S64LE (): PCM signed 64-bit little-endian. - AV_CODEC_ID_PCM_S64BE (): PCM signed 64-bit big-endian. - AV_CODEC_ID_PCM_F16LE (): PCM float 16-bit little-endian. - AV_CODEC_ID_PCM_F24LE (): PCM float 24-bit little-endian. - AV_CODEC_ID_PCM_VIDC (): PCM VIDC. - AV_CODEC_ID_PCM_SGA (): PCM SGA (SGI). - AV_CODEC_ID_ADPCM_IMA_QT (): ADPCM IMA QuickTime. - AV_CODEC_ID_ADPCM_IMA_WAV (): ADPCM IMA WAV. - AV_CODEC_ID_ADPCM_IMA_DK3 (): ADPCM IMA Duck DK3. - AV_CODEC_ID_ADPCM_IMA_DK4 (): ADPCM IMA Duck DK4. - AV_CODEC_ID_ADPCM_IMA_WS (): ADPCM IMA Westwood. - AV_CODEC_ID_ADPCM_IMA_SMJPEG (): ADPCM IMA WorldSpeak (SMJPEG). - AV_CODEC_ID_ADPCM_MS (): Microsoft ADPCM. - AV_CODEC_ID_ADPCM_4XM (): ADPCM 4X Movie. - AV_CODEC_ID_ADPCM_XA (): ADPCM XA (e.g. used in PlayStation). - AV_CODEC_ID_ADPCM_ADX (): ADPCM CRI ADX. - AV_CODEC_ID_ADPCM_EA (): ADPCM Electronic Arts. - AV_CODEC_ID_ADPCM_G726 (): ADPCM G.726. - AV_CODEC_ID_ADPCM_CT (): ADPCM Creative Technology. - AV_CODEC_ID_ADPCM_SWF (): ADPCM Shockwave Flash. - AV_CODEC_ID_ADPCM_YAMAHA (): ADPCM Yamaha. - AV_CODEC_ID_ADPCM_SBPRO_4 (): ADPCM Sound Blaster Pro 4-bit. - AV_CODEC_ID_ADPCM_SBPRO_3 (): ADPCM Sound Blaster Pro 3-bit. - AV_CODEC_ID_ADPCM_SBPRO_2 (): ADPCM Sound Blaster Pro 2.6-bit. - AV_CODEC_ID_ADPCM_THP (): ADPCM Nintendo GameCube THP. - AV_CODEC_ID_ADPCM_IMA_AMV (): ADPCM IMA Amv. - AV_CODEC_ID_ADPCM_EA_R1 (): ADPCM Electronic Arts R1. - AV_CODEC_ID_ADPCM_EA_R3 (): ADPCM Electronic Arts R3. - AV_CODEC_ID_ADPCM_EA_R2 (): ADPCM Electronic Arts R2. - AV_CODEC_ID_ADPCM_IMA_EA_SEAD (): ADPCM IMA Electronic Arts SEAD. - AV_CODEC_ID_ADPCM_IMA_EA_EACS (): ADPCM IMA Electronic Arts EACS. - AV_CODEC_ID_ADPCM_EA_XAS (): ADPCM Electronic Arts XAS. - AV_CODEC_ID_ADPCM_EA_MAXIS_XA (): ADPCM Electronic Arts Maxis XA. - AV_CODEC_ID_ADPCM_IMA_ISS (): ADPCM IMA Infinity Sample System. - AV_CODEC_ID_ADPCM_G722 (): ADPCM ITU G.722. - AV_CODEC_ID_ADPCM_IMA_APC (): ADPCM IMA Mirage A/P/C. - AV_CODEC_ID_ADPCM_VIMA (): ADPCM Mace3, Mace6, or VIMA. - AV_CODEC_ID_ADPCM_AFC (): ADPCM AFC. - AV_CODEC_ID_ADPCM_IMA_OKI (): ADPCM IMA Dialogic OKI. - AV_CODEC_ID_ADPCM_DTK (): ADPCM DTK. - AV_CODEC_ID_ADPCM_IMA_RAD (): ADPCM IMA Radical. - AV_CODEC_ID_ADPCM_G726LE (): ADPCM G.726 little-endian. - AV_CODEC_ID_ADPCM_THP_LE (): ADPCM THP little-endian. - AV_CODEC_ID_ADPCM_PSX (): ADPCM PSX (Sony PlayStation). - AV_CODEC_ID_ADPCM_AICA (): ADPCM AICA (Yamaha). - AV_CODEC_ID_ADPCM_IMA_DAT4 (): ADPCM IMA Eurocom DAT4. - AV_CODEC_ID_ADPCM_MTAF (): ADPCM MTAF. - AV_CODEC_ID_ADPCM_AGM (): ADPCM Amuse Graphics Movie (AGM). - AV_CODEC_ID_ADPCM_ARGO (): ADPCM Argonaut Games (Argo). - AV_CODEC_ID_ADPCM_IMA_SSI (): ADPCM IMA Shin'ens SSI. - AV_CODEC_ID_ADPCM_ZORK (): ADPCM Zork (Infocom). - AV_CODEC_ID_ADPCM_IMA_APM (): ADPCM IMA APM. - AV_CODEC_ID_ADPCM_IMA_ALP (): ADPCM IMA High Voltage Software ALP. - AV_CODEC_ID_ADPCM_IMA_MTF (): ADPCM IMA Capcom's MTF. - AV_CODEC_ID_ADPCM_IMA_CUNNING (): ADPCM IMA Cunning Developments. - AV_CODEC_ID_ADPCM_IMA_MOFLEX (): ADPCM IMA Moflex. - AV_CODEC_ID_AMR_NB (): AMR (Adaptive Multi-Rate) narrow-band. - AV_CODEC_ID_AMR_WB (): AMR wide-band. - AV_CODEC_ID_RA_144 (): RealAudio 1.0 (14.4K). - AV_CODEC_ID_RA_288 (): RealAudio 2.0 (28.8K). - AV_CODEC_ID_ROQ_DPCM (): Id RoQ DPCM. - AV_CODEC_ID_INTERPLAY_DPCM (): Interplay DPCM. - AV_CODEC_ID_XAN_DPCM (): Wing Commander III / Xan DPCM. - AV_CODEC_ID_SOL_DPCM (): Sol DPCM. - AV_CODEC_ID_SDX2_DPCM (): SDX2 DPCM. - AV_CODEC_ID_GREMLIN_DPCM (): Gremlin DPCM. - AV_CODEC_ID_DERF_DPCM (): DERF DPCM. - AV_CODEC_ID_MP2 (): MPEG-1/2 audio layer 2. - AV_CODEC_ID_MP3 (): MPEG-1/2 audio layer 3 (preferred ID for decoding MPEG audio). - AV_CODEC_ID_AAC (): Advanced Audio Coding (AAC). - AV_CODEC_ID_AC3 (): Dolby Digital (AC-3). - AV_CODEC_ID_DTS (): Digital Theater Systems (DTS). - AV_CODEC_ID_VORBIS (): Vorbis audio codec. - AV_CODEC_ID_DVAUDIO (): DV audio. - AV_CODEC_ID_WMAV1 (): Windows Media Audio version 1. - AV_CODEC_ID_WMAV2 (): Windows Media Audio version 2. - AV_CODEC_ID_MACE3 (): MACE (Macintosh Audio Compression/Expansion) 3:1. - AV_CODEC_ID_MACE6 (): MACE (Macintosh Audio Compression/Expansion) 6:1. - AV_CODEC_ID_VMDAUDIO (): Sierra VMD audio. - AV_CODEC_ID_FLAC (): FLAC (Free Lossless Audio Codec). - AV_CODEC_ID_MP3ADU (): MP3 ADU (MPEG-1 layer 3 Advanced DivX). - AV_CODEC_ID_MP3ON4 (): MP3on4 (Audio layer 3 on MPEG-4 SL). - AV_CODEC_ID_SHORTEN (): Shorten audio codec. - AV_CODEC_ID_ALAC (): ALAC (Apple Lossless Audio Codec). - AV_CODEC_ID_WESTWOOD_SND1 (): Westwood Studios audio (SND1). - AV_CODEC_ID_GSM (): GSM (full rate) audio, also known as Berlin toast format. - AV_CODEC_ID_QDM2 (): QDesign Music Codec 2. - AV_CODEC_ID_COOK (): COOK (RealAudio G2). - AV_CODEC_ID_TRUESPEECH (): DSP Group TrueSpeech. - AV_CODEC_ID_TTA (): TTA (The True Audio) lossless codec. - AV_CODEC_ID_SMACKAUDIO (): Smacker audio (SMK). - AV_CODEC_ID_QCELP (): QCELP (Qualcomm PureVoice). - AV_CODEC_ID_WAVPACK (): WavPack lossless audio codec. - AV_CODEC_ID_DSICINAUDIO (): Delphine Software International CIN audio. - AV_CODEC_ID_IMC (): IMC (Intel Music Coder). - AV_CODEC_ID_MUSEPACK7 (): Musepack SV7 audio codec. - AV_CODEC_ID_MLP (): MLP (Meridian Lossless Packing). - AV_CODEC_ID_GSM_MS (): GSM Microsoft variant (found in WAV). - AV_CODEC_ID_ATRAC3 (): ATRAC3 (Adaptive TRansform Acoustic Coding 3). - AV_CODEC_ID_APE (): Monkey's Audio (APE) codec. - AV_CODEC_ID_NELLYMOSER (): Nellymoser Asao audio codec. - AV_CODEC_ID_MUSEPACK8 (): Musepack SV8 audio codec. - AV_CODEC_ID_SPEEX (): Speex audio codec. - AV_CODEC_ID_WMAVOICE (): Windows Media Audio Voice (WMA Voice). - AV_CODEC_ID_WMAPRO (): Windows Media Audio Pro (WMA Pro). - AV_CODEC_ID_WMALOSSLESS (): Windows Media Audio Lossless (WMA Lossless). - AV_CODEC_ID_ATRAC3P (): ATRAC3+ (Adaptive TRansform Acoustic Coding 3+). - AV_CODEC_ID_EAC3 (): Enhanced AC-3 (Dolby Digital Plus). - AV_CODEC_ID_SIPR (): SIPR (RealAudio Sipro). - AV_CODEC_ID_MP1 (): MPEG-1 audio layer 1. - AV_CODEC_ID_TWINVQ (): TwinVQ (VQF) audio codec. - AV_CODEC_ID_TRUEHD (): Dolby TrueHD lossless audio codec. - AV_CODEC_ID_MP4ALS (): MPEG-4 ALS (Audio Lossless Coding). - AV_CODEC_ID_ATRAC1 (): ATRAC1 (Sony PSX). - AV_CODEC_ID_BINKAUDIO_RDFT (): Bink Audio (RDFT). - AV_CODEC_ID_BINKAUDIO_DCT (): Bink Audio (DCT). - AV_CODEC_ID_AAC_LATM (): AAC LATM (Low Overhead Audio Transport Multiplex). - AV_CODEC_ID_QDMC (): QDMC audio codec. - AV_CODEC_ID_CELT (): Constrained Energy Lapped Transform (CELT). - AV_CODEC_ID_G723_1 (): G.723.1 codec. - AV_CODEC_ID_G729 (): G.729 codec. - AV_CODEC_ID_8SVX_EXP (): 8SVX exponential. - AV_CODEC_ID_8SVX_FIB (): 8SVX Fibonacci. - AV_CODEC_ID_BMV_AUDIO (): Discworld II BMV audio codec. - AV_CODEC_ID_RALF (): RealAudio Lossless Format (RalF). - AV_CODEC_ID_IAC (): IAC (Indeo Audio Coder). - AV_CODEC_ID_ILBC (): iLBC (internet Low Bitrate Codec). - AV_CODEC_ID_OPUS (): Opus (RFC 6716) audio codec. - AV_CODEC_ID_COMFORT_NOISE (): Comfort noise (RFC 3389). - AV_CODEC_ID_TAK (): TAK (Tom's lossless Audio Kompressor). - AV_CODEC_ID_METASOUND (): METASOUND audio codec. - AV_CODEC_ID_PAF_AUDIO (): PAF audio (from Amazing Studio). - AV_CODEC_ID_ON2AVC (): On2 AVC (Audio for On2 streams). - AV_CODEC_ID_DSS_SP (): Digital Speech Standard (DSS) SP. - AV_CODEC_ID_CODEC2 (): Codec2 (low-bitrate speech codec). - AV_CODEC_ID_FFWAVESYNTH (): FFwaveSynth synthetic audio. - AV_CODEC_ID_SONIC (): Sonic audio codec. - AV_CODEC_ID_SONIC_LS (): Sonic lossless audio codec. - AV_CODEC_ID_EVRC (): Enhanced Variable Rate Codec (EVRC). - AV_CODEC_ID_SMV (): SMV (Selectable Mode Vocoder). - AV_CODEC_ID_DSD_LSBF (): Direct Stream Digital (DSD) LSBF. - AV_CODEC_ID_DSD_MSBF (): Direct Stream Digital (DSD) MSBF. - AV_CODEC_ID_DSD_LSBF_PLANAR (): DSD LSBF Planar. - AV_CODEC_ID_DSD_MSBF_PLANAR (): DSD MSBF Planar. - AV_CODEC_ID_4GV (): 4GV (CDMA). - AV_CODEC_ID_INTERPLAY_ACM (): Interplay ACM audio. - AV_CODEC_ID_XMA1 (): XMA1 (Xbox Media Audio). - AV_CODEC_ID_XMA2 (): XMA2 (Xbox Media Audio). - AV_CODEC_ID_DST (): Direct Stream Transfer (DST) lossless. - AV_CODEC_ID_ATRAC3AL (): ATRAC3 AL (Adaptive TRansform Acoustic Coding 3 AL). - AV_CODEC_ID_ATRAC3PAL (): ATRAC3 PAL (ATRAC3+ AL). - AV_CODEC_ID_DOLBY_E (): Dolby E audio codec. - AV_CODEC_ID_APTX (): aptX (Bluetooth audio codec). - AV_CODEC_ID_APTX_HD (): aptX HD (extended version of aptX). - AV_CODEC_ID_SBC (): SBC (low-complexity subband codec). - AV_CODEC_ID_ATRAC9 (): ATRAC9 (Sony). - AV_CODEC_ID_HCOM (): HCOM (Macintosh HCOM compression). - AV_CODEC_ID_ACELP_KELVIN (): ACELP.KELVIN speech codec. - AV_CODEC_ID_MPEGH_3D_AUDIO (): MPEG-H 3D Audio. - AV_CODEC_ID_SIREN (): Siren codec (e.g., G.722.1). - AV_CODEC_ID_HCA (): CRI HCA (High Compression Audio). - AV_CODEC_ID_FASTAUDIO (): FAST audio (proprietary). - AV_CODEC_ID_FIRST_SUBTITLE (): Dummy ID pointing to the start of subtitle codecs. - AV_CODEC_ID_DVD_SUBTITLE (): DVD subtitles. - AV_CODEC_ID_DVB_SUBTITLE (): DVB subtitles (ETSI EN 300 743). - AV_CODEC_ID_TEXT (): Raw UTF-8 text subtitles. - AV_CODEC_ID_XSUB (): XSUB subtitles (e.g., DivX). - AV_CODEC_ID_SSA (): SSA (SubStation Alpha) subtitles. - AV_CODEC_ID_MOV_TEXT (): MOV text subtitles (3GPP Timed Text). - AV_CODEC_ID_HDMV_PGS_SUBTITLE (): HDMV Presentation Graphic Stream subtitles (Blu-ray). - AV_CODEC_ID_DVB_TELETEXT (): DVB teletext subtitles. - AV_CODEC_ID_SRT (): SRT (SubRip) subtitle format. - AV_CODEC_ID_MICRODVD (): MicroDVD subtitles. - AV_CODEC_ID_EIA_608 (): EIA-608 closed captions. - AV_CODEC_ID_JACOSUB (): JacoSub subtitles. - AV_CODEC_ID_SAMI (): SAMI (Microsoft Synchronized Accessible Media Interchange) subtitles. - AV_CODEC_ID_REALTEXT (): RealText subtitles. - AV_CODEC_ID_STL (): EBU STL subtitles. - AV_CODEC_ID_SUBVIEWER1 (): SubViewer 1.0 subtitles. - AV_CODEC_ID_SUBVIEWER (): SubViewer 2.0 subtitles. - AV_CODEC_ID_SUBRIP (): SubRip subtitles. - AV_CODEC_ID_WEBVTT (): WebVTT subtitles. - AV_CODEC_ID_MPL2 (): MPL2 subtitles. - AV_CODEC_ID_VPLAYER (): VPlayer subtitles. - AV_CODEC_ID_PJS (): PJS (Phoenix Japanimation Society) subtitles. - AV_CODEC_ID_ASS (): Advanced SubStation Alpha (ASS) subtitles. - AV_CODEC_ID_HDMV_TEXT_SUBTITLE (): HDMV text subtitle format. - AV_CODEC_ID_TTML (): TTML (Timed Text Markup Language) subtitles. - AV_CODEC_ID_ARIB_CAPTION (): ARIB caption subtitles (Japanese). - AV_CODEC_ID_FIRST_UNKNOWN (): Dummy ID pointing to the start of various fake codecs. - AV_CODEC_ID_TTF (): TrueType font (TTF) attachments. - AV_CODEC_ID_SCTE_35 (): SCTE-35 data (streaming events / markers). - AV_CODEC_ID_EPG (): Electronic Program Guide (EPG) data. - AV_CODEC_ID_BINTEXT (): Binary text data (BINTEXT). - AV_CODEC_ID_XBIN (): eXtended BIN file data (XBIN). - AV_CODEC_ID_IDF (): iCEDraw font (IDF). - AV_CODEC_ID_OTF (): OpenType font (OTF). - AV_CODEC_ID_SMPTE_KLV (): SMPTE KLV data (Key-Length-Value). - AV_CODEC_ID_DVD_NAV (): DVD navigation data. - AV_CODEC_ID_TIMED_ID3 (): Timed ID3 tags. - AV_CODEC_ID_BIN_DATA (): Generic binary data. - AV_CODEC_ID_PROBE (): Codec ID is not known; libavformat should attempt to identify it. - AV_CODEC_ID_MPEG2TS (): MPEG-2 transport stream (raw MPEG-2 TS). - AV_CODEC_ID_MPEG4SYSTEMS (): MPEG-4 Systems (only used by libavformat). - AV_CODEC_ID_FFMETADATA (): Dummy codec for streams containing only metadata information. - AV_CODEC_ID_WRAPPED_AVFRAME (): Passthrough codec, AVFrames wrapped in AVPacket. ## Remarks This enumeration is a direct mapping of FFmpeg's AVCodecID enum. It is essential for operations that involve specifying encoders or decoders, or for identifying the format of a media stream. The enum is organized into sections for video codecs, audio codecs, subtitle codecs, and data formats. Video codecs include both legacy formats (MPEG-1, MPEG-2) and modern codecs (H.264, H.265, VP9, AV1). Audio codecs range from simple PCM formats to advanced compressed codecs like AAC, MP3, Opus, and Vorbis. The AV_CODEC_ID_NONE value indicates an unknown or unspecified codec. These identifiers are used throughout the framework when working with media files, streams, encoders, and decoders. The numeric values match FFmpeg's internal codec IDs and should not be modified. When selecting a codec for encoding, consider factors like quality, file size, compatibility, and hardware acceleration support. --- # Enum GIFResizeStretchMode Link: api/VisioForge.Core.Types.GIFResizeStretchMode.html # Enum GIFResizeStretchMode # Enum GIFResizeStretchMode **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines how a GIF frame should be resized or stretched to fit a target dimension. ```csharp public enum GIFResizeStretchMode ``` ## Fields Parameters: - Stretch (): Stretches the frame to fill the target dimensions completely, which may distort the original aspect ratio. - Letterbox (): Resizes the frame to fit within the target dimensions while maintaining the original aspect ratio. Black bars (letterboxing) will be added to fill any empty space if the aspect ratios do not match. - Crop (): Resizes the frame to fill the target dimensions while maintaining the original aspect ratio. The frame will be cropped if its aspect ratio does not match the target, ensuring no black bars are present. - None (): The frame is not resized. It will be centered in the output, and if it is larger than the target dimensions, it will be cropped. If it is smaller, the surrounding area will be filled with a background color. ## Remarks This enumeration is used to control the aspect ratio and scaling behavior when creating GIFs from source video frames that may have a different size. The choice of stretch mode affects both the visual appearance and file size of the resulting GIF. Letterbox mode maintains quality but may add black bars, while Stretch can cause distortion. Crop mode fills the entire frame but may cut off portions of the original content. None mode is useful when you want to preserve the original dimensions without any scaling. --- # Interface IBitmap Link: api/VisioForge.Core.Types.IBitmap.html # Interface IBitmap # Interface IBitmap **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a platform-agnostic bitmap image. This interface is used as a common wrapper for different bitmap implementations across various platforms (e.g., Windows, Android, iOS). ```csharp public interface IBitmap : IDisposable ``` #### Implements ## Remarks The primary purpose of this interface is to allow for the manipulation and passing of bitmap images in a generic way, without coupling the core logic to a specific UI framework or image library. Implementations of this interface are expected to handle the platform-specific details of bitmap creation, manipulation, and disposal. As it implements , instances should be properly disposed of to release underlying resources. On Windows, this might wrap System.Drawing.Bitmap or SkiaSharp.SKBitmap. On Android, it could wrap Android.Graphics.Bitmap. On iOS, it might wrap UIImage or CGImage. This abstraction enables writing cross-platform image processing code that works consistently across all supported platforms. --- # Interface IMediaPlayerControls Link: api/VisioForge.Core.Types.IMediaPlayerControls.html # Interface IMediaPlayerControls # Interface IMediaPlayerControls **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines a standard set of controls for a media player component. This interface provides a common API for controlling playback of media files, including play, pause, stop, seek, and volume adjustments. It also includes asynchronous versions of most methods for use in responsive UI applications. ```csharp public interface IMediaPlayerControls : IVideoEffectsControls ``` #### Implements ## Remarks This interface inherits from , providing access to video effect adjustments in addition to playback controls. Implementations of this interface are expected to manage the underlying media playback engine (GStreamer, Media Foundation, FFmpeg, etc.). All asynchronous methods return Task objects to support modern async/await programming patterns. The interface supports both synchronous and asynchronous operations to accommodate different programming styles and scenarios. Position and duration are represented using TimeSpan for precise timing control. The State property provides real-time status of the player (Playing, Paused, Stopped). ## Properties ### State Gets the current playback state of the media player (e.g., Playing, Paused, Stopped). ```csharp PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): ## Methods ### Duration() Gets the total duration of the media. ```csharp TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): A representing the media's duration. ### DurationAsync() Asynchronously gets the total duration of the media. ```csharp Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains the media's duration as a . ### GetFileThumbnail(string) Extracts a thumbnail image from a specified media file. ```csharp SKBitmap GetFileThumbnail(string filename) ``` #### Parameters Parameters: - filename (string): The path to the media file. #### Returns Parameters: - (SKBitmap): An containing the thumbnail image, or null if a thumbnail could not be extracted. ### NextFrame() Advances playback to the next frame. This is useful for frame-by-frame analysis. ```csharp bool NextFrame() ``` #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### OpenAsync(string) Asynchronously opens a media file from a specified path. ```csharp Task OpenAsync(string path) ``` #### Parameters Parameters: - path (string): The file path or URL of the media to open. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the file was opened successfully, false otherwise. ### Pause() Pauses the currently playing media. ```csharp bool Pause() ``` #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### PauseAsync() Asynchronously pauses the currently playing media. ```csharp Task PauseAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if successful, false otherwise. ### Play(bool) Starts or preloads the media for playback. ```csharp bool Play(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, the media is loaded and ready to play but does not start automatically. #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### PlayAsync(bool) Asynchronously starts or preloads the media for playback. ```csharp Task PlayAsync(bool onlyPreload = false) ``` #### Parameters Parameters: - onlyPreload (bool): If set to true, the media is loaded and ready to play but does not start automatically. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if successful, false otherwise. ### Position_Get() Gets the current playback position. ```csharp TimeSpan Position_Get() ``` #### Returns Parameters: - (TimeSpan): A representing the current position. ### Position_GetAsync() Asynchronously gets the current playback position. ```csharp Task Position_GetAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains the current position as a . ### Position_Set(TimeSpan, bool) Sets the current playback position to a specified time. ```csharp void Position_Set(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The time to seek to. - seekToKeyframe (bool): If set to true, the seek will be to the nearest keyframe, which is faster but less precise. ### Position_SetAsync(TimeSpan, bool) Asynchronously sets the current playback position to a specified time. ```csharp Task Position_SetAsync(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The time to seek to. - seekToKeyframe (bool): If set to true, the seek will be to the nearest keyframe, which is faster but less precise. #### Returns Parameters: - (Task): A task that represents the asynchronous operation. ### PrevFrame() Moves playback to the previous frame. This is useful for frame-by-frame analysis. ```csharp bool PrevFrame() ``` #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### Resume() Resumes playback from a paused state. ```csharp bool Resume() ``` #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### ResumeAsync() Asynchronously resumes playback from a paused state. ```csharp Task ResumeAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if successful, false otherwise. ### SetSpeed(double) Sets the playback speed. ```csharp bool SetSpeed(double speed) ``` #### Parameters Parameters: - speed (double): The playback speed, where 1.0 is normal speed, 0.5 is half speed, and 2.0 is double speed. #### Returns Parameters: - (bool): true if the operation is successful, false otherwise. ### SetSpeedAsync(double) Asynchronously sets the playback speed. ```csharp Task SetSpeedAsync(double speed) ``` #### Parameters Parameters: - speed (double): The playback speed. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if successful, false otherwise. ### Stop() Stops playback and resets the media position to the beginning. ```csharp void Stop() ``` ### StopAsync() Asynchronously stops playback and resets the media position to the beginning. ```csharp Task StopAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous operation. ### Volume_Get() Gets the current audio volume level. ```csharp double Volume_Get() ``` #### Returns Parameters: - (double): The current volume level. ### Volume_Set(double) Sets the audio volume level. ```csharp void Volume_Set(double volume) ``` #### Parameters Parameters: - volume (double): The volume level, typically from 0.0 (silent) to 1.0 (full volume). --- # Interface IStatusOverlay Link: api/VisioForge.Core.Types.IStatusOverlay.html # Interface IStatusOverlay # Interface IStatusOverlay **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines an interface for a status overlay, which is used to display real-time information on top of a video stream. This can include details like frame rate, resolution, timecode, recording status, or custom text provided by the application. ```csharp public interface IStatusOverlay ``` ## Remarks This interface is intended to be implemented by components that provide video rendering or processing. It standardizes the way status information is enabled, configured, and displayed, without exposing the underlying implementation details. The overlay typically appears as text or graphics drawn directly onto the video frame before it's displayed or encoded. Common uses include showing "REC" indicators during recording, displaying FPS counters, showing timecode, or overlaying camera names in multi-camera systems. Implementations should support customization of font, size, color, and position of the overlay elements. The overlay is generally rendered efficiently to minimize impact on performance. --- # Interface IVideoCaptureControls Link: api/VisioForge.Core.Types.IVideoCaptureControls.html # Interface IVideoCaptureControls # Interface IVideoCaptureControls **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines a standard set of controls for a video capture component. This interface provides a common API for managing the lifecycle of a video capture session, including starting, pausing, and stopping. It also provides access to audio volume controls during capture. ```csharp public interface IVideoCaptureControls : IVideoEffectsControls ``` #### Implements ## Remarks This interface inherits from , allowing for the application of real-time video effects during capture. Implementations of this interface are expected to manage the underlying capture engine (e.g., GStreamer, Media Foundation, DirectShow). The interface supports both synchronous and asynchronous methods to accommodate different programming styles. During capture, the Duration method returns the elapsed time since capture started. The State method provides real-time status (Capturing, Paused, Stopped). Volume controls affect the input audio source level before encoding. Pause/Resume functionality is useful for creating segmented recordings or skipping unwanted content without stopping the entire session. ## Methods ### Duration() Gets the duration of the current capture session. ```csharp TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): A representing the elapsed time since the capture started. ### DurationAsync() Asynchronously gets the duration of the current capture session. ```csharp Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task that represents the asynchronous operation. The task result contains a representing the elapsed time. ### Pause() Pauses the video capture. The capture session remains active and can be resumed. ```csharp bool Pause() ``` #### Returns Parameters: - (bool): true if the capture was paused successfully, false otherwise. ### PauseAsync() Asynchronously pauses the video capture. ```csharp Task PauseAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the capture was paused successfully, false otherwise. ### Resume() Resumes a paused video capture. ```csharp bool Resume() ``` #### Returns Parameters: - (bool): true if the capture was resumed successfully, false otherwise. ### ResumeAsync() Asynchronously resumes a paused video capture. ```csharp Task ResumeAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the capture was resumed successfully, false otherwise. ### Start() Starts the video capture process. ```csharp bool Start() ``` #### Returns Parameters: - (bool): true if the capture started successfully, false otherwise. ### StartAsync() Asynchronously starts the video capture process. ```csharp Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the capture started successfully, false otherwise. ### State() Gets the current state of the capture component (e.g., Capturing, Paused, Stopped). ```csharp PlaybackState State() ``` #### Returns Parameters: - (PlaybackState): The current . ### Stop() Stops the video capture and finalizes any output files. ```csharp void Stop() ``` ### StopAsync() Asynchronously stops the video capture. ```csharp Task StopAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous stop operation. ### Volume_Get() Gets the current audio volume for the capture source. ```csharp double Volume_Get() ``` #### Returns Parameters: - (double): The current volume level. ### Volume_Set(double) Sets the audio volume for the capture source. ```csharp void Volume_Set(double volume) ``` #### Parameters Parameters: - volume (double): The volume level, typically from 0.0 (silent) to 1.0 (full volume). Values can sometimes exceed 1.0 for amplification. --- # Interface IVideoEffectsControls Link: api/VisioForge.Core.Types.IVideoEffectsControls.html # Interface IVideoEffectsControls # Interface IVideoEffectsControls **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines a standard set of controls for applying basic real-time video effects. This interface provides methods to adjust common image properties such as brightness, contrast, and saturation, as well as apply simple transformations like grayscale, flip, and invert. ```csharp public interface IVideoEffectsControls ``` ## Remarks This interface is intended to be implemented by components that handle video rendering or processing, such as media players or video capture controls. It provides a unified way to manipulate the visual appearance of the video stream in real-time. Effects are typically applied using GPU shaders or image processing filters for optimal performance. All effect values are multiplicative or boolean - brightness/contrast/saturation typically use 1.0 as the neutral value. Effects can be stacked and are generally applied in the order they are set. The VideoEffects_Clear method resets all effects to their default neutral state. These effects are applied before rendering and do not modify the source video data when recording. ## Methods ### VideoEffects_Clear() Resets all video effects to their default values. ```csharp void VideoEffects_Clear() ``` ### VideoEffects_SetBrightness(double) Sets the brightness level of the video. ```csharp void VideoEffects_SetBrightness(double value) ``` #### Parameters Parameters: - value (double): The brightness value. Typically, 1.0 is the default; values greater than 1.0 increase brightness, and values less than 1.0 decrease it. ### VideoEffects_SetContrast(double) Sets the contrast level of the video. ```csharp void VideoEffects_SetContrast(double value) ``` #### Parameters Parameters: - value (double): The contrast value. Typically, 1.0 is the default; values greater than 1.0 increase contrast, and values less than 1.0 decrease it. ### VideoEffects_SetFlipX(bool) Toggles a horizontal flip (mirror) effect on the video. ```csharp void VideoEffects_SetFlipX(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, the video is flipped horizontally. ### VideoEffects_SetFlipY(bool) Toggles a vertical flip effect on the video. ```csharp void VideoEffects_SetFlipY(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, the video is flipped vertically. ### VideoEffects_SetGrayscale(bool) Toggles the grayscale effect on the video. ```csharp void VideoEffects_SetGrayscale(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, the video is rendered in grayscale; otherwise, it is rendered in color. ### VideoEffects_SetInvert(bool) Toggles the color inversion effect on the video. ```csharp void VideoEffects_SetInvert(bool value) ``` #### Parameters Parameters: - value (bool): If set to true, the video colors are inverted (like a photo negative). ### VideoEffects_SetSaturation(double) Sets the color saturation level of the video. ```csharp void VideoEffects_SetSaturation(double value) ``` #### Parameters Parameters: - value (double): The saturation value. Typically, 1.0 is the default; 0.0 results in a grayscale image, and values greater than 1.0 intensify colors. --- # Interface IVideoView Link: api/VisioForge.Core.Types.IVideoView.html # Interface IVideoView # Interface IVideoView **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines a platform-agnostic interface for a video rendering view. This interface abstracts the underlying UI control used for displaying video, allowing the core engine to remain independent of any specific UI framework (e.g., WinForms, WPF, Android, iOS). ```csharp public interface IVideoView ``` ## Remarks Implementations of this interface are responsible for managing a native UI element that can render video frames. It provides methods for lifecycle management, UI interaction, and event handling, including mouse input. The interface includes platform-specific sections to handle the unique requirements of different operating systems. ## Methods ### CallInvoke(Delegate, params object[]) Executes a delegate on the UI thread of the control. ```csharp void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The delegate to execute. - args (object [ ]): The arguments to pass to the delegate. ### CallRefresh() Forces the view to redraw or refresh its content. ```csharp void CallRefresh() ``` ### ClearUI() Clears the user interface, removing any overlays or graphics. ```csharp void ClearUI() ``` ### GetBackgroundColor() Gets the background color of the video view. ```csharp SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): The background color as an . ### GetHandle() Gets the native window handle of the underlying UI control. ```csharp nint GetHandle() ``` #### Returns Parameters: - (nint): An representing the window handle. ### GetInvokeRequired() Gets a value indicating whether the caller must use an invoke method when making calls to the control. ```csharp bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): true if the call must be invoked; otherwise, false. ### GetIsHandleCreated() Gets a value indicating whether the underlying UI control's handle has been created. ```csharp bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): true if the handle is created; otherwise, false. ### GetSize() Gets the current size of the video view. ```csharp Size GetSize() ``` #### Returns Parameters: - (Size): The size as a structure. ### GetUIEngine() Gets the underlying UI engine being used by the view. ```csharp VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): The used for rendering. ### InvokeStart() Signals the view that the engine has started. ```csharp void InvokeStart() ``` ### InvokeStartComplete() Signals the view that the engine has completed its start sequence. ```csharp void InvokeStartComplete() ``` ### InvokeStop() Signals the view that the engine has stopped. ```csharp void InvokeStop() ``` ### InvokeVideoRendererUpdate() Triggers an update of the video renderer. ```csharp void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears all messages from the log dialog. ```csharp void LogDialogClear() ``` ### LogDialogClose() Closes the log dialog if it is open. ```csharp void LogDialogClose() ``` ### LogDialogError(string) Displays an error message in a dialog box. ```csharp void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The error message to display. ### PushMouseButtonDown(int, int, MouseButton) Pushes a mouse button down event to the control. ```csharp void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. - button (MouseButton): The mouse button that was pressed. ### PushMouseButtonUp(int, int, MouseButton) Pushes a mouse button up event to the control. ```csharp void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. - button (MouseButton): The mouse button that was released. ### PushMouseMove(int, int) Pushes a mouse move event to the control for processing. ```csharp void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. ### ResizeRoundTo(int) Resizes the video view, rounding the dimensions to a specified value. ```csharp void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The value to round the dimensions to (e.g., 16). ### SetHandle(nint) Sets the native window handle. Used for embedding the video in a specific control. ```csharp void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The window handle. ### ShowMessage(string) Shows a message box to the user. ```csharp MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message to display. #### Returns Parameters: - (MessageBoxResult): A indicating which button the user clicked. ### OnMouseButtonDown Occurs when a mouse button is pressed down over the control. ```csharp event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when a mouse button is released over the control. ```csharp event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when the mouse pointer is moved over the control. ```csharp event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): --- # Interface IVideoViewNativeRendering Link: api/VisioForge.Core.Types.IVideoViewNativeRendering.html # Interface IVideoViewNativeRendering # Interface IVideoViewNativeRendering **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines an interface for video view components that support switching to a native rendering backend. This is typically used to improve performance in demanding scenarios, such as playing high-resolution (4K/8K) video or using hardware-accelerated GPU decoding. ```csharp public interface IVideoViewNativeRendering ``` ## Examples
// Assuming 'videoView' is a control that implements IVideoViewNativeRendering.
public void EnableHighPerformanceRendering(IVideoView videoView)
{
    if (videoView is IVideoViewNativeRendering nativeRenderer)
    {
        // Enable native rendering for better performance with 4K video.
        nativeRenderer.SetNativeRendering(true);
    }
}
## Remarks When native rendering is enabled, the video is rendered directly by the underlying system's graphics API (e.g., DirectX, OpenGL) instead of through a higher-level UI framework like WPF. This can significantly reduce CPU usage and improve rendering smoothness, especially for high-bitrate or high-resolution content. However, native rendering may have implications for UI integration, such as difficulty in layering UI elements on top of the video, as the video surface may be rendered in a separate composition layer. Native rendering is particularly beneficial when combined with hardware decoding (DXVA, NVDEC, Quick Sync) as it allows for a direct GPU-to-GPU pipeline without CPU involvement. In WPF applications, enabling native rendering typically creates an HWND-based video surface rather than using WPF's composition engine. This mode should be preferred for performance-critical applications or when frame drops are observed with standard WPF rendering. ## Methods ### SetNativeRendering(bool) Enables or disables native rendering for the video view. ```csharp void SetNativeRendering(bool native) ``` #### Parameters Parameters: - native (bool): Set to true to enable native rendering; false to use the default framework rendering (e.g., WPF). #### Remarks It is recommended to enable this for performance-critical applications, such as those involving GPU-accelerated decoding or ultra-high-definition video. --- # Interface IVideoViewPushFrame Link: api/VisioForge.Core.Types.IVideoViewPushFrame.html # Interface IVideoViewPushFrame # Interface IVideoViewPushFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines an interface for video views that support direct pushing of video frames for rendering. This interface is crucial for scenarios where raw video data needs to be displayed without relying on a traditional media pipeline (e.g., for custom video processing or real-time frame injection). ```csharp public interface IVideoViewPushFrame ``` ## Examples
// Assuming 'videoView' is a control that implements IVideoViewPushFrame.
public void RenderCustomFrame(IVideoViewPushFrame videoView, VideoFrame customFrame)
{
    // Push a custom-generated video frame to the view for display.
    videoView.PushFrame(customFrame);
}

// Example with VideoFrameX (from MediaBlocks)
public void RenderMediaBlocksFrame(IVideoViewPushFrame videoView, VideoFrameX mediaBlocksFrame)
{
    videoView.PushFrame(mediaBlocksFrame);
}
## Remarks Implementations of this interface are responsible for taking raw video frame data and rendering it efficiently to the display. This allows for fine-grained control over the video rendering process and is essential for custom video processing pipelines. The interface supports multiple frame types: legacy VideoFrame for backwards compatibility, VideoFrameX for the newer MediaBlocks framework, and platform-specific types like GStreamer Sample on iOS. Push frame rendering bypasses normal playback synchronization, making it suitable for real-time applications where the caller controls frame timing. Common use cases include computer vision applications that need to display processed frames, custom video generators, screen sharing implementations, or bridging between different media frameworks. When using this interface, the caller is responsible for frame timing and synchronization. ## Methods ### PushFrame(VideoFrame) Pushes a to the view for rendering. This method is typically used for raw video frames that conform to the legacy structure. ```csharp void PushFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The containing the video data to be rendered. ### PushFrame(VideoFrameX) Pushes a to the view for rendering. This method is used for video frames generated by the MediaBlocks engine, offering more advanced frame metadata. ```csharp void PushFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The containing the video data and extended metadata to be rendered. --- # Interface IVRVideoControl Link: api/VisioForge.Core.Types.IVRVideoControl.html # Interface IVRVideoControl # Interface IVRVideoControl **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines an interface for controlling Virtual Reality (VR) video playback parameters. This interface allows manipulation of camera orientation (yaw, pitch, roll), field of view, and the VR projection mode. ```csharp public interface IVRVideoControl ``` ## Remarks Implementations of this interface are typically found in video renderers or effects that support 360-degree or VR video content. It enables interactive viewing of immersive video by adjusting the viewer's perspective within the virtual environment. Yaw controls horizontal rotation (looking left/right), pitch controls vertical rotation (looking up/down), and roll controls tilting. Field of view determines how zoomed in or out the view appears - smaller values create a telephoto effect, larger values create a wide-angle effect. The Mode property determines how the 2D video source is projected into 3D space (equirectangular for 360° videos, cubemap for better quality at poles, or normal for standard video). Different VR modes may be supported by different components - use IsModeSupported to check compatibility before setting the mode. The SettingsChanged event notifies listeners when any VR parameters change, useful for synchronizing UI controls. ## Properties ### FieldOfView Gets or sets the field of view (FOV) of the VR camera in degrees. This controls the zoom level or how much of the scene is visible. ```csharp float FieldOfView { get; set; } ``` #### Property Value Parameters: - (float): ### Mode Gets or sets the current VR projection mode. ```csharp VRMode Mode { get; set; } ``` #### Property Value Parameters: - (VRMode): ### Pitch Gets or sets the pitch (up/down rotation) of the VR camera in degrees. ```csharp float Pitch { get; set; } ``` #### Property Value Parameters: - (float): ### Roll Gets or sets the roll (tilt) of the VR camera in degrees. ```csharp float Roll { get; set; } ``` #### Property Value Parameters: - (float): ### Yaw Gets or sets the yaw (left/right rotation) of the VR camera in degrees. ```csharp float Yaw { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### IsModeSupported(VRMode) Checks if a specific VR mode is supported by the implementing component (e.g., video block, effect, or renderer). ```csharp bool IsModeSupported(VRMode mode) ``` #### Parameters Parameters: - mode (VRMode): The to check for support. #### Returns Parameters: - (bool): true if the mode is supported; otherwise, false. ### SettingsChanged Occurs when any of the VR control settings (Yaw, Pitch, Roll, FieldOfView, Mode) have changed. ```csharp event EventHandler SettingsChanged ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Enum LicenseLevel Link: api/VisioForge.Core.Types.LicenseLevel.html # Enum LicenseLevel # Enum LicenseLevel **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines the different licensing tiers available for VisioForge products. Each level typically unlocks a different set of features or capabilities within the framework. ```csharp public enum LicenseLevel ``` ## Fields Parameters: - Standard (): The standard license level, typically offering core functionalities. - Professional (): The professional license level, providing advanced features beyond the standard offering. - Premium (): The premium license level, which usually includes all available features and capabilities. ## Remarks The specific features enabled by each license level are detailed in the product's licensing documentation and may vary by product version. Developers should consult the official VisioForge licensing documentation to understand which features are available for their purchased license. Generally, higher tiers (Premium) include all features from lower tiers plus additional advanced capabilities. License levels may affect available codecs, output formats, resolution limits, or advanced features like hardware acceleration. The license is typically verified at runtime through the VisioForge License Manager. Trial or evaluation licenses may have additional restrictions like watermarks or time limits. --- # Class MediaFileTags Link: api/VisioForge.Core.Types.MediaFileTags.html # Class MediaFileTags # Class MediaFileTags **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a comprehensive collection of metadata tags for a media file. This class aggregates various pieces of information commonly found in audio and video file tags (e.g., ID3, MP4 tags, Vorbis Comments). ```csharp public class MediaFileTags ``` #### Inheritance #### Inherited Members ## Examples
// Assume 'mediaFile' is an object from which MediaFileTags can be retrieved.
// MediaFileTags tags = mediaFile.GetTags();

var tags = new MediaFileTags();
tags.Title = "My Awesome Song";
tags.Performers = new string[] { "Artist One", "Artist Two" };
tags.Album = "Greatest Hits";
tags.Year = 2023;
tags.Genres = new string[] { "Pop", "Rock" };

Console.WriteLine($"Title: {tags.Title}");
Console.WriteLine($"Album: {tags.Album}");
Console.WriteLine($"Performers: {string.Join(", ", tags.Performers)}");

// Output all available tags as a formatted string.
Console.WriteLine($"All Tags:{tags.ToString()}");
## Remarks This class is designed to provide a unified access point to media file metadata, regardless of the underlying tag format. It includes standard fields like title, artist, album, and genre, as well as more specific fields like MusicBrainz IDs, ReplayGain information, and lyrics. The class supports both simple text metadata (Title, Album, Comment) and array-based metadata (Performers, Genres, Composers) to handle multi-valued tags. Numeric fields like Year, Track, and Disc use appropriate types (uint) for validation and consistency. The ToString method provides a formatted representation of all non-empty tags for display or debugging purposes. This abstraction layer allows applications to work with tags consistently across different file formats (MP3, MP4, FLAC, OGG, etc.). Tags can be read from existing files or set programmatically before writing to files. ## Properties ### Album Gets or sets the album of the media represented by the current instance. ```csharp public string Album { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the name of the album the media belongs to. For boxed sets, it should be the name of the entire set. ### AlbumArtists Gets or sets the band or artist credited for the entire album or collection containing the media. ```csharp public string[] AlbumArtists { get; set; } ``` #### Property Value Parameters: - (string [ ]): #### Remarks This field is typically optional but aids in the sorting of compilations or albums with multiple artists. ### AmazonId Gets or sets the Amazon ID of the media represented by the current instance. ```csharp public string AmazonId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the Amazon ID, and is used to identify the particular track or album in the Amazon Catalog. ### BeatsPerMinute Gets or sets the number of beats per minute (BPM) in the audio of the media represented by the current instance. ```csharp public uint BeatsPerMinute { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks This field is useful for DJs who are trying to match songs. It should be calculated from the audio or pulled from a database. ### Comment Gets or sets a user comment on the media represented by the current instance. ```csharp public string Comment { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field should be used to store user notes and comments. It should not contain program information. ### Composers Gets or sets the composers of the media represented by the current instance. ```csharp public string[] Composers { get; set; } ``` #### Property Value Parameters: - (string [ ]): #### Remarks This field represents the composers, songwriters, scriptwriters, or persons who claim authorship of the media. ### Conductor Gets or sets the conductor or director of the media represented by the current instance. ```csharp public string Conductor { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field is most useful for organizing classical music and movies. ### Copyright Gets or sets the copyright information for the media represented by the current instance. ```csharp public string Copyright { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field should be used for storing copyright information. It may be useful to show this information somewhere in the program while the media is playing. ### Disc Gets or sets the number of the disc containing the media represented by the current instance in the boxed set. ```csharp public uint Disc { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks This value should be the same as is number that appears on the disc. It should be no more than if is non-zero. ### DiscCount Gets or sets the total number of discs in the boxed set containing the media represented by the current instance. ```csharp public uint DiscCount { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks If non-zero, this value should be at least equal to . If is zero, this value should also be zero. ### Genres Gets or sets the genres of the media represented by the current instance. ```csharp public string[] Genres { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### Grouping Gets or sets the grouping on the album which the media in the current instance belongs to. ```csharp public string Grouping { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field contains a non-physical grouping to which the track belongs. In classical music, this could be a movement. ### IsEmpty Gets a value indicating whether the current instance of is empty. An instance is considered empty if all its string properties are null or whitespace, all numeric properties are zero, and all array properties are null or empty. ```csharp public bool IsEmpty { get; } ``` #### Property Value Parameters: - (bool): ### Lyrics Gets or sets the lyrics or script of the media represented by the current instance. ```csharp public string Lyrics { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field contains a plain text representation of the lyrics or scripts with line breaks and whitespace being the only formatting marks. ### MusicBrainz_ArtistId Gets or sets the MusicBrainz Artist ID of the media represented by the current instance. ```csharp public string MusicBrainz_ArtistId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Artist ID, and is used to uniquely identify a particular Artist of the track. ### MusicBrainz_DiscId Gets or sets the MusicBrainz Disc ID of the media represented by the current instance. ```csharp public string MusicBrainz_DiscId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Disc ID, and is used to uniquely identify the particular Released Media associated with this track. ### MusicBrainz_ReleaseArtistId Gets or sets the MusicBrainz Release Artist ID of the media represented by the current instance. ```csharp public string MusicBrainz_ReleaseArtistId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Release Artist ID, and is used to uniquely identify a particular Album Artist credited with the Album. ### MusicBrainz_ReleaseCountry Gets or sets the MusicBrainz Release Country of the media represented by the current instance. ```csharp public string MusicBrainz_ReleaseCountry { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Release Country, that describes the country in which an album was released. Note that the Release Country of an album is not necessarily the country in which it was produced. The label itself will typically be more relevant. eg, a release on "Foo Records UK" that has "Made in Austria" printed on it, will likely be a UK release. ### MusicBrainz_ReleaseId Gets or sets the MusicBrainz Release ID of the media represented by the current instance. ```csharp public string MusicBrainz_ReleaseId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Release ID, and is used to uniquely identify a particular Release to which this track belongs. ### MusicBrainz_ReleaseStatus Gets or sets the MusicBrainz Release Status of the media represented by the current instance. ```csharp public string MusicBrainz_ReleaseStatus { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Release Status, and is used to describes how 'official' a Release is. Common Status are: Official, Promotion, Bootleg, Pseudo-release. ### MusicBrainz_ReleaseType Gets or sets the MusicBrainz Release Type of the media represented by the current instance. ```csharp public string MusicBrainz_ReleaseType { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Release Type, that describes what kind of release a Release is. Common Status are: Single, Album, EP, Compilation, Soundtrack, SpokenWord, Interview, Audiobook, Live, Remix, and Other. Careful thought must be given when using this field to decide if a particular track "Is a Compilation". ### MusicBrainz_TrackId Gets or sets the MusicBrainz Track ID of the media represented by the current instance. ```csharp public string MusicBrainz_TrackId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicBrainz Track ID, and is used to uniquely identify a particular track. ### MusicIpId Gets or sets the MusicIP PUID of the media represented by the current instance. ```csharp public string MusicIpId { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This field represents the MusicIP PUID, and is an acoustic fingerprint identifier. It Identifies what this track "Sounds Like". ### Performers Gets or sets the performers or artists who performed in the media described by the current instance. ```csharp public string[] Performers { get; set; } ``` #### Property Value Parameters: - (string [ ]): #### Remarks This field is commonly called "Artists" in media applications and should represent each of the artists appearing in the media. ### Pictures Gets or sets an array of objects representing embedded pictures (e.g., album art). This property is available on non-Windows platforms. ```csharp [JsonIgnore] public IBitmap[] Pictures { get; set; } ``` #### Property Value Parameters: - (IBitmap [ ]): ### Pictures_Descriptions Gets or sets descriptions for the embedded pictures. The order of descriptions should correspond to the order of pictures in the array. ```csharp [JsonIgnore] public string[] Pictures_Descriptions { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### ReplayGain_AlbumGain Gets or sets the ReplayGain album gain in dB. ```csharp public double ReplayGain_AlbumGain { get; set; } ``` #### Property Value Parameters: - (double): ### ReplayGain_AlbumPeak Gets or sets the ReplayGain album peak sample. ```csharp public double ReplayGain_AlbumPeak { get; set; } ``` #### Property Value Parameters: - (double): ### ReplayGain_TrackGain Gets or sets the ReplayGain track gain in dB. ```csharp public double ReplayGain_TrackGain { get; set; } ``` #### Property Value Parameters: - (double): ### ReplayGain_TrackPeak Gets or sets the ReplayGain track peak sample. ```csharp public double ReplayGain_TrackPeak { get; set; } ``` #### Property Value Parameters: - (double): ### Subtitle Gets or sets the subtitle tag for the media. ```csharp public string Subtitle { get; set; } ``` #### Property Value Parameters: - (string): ### TagTypes Gets or sets the types of tags contained in the current instance, represented as a bitwise combined enumeration. This indicates which tag formats (e.g., ID3v1, ID3v2, APE) are present in the media file. ```csharp public MediaFileTagTypes TagTypes { get; set; } ``` #### Property Value Parameters: - (MediaFileTagTypes): ### Title Gets or sets the title of the media described by the current instance. This is most commonly the name of a song, episode, or movie title. ```csharp public string Title { get; set; } ``` #### Property Value Parameters: - (string): ### Track Gets or sets the position of the media represented by the current instance in its containing album. ```csharp public uint Track { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks This value should be the same as is listed on the album cover and no more than if is non-zero. ### TrackCount Gets or sets the total number of tracks in the album containing the media represented by the current instance. ```csharp public uint TrackCount { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks If non-zero, this value should be at least equal to . If is zero, this value should also be zero. ### Year Gets or sets the year that the media represented by the current instance was recorded or released. ```csharp public uint Year { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Years greater than 9999 cannot be stored by most tagging formats. Some formats support higher precision dates. ## Methods ### ToString() Gets all existing tags as a formatted string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A containing all available tag information. --- # Enum MediaFileTagTypes Link: api/VisioForge.Core.Types.MediaFileTagTypes.html # Enum MediaFileTagTypes # Enum MediaFileTagTypes **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the types of metadata tags that can be present in a media file. This enumeration is a bit field, meaning its members can be combined using bitwise operations to indicate the presence of multiple tag types. ```csharp [Flags] public enum MediaFileTagTypes : uint ``` ## Fields Parameters: - None (): No tag types are present or recognized. - XIPH (): Xiph's Vorbis comment format, commonly used in Ogg Vorbis, FLAC, and WebM files. - ID3v1 (): ID3v1 tag format, a simple metadata container often found at the end of MP3 files. - ID3v2 (): ID3v2 tag format, a more advanced and extensible metadata container for MP3 files. - APE (): APE (Audio Project) tag format, used by Monkey's Audio and other formats. - Apple (): Apple's ILST tag format, used in MP4 (M4A, M4V) files. - ASF (): ASF (Advanced Systems Format) tag, used in WMA and WMV files. - RIFFInfo (): Standard RIFF INFO list tag, used in WAV and AVI files. - MovieId (): RIFF Movie ID list tag, specific to some AVI files. - DivX (): DivX tag format, used in DivX video files. - FLACMetadata (): FLAC metadata blocks tag, used in FLAC audio files. - TIFFIFD (): TIFF IFD (Image File Directory) tag, used in TIFF image files. - XMP (): XMP (Extensible Metadata Platform) tag, an XML-based metadata format used in various file types. - JPEGComment (): JPEG comment tag, a simple text comment embedded in JPEG image files. - GIFComment (): GIF comment tag, a simple text comment embedded in GIF image files. - PNG (): Native PNG (Portable Network Graphics) keywords, used in PNG image files. - IPTCIIM (): IPTC-IIM (International Press Telecommunications Council - Information Interchange Model) tag, used in news photography. - AudibleMetadata (): Audible metadata blocks tag, specific to Audible audiobooks. - AllTags (): Represents all available tag types. This value can be used to check for the presence of any tag type. ## Remarks Different media file formats support various tagging standards (e.g., ID3 for MP3, Vorbis Comments for Ogg/FLAC, iTunes metadata for MP4). This enum provides a unified way to identify which of these standards are used in a given file. The Flags attribute allows combining multiple tag types using bitwise OR operations. Some files may contain multiple tag formats simultaneously (e.g., an MP3 with both ID3v1 and ID3v2 tags). The AllTags constant provides a convenient way to check for any tag presence. None indicates a file with no recognized metadata tags. Understanding which tag types are present is important for proper metadata reading, writing, and migration between formats. Each tag format has different capabilities, limitations, and encoding methods. --- # Class AudioStreamInfo Link: api/VisioForge.Core.Types.MediaInfo.AudioStreamInfo.html # Class AudioStreamInfo # Class AudioStreamInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents detailed information about an audio stream within a media file. This class provides properties such as bitrate, channels, sample rate, codec, and duration. ```csharp public class AudioStreamInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume mediaInfo is an instance of MediaFileInfo containing stream information.
foreach (var audioStream in mediaInfo.AudioStreams)
{
    Console.WriteLine($"Audio Stream Found:");
    Console.WriteLine($"  Codec: {audioStream.Codec} ({audioStream.CodecInfo})");
    Console.WriteLine($"  Channels: {audioStream.Channels}");
    Console.WriteLine($"  Sample Rate: {audioStream.SampleRate} Hz");
    Console.WriteLine($"  Bitrate: {audioStream.Bitrate} bps");
    Console.WriteLine($"  Duration: {audioStream.Duration}");
    Console.WriteLine($"  Language: {audioStream.Language}");

    if (audioStream.Tags != null && audioStream.Tags.Any())
    {
        Console.WriteLine("  Tags:");
        foreach (var tag in audioStream.Tags)
        {
            Console.WriteLine($"    {tag.Name}: {tag.Value}");
        }
    }
}
## Remarks This information is typically retrieved by a media information parser and is useful for displaying stream properties to the user, or for making decisions about audio processing and playback. The class provides both basic audio characteristics (channels, sample rate) and advanced metadata (codec info, language, tags). Bitrate is provided in bits per second and helps determine file size and quality. The Channels property indicates audio configuration: 1=mono, 2=stereo, 6=5.1 surround, 8=7.1 surround, etc. ChannelMask provides detailed speaker position information for multi-channel audio. SampleRate is measured in Hz with common values being 44100 (CD quality), 48000 (DVD/professional), or 96000 (high-resolution audio). The Tags collection contains stream-specific metadata that may differ from file-level tags. This information is essential for audio format validation, stream selection in multi-audio files, and transcoding decisions. ## Constructors ### AudioStreamInfo() Initializes a new instance of the class. All string properties are initialized to , to , and as an empty list. ```csharp public AudioStreamInfo() ``` ## Properties ### BPS Gets or sets the bits per sample (bit depth) of the audio data. ```csharp public byte BPS { get; set; } ``` #### Property Value Parameters: - (byte): ### Bitrate Gets or sets the average bitrate of the audio stream in bits per second (bps). ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### ChannelMask Gets or sets the channel mask, indicating the speaker positions for multi-channel audio. ```csharp public ulong ChannelMask { get; set; } ``` #### Property Value Parameters: - (ulong): ### Channels Gets or sets the number of audio channels (e.g., 1 for mono, 2 for stereo, 6 for 5.1 surround). ```csharp public byte Channels { get; set; } ``` #### Property Value Parameters: - (byte): ### Codec Gets or sets the name of the audio codec (e.g., "AAC", "MP3", "AC3"). ```csharp public string Codec { get; set; } ``` #### Property Value Parameters: - (string): ### CodecInfo Gets or sets additional information about the audio codec, such as profile or specific encoder details. ```csharp public string CodecInfo { get; set; } ``` #### Property Value Parameters: - (string): ### Duration Gets or sets the duration of the audio stream. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ID Gets or sets a unique identifier for the audio stream within the media file. ```csharp public string ID { get; set; } ``` #### Property Value Parameters: - (string): ### Language Gets or sets the language of the audio stream, typically represented by a two-letter ISO 639-1 code (e.g., "en", "fr"). ```csharp public string Language { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name of the audio track, if available (e.g., "Director's Commentary"). ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### SampleRate Gets or sets the sample rate of the audio stream in Hertz (Hz). Common values include 44100 Hz (CD quality) or 48000 Hz. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### Tags Gets a list of objects associated with this audio stream. These tags can include metadata like title, artist, album, etc. ```csharp public List Tags { get; } ``` #### Property Value Parameters: - (List < MediaInfoTag >): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the codec, number of channels, sample rate, and duration. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class MediaContainerInfo Link: api/VisioForge.Core.Types.MediaInfo.MediaContainerInfo.html # Class MediaContainerInfo # Class MediaContainerInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents detailed information about the media container format of a file. This includes the overall duration of the media and any associated tags. ```csharp public class MediaContainerInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume mediaInfo is an instance of MediaFileInfo containing container information.
MediaContainerInfo containerInfo = mediaInfo.ContainerInfo;

if (containerInfo != null)
{
    Console.WriteLine($"Media Container Info:");
    Console.WriteLine($"  Format: {containerInfo.Format}");
    Console.WriteLine($"  Duration: {containerInfo.Duration}");

    if (containerInfo.Tags != null && containerInfo.Tags.Any())
    {
        Console.WriteLine("  Container Tags:");
        foreach (var tag in containerInfo.Tags)
        {
            Console.WriteLine($"    {tag.Name}: {tag.Value}");
        }
    }
}
## Remarks This class is typically populated by a media information parser and provides high-level details about the media file itself, rather than individual streams within it. Container formats (MP4, MKV, AVI, MOV, WebM, FLV) encapsulate multiple elementary streams (video, audio, subtitles) with synchronization information. Duration property indicates the total playback time of the longest stream in the container. Format property identifies the container type, which determines supported features and codec compatibility. Tags collection contains file-level metadata like title, artist, album, creation date, encoder, and copyright information. Container-level tags differ from stream-specific tags and apply to the entire file. Some containers support chapters, attachments (fonts, cover art), and complex metadata structures. Understanding container format is essential for compatibility checking, transcoding decisions, and metadata management. The ToString method provides a summary of container information for logging and debugging. Container information is fundamental for media library management, file inspection tools, and transcoding workflows. ## Constructors ### MediaContainerInfo() Initializes a new instance of the class. The list is initialized as an empty list. ```csharp public MediaContainerInfo() ``` ## Properties ### Duration Gets or sets the total duration of the media contained within this container. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Format Gets or sets the name of the media container format (e.g., "AVI", "MP4", "MKV"). ```csharp public string Format { get; set; } ``` #### Property Value Parameters: - (string): ### Tags Gets a list of objects associated with the media container. These tags can include general metadata about the file, such as title, artist, or genre. ```csharp public List Tags { get; } ``` #### Property Value Parameters: - (List < MediaInfoTag >): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the container format and its duration. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class MediaFileInfo Link: api/VisioForge.Core.Types.MediaInfo.MediaFileInfo.html # Class MediaFileInfo # Class MediaFileInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Provides comprehensive information about a media file, including details about its container, video streams, audio streams, subtitle streams, and RTP streams. ```csharp public class MediaFileInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume 'mediaInfo' is an instance of MediaFileInfo obtained from a media file.
Console.WriteLine($"File Duration: {mediaInfo.Container.Duration}");
Console.WriteLine($"File Format: {mediaInfo.Container.Format}");

if (mediaInfo.VideoStreams.Any())
{
    Console.WriteLine($"\nVideo Streams ({mediaInfo.VideoStreams.Count}):");
    foreach (var videoStream in mediaInfo.VideoStreams)
    {
        Console.WriteLine($"  - {videoStream.Codec} ({videoStream.Width}x{videoStream.Height} @ {videoStream.FrameRate.Value:F2} FPS)");
    }
}

if (mediaInfo.AudioStreams.Any())
{
    Console.WriteLine($"\nAudio Streams ({mediaInfo.AudioStreams.Count}):");
    foreach (var audioStream in mediaInfo.AudioStreams)
    {
        Console.WriteLine($"  - {audioStream.Codec} ({audioStream.Channels} ch, {audioStream.SampleRate} Hz)");
    }
}

if (mediaInfo.SubtitleStreams.Any())
{
    Console.WriteLine($"\nSubtitle Streams ({mediaInfo.SubtitleStreams.Count}):");
    foreach (var subtitleStream in mediaInfo.SubtitleStreams)
    {
        Console.WriteLine($"  - {subtitleStream.Codec} ({subtitleStream.Language})");
    }
}
## Remarks This class serves as a central repository for all parsed metadata from a media file. It is typically populated by a media information parser and is essential for applications that need to display detailed file properties, select specific streams for playback or processing, or analyze media content. The Container property provides format-level information such as duration and container type (MP4, AVI, MKV, etc.). Stream collections (VideoStreams, AudioStreams, SubtitleStreams, RTPStreams) contain detailed properties for each elementary stream. Media files can contain multiple streams of each type (e.g., multiple audio tracks for different languages). The IsLive property indicates real-time sources like cameras or network streams, which affects buffering and seeking behavior. GetAudioInfo and GetVideoInfo methods provide quick access to the primary stream information in platform-native formats. The ToString method generates a human-readable summary of all detected streams. This class is thread-safe for reading after initialization, but modifications should be synchronized. Used extensively for stream selection, transcoding planning, and media player initialization. ## Constructors ### MediaFileInfo() Initializes a new instance of the class. All stream lists and the container info are initialized to empty instances. ```csharp public MediaFileInfo() ``` ## Properties ### AudioStreams Gets a list of objects, each representing an audio stream found in the media file. ```csharp public List AudioStreams { get; } ``` #### Property Value Parameters: - (List < AudioStreamInfo >): ### Container Gets the for the media file. This contains overall information about the file's container format and duration. ```csharp public MediaContainerInfo Container { get; } ``` #### Property Value Parameters: - (MediaContainerInfo): ### IsLive Gets or sets a value indicating whether the media source is live (e.g., a live stream from a camera or network). ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### RTPStreams Gets a list of objects, each representing an RTP (Real-time Transport Protocol) stream found in the media file. ```csharp public List RTPStreams { get; } ``` #### Property Value Parameters: - (List < RTPStreamInfo >): ### SubtitleStreams Gets a list of objects, each representing a subtitle stream found in the media file. ```csharp public List SubtitleStreams { get; } ``` #### Property Value Parameters: - (List < SubtitleStreamInfo >): ### VideoStreams Gets a list of objects, each representing a video stream found in the media file. ```csharp public List VideoStreams { get; } ``` #### Property Value Parameters: - (List < VideoStreamInfo >): ## Methods ### Clear() Clears all stream information and resets the container information to its default empty state. ```csharp public void Clear() ``` ### GetAudioInfo() Retrieves audio information in the format from the first available audio stream. ```csharp public AudioInfoX GetAudioInfo() ``` #### Returns Parameters: - (AudioInfoX): An object if an audio stream is present; otherwise, null. ### GetVideoInfo() Retrieves video information in the format from the first available video stream. ```csharp public VideoFrameInfoX GetVideoInfo() ``` #### Returns Parameters: - (VideoFrameInfoX): A object if a video stream is present; otherwise, null. ### ToString() Returns a string that represents the current instance. The string includes summary information about the container and all detected video and audio streams. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class MediaInfoTag Link: api/VisioForge.Core.Types.MediaInfo.MediaInfoTag.html # Class MediaInfoTag # Class MediaInfoTag **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents a single metadata tag associated with a media file or stream. This class stores a key-value pair for a specific piece of information. ```csharp public class MediaInfoTag ``` #### Inheritance #### Inherited Members ## Examples
// Create a new MediaInfoTag instance
var tag = new MediaInfoTag("Artist", "John Doe");
Console.WriteLine($"Tag: {tag.Name} = {tag.Value}");

// Tags are often found within MediaFileInfo or stream information classes.
// For example, accessing tags from an AudioStreamInfo:
// AudioStreamInfo audioStream = GetAudioStream();
// if (audioStream != null)
// {
//     foreach (var streamTag in audioStream.Tags)
//     {
//         Console.WriteLine($"Stream Tag: {streamTag.Name}: {streamTag.Value}");
//     }
// }
## Remarks Media tags can include various details such as title, artist, album, genre, creation date, and more. They are typically retrieved from media containers by a media information parser. Tag names are usually standardized strings like "title", "artist", "album", "genre", "date", "comment", "encoder". Values are stored as strings but may represent different data types (text, numbers, dates) requiring parsing. Tags can exist at container level (applying to entire file) or stream level (specific to video/audio/subtitle tracks). Common tag standards include ID3 (MP3), Vorbis Comments (OGG/FLAC), iTunes tags (MP4), and APE tags. Tag availability and format depends on the container type and encoder that created the file. Applications use tags for media library organization, search, display, and metadata editing. The ToString method formats tags as "Name: Value" for easy logging and display. Tags are read-only after parsing but can be modified and written back using appropriate media editing APIs. ## Constructors ### MediaInfoTag(string, string) Initializes a new instance of the class with a specified name and value. ```csharp public MediaInfoTag(string name, string value) ``` #### Parameters Parameters: - name (string): The name of the tag. - value (string): The value of the tag. ## Properties ### Name Gets or sets the name or key of the metadata tag (e.g., "Title", "Artist", "Genre"). ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Value Gets or sets the value associated with the metadata tag. ```csharp public string Value { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### ToString() Returns a string that represents the current instance in the format "Name: Value". ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class RTPStreamInfo Link: api/VisioForge.Core.Types.MediaInfo.RTPStreamInfo.html # Class RTPStreamInfo # Class RTPStreamInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents detailed information about an RTP (Real-time Transport Protocol) stream. This class provides properties such as encoding name, payload type, and stream type. ```csharp public class RTPStreamInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume mediaInfo is an instance of MediaFileInfo containing RTP stream information.
foreach (var rtpStream in mediaInfo.RTPStreams)
{
    Console.WriteLine($"RTP Stream Found:");
    Console.WriteLine($"  Encoding Name: {rtpStream.EncodingName}");
    Console.WriteLine($"  Payload ID: {rtpStream.Payload}");
    Console.WriteLine($"  Type: {rtpStream.Type}");

    // Further processing based on RTP stream properties.
}
## Remarks RTP streams are commonly used for real-time media transmission over IP networks. This information is typically retrieved by a media information parser and is useful for configuring RTP receivers or analyzing network streams. RTP is the standard protocol for delivering audio and video over IP networks in real-time applications. EncodingName identifies the codec or format (H264, H265, VP8, VP9, PCMU, PCMA, Opus, AAC, etc.). Payload type is a 7-bit identifier (0-127) mapping to the encoding format in RTP packets. Standard payload types (0-95) are defined in RFC 3551, while dynamic types (96-127) require SDP negotiation. Type property (from CapsType) indicates whether the stream carries video, audio, or other data. RTP stream info is essential for RTSP clients, SIP applications, WebRTC implementations, and IP camera integration. Understanding RTP parameters enables proper decoder selection, jitter buffer configuration, and quality monitoring. RTP streams typically require companion RTCP (RTP Control Protocol) for quality feedback and synchronization. Applications use this information for stream selection, codec negotiation, and dynamic RTP handling. ## Properties ### EncodingName Gets or sets the encoding name of the RTP stream (e.g., "H264", "PCMU", "MPEG4-GENERIC"). ```csharp public string EncodingName { get; set; } ``` #### Property Value Parameters: - (string): ### Payload Gets or sets the payload type ID of the RTP stream. This identifies the type of data carried by the RTP packets (e.g., 96 for custom video, 0 for PCMU audio). ```csharp public int Payload { get; set; } ``` #### Property Value Parameters: - (int): ### Type Gets or sets the type of the RTP stream, typically indicating if it's video, audio, or other data. ```csharp public CapsType Type { get; set; } ``` #### Property Value Parameters: - (CapsType): --- # Class SubtitleStreamInfo Link: api/VisioForge.Core.Types.MediaInfo.SubtitleStreamInfo.html # Class SubtitleStreamInfo # Class SubtitleStreamInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents detailed information about a subtitle stream within a media file. This class provides properties such as offset, track name, codec, and language. ```csharp public class SubtitleStreamInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume mediaInfo is an instance of MediaFileInfo containing stream information.
foreach (var subtitleStream in mediaInfo.SubtitleStreams)
{
    Console.WriteLine($"Subtitle Stream Found:");
    Console.WriteLine($"  Name: {subtitleStream.Name}");
    Console.WriteLine($"  Codec: {subtitleStream.Codec}");
    Console.WriteLine($"  Language: {subtitleStream.Language}");
    Console.WriteLine($"  Offset: {subtitleStream.Offset}");

    if (subtitleStream.Tags != null && subtitleStream.Tags.Any())
    {
        Console.WriteLine("  Tags:");
        foreach (var tag in subtitleStream.Tags)
        {
            Console.WriteLine($"    {tag.Name}: {tag.Value}");
        }
    }
}
## Remarks This information is typically retrieved by a media information parser and is useful for displaying subtitle properties to the user, or for selecting specific subtitle tracks for rendering. Subtitle streams provide text overlays synchronized with video content for translation, accessibility, or additional information. Name property provides a human-readable track title (e.g., "English", "Director's Commentary", "SDH"). Codec identifies the subtitle format: text-based (SRT, SSA, ASS, WebVTT) or image-based (VobSub, PGS, DVB). Language typically uses ISO 639-1 two-letter codes (en, es, fr) or ISO 639-2 three-letter codes for less common languages. Offset property may indicate timing offset or stream position, with interpretation depending on container format. ID provides unique stream identification within the file for precise track selection. Tags collection contains stream-specific metadata like title, language name, or forced/default flags. Text-based subtitles support styling, positioning, and effects (SSA/ASS), while image-based subtitles provide pixel-perfect rendering. Applications use this information for subtitle track selection, language filtering, and subtitle rendering configuration. Accessibility considerations include supporting SDH (Subtitles for Deaf and Hard of hearing) and closed captions. ## Constructors ### SubtitleStreamInfo() Initializes a new instance of the class. All string properties are initialized to , and as an empty list. ```csharp public SubtitleStreamInfo() ``` ## Properties ### Codec Gets or sets the name of the subtitle codec or format (e.g., "SRT", "ASS", "VobSub"). ```csharp public string Codec { get; set; } ``` #### Property Value Parameters: - (string): ### ID Gets or sets a unique identifier for the subtitle stream within the media file. ```csharp public string ID { get; set; } ``` #### Property Value Parameters: - (string): ### Language Gets or sets the language of the subtitle stream, typically represented by a two-letter ISO 639-1 code (e.g., "en", "fr"). ```csharp public string Language { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name of the subtitle track, if available (e.g., "English Subtitles", "For the hearing impaired"). ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Offset Gets or sets the offset of the subtitle stream within the media file. The meaning of this offset can vary depending on the subtitle format. ```csharp public uint Offset { get; set; } ``` #### Property Value Parameters: - (uint): ### Tags Gets a list of objects associated with this subtitle stream. These tags can include metadata specific to the subtitle track. ```csharp public List Tags { get; } ``` #### Property Value Parameters: - (List < MediaInfoTag >): --- # Class VideoStreamInfo Link: api/VisioForge.Core.Types.MediaInfo.VideoStreamInfo.html # Class VideoStreamInfo # Class VideoStreamInfo **Namespace**: VisioForge.Core.Types.MediaInfo **Assembly**: VisioForge.Core.dll Represents detailed information about a video stream within a media file. This class provides properties such as bitrate, frame rate, codec, dimensions, and duration. ```csharp public class VideoStreamInfo ``` #### Inheritance #### Inherited Members ## Examples
// Assume mediaInfo is an instance of MediaFileInfo containing stream information.
foreach (var videoStream in mediaInfo.VideoStreams)
{
    Console.WriteLine($"Video Stream Found:");
    Console.WriteLine($"  Codec: {videoStream.Codec}");
    Console.WriteLine($"  Resolution: {videoStream.Width}x{videoStream.Height}");
    Console.WriteLine($"  Frame Rate: {videoStream.FrameRate.Value:F2} FPS");
    Console.WriteLine($"  Bitrate: {videoStream.Bitrate} bps");
    Console.WriteLine($"  Duration: {videoStream.Duration}");
    Console.WriteLine($"  Rotation: {videoStream.Rotation} degrees");

    if (videoStream.IsInterlaced.HasValue)
    {
        Console.WriteLine($"  Interlaced: {videoStream.IsInterlaced.Value}");
    }

    if (videoStream.Tags != null && videoStream.Tags.Any())
    {
        Console.WriteLine("  Tags:");
        foreach (var tag in videoStream.Tags)
        {
            Console.WriteLine($"    {tag.Name}: {tag.Value}");
        }
    }
}
## Remarks This information is typically retrieved by a media information parser and is useful for displaying stream properties to the user, or for making decisions about video processing, playback, and transcoding. The class provides comprehensive video characteristics including resolution (Width/Height), codec information, frame rate, and interlacing status. Bitrate is provided in bits per second and helps estimate quality and bandwidth requirements. FrameRate is expressed using the VideoFrameRate type and may include fractional values for NTSC formats (e.g., 29.97, 23.976). The IsInterlaced property indicates whether the video uses interlaced scanning (common in broadcast formats) versus progressive scanning. Rotation property indicates if the video requires display rotation (common in mobile recordings): 0, 90, 180, or 270 degrees. AspectRatio provides the display aspect ratio which may differ from the pixel aspect ratio (Width/Height). BitsPerPixel indicates color depth and can affect quality and file size. The Tags collection contains stream-specific metadata useful for stream identification in multi-track files. This information is essential for compatibility checks, playback optimization, and determining appropriate transcoding parameters. ## Constructors ### VideoStreamInfo() Initializes a new instance of the class. All string properties are initialized to , to , as an empty list, and to an empty . ```csharp public VideoStreamInfo() ``` ## Properties ### AspectRatio Gets or sets the aspect ratio of the video, represented as a tuple of width-to-height ratio. For example, (16, 9) for widescreen video. ```csharp public Tuple AspectRatio { get; set; } ``` #### Property Value Parameters: - (Tuple < float , float >): ### Bitrate Gets or sets the average bitrate of the video stream in bits per second (bps). ```csharp public double Bitrate { get; set; } ``` #### Property Value Parameters: - (double): ### Codec Gets or sets the name of the video codec (e.g., "H.264", "MPEG-4", "VP9"). ```csharp public string Codec { get; set; } ``` #### Property Value Parameters: - (string): ### Duration Gets or sets the duration of the video stream. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FourCC Gets or sets the FourCC code of the video format (e.g., "H264", "XVID"). ```csharp public string FourCC { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets or sets the frame rate of the video stream. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### FramesCount Gets or sets the total number of frames in the video stream. This property may not always be available or accurate for all formats. ```csharp public int FramesCount { get; set; } ``` #### Property Value Parameters: - (int): ### Height Gets or sets the height of the video frame in pixels. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### ID Gets or sets a unique identifier for the video stream within the media file. ```csharp public string ID { get; set; } ``` #### Property Value Parameters: - (string): ### IsInterlaced Gets or sets a value indicating whether the video stream is interlaced. true if interlaced, false if progressive, and null if the information is not available. ```csharp public bool? IsInterlaced { get; set; } ``` #### Property Value Parameters: - (bool ?): ### MPEGAudioTag Gets or sets the MPEG audio tag, if applicable (e.g., for MPEG program streams). ```csharp public string MPEGAudioTag { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name of the video track, if available (e.g., "Main Video", "Chapter 1"). ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Rotation Gets or sets the rotation of the video stream in degrees (e.g., 0, 90, 180, 270). ```csharp public int Rotation { get; set; } ``` #### Property Value Parameters: - (int): ### Tags Gets a list of objects associated with this video stream. These tags can include metadata specific to the video track. ```csharp public List Tags { get; } ``` #### Property Value Parameters: - (List < MediaInfoTag >): ### Width Gets or sets the width of the video frame in pixels. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the codec, resolution (widthxheight), and frame rate. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Namespace VisioForge.Core.Types.MediaInfo Link: api/VisioForge.Core.Types.MediaInfo.html # Namespace VisioForge.Core.Types.MediaInfo # Namespace VisioForge.Core.Types.MediaInfo ### Classes Parameters: - (): Represents detailed information about an audio stream within a media file. This class provides properties such as bitrate, channels, sample rate, codec, and duration. - (): Represents detailed information about the media container format of a file. This includes the overall duration of the media and any associated tags. - (): Provides comprehensive information about a media file, including details about its container, video streams, audio streams, subtitle streams, and RTP streams. - (): Represents a single metadata tag associated with a media file or stream. This class stores a key-value pair for a specific piece of information. - (): Represents detailed information about an RTP (Real-time Transport Protocol) stream. This class provides properties such as encoding name, payload type, and stream type. - (): Represents detailed information about a subtitle stream within a media file. This class provides properties such as offset, track name, codec, and language. - (): Represents detailed information about a video stream within a media file. This class provides properties such as bitrate, frame rate, codec, dimensions, and duration. --- # Enum MessageBoxDialogButtons Link: api/VisioForge.Core.Types.MessageBoxDialogButtons.html # Enum MessageBoxDialogButtons # Enum MessageBoxDialogButtons **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies constants defining the buttons to display on a message box. This enumeration is used to control the user's interaction options within a dialog. ```csharp public enum MessageBoxDialogButtons ``` ## Fields Parameters: - AbortRetryIgnore (): Displays a message box with **Abort**, **Retry**, and **Ignore** buttons. - CancelTryContinue (): Displays a message box with **Cancel**, **Try Again**, and **Continue** buttons. - OK (): Displays a message box with an **OK** button only. - OKCancel (): Displays a message box with **OK** and **Cancel** buttons. - RetryCancel (): Displays a message box with **Retry** and **Cancel** buttons. - YesNo (): Displays a message box with **Yes** and **No** buttons. - YesNoCancel (): Displays a message box with **Yes**, **No**, and **Cancel** buttons. ## Remarks These values are typically passed to methods that display message boxes, allowing the application to customize the available responses from the user. The enumeration values mirror the standard Windows MessageBox button combinations. Different button combinations are appropriate for different scenarios: OK for simple notifications, Yes/No for binary choices, OK/Cancel for confirmable actions. The numeric values match the Windows API constants for compatibility. When displaying a message box, the chosen button set should match the type of question or information being presented to the user. --- # Enum MessageBoxResult Link: api/VisioForge.Core.Types.MessageBoxResult.html # Enum MessageBoxResult # Enum MessageBoxResult **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies constants defining the result of a message box dialog. This enumeration is used to identify which button a user clicked on a message box. ```csharp public enum MessageBoxResult ``` ## Fields Parameters: - Abort (): The message box return value is Abort (typically sent from a button labeled Abort). - Cancel (): The message box return value is Cancel (typically sent from a button labeled Cancel). - Continue (): The message box return value is Continue (typically sent from a button labeled Continue). - Ignore (): The message box return value is Ignore (typically sent from a button labeled Ignore). - False (): The message box return value is No (typically sent from a button labeled No). - None (): The message box return value is None. This is typically used when the message box is closed without a specific button being clicked. - OK (): The message box return value is OK (typically sent from a button labeled OK). - Retry (): The message box return value is Retry (typically sent from a button labeled Retry). - TryAgain (): The message box return value is Try Again (typically sent from a button labeled Try Again). - True (): The message box return value is Yes (typically sent from a button labeled Yes). ## Remarks The values correspond to the standard responses from a message box, allowing applications to react appropriately to user input. The numeric values mirror the Windows API constants for compatibility with native message box implementations. Applications should check the returned value to determine the user's choice and respond accordingly. The None value typically indicates the dialog was closed without clicking a button (e.g., via the X button or Escape key). Different button combinations from MessageBoxDialogButtons will return different subsets of these result values. --- # Enum MouseButton Link: api/VisioForge.Core.Types.MouseButton.html # Enum MouseButton # Enum MouseButton **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies constants that define which mouse button was pressed. This enumeration is used in mouse-related events to identify the specific button involved in the event. ```csharp public enum MouseButton ``` ## Fields Parameters: - None (): No mouse button was pressed. - Left (): The left mouse button. - Middle (): The middle mouse button (often the scroll wheel button). - Right (): The right mouse button. - XButton1 (): The first X button (often a side button on gaming mice). - XButton2 (): The second X button (often a side button on gaming mice). ## Remarks These values are typically used when handling mouse input, such as in or events. The Left button is the primary button for most users, the Right button typically opens context menus, and the Middle button is often the scroll wheel. XButton1 and XButton2 are extra buttons found on some gaming or advanced mice, typically used for browser navigation (back/forward) or custom actions. The enumeration provides a platform-agnostic way to handle mouse input across different operating systems and UI frameworks. Mouse button events can be used to implement custom video controls, region selection, or interactive overlays on video content. --- # Enum PlaybackState Link: api/VisioForge.Core.Types.PlaybackState.html # Enum PlaybackState # Enum PlaybackState **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines the possible states of a media playback or capture session. This enumeration is used to indicate whether the media is actively playing, paused, or in an idle state. ```csharp public enum PlaybackState ``` ## Fields Parameters: - Play (): The media is currently playing or capturing. - Pause (): The media playback or capture is paused. - Free (): The media playback or capture is stopped, or the component is in an idle/free state. ## Remarks Components like and use this enum to report their current operational status. The state transitions typically follow this pattern: Free -> Play -> Pause -> Play -> Free. Play state indicates active processing (playing video, capturing video, streaming, etc.). Pause state indicates a temporary suspension where the session remains active and can be quickly resumed. Free state indicates the component is stopped, idle, or not yet initialized - no media processing is occurring. Monitoring the state is important for UI updates, resource management, and coordinating multiple media components. State changes may trigger events in implementing components to notify listeners of status transitions. --- # Struct RAWAudioFrame Link: api/VisioForge.Core.Types.RAWAudioFrame.html # Struct RAWAudioFrame # Struct RAWAudioFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a raw audio frame, designed for direct memory manipulation and interop scenarios. This struct holds a pointer to the raw audio data, its size, and basic audio format information, along with timing details. ```csharp public struct RAWAudioFrame ``` #### Inherited Members ## Examples
// Example of receiving a RAWAudioFrame from a native component (conceptual)
public void ProcessRawAudio(RAWAudioFrame rawFrame)
{
    Console.WriteLine($"Received raw audio frame: {rawFrame.DataSize} bytes at {rawFrame.Timestamp} ms.");

    // Convert to managed AudioFrame for easier processing if needed
    AudioFrame audioFrame = rawFrame.ToAudioFrame();

    // Now you can work with audioFrame.GetDataArray() or other managed properties
    byte[] audioData = audioFrame.GetDataArray();
    Console.WriteLine($"Converted to AudioFrame with {audioData.Length} bytes.");

    // Important: If the RAWAudioFrame.Data was allocated by a native component,
    // ensure it is freed when no longer needed, typically by the component that allocated it.
}
## Remarks This struct is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout is compatible with unmanaged code. It is primarily used for high-performance audio processing where direct access to audio buffers is required. The field is an , meaning memory management (allocation and deallocation) for the audio data buffer must be handled externally or by converting to which manages its own data. This struct is commonly used in callbacks from native audio components or in high-throughput audio processing pipelines. The timing fields (Timestamp and Duration) are in milliseconds for compatibility with native code, unlike the managed AudioFrame which uses TimeSpan. When receiving a RAWAudioFrame from native code, ensure that the memory pointed to by Data remains valid for the duration of processing. ## Fields ### Data A pointer to the unmanaged memory buffer containing the raw audio data. ```csharp public nint Data ``` #### Field Value Parameters: - (nint): ### DataSize The size of the raw audio data buffer in bytes. ```csharp public int DataSize ``` #### Field Value Parameters: - (int): ### Duration The duration of the audio frame in milliseconds. ```csharp public long Duration ``` #### Field Value Parameters: - (long): ### Info Contains detailed information about the raw audio format, such as channels, sample rate, and bit depth. ```csharp public RAWBaseAudioInfo Info ``` #### Field Value Parameters: - (RAWBaseAudioInfo): ### Timestamp The presentation timestamp of the audio frame in milliseconds. ```csharp public long Timestamp ``` #### Field Value Parameters: - (long): ## Methods ### ToAudioFrame() Converts the current instance into an object. This conversion facilitates working with the audio frame in a more managed and object-oriented way. ```csharp public AudioFrame ToAudioFrame() ``` #### Returns Parameters: - (AudioFrame): A new instance populated with data from the raw frame. --- # Class RAWAudioFrameEventArgs Link: api/VisioForge.Core.Types.RAWAudioFrameEventArgs.html # Class RAWAudioFrameEventArgs # Class RAWAudioFrameEventArgs **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Provides data for events that deliver raw audio frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. ```csharp public class RAWAudioFrameEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a raw audio frame event.
public void OnRawAudioFrameReceived(object sender, RAWAudioFrameEventArgs e)
{
    RAWAudioFrame rawFrame = e.Frame;

    // Access raw audio data and information
    Console.WriteLine($"Raw audio frame received: Size = {rawFrame.DataSize} bytes, Timestamp = {rawFrame.Timestamp} ms");

    // Convert to AudioFrame for easier manipulation if needed
    AudioFrame audioFrame = rawFrame.ToAudioFrame();
    // Process audioFrame...
}
## Remarks This event argument is typically used in scenarios where an application needs to process raw audio data directly, such as for custom audio analysis, visualization, real-time effects, or machine learning applications. The Frame property provides access to the raw audio buffer and its associated metadata. When handling events of this type, be aware that the audio data pointer may only be valid for the duration of the event handler. If you need to retain the audio data, copy it to a managed buffer or convert it to an AudioFrame before the handler returns. Common use cases include audio metering, spectrum analysis, voice activity detection, or feeding audio to custom processing pipelines. ## Constructors ### RAWAudioFrameEventArgs(RAWAudioFrame) Initializes a new instance of the class. ```csharp public RAWAudioFrameEventArgs(RAWAudioFrame frame) ``` #### Parameters Parameters: - frame (RAWAudioFrame): The to be encapsulated by these event arguments. ## Properties ### Frame Gets the associated with this event. This frame contains the raw audio data and its metadata. ```csharp public RAWAudioFrame Frame { get; } ``` #### Property Value Parameters: - (RAWAudioFrame): --- # Struct RAWBaseAudioInfo Link: api/VisioForge.Core.Types.RAWBaseAudioInfo.html # Struct RAWBaseAudioInfo # Struct RAWBaseAudioInfo **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents fundamental information about a raw audio stream. This struct provides details such as bits per sample, number of channels, sample rate, and audio format. ```csharp public struct RAWBaseAudioInfo ``` #### Inherited Members ## Remarks This struct is critical for interoperation with unmanaged code and is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout matches native structures. Do not modify its structure without careful consideration of compatibility. The BPS (Bits Per Sample) field indicates the bit depth of each audio sample. Channels typically range from 1 (mono) to 2 (stereo) for common audio, but can be higher for surround sound (5.1 = 6 channels, 7.1 = 8 channels). SampleRate is measured in Hz and determines the audio quality and frequency range - 44100 Hz is CD quality, 48000 Hz is DVD/professional quality. The Format field disambiguates between different representations of the same bit depth (e.g., PCM16 vs IEEE32). This struct is used throughout the framework to describe audio streams in a consistent, platform-independent manner. ## Fields ### BPS Gets or sets the bits per sample (bit depth) of the audio data. Common values include 8, 16, 24, 32. ```csharp public int BPS ``` #### Field Value Parameters: - (int): ### Channels Gets or sets the number of audio channels. Common values are 1 for mono, 2 for stereo. ```csharp public int Channels ``` #### Field Value Parameters: - (int): ### Format Gets or sets the of the audio data. This specifies whether the data is PCM, IEEE float, and its bit depth type. ```csharp public AudioFormat Format ``` #### Field Value Parameters: - (AudioFormat): ### SampleRate Gets or sets the sample rate of the audio stream in Hertz (Hz). Common values include 44100 Hz (CD quality) or 48000 Hz. ```csharp public int SampleRate ``` #### Field Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the bits per sample, channels, sample rate, and audio format. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Struct RAWBaseVideoInfo Link: api/VisioForge.Core.Types.RAWBaseVideoInfo.html # Struct RAWBaseVideoInfo # Struct RAWBaseVideoInfo **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents fundamental information about a raw video stream or frame. This struct provides details such as width, height, color space, stride, and frame rate. ```csharp public struct RAWBaseVideoInfo ``` #### Inherited Members ## Remarks This struct is critical for interoperation with unmanaged code and is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout matches native structures. Do not modify its structure without careful consideration of compatibility. Width and Height define the dimensions of the video frame in pixels. Colorspace specifies the pixel format and color encoding (RGB, YUV, etc.) which affects how the raw data should be interpreted. Stride (also called pitch) is the number of bytes per row of pixels, which may be larger than Width * BytesPerPixel due to alignment padding. FrameRateNum and FrameRateDen together form a rational number representing frames per second (e.g., 30000/1001 for NTSC, 30/1 for 30 FPS). This struct is used throughout the framework to describe video streams in a consistent, platform-independent manner. When allocating buffers for video frames, always use Stride * Height rather than Width * Height * BytesPerPixel. ## Fields ### Colorspace Gets or sets the color space format of the raw video data. ```csharp public RAWVideoColorSpace Colorspace ``` #### Field Value Parameters: - (RAWVideoColorSpace): #### See Also ### FrameRateDen Gets or sets the denominator of the frame rate (e.g., 1 for 30/1 fps). ```csharp public int FrameRateDen ``` #### Field Value Parameters: - (int): ### FrameRateNum Gets or sets the numerator of the frame rate (e.g., 30 for 30/1 fps). ```csharp public int FrameRateNum ``` #### Field Value Parameters: - (int): ### Height Gets or sets the height of the video frame in pixels. ```csharp public int Height ``` #### Field Value Parameters: - (int): ### Stride Gets or sets the stride (or pitch) of the video frame in bytes. This is the number of bytes required to store one row of pixels. ```csharp public int Stride ``` #### Field Value Parameters: - (int): ### Width Gets or sets the width of the video frame in pixels. ```csharp public int Width ``` #### Field Value Parameters: - (int): --- # Struct RAWImage Link: api/VisioForge.Core.Types.RAWImage.html # Struct RAWImage # Struct RAWImage **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a raw image frame, providing direct access to image data in unmanaged memory. This struct is designed for high-performance image processing and interoperation with native code. ```csharp public struct RAWImage ``` #### Inherited Members ## Remarks The RAWImage struct holds a pointer to the raw pixel data, along with its dimensions, stride, and color space. It is crucial to manage the memory pointed to by using the and methods, or ensure that the memory is managed externally if the RAWImage is merely a view into an existing buffer. This struct is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout is compatible with native structures. The Stride field is critical for correct memory access - it represents the byte width of each row including any padding for alignment. Always use Stride * Height to calculate the total buffer size, never Width * BytesPerPixel * Height. This type is commonly used when interfacing with native image processing libraries, video decoders, or when optimizing critical image operations. Memory allocated with Alloc() must be freed with Free() to prevent leaks - consider using try/finally blocks. The constructor allows wrapping existing memory without allocation, useful for zero-copy scenarios. ## Constructors ### RAWImage(nint, int, int, int, int, RAWVideoColorSpace) Initializes a new instance of the struct with specified parameters. ```csharp public RAWImage(nint data, int dataSize, int width, int height, int stride, RAWVideoColorSpace colorspace) ``` #### Parameters Parameters: - data (nint): A pointer to the raw image data. - dataSize (int): The size of the data in bytes. - width (int): The width of the image in pixels. - height (int): The height of the image in pixels. - stride (int): The stride of the image in bytes. - colorspace (RAWVideoColorSpace): The color space of the image. ## Fields ### Colorspace Gets or sets the color space format of the raw image data. ```csharp public RAWVideoColorSpace Colorspace ``` #### Field Value Parameters: - (RAWVideoColorSpace): #### See Also ### Data Gets or sets a pointer to the unmanaged memory buffer containing the raw pixel data. ```csharp public nint Data ``` #### Field Value Parameters: - (nint): ### DataSize Gets or sets the total size of the image data buffer in bytes. This is typically multiplied by . ```csharp public int DataSize ``` #### Field Value Parameters: - (int): ### Height Gets or sets the height of the image in pixels. ```csharp public int Height ``` #### Field Value Parameters: - (int): ### Stride Gets or sets the stride (or pitch) of the image in bytes. This is the number of bytes required to store one row of pixels, including any padding. ```csharp public int Stride ``` #### Field Value Parameters: - (int): ### Width Gets or sets the width of the image in pixels. ```csharp public int Width ``` #### Field Value Parameters: - (int): ## Methods ### Alloc() Allocates unmanaged memory for the image data buffer based on the and . The field is updated accordingly. ```csharp public void Alloc() ``` #### Remarks This method should be called before writing pixel data to the pointer. It is crucial to call when the allocated memory is no longer needed. ### Free() Frees the unmanaged memory previously allocated for the image data buffer. ```csharp public void Free() ``` #### Remarks This method should always be called to prevent memory leaks when the RAWImage instance is no longer needed, especially if was used. --- # Enum RAWVideoColorSpace Link: api/VisioForge.Core.Types.RAWVideoColorSpace.html # Enum RAWVideoColorSpace # Enum RAWVideoColorSpace **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines various raw video color space formats. This enumeration is used to specify how pixel data is arranged and interpreted in raw video frames. ```csharp public enum RAWVideoColorSpace ``` #### Extension Methods ## Fields Parameters: - Unknown (): The color space is unknown or unspecified. - RGB (): Red, Green, Blue color space. Typically 24-bit (8 bits per channel). - BGR (): Blue, Green, Red color space. Typically 24-bit (8 bits per channel). - RGBA (): Red, Green, Blue, Alpha color space. Typically 32-bit (8 bits per channel plus an alpha channel). - NV12 (): NV12 YUV 4:2:0 planar format. Y plane first, followed by interleaved U/V plane. - YUY2 (): YUY2 YUV 4:2:2 packed format. Y, U, Y, V samples are interleaved. - BGRA (): Blue, Green, Red, Alpha color space. Typically 32-bit (8 bits per channel plus an alpha channel). ## Remarks Understanding the color space is crucial for correct rendering and processing of raw video data. Different color spaces offer various trade-offs in terms of color accuracy, file size, and processing efficiency. RGB formats store red, green, and blue components directly and are intuitive but can be memory-intensive. YUV formats separate luminance (Y) from chrominance (U, V) and are more bandwidth-efficient, especially for chroma subsampling. The order of components (RGB vs BGR, RGBA vs BGRA) is important for correct color representation and varies by platform and API. NV12 is widely used for hardware video encoding/decoding as it's natively supported by many GPUs. YUY2 is a packed format convenient for some capture devices and video processing. Alpha channel formats (RGBA, BGRA) include transparency information in addition to color. --- # Class RAWVideoColorSpaceHelper Link: api/VisioForge.Core.Types.RAWVideoColorSpaceHelper.html # Class RAWVideoColorSpaceHelper # Class RAWVideoColorSpaceHelper **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Provides helper methods for working with . This static class facilitates conversions between different color space representations and calculates image stride. ```csharp public static class RAWVideoColorSpaceHelper ``` #### Inheritance #### Inherited Members ## Remarks This helper is essential for managing raw video and image data, ensuring correct interpretation and memory allocation when dealing with various pixel formats and platform-specific image structures. The conversion methods bridge between the framework's internal color space representation and platform-specific types. On Windows, conversions to/from System.Drawing.Imaging.PixelFormat enable integration with GDI+ and Windows Forms. On other platforms, conversions use PixelFormatX for cross-platform compatibility. The ToVideoFormat method maps to MediaBlocks VideoFormatX for use with the modern pipeline. These conversions are essential when interfacing with platform-specific UI frameworks or external image libraries. Not all color spaces have direct mappings to all target types - some conversions may throw ArgumentOutOfRangeException. ## Methods ### GetStride(RAWVideoColorSpace, int) Calculates the stride (number of bytes per scan line) for a given video color space and width. The stride often includes padding to ensure memory alignment, which can be different from (width * bytes_per_pixel). ```csharp public static int GetStride(this RAWVideoColorSpace cs, int width) ``` #### Parameters Parameters: - cs (RAWVideoColorSpace): The for which to calculate the stride. - width (int): The width of the video frame in pixels. #### Returns Parameters: - (int): The calculated stride in bytes. #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown if the provided cs is not supported for stride calculation. ### ToColorSpace(PixelFormatX) Converts a to its corresponding enumeration value. This method is used on non-Windows platforms. ```csharp public static RAWVideoColorSpace ToColorSpace(this PixelFormatX pf) ``` #### Parameters Parameters: - pf (PixelFormatX): The to convert. #### Returns Parameters: - (RAWVideoColorSpace): The equivalent . #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown if the provided pf does not have a direct mapping to a . ### ToPixelFormat(RAWVideoColorSpace) Converts a enumeration value to its corresponding . This method is used on non-Windows platforms where System.Drawing.Imaging.PixelFormat is not available. ```csharp public static PixelFormatX ToPixelFormat(this RAWVideoColorSpace cs) ``` #### Parameters Parameters: - cs (RAWVideoColorSpace): The to convert. #### Returns Parameters: - (PixelFormatX): The equivalent . #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown if the provided cs does not have a direct mapping to a . ### ToVideoFormat(RAWVideoColorSpace) Converts a enumeration value to its corresponding value. This is useful for mapping raw video formats to the MediaBlocks video format definitions. ```csharp public static VideoFormatX ToVideoFormat(this RAWVideoColorSpace cs) ``` #### Parameters Parameters: - cs (RAWVideoColorSpace): The to convert. #### Returns Parameters: - (VideoFormatX): The equivalent . #### Exceptions Parameters: - (ArgumentOutOfRangeException): Thrown if the provided cs is not a recognized value. --- # Struct RAWVideoFrame Link: api/VisioForge.Core.Types.RAWVideoFrame.html # Struct RAWVideoFrame # Struct RAWVideoFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a raw video frame, designed for direct memory manipulation and interop scenarios. This struct holds a pointer to the raw video data, its size, and basic video format information, along with timing details. ```csharp public struct RAWVideoFrame ``` #### Inherited Members ## Remarks This struct is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout is compatible with unmanaged code. It is primarily used for high-performance video processing where direct access to video buffers is required. The field is an , meaning memory management (allocation and deallocation) for the video data buffer must be handled externally or by converting to which manages its own data. This struct is commonly used in callbacks from native video components, video processing pipelines, or when interfacing with hardware encoders/decoders. The timing fields (Timestamp and Duration) are in milliseconds for compatibility with native code, unlike the managed VideoFrame which uses TimeSpan. The Alloc and Free methods provide manual memory management for scenarios where you need to create and populate frames from scratch. When receiving a RAWVideoFrame from native code, ensure that the memory pointed to by Data remains valid for the duration of processing. The ToVideoFrame method provides conversion to the managed VideoFrame type for easier manipulation in C# code. ## Fields ### Data A pointer to the unmanaged memory buffer containing the raw video data. ```csharp public nint Data ``` #### Field Value Parameters: - (nint): ### DataSize The size of the raw video data buffer in bytes. ```csharp public int DataSize ``` #### Field Value Parameters: - (int): ### Duration The duration of the video frame in milliseconds. ```csharp public long Duration ``` #### Field Value Parameters: - (long): ### Info Contains detailed information about the raw video format, such as width, height, color space, and stride. ```csharp public RAWBaseVideoInfo Info ``` #### Field Value Parameters: - (RAWBaseVideoInfo): ### Timestamp The presentation timestamp of the video frame in milliseconds. ```csharp public long Timestamp ``` #### Field Value Parameters: - (long): ## Methods ### Alloc() Allocates unmanaged memory for the video data buffer based on the Info.Stride and Info.Height. The field is updated accordingly. ```csharp public void Alloc() ``` #### Remarks This method should be called before writing pixel data to the pointer. It is crucial to call when the allocated memory is no longer needed. ### Free() Frees the unmanaged memory previously allocated for the video data buffer. ```csharp public void Free() ``` #### Remarks This method should always be called to prevent memory leaks when the RAWVideoFrame instance is no longer needed, especially if was used. ### ToVideoFrame() Converts the current instance into a object. This conversion facilitates working with the video frame in a more managed and object-oriented way. ```csharp public VideoFrame ToVideoFrame() ``` #### Returns Parameters: - (VideoFrame): A new instance populated with data from the raw frame. --- # Class RAWVideoFrameEventArgs Link: api/VisioForge.Core.Types.RAWVideoFrameEventArgs.html # Class RAWVideoFrameEventArgs # Class RAWVideoFrameEventArgs **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Provides data for events that deliver raw video frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. ```csharp public class RAWVideoFrameEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event argument is typically used in scenarios where an application needs to process raw video data directly, such as for custom video analysis, computer vision algorithms, rendering to custom surfaces, or real-time effects. The Frame property provides access to the raw video buffer and its associated metadata including dimensions, color space, and timing. When handling events of this type, be aware that the video data pointer may only be valid for the duration of the event handler. If you need to retain the video data, copy it to a managed buffer or convert it to a VideoFrame before the handler returns. Common use cases include motion detection, QR code scanning, face detection, augmented reality overlays, or feeding frames to machine learning models. Frame event handlers should execute quickly to avoid blocking the video pipeline and causing frame drops. ## Constructors ### RAWVideoFrameEventArgs(RAWVideoFrame) Initializes a new instance of the class. ```csharp public RAWVideoFrameEventArgs(RAWVideoFrame frame) ``` #### Parameters Parameters: - frame (RAWVideoFrame): The to be encapsulated by these event arguments. ## Properties ### Frame Gets the associated with this event. This frame contains the raw video data and its metadata. ```csharp public RAWVideoFrame Frame { get; } ``` #### Property Value Parameters: - (RAWVideoFrame): --- # Class Rect Link: api/VisioForge.Core.Types.Rect.html # Class Rect # Class Rect **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a rectangular area defined by its left, top, right, and bottom coordinates. This class provides properties to access the dimensions and check if the rectangle is empty. ```csharp public class Rect ``` #### Inheritance #### Inherited Members #### Extension Methods ## Remarks This class is commonly used to define regions of interest, video frame dimensions, cropping areas, or UI element bounds. It includes constructors for various initialization scenarios and utility properties for width and height. The rectangle is defined by edges (Left, Top, Right, Bottom) rather than position and size, which is common in graphics APIs. Width is calculated as Right - Left, and Height as Bottom - Top. The IsEmpty property returns true only when all coordinates are zero. On Windows platforms, the class provides conversion methods to/from System.Drawing.Rectangle for interoperability. This type is used throughout the framework for specifying video crop regions, overlay positions, or selection areas. Coordinate values are in pixels and represent inclusive boundaries. ## Constructors ### Rect(int, int, int, int) Initializes a new instance of the class with specified integer coordinates. ```csharp public Rect(int left, int top, int right, int bottom) ``` #### Parameters Parameters: - left (int): The x-coordinate of the left edge. - top (int): The y-coordinate of the top edge. - right (int): The x-coordinate of the right edge. - bottom (int): The y-coordinate of the bottom edge. ### Rect(uint, uint, uint, uint) Initializes a new instance of the class with specified unsigned integer coordinates. The coordinates are cast to . ```csharp public Rect(uint left, uint top, uint right, uint bottom) ``` #### Parameters Parameters: - left (uint): The x-coordinate of the left edge. - top (uint): The y-coordinate of the top edge. - right (uint): The x-coordinate of the right edge. - bottom (uint): The y-coordinate of the bottom edge. ### Rect() Initializes a new instance of the class with all coordinates set to zero, creating an empty rectangle. ```csharp public Rect() ``` ### Rect(Size) Initializes a new instance of the class with its top-left corner at (0,0) and dimensions specified by a object. ```csharp public Rect(Size size) ``` #### Parameters Parameters: - size (Size): The object defining the width and height of the rectangle. ## Properties ### Bottom Gets or sets the y-coordinate of the bottom edge of the rectangle. ```csharp public int Bottom { get; set; } ``` #### Property Value Parameters: - (int): ### Height Gets the height of the rectangle. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### IsEmpty Gets a value indicating whether the rectangle is empty (i.e., all coordinates are zero). ```csharp public bool IsEmpty { get; } ``` #### Property Value Parameters: - (bool): ### Left Gets or sets the x-coordinate of the left edge of the rectangle. ```csharp public int Left { get; set; } ``` #### Property Value Parameters: - (int): ### Right Gets or sets the x-coordinate of the right edge of the rectangle. ```csharp public int Right { get; set; } ``` #### Property Value Parameters: - (int): ### Top Gets or sets the y-coordinate of the top edge of the rectangle. ```csharp public int Top { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets the width of the rectangle. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): ## Methods ### IntersectsWith(Rect) Returns a value indicating whether the current rectangle intersects with another specified rectangle. ```csharp public bool IntersectsWith(Rect rect) ``` #### Parameters Parameters: - rect (Rect): The rectangle to check for intersection. #### Returns Parameters: - (bool): true if the rectangles intersect; otherwise, false. ### ToString() Returns a string that represents the current instance in a human-readable format. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance, showing coordinates and dimensions. ### Union(Rect, Rect) Returns a new that represents the union of two rectangles. ```csharp public static Rect Union(Rect a, Rect b) ``` #### Parameters Parameters: - a (Rect): The first rectangle. - b (Rect): The second rectangle. #### Returns Parameters: - (Rect): A new that encompasses both input rectangles. --- # Class Size Link: api/VisioForge.Core.Types.Size.html # Class Size # Class Size **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents the size of a two-dimensional object, typically in pixels. This class encapsulates a width and a height, providing a convenient way to manage dimensions. ```csharp public class Size ``` #### Inheritance #### Inherited Members ## Remarks This class is commonly used for specifying video resolutions, image dimensions, control sizes, or texture dimensions. It includes properties for accessing width and height, constructors for various initialization scenarios, and a method to check for an empty size. The IsEmpty property returns true when both Width and Height are zero. The static Empty property provides a convenient way to get a zero-sized instance. On Windows platforms, the class provides a constructor from System.Drawing.Size for interoperability with GDI+ and Windows Forms. The ToString method formats the size as "WidthxHeight" (e.g., "1920x1080"), which is a common format for displaying resolutions. This type is used throughout the framework wherever dimensions need to be specified or queried. All dimension values are in pixels and should be non-negative for valid use cases. ## Constructors ### Size(int, int) Initializes a new instance of the class with specified width and height. ```csharp public Size(int width, int heigth) ``` #### Parameters Parameters: - width (int): The width of the object. - heigth (int): The height of the object. ## Properties ### Empty Gets an empty instance with both and set to 0. ```csharp public static Size Empty { get; } ``` #### Property Value Parameters: - (Size): ### Height Gets or sets the height component of the size. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### IsEmpty Gets a value indicating whether this instance is empty. An empty size has both and set to 0. ```csharp public bool IsEmpty { get; } ``` #### Property Value Parameters: - (bool): ### Width Gets or sets the width component of the size. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance in the format "WidthxHeight". ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Struct VFRectIntl Link: api/VisioForge.Core.Types.VFRectIntl.html # Struct VFRectIntl # Struct VFRectIntl **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents an internal rectangular area defined by its left, top, right, and bottom coordinates. This struct is primarily used for interoperation with native code due to its sequential memory layout. ```csharp public struct VFRectIntl ``` #### Inherited Members #### Extension Methods ## Remarks This struct is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout is compatible with unmanaged structures. It is similar to but is a value type (struct) and intended for internal or interop scenarios where precise memory control is needed. Being a struct, it's allocated on the stack and passed by value, making it more efficient for P/Invoke scenarios and native callbacks. The struct uses public fields rather than properties for direct memory access compatibility with native code. All fields are integers representing pixel coordinates. On Windows, it can be constructed from System.Drawing.Rectangle for easy integration with GDI+. The ToString method provides a detailed representation showing both coordinates and calculated dimensions. This type is used internally by the framework when passing rectangle data to native components or receiving it from native callbacks. ## Constructors ### VFRectIntl(int, int, int, int) Initializes a new instance of the struct with specified integer coordinates. ```csharp public VFRectIntl(int left, int top, int right, int bottom) ``` #### Parameters Parameters: - left (int): The x-coordinate of the left edge. - top (int): The y-coordinate of the top edge. - right (int): The x-coordinate of the right edge. - bottom (int): The y-coordinate of the bottom edge. ## Fields ### Bottom The y-coordinate of the bottom edge of the rectangle. ```csharp public int Bottom ``` #### Field Value Parameters: - (int): ### Left The x-coordinate of the left edge of the rectangle. ```csharp public int Left ``` #### Field Value Parameters: - (int): ### Right The x-coordinate of the right edge of the rectangle. ```csharp public int Right ``` #### Field Value Parameters: - (int): ### Top The y-coordinate of the top edge of the rectangle. ```csharp public int Top ``` #### Field Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance in a human-readable format. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance, showing coordinates and calculated width and height. --- # Struct VFSizeIntl Link: api/VisioForge.Core.Types.VFSizeIntl.html # Struct VFSizeIntl # Struct VFSizeIntl **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents an internal size structure defined by its width and height. This struct is primarily used for interoperation with native code due to its sequential memory layout. ```csharp public struct VFSizeIntl ``` #### Inherited Members ## Remarks This struct is marked with [StructLayout(LayoutKind.Sequential)] to ensure its memory layout is compatible with unmanaged structures. It is similar to but is a value type (struct) and intended for internal or interop scenarios where precise memory control is needed. Being a struct, it's allocated on the stack and passed by value, making it more efficient for P/Invoke scenarios and native callbacks. The struct uses public fields rather than properties for direct memory access compatibility with native code. Both fields are integers representing dimensions in pixels. On Windows, it can be constructed from System.Drawing.Size for easy integration with GDI+. This type is used internally by the framework when passing size data to native components or receiving it from native callbacks. Common use cases include specifying dimensions for native video buffers, encoder settings, or render target sizes. ## Constructors ### VFSizeIntl(int, int) Initializes a new instance of the struct with specified width and height. ```csharp public VFSizeIntl(int width, int heigth) ``` #### Parameters Parameters: - width (int): The width of the object. - heigth (int): The height of the object. ## Fields ### Height The height component of the size. ```csharp public int Height ``` #### Field Value Parameters: - (int): ### Width The width component of the size. ```csharp public int Width ``` #### Field Value Parameters: - (int): --- # Struct VideoFrame Link: api/VisioForge.Core.Types.VideoFrame.html # Struct VideoFrame # Struct VideoFrame **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a single frame of video data, including its raw data, format information, and timing. This struct provides a managed way to work with video frames, abstracting some of the complexities of unmanaged memory. ```csharp public struct VideoFrame ``` #### Inherited Members #### Extension Methods ## Remarks The VideoFrame struct holds a pointer to the raw pixel data, along with its dimensions, stride, color space, and timing information. It includes methods for memory management (, ) and conversions to other frame types like and . Unlike RAWVideoFrame which uses millisecond timestamps, VideoFrame uses TimeSpan for timing, making it more convenient for C# code. The Info field contains all format metadata including dimensions, color space, stride, and frame rate. Memory management is manual - Alloc() allocates unmanaged memory which must be freed with Free() to prevent leaks. The struct provides multiple conversion methods: ToRAWVideoFrame for interop, ToArray for byte array access, ToRAWImage for image processing. IsEmpty() checks if the Data pointer is null, useful for validating frame availability. CreateAndAlloc is a static factory method that combines construction and allocation in one call. This type is central to video processing workflows in the framework, bridging managed and unmanaged code. ## Fields ### Data A pointer to the unmanaged memory buffer containing the raw video data. ```csharp public nint Data ``` #### Field Value Parameters: - (nint): ### DataSize The total size of the video data buffer in bytes. ```csharp public int DataSize ``` #### Field Value Parameters: - (int): ### Duration The duration of the video frame. ```csharp public TimeSpan Duration ``` #### Field Value Parameters: - (TimeSpan): ### Info Contains detailed information about the raw video format, such as width, height, color space, and stride. ```csharp public RAWBaseVideoInfo Info ``` #### Field Value Parameters: - (RAWBaseVideoInfo): ### Timestamp The presentation timestamp of the video frame. ```csharp public TimeSpan Timestamp ``` #### Field Value Parameters: - (TimeSpan): ## Methods ### Alloc() Allocates unmanaged memory for the video data buffer based on the and . The field is updated accordingly. ```csharp public void Alloc() ``` #### Remarks This method should be called before writing pixel data to the pointer. It is crucial to call when the allocated memory is no longer needed. ### Alloc(int) Allocates unmanaged memory for the video data buffer with a specified size. ```csharp public void Alloc(int size) ``` #### Parameters Parameters: - size (int): The number of bytes to allocate for the video data. #### Remarks This overload allows for direct control over the allocated buffer size, which can be useful for custom formats. ### Clone() Creates a deep copy of the current instance. This involves allocating new memory for the data and copying all frame properties. ```csharp public VideoFrame Clone() ``` #### Returns Parameters: - (VideoFrame): A new instance that is a clone of the current one. ### CreateAndAlloc(int, int, int, RAWVideoColorSpace) Creates a new instance and allocates its internal data buffer. ```csharp public static VideoFrame CreateAndAlloc(int width, int height, int stride, RAWVideoColorSpace colorspace) ``` #### Parameters Parameters: - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. - colorspace (RAWVideoColorSpace): The color space of the video frame. #### Returns Parameters: - (VideoFrame): A new instance with allocated memory. ### CreateNoAlloc(int, int, int, RAWVideoColorSpace) Creates a new instance without allocating its internal data buffer. The pointer will be . ```csharp public static VideoFrame CreateNoAlloc(int width, int height, int stride, RAWVideoColorSpace colorspace) ``` #### Parameters Parameters: - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. - colorspace (RAWVideoColorSpace): The color space of the video frame. #### Returns Parameters: - (VideoFrame): A new instance without allocated memory. ### Free() Frees the unmanaged memory previously allocated for the video data buffer. ```csharp public void Free() ``` #### Remarks This method should always be called to prevent memory leaks when the VideoFrame instance is no longer needed, especially if or was used. ### IsEmpty() Determines whether this video frame instance is empty (i.e., its pointer is ). ```csharp public bool IsEmpty() ``` #### Returns Parameters: - (bool): true if this instance is empty; otherwise, false. ### ToArray() Copies the raw video data from the unmanaged memory buffer into a new managed byte array. ```csharp public byte[] ToArray() ``` #### Returns Parameters: - (byte [ ]): A new byte array containing the video data. ### ToRAWImage() Converts the current instance into a struct. This conversion is useful for treating the video frame as a raw image for processing or saving. ```csharp public RAWImage ToRAWImage() ``` #### Returns Parameters: - (RAWImage): A new instance populated with data from the current frame. ### ToRAWVideoFrame() Converts the current instance into a struct. This conversion is useful for passing video frame data to native components that expect the structure. ```csharp public RAWVideoFrame ToRAWVideoFrame() ``` #### Returns Parameters: - (RAWVideoFrame): A new instance populated with data from the current frame. ### ToVideoFrameX(bool) Converts the current instance into a object. This conversion is useful for integrating with the newer MediaBlocks framework. ```csharp public VideoFrameX ToVideoFrameX(bool copyData) ``` #### Parameters Parameters: - copyData (bool): If set to true, a new memory buffer is allocated for and the data is copied; otherwise, the pointer is directly assigned (use with caution). #### Returns Parameters: - (VideoFrameX): A new instance populated with data from the current frame. --- # Struct VideoFrameRate Link: api/VisioForge.Core.Types.VideoFrameRate.html # Struct VideoFrameRate # Struct VideoFrameRate **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Represents a video frame rate, typically expressed as a fraction (numerator/denominator) or a floating-point value. This struct provides methods for comparison, conversion, and common frame rate constants. ```csharp public struct VideoFrameRate : IComparable, IConvertible, IComparable, IEquatable ``` #### Implements #### Inherited Members #### Extension Methods ## Remarks Frame rates are crucial for accurate video playback, synchronization, and encoding. This struct handles the precision required for various video standards by storing frame rates as rational numbers (fractions). The numerator (Num) and denominator (Den) representation is essential for exact representation of rates like 29.97 (30000/1001) or 23.976 (24000/1001). The Value property provides a computed floating-point representation for convenience. Static properties provide standard frame rates: FPS_10, FPS_25 (PAL), FPS_30 (NTSC), FPS_60, FPS_29_97 (NTSC drop-frame), FPS_23_976 (film), etc. The struct implements IComparable, IEquatable, and IConvertible for comprehensive integration with .NET types. Comparison operators allow intuitive frame rate comparisons. IsEmpty property checks if the frame rate is uninitialized (0/0). This type is used throughout the framework wherever frame rate needs to be specified or queried. ## Constructors ### VideoFrameRate(uint, uint) Initializes a new instance of the struct with a numerator and denominator. ```csharp public VideoFrameRate(uint num, uint den) ``` #### Parameters Parameters: - num (uint): The numerator of the frame rate. - den (uint): The denominator of the frame rate. If 0, the frame rate is considered 0. ### VideoFrameRate(long, long) Initializes a new instance of the struct with long integer numerator and denominator. ```csharp public VideoFrameRate(long num, long den) ``` #### Parameters Parameters: - num (long): The numerator of the frame rate. - den (long): The denominator of the frame rate. If 0, the frame rate is considered 0. ### VideoFrameRate(int, int) Initializes a new instance of the struct with integer numerator and denominator. ```csharp public VideoFrameRate(int num, int den) ``` #### Parameters Parameters: - num (int): The numerator of the frame rate. - den (int): The denominator of the frame rate. If 0, the frame rate is considered 0. ### VideoFrameRate(int) Initializes a new instance of the struct with a whole number frame rate. The denominator is set to 1. ```csharp public VideoFrameRate(int num) ``` #### Parameters Parameters: - num (int): The whole number frame rate value. ### VideoFrameRate(double) Initializes a new instance of the struct from a double-precision floating-point value. The numerator and denominator are calculated from the double value. ```csharp public VideoFrameRate(double value) ``` #### Parameters Parameters: - value (double): The floating-point frame rate. ### VideoFrameRate(uint) Initializes a new instance of the struct from an unsigned integer value. The denominator is set to 1. ```csharp public VideoFrameRate(uint value) ``` #### Parameters Parameters: - value (uint): The unsigned integer frame rate. ## Fields ### Empty Represents an empty or uninitialized video frame rate (0/0). ```csharp public static VideoFrameRate Empty ``` #### Field Value Parameters: - (VideoFrameRate): ## Properties ### Den Gets the denominator of the frame rate fraction. ```csharp public readonly uint Den { get; } ``` #### Property Value Parameters: - (uint): ### FPS_10 Gets a static instance representing 10 frames per second (10/1). ```csharp public static VideoFrameRate FPS_10 { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### FPS_25 Gets a static instance representing 25 frames per second (25/1), common for PAL video. ```csharp public static VideoFrameRate FPS_25 { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### FPS_30 Gets a static instance representing 30 frames per second (30/1), common for NTSC video. ```csharp public static VideoFrameRate FPS_30 { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### FPS_60 Gets a static instance representing 60 frames per second (60/1). ```csharp public static VideoFrameRate FPS_60 { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### IsEmpty Gets a value indicating whether this instance is empty. An empty frame rate has a numerator of 0. ```csharp public bool IsEmpty { get; } ``` #### Property Value Parameters: - (bool): ### Num Gets the numerator of the frame rate fraction. ```csharp public readonly uint Num { get; } ``` #### Property Value Parameters: - (uint): ### Value Gets the floating-point value of the frame rate. ```csharp public double Value { get; } ``` #### Property Value Parameters: - (double): ## Methods ### CompareTo(double) Compares the current instance with a specified double-precision floating-point value. ```csharp public bool CompareTo(double value) ``` #### Parameters Parameters: - value (double): The double value to compare with. #### Returns Parameters: - (bool): true if the absolute difference between the two values is less than 0.0001; otherwise, false. ### CompareTo(VideoFrameRate) Compares the current instance with another object and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(VideoFrameRate other) ``` #### Parameters Parameters: - other (VideoFrameRate): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared.
ValueMeaning
Less than zeroThis instance precedes other in the sort order.
ZeroThis instance occurs in the same position in the sort order as other.
Greater than zeroThis instance follows other in the sort order.
### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. This method is not fully implemented and will throw a if the object is not a . ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared.
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
#### Exceptions Parameters: - (NotImplementedException): ### Equals(object) Determines whether the specified is equal to this instance. ```csharp public override bool Equals(object obj) ``` #### Parameters Parameters: - obj (object): The object to compare with the current instance. #### Returns Parameters: - (bool): true if the specified is equal to this instance; otherwise, false. ### Equals(VideoFrameRate) Indicates whether the current object is equal to another object of the same type. ```csharp public bool Equals(VideoFrameRate other) ``` #### Parameters Parameters: - other (VideoFrameRate): An object to compare with this object. #### Returns Parameters: - (bool): true if the current object is equal to the other parameter; otherwise, false. ### GetAvgTimePerFrame() Gets the average time per frame in 100-nanosecond units. ```csharp public long GetAvgTimePerFrame() ``` #### Returns Parameters: - (long): The average time per frame as a . ### GetHashCode() Returns a hash code for this instance. ```csharp public override int GetHashCode() ``` #### Returns Parameters: - (int): A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. ### GetTypeCode() Returns the for this instance. ```csharp public TypeCode GetTypeCode() ``` #### Returns Parameters: - (TypeCode): The enumerated constant that is the of the class or value type that implements this interface. ### ToBoolean(IFormatProvider) Converts the value of this instance to an equivalent Boolean value using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public bool ToBoolean(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (bool): A Boolean value equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToByte(IFormatProvider) Converts the value of this instance to an equivalent 8-bit unsigned integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public byte ToByte(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (byte): An 8-bit unsigned integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToChar(IFormatProvider) Converts the value of this instance to an equivalent Unicode character using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public char ToChar(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (char): A Unicode character equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToDateTime(IFormatProvider) Converts the value of this instance to an equivalent using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public DateTime ToDateTime(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (DateTime): A instance equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToDecimal(IFormatProvider) Converts the value of this instance to an equivalent number using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public decimal ToDecimal(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (decimal): A number equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToDouble(IFormatProvider) Converts the value of this instance to an equivalent double-precision floating-point number using the specified culture-specific formatting information. ```csharp public double ToDouble(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (double): A double-precision floating-point number equivalent to the value of this instance. ### ToInt16(IFormatProvider) Converts the value of this instance to an equivalent 16-bit signed integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public short ToInt16(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (short): An 16-bit signed integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToInt32(IFormatProvider) Converts the value of this instance to an equivalent 32-bit signed integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public int ToInt32(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (int): An 32-bit signed integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToInt64(IFormatProvider) Converts the value of this instance to an equivalent 64-bit signed integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public long ToInt64(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (long): An 64-bit signed integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToSByte(IFormatProvider) Converts the value of this instance to an equivalent 8-bit signed integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public sbyte ToSByte(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (sbyte): An 8-bit signed integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToSingle(IFormatProvider) Converts the value of this instance to an equivalent single-precision floating-point number using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public float ToSingle(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (float): A single-precision floating-point number equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToString() Returns a string that represents the current instance, formatted to two decimal places. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ### ToString(CultureInfo) Returns a string that represents the current instance, formatted using the specified culture information. ```csharp public string ToString(CultureInfo cultureInfo) ``` #### Parameters Parameters: - cultureInfo (CultureInfo): The culture information to use for formatting. #### Returns Parameters: - (string): A that represents this instance. ### ToString(IFormatProvider) Returns a that represents this instance. This method is not implemented and will throw a . ```csharp public string ToString(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (string): A that represents this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToType(Type, IFormatProvider) Converts the value of this instance to an of the specified that has an equivalent value, using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public object ToType(Type conversionType, IFormatProvider provider) ``` #### Parameters Parameters: - conversionType (Type): The to which the value of this instance is converted. - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (object): An instance of type conversionType whose value is equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToUInt16(IFormatProvider) Converts the value of this instance to an equivalent 16-bit unsigned integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public ushort ToUInt16(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (ushort): An 16-bit unsigned integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToUInt32(IFormatProvider) Converts the value of this instance to an equivalent 32-bit unsigned integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public uint ToUInt32(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (uint): An 32-bit unsigned integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ### ToUInt64(IFormatProvider) Converts the value of this instance to an equivalent 64-bit unsigned integer using the specified culture-specific formatting information. This method is not implemented and will throw a . ```csharp public ulong ToUInt64(IFormatProvider provider) ``` #### Parameters Parameters: - provider (IFormatProvider): An interface implementation that supplies culture-specific formatting information. #### Returns Parameters: - (ulong): An 64-bit unsigned integer equivalent to the value of this instance. #### Exceptions Parameters: - (NotImplementedException): ## Operators ### operator ==(VideoFrameRate, VideoFrameRate) Implements the equality (==) operator for comparing two instances. ```csharp public static bool operator ==(VideoFrameRate S1, VideoFrameRate S2) ``` #### Parameters Parameters: - S1 (VideoFrameRate): The first to compare. - S2 (VideoFrameRate): The second to compare. #### Returns Parameters: - (bool): true if the two instances are equal; otherwise, false. ### operator >(VideoFrameRate, VideoFrameRate) Implements the greater than (>) operator for comparing two instances. ```csharp public static bool operator >(VideoFrameRate S1, VideoFrameRate S2) ``` #### Parameters Parameters: - S1 (VideoFrameRate): The first to compare. - S2 (VideoFrameRate): The second to compare. #### Returns Parameters: - (bool): true if the first instance is greater than the second; otherwise, false. ### operator !=(VideoFrameRate, VideoFrameRate) Implements the inequality (!=) operator for comparing two instances. ```csharp public static bool operator !=(VideoFrameRate S1, VideoFrameRate S2) ``` #### Parameters Parameters: - S1 (VideoFrameRate): The first to compare. - S2 (VideoFrameRate): The second to compare. #### Returns Parameters: - (bool): true if the two instances are not equal; otherwise, false. ### operator <(VideoFrameRate, VideoFrameRate) Implements the less than (<) operator for comparing two instances. ```csharp public static bool operator <(VideoFrameRate S1, VideoFrameRate S2) ``` #### Parameters Parameters: - S1 (VideoFrameRate): The first to compare. - S2 (VideoFrameRate): The second to compare. #### Returns Parameters: - (bool): true if the first instance is less than the second; otherwise, false. --- # Enum BarcodeType Link: api/VisioForge.Core.Types.VideoProcessing.BarcodeType.html # Enum BarcodeType # Enum BarcodeType **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies the types of barcodes that can be recognized or generated by the video processing components. This enumeration includes various 1D (linear) and 2D (matrix) barcode formats. ```csharp public enum BarcodeType ``` ## Fields Parameters: - Auto (): Automatically detects all supported barcode types. This mode may be slower due to the comprehensive scanning required. - UPCA (): Universal Product Code, Version A (12-digit). - UPCE (): Universal Product Code, Version E (8-digit). - EAN8 (): European Article Number, 8-digit. - EAN13 (): European Article Number, 13-digit. - Code39 (): Code 39, a variable-length alphanumeric symbology. - Code93 (): Code 93, a higher-density version of Code 39. - Code128 (): Code 128, a high-density alphanumeric symbology. - ITF (): Interleaved 2 of 5 (ITF), a numeric-only symbology. - CodaBar (): Codabar, a discrete numeric symbology. - RSS14 (): RSS-14 (GS1 DataBar), a compact linear symbology. - DataMatrix (): Data Matrix, a 2D matrix symbology. - Aztec (): Aztec Code, a 2D matrix symbology. - QR (): QR Code, a popular 2D matrix symbology. - PDF417 (): PDF417, a stacked linear 2D barcode symbology. ## Remarks When configuring a barcode reader, selecting the appropriate barcode type can improve detection accuracy and performance. The option attempts to detect all supported types but may be slower due to comprehensive scanning. 1D barcodes (UPC, EAN, Code 39, Code 128, etc.) encode data linearly and are commonly used for product identification and inventory. 2D barcodes (QR Code, Data Matrix, PDF417, Aztec) can store much more data and include error correction capabilities. QR codes are widely used for marketing, mobile payments, and information sharing due to high data capacity and error resilience. Data Matrix is popular in manufacturing for component marking and tracking. PDF417 is commonly used in transportation, identification documents, and inventory management. EAN-13 and UPC-A are standard retail product codes. Code 128 is preferred for shipping and packaging due to high density and alphanumeric support. Choosing specific barcode types improves detection speed by reducing the search space. Detection reliability depends on image quality, barcode size, lighting conditions, and camera resolution. --- # Enum CamshiftMode Link: api/VisioForge.Core.Types.VideoProcessing.CamshiftMode.html # Enum CamshiftMode # Enum CamshiftMode **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies the color space mode to be used by the Camshift (Continuously Adaptive Mean-Shift) tracking algorithm. The choice of color space can significantly impact the robustness and accuracy of object tracking. ```csharp public enum CamshiftMode ``` ## Fields Parameters: - RGB (): The tracker will process raw high-intensity RGB (Red, Green, Blue) values. This mode is sensitive to lighting changes but can be effective for objects with distinct color signatures. - HSL (): The tracker will perform an RGB-to-HSL (Hue, Saturation, Lightness) conversion and primarily use the Hue component. This mode is generally more robust to changes in lighting conditions. - Mixed (): The tracker will use a combination of HSL with some lightness information. This mode attempts to balance color robustness with some intensity information. ## Remarks Camshift is an algorithm for tracking non-rigid objects. It relies on a color histogram of the target object. Different color spaces offer varying degrees of robustness to changes in lighting and object orientation. RGB mode processes raw color intensity values, sensitive to lighting but good for distinct color signatures. HSL mode converts to Hue-Saturation-Lightness and primarily uses Hue, providing robustness to lighting variations. Mixed mode combines HSL with lightness information, balancing color robustness with intensity data. Camshift extends the Mean-Shift algorithm by adapting the search window size and orientation to match object changes. The algorithm is particularly effective for tracking faces, hands, or other colored objects in real-time video. Color space choice affects tracking performance: HSL is generally preferred for variable lighting, RGB for controlled environments. Applications include object tracking in surveillance, human-computer interaction, augmented reality, and robotics. Camshift requires an initial target region and builds a color histogram for subsequent frame tracking. Performance depends on color distinctiveness, lighting conditions, occlusion, and object motion speed. --- # Class CVFace Link: api/VisioForge.Core.Types.VideoProcessing.CVFace.html # Class CVFace # Class CVFace **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Represents a detected face in a video frame, including its bounding box and the positions of key facial features like eyes, nose, and mouth. ```csharp public class CVFace ``` #### Inheritance #### Inherited Members ## Remarks This class is used in conjunction with face detection and tracking functionalities to provide detailed information about each identified face. It can be used for various applications such as facial recognition, emotion analysis, or augmented reality overlays. Position property defines the overall face bounding box in the video frame. Eyes list typically contains two Rect objects for left and right eye positions, enabling gaze tracking and eye-based features. Nose and Mouth properties provide additional facial landmarks for expression analysis and face alignment. Timestamp indicates when the face was detected, enabling temporal tracking and synchronization. Facial landmarks enable advanced features: eye tracking, emotion detection, face mesh generation, AR filters, and liveness detection. Detection accuracy depends on face angle, lighting, occlusion, resolution, and the detection algorithm used. Feature positions are relative to the frame coordinates and can be used for overlay rendering or geometric analysis. This information is fundamental for face recognition systems, requiring alignment and normalization for comparison. Applications include access control, attendance systems, emotion analytics, AR effects, and user interface control. Privacy considerations are important when storing or processing facial feature data. ## Constructors ### CVFace() Initializes a new instance of the class. Initializes with two empty instances. ```csharp public CVFace() ``` ## Properties ### Eyes Gets a list of objects, typically representing the bounding boxes of the detected eyes. This list usually contains two elements for the left and right eyes. ```csharp public List Eyes { get; } ``` #### Property Value Parameters: - (List < Rect >): ### Mouth Gets or sets the bounding rectangle of the detected mouth. ```csharp public Rect Mouth { get; set; } ``` #### Property Value Parameters: - (Rect): ### Nose Gets or sets the bounding rectangle of the detected nose. ```csharp public Rect Nose { get; set; } ``` #### Property Value Parameters: - (Rect): ### Position Gets or sets the bounding rectangle of the detected face. ```csharp public Rect Position { get; set; } ``` #### Property Value Parameters: - (Rect): ### Timestamp Gets or sets the timestamp of the video frame in which the face was detected. ```csharp public TimeSpan Timestamp { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the face's position and, if available, the positions of the mouth, nose, and eyes. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class CVHand Link: api/VisioForge.Core.Types.VideoProcessing.CVHand.html # Class CVHand # Class CVHand **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Represents a detected hand in a video frame, including its bounding box and recognized gesture. ```csharp public class CVHand ``` #### Inheritance #### Inherited Members ## Remarks This class is used in conjunction with hand detection and gesture recognition functionalities to provide detailed information about each identified hand. It can be used for various applications such as human-computer interaction, sign language recognition, or activity monitoring. Position property defines the hand bounding box coordinates in the video frame. Gesture property identifies the recognized hand pose (Fist, Palm, or other gestures). Hand detection enables touchless interaction for applications where physical contact is impractical or undesirable. Gesture recognition transforms hand poses into commands, enabling natural user interfaces. Applications include virtual reality controllers, smart home control, presentation control, gaming, and accessibility features. Detection accuracy depends on hand orientation, lighting, skin tone contrast, background complexity, and camera resolution. Advanced implementations may track individual fingers, hand orientation, and complex gesture sequences. Hand tracking across frames enables smooth interaction and trajectory-based commands (swiping, pinching, rotating). This is a fundamental component for contactless interfaces in medical, industrial, and automotive applications. Consider implementing gesture state machines to recognize multi-step gestures and prevent false triggers. ## Properties ### Gesture Gets or sets the recognized gesture performed by the detected hand. ```csharp public CVHandGesture Gesture { get; set; } ``` #### Property Value Parameters: - (CVHandGesture): ### Position Gets or sets the bounding rectangle of the detected hand. ```csharp public Rect Position { get; set; } ``` #### Property Value Parameters: - (Rect): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the hand's position and the detected gesture. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum CVHandGesture Link: api/VisioForge.Core.Types.VideoProcessing.CVHandGesture.html # Enum CVHandGesture # Enum CVHandGesture **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies basic hand gestures that can be recognized by the computer vision components. ```csharp public enum CVHandGesture ``` ## Fields Parameters: - Fist (): Represents a closed hand, typically forming a fist. - Palm (): Represents an open hand, with fingers extended, typically forming a palm. ## Remarks This enumeration is used in conjunction with hand detection to provide a high-level interpretation of hand poses. It can be useful for simple gesture-based controls or activity recognition. Fist gesture represents a closed hand, often used for grab, select, or stop commands. Palm gesture represents an open hand with extended fingers, often used for release, accept, or navigation commands. These basic gestures form the foundation for touchless interaction systems. Applications can map gestures to specific commands: fist for pause/grab, palm for play/open. More advanced systems may extend this enumeration with pointing, thumbs up/down, peace sign, or custom gestures. Gesture recognition reliability depends on hand orientation, lighting, distance from camera, and algorithm sophistication. Consider implementing gesture hold durations or confirmation mechanisms to prevent accidental triggers. Gesture-based interfaces are valuable for accessibility, enabling control without fine motor skills or physical contact. Applications include smart TV control, presentation systems, gaming, VR/AR interfaces, and industrial HMI. --- # Enum CVShapeType Link: api/VisioForge.Core.Types.VideoProcessing.CVShapeType.html # Enum CVShapeType # Enum CVShapeType **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies basic geometric shapes that can be used for drawing or overlaying in computer vision applications. ```csharp public enum CVShapeType ``` ## Fields Parameters: - Circle (): Represents a circular shape. - Rectangle (): Represents a rectangular shape. ## Remarks This enumeration is typically used when drawing detected objects (like faces, hands, or cars) on video frames. It provides a simple way to define the visual representation of these objects. Circle shape is useful for point-like detections or radial regions of interest. Rectangle shape is the most common for bounding boxes around detected objects (faces, vehicles, people). Shape choice affects visual presentation and may have performance implications for rendering. Rectangles align naturally with most detection algorithms that produce axis-aligned bounding boxes. Circles can provide softer visual feedback and work well for focus indicators or gaze points. Applications use these shapes for visualization overlays, debugging detection systems, and user feedback. Shape rendering may include additional styling: color, thickness, fill, transparency, or animation. This enum provides a foundation that applications can extend with polygons, ellipses, or custom shapes. Visualization aids in debugging computer vision pipelines and providing user feedback about detected objects. --- # Class FaceTrackingSettings Link: api/VisioForge.Core.Types.VideoProcessing.FaceTrackingSettings.html # Class FaceTrackingSettings # Class FaceTrackingSettings **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Represents the settings for configuring face tracking operations within the video processing components. This class allows control over parameters such as minimum face size, color mode, search mode, and scaling factors. ```csharp public class FaceTrackingSettings ``` #### Inheritance #### Inherited Members ## Remarks Proper configuration of these settings is crucial for optimizing face detection and tracking performance and accuracy for various scenarios, such as different camera distances, lighting conditions, or target face sizes. MinimumWindowSize filters out small false positives and defines the minimum detectable face size in pixels. ColorMode determines the color space used by the tracking algorithm (RGB, HSL, or Mixed), affecting robustness to lighting changes. SearchMode controls whether to detect a single face or multiple faces in each frame. ScaleFactor determines step size when resizing the search window: smaller values provide finer search but slower performance. ScalingMode defines search direction (larger-to-smaller or smaller-to-larger), optimized based on expected face sizes. Highlight enables visual overlay rendering of detected faces for debugging and user feedback. Optimal settings depend on use case: security cameras benefit from multiple face detection, selfie apps may use single mode. Smaller MinimumWindowSize detects distant faces but increases false positives and processing time. ScaleFactor of 1.05-1.1 provides thorough search, 1.3-1.5 prioritizes speed over accuracy. These settings directly impact CPU/GPU usage and detection latency, requiring balance for real-time applications. ## Constructors ### FaceTrackingSettings() Initializes a new instance of the class with default values. Default values are: = 25, = , = 1.2f, = . ```csharp public FaceTrackingSettings() ``` ## Properties ### ColorMode Gets or sets the color mode to be used by the face tracking algorithm. ```csharp public CamshiftMode ColorMode { get; set; } ``` #### Property Value Parameters: - (CamshiftMode): #### See Also ### Highlight Gets or sets a value indicating whether visual highlighting of detected faces is enabled. ```csharp public bool Highlight { get; set; } ``` #### Property Value Parameters: - (bool): ### MinimumWindowSize Gets or sets the minimum window size (in pixels) to consider when searching for objects (faces). Objects smaller than this size will be ignored. Default value is 25. ```csharp public int MinimumWindowSize { get; set; } ``` #### Property Value Parameters: - (int): ### ScaleFactor Gets or sets the scaling factor used to rescale the search window during the detection process. A smaller value (e.g., 1.05) means a finer search, potentially more accurate but slower. Default value is 1.2f. ```csharp public float ScaleFactor { get; set; } ``` #### Property Value Parameters: - (float): ### ScalingMode Gets or sets the scaling mode to use when re-scaling the search window during detection. Default is . ```csharp public ObjectDetectorScalingMode ScalingMode { get; set; } ``` #### Property Value Parameters: - (ObjectDetectorScalingMode): #### See Also ### SearchMode Gets or sets the search mode for face tracking, determining whether to detect a single face or multiple faces. ```csharp public ObjectDetectorSearchMode SearchMode { get; set; } ``` #### Property Value Parameters: - (ObjectDetectorSearchMode): #### See Also --- # Interface IFaceDetector Link: api/VisioForge.Core.Types.VideoProcessing.IFaceDetector.html # Interface IFaceDetector # Interface IFaceDetector **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Defines the contract for a face detection component. This interface extends , indicating that face detection is a form of video processing. ```csharp public interface IFaceDetector : IVideoProcessor ``` #### Implements ## Remarks Implementations of this interface are responsible for analyzing video frames to identify human faces. The results of the detection are communicated through the event. Face detection algorithms process video frames to locate faces and extract facial features (eyes, nose, mouth). FacesDetected event is raised for each frame where faces are detected, providing CVFace objects with position and landmark data. Implementations may use various detection algorithms: Haar cascades, HOG+SVM, or deep learning models (MTCNN, RetinaFace, YOLOv8). The interface extends IVideoProcessor to enable integration into video processing pipelines with format negotiation and frame processing. Settings configuration (not part of this interface) typically controls detection parameters like minimum face size, confidence threshold, and search mode. Detection performance depends on algorithm choice, hardware capabilities, frame resolution, and configuration settings. Applications should handle FacesDetected events asynchronously to avoid blocking the video processing pipeline. Face detection is the foundation for face recognition, emotion analysis, attention tracking, and AR applications. Implementations must be thread-safe as video frames may be processed concurrently on multiple threads. ### FacesDetected Occurs when one or more faces are detected in a video frame. The event provides a object containing details about the detected faces. ```csharp event EventHandler FacesDetected ``` #### Event Type Parameters: - (EventHandler < CVFaceDetectedEventArgs >): --- # Interface IVideoProcessor Link: api/VisioForge.Core.Types.VideoProcessing.IVideoProcessor.html # Interface IVideoProcessor # Interface IVideoProcessor **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Defines the contract for a video processing component. This interface provides methods for processing individual video frames and querying supported formats. ```csharp public interface IVideoProcessor ``` ## Remarks Implementations of this interface can perform various video manipulations, such as applying effects, analyzing content, or transforming frames. It supports processing both legacy and modern types. ProcessFrame methods accept video frames and perform operations like filtering, effects, analysis, or content detection. GetSupportedFrameFormats enables format negotiation, informing the pipeline which pixel formats the processor can handle. SetContext provides dependency injection for resources, configurations, or shared components needed by the processor. VideoFrameX is the modern format used by MediaBlocks engine with enhanced metadata and performance optimizations. VideoFrame is the legacy format maintained for backward compatibility with older components. Implementations must handle frame processing efficiently as they operate in real-time video pipelines. Video processors can be chained in pipelines, with each processor transforming or analyzing frames sequentially. Common processor types include color correction, denoising, sharpening, overlay rendering, motion detection, and object recognition. Thread safety is crucial as processors may handle frames from multiple sources or parallel pipelines. Performance optimization considerations include SIMD operations, GPU acceleration, frame skipping, and multi-threading. ## Methods ### GetSupportedFrameFormats() Retrieves an array of that are supported by this video processor. ```csharp VideoFormatX[] GetSupportedFrameFormats() ``` #### Returns Parameters: - (VideoFormatX [ ]): An array of supported video formats. ### ProcessFrame(VideoFrameX) Processes a video frame of type . This method is typically used for processing frames from the MediaBlocks engine. ```csharp void ProcessFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The to process. ### ProcessFrame(VideoFrame) Processes a video frame of type . This method is typically used for processing frames from legacy video sources. ```csharp void ProcessFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The to process. ### SetContext(BaseContext) Sets the operational context for the video processor. This can be used to provide necessary dependencies or shared resources to the processor. ```csharp void SetContext(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The to set. --- # Enum ObjectDetectorScalingMode Link: api/VisioForge.Core.Types.VideoProcessing.ObjectDetectorScalingMode.html # Enum ObjectDetectorScalingMode # Enum ObjectDetectorScalingMode **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies the scaling strategy for the search window used in object detection algorithms. This mode determines how the detector iterates through different sizes of objects to find matches. ```csharp public enum ObjectDetectorScalingMode ``` ## Fields Parameters: - GreaterToSmaller (): The object detector will start searching with larger windows and gradually scale down to smaller ones. This mode can be efficient if the target objects are expected to be large. - SmallerToGreater (): The object detector will start searching with smaller windows and gradually scale up to larger ones. This mode can be efficient if the target objects are expected to be small. ## Remarks The choice of scaling mode can impact both the performance and accuracy of object detection. For example, if you expect to detect large objects primarily, starting with larger windows might be more efficient. GreaterToSmaller mode starts with large search windows and progressively reduces size, efficient for detecting large objects first. SmallerToGreater mode starts with small search windows and progressively increases size, efficient for detecting small objects first. The scaling strategy affects detection order and early termination possibilities in single-object search modes. When objects are primarily close to camera (large in frame), GreaterToSmaller finds them faster. When objects are primarily far from camera (small in frame), SmallerToGreater finds them faster. Cascade classifiers and sliding window detectors use these modes to optimize multi-scale object detection. Performance impact varies with frame resolution, object density, and detection algorithm characteristics. Optimal mode selection depends on application context: surveillance (often distant/small), kiosks (close/large), or variable scenarios (use heuristics). --- # Enum ObjectDetectorSearchMode Link: api/VisioForge.Core.Types.VideoProcessing.ObjectDetectorSearchMode.html # Enum ObjectDetectorSearchMode # Enum ObjectDetectorSearchMode **Namespace**: VisioForge.Core.Types.VideoProcessing **Assembly**: VisioForge.Core.dll Specifies the search mode for object detection algorithms. This enumeration defines how the detector scans an image or video frame for objects. ```csharp public enum ObjectDetectorSearchMode ``` ## Fields Parameters: - Default (): The entire image or video frame will be scanned for objects. This is the default and most comprehensive search mode. - Single (): Only a single object will be retrieved. The search stops after the first object is found. This mode is useful for performance optimization when only the presence of an object matters. - NoOverlap (): If an object has already been detected within an area, that area will not be scanned again for inner or overlapping objects. This can save computation time and prevent redundant detections. - Average (): If several objects are located within one another (overlapping detections), their bounding boxes will be averaged into a single result. This helps in consolidating multiple detections of the same object. ## Remarks The choice of search mode can significantly affect the performance and the number of detected objects. For example, mode is faster if only one object is expected, while (full scan) is more comprehensive. Default mode performs comprehensive full-frame scanning, detecting all objects regardless of overlap or redundancy. Single mode stops after first detection, significantly faster when only presence/absence matters (security triggers, activation detection). NoOverlap mode skips regions already containing detections, reducing computation and preventing nested redundant detections. Average mode consolidates overlapping detections by averaging bounding boxes, useful for reducing duplicate detections of the same object. Search mode selection impacts both performance (processing time) and results (detection count and precision). Default mode is recommended for accurate counting, multi-object tracking, or comprehensive scene analysis. Single mode is optimal for wake-up systems, presence detection, or resource-constrained applications. Average mode helps with detector stability when multiple scales or positions trigger overlapping detections. These modes are particularly relevant for cascade classifiers and sliding-window detectors that may produce multiple detections per object. --- # Namespace VisioForge.Core.Types.VideoProcessing Link: api/VisioForge.Core.Types.VideoProcessing.html # Namespace VisioForge.Core.Types.VideoProcessing # Namespace VisioForge.Core.Types.VideoProcessing ### Classes Parameters: - (): Represents a detected face in a video frame, including its bounding box and the positions of key facial features like eyes, nose, and mouth. - (): Represents a detected hand in a video frame, including its bounding box and recognized gesture. - (): Represents the settings for configuring face tracking operations within the video processing components. This class allows control over parameters such as minimum face size, color mode, search mode, and scaling factors. ### Interfaces Parameters: - (): Defines the contract for a face detection component. This interface extends , indicating that face detection is a form of video processing. - (): Defines the contract for a video processing component. This interface provides methods for processing individual video frames and querying supported formats. ### Enums Parameters: - (): Specifies the types of barcodes that can be recognized or generated by the video processing components. This enumeration includes various 1D (linear) and 2D (matrix) barcode formats. - (): Specifies basic hand gestures that can be recognized by the computer vision components. - (): Specifies basic geometric shapes that can be used for drawing or overlaying in computer vision applications. - (): Specifies the color space mode to be used by the Camshift (Continuously Adaptive Mean-Shift) tracking algorithm. The choice of color space can significantly impact the robustness and accuracy of object tracking. - (): Specifies the scaling strategy for the search window used in object detection algorithms. This mode determines how the detector iterates through different sizes of objects to find matches. - (): Specifies the search mode for object detection algorithms. This enumeration defines how the detector scans an image or video frame for objects. --- # Enum VideoRendererEVRDeinterlaceMode Link: api/VisioForge.Core.Types.VideoRendererEVRDeinterlaceMode.html # Enum VideoRendererEVRDeinterlaceMode # Enum VideoRendererEVRDeinterlaceMode **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the deinterlacing modes available for the Enhanced Video Renderer (EVR). Deinterlacing converts interlaced video (where each frame consists of two fields captured at different times) into progressive video (where each frame contains all lines of a single moment in time). ```csharp public enum VideoRendererEVRDeinterlaceMode ``` ## Fields Parameters: - Auto (): The EVR automatically selects the best deinterlacing method based on the video content and available hardware capabilities. This is generally the recommended setting for optimal quality and performance. - ForceHalfInterlace (): Forces the EVR to skip the second field (in temporal order) of every interlaced frame. This results in half-resolution video but can be useful for very low-latency scenarios or when higher-quality deinterlacing is not needed or causes performance issues. - ForceBob (): Forces the EVR to use bob deinterlacing. Bob deinterlacing creates a full frame from each field by interpolating missing lines, resulting in smoother motion but potentially visible artifacts. - AllowDropToHalfInterlace (): Allows the EVR to drop to half-interlace mode if it is falling behind in rendering. This provides a fallback for performance, sacrificing quality for smoothness. - AllowDropToBob (): Allows the EVR to drop to bob deinterlacing if it is falling behind in rendering. This provides a fallback for performance, sacrificing some quality for smoother playback. ## Remarks Proper deinterlacing is crucial for displaying interlaced content (e.g., from broadcast TV, DVDs, or legacy cameras) on progressive displays (e.g., computer monitors, LCD TVs) without artifacts like combing or jagged edges. The choice of mode can impact visual quality and CPU/GPU usage significantly. Auto mode is generally recommended as it allows the EVR to intelligently select the best method based on content characteristics and hardware capabilities. Bob deinterlacing creates smoother motion but may introduce slight blurring as it interpolates missing lines. Half-interlace mode discards half the resolution but requires minimal processing, useful for low-power devices. The "AllowDrop" modes provide fallback strategies when system resources are constrained, preventing frame drops by reducing quality. Deinterlacing is only meaningful for interlaced source content - progressive content passes through unchanged. --- # Enum VideoRendererMode Link: api/VisioForge.Core.Types.VideoRendererMode.html # Enum VideoRendererMode # Enum VideoRendererMode **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the video rendering engine to be used for displaying video frames. The choice of renderer can impact performance, compatibility, and available features. ```csharp public enum VideoRendererMode ``` ## Fields Parameters: - VideoRenderer (): The legacy Video Renderer, primarily available for WinForms applications. This renderer is deprecated and generally not recommended for new development. - VMR9 (): Video Mixing Renderer 9, available for WinForms applications. Offers improved video mixing capabilities compared to the legacy Video Renderer. - EVR (): Enhanced Video Renderer (EVR), available on Windows Vista and later. This is a modern renderer offering better performance and quality, especially with hardware acceleration. Available for WinForms applications. - None (): No video renderer is used. This might be chosen when only audio processing or file saving is required, or when a custom rendering solution is implemented. - WPF_WinUI_Callback (): A rendering mode suitable for WPF, WinUI, or custom callback-based rendering scenarios. This mode typically involves receiving video frames as callbacks for manual rendering. - WPF_NativeHWND (): A rendering mode for WPF applications that uses a native HWND (window handle) for rendering. This can offer better performance and compatibility with certain video sources or effects. - Direct2D (): Direct2D renderer, offering high-performance 2D graphics rendering. Available for both WinForms and WPF applications. - Direct2DManaged (): A managed Direct2D renderer, specifically designed for WPF applications. - MadVR (): madVR renderer, a high-quality video renderer known for its advanced scaling and rendering algorithms. Primarily available for WinForms applications. - WinUI (): The WinUI 3 renderer, designed for applications built with the WinUI 3 framework. - FrameCallback (): An alias for , indicating a mode where video frames are delivered via callbacks for custom rendering. ## Remarks Different rendering modes are optimized for various platforms and scenarios. Some renderers are specific to Windows (WinForms, WPF, WinUI) while others might be more generic or callback-based. EVR (Enhanced Video Renderer) is the modern Windows renderer offering hardware acceleration and is recommended for Windows Vista and later. VMR9 (Video Mixing Renderer 9) is an older renderer still useful for Windows XP compatibility. Direct2D renderers provide high-performance 2D graphics with GPU acceleration, suitable for both WinForms and WPF. WPF_WinUI_Callback and FrameCallback modes deliver raw frames to application code for custom rendering or processing. WPF_NativeHWND uses a native window handle for rendering in WPF, offering better performance than pure WPF rendering. madVR is a third-party high-quality renderer known for superior scaling algorithms and color management. None mode is used when no video rendering is needed (audio-only, file conversion, etc.). The choice depends on target platform, required features, and performance characteristics. --- # Enum VideoRendererStretchMode Link: api/VisioForge.Core.Types.VideoRendererStretchMode.html # Enum VideoRendererStretchMode # Enum VideoRendererStretchMode **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies how video frames are scaled or stretched to fit the display area of a video renderer. This enumeration controls the aspect ratio preservation and filling behavior. ```csharp public enum VideoRendererStretchMode ``` ## Fields Parameters: - Letterbox (): Preserves the video's original aspect ratio by adding black bars (letterboxing or pillarboxing) to fill any empty space in the display area. - Stretch (): Stretches the video to fill the entire display area, ignoring its original aspect ratio. This may result in a distorted image if the aspect ratios do not match. - LetterboxToFill (): Stretches the video to fill the entire display area while preserving its aspect ratio. This is achieved by cropping the video if its aspect ratio does not match the display area. This mode is typically available for WPF renderers. ## Remarks The choice of stretch mode affects how the video appears when its aspect ratio differs from the display area. Some modes preserve the aspect ratio by adding black bars (letterboxing/pillarboxing), while others stretch or crop the video to fill the entire area. Letterbox mode is ideal for preserving the original content without distortion, adding black bars as needed. Stretch mode fills the entire display area but may distort the image if aspect ratios don't match - use with caution. LetterboxToFill (also called zoom or crop) maintains aspect ratio by cropping excess content, useful for filling modern widescreen displays with 4:3 content. The best choice depends on the application: content preservation (Letterbox), screen filling (Stretch), or a balance (LetterboxToFill). Most media players default to Letterbox mode to avoid distortion. --- # Enum VideoStreamType Link: api/VisioForge.Core.Types.VideoStreamType.html # Enum VideoStreamType # Enum VideoStreamType **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Defines the type of a video stream, typically used in frame grabber events or when managing multiple video sources. This enumeration helps distinguish between main video, preview, capture, and Picture-in-Picture (PIP) streams. ```csharp public enum VideoStreamType ``` ## Fields Parameters: - Unknown (): The video stream type is unknown or not specified. - Main (): Represents the primary video stream, typically used for both preview and capture. - Preview (): Represents a video stream specifically used for preview purposes. - Capture (): Represents a video stream specifically used for video capture or recording. - Still (): Represents still frames or snapshots captured from a video stream. - PIP1 (): Represents the first Picture-In-Picture (PIP) video stream. - PIP2 (): Represents the second Picture-In-Picture (PIP) video stream. - PIP3 (): Represents the third Picture-In-Picture (PIP) video stream. - PIP4 (): Represents the fourth Picture-In-Picture (PIP) video stream. - PIP5 (): Represents the fifth Picture-In-Picture (PIP) video stream. - PIP6 (): Represents the sixth Picture-In-Picture (PIP) video stream. - PIP7 (): Represents the seventh Picture-In-Picture (PIP) video stream. - PIP8 (): Represents the eighth Picture-In-Picture (PIP) video stream. - FFMPEGVideo (): Represents a video stream processed by FFmpeg. - FFMPEGAudio (): Represents an audio stream processed by FFmpeg. - MediaPlayerCache (): Represents a cached frame from the Media Player SDK. - StatusOverlay (): Represents a stream used for displaying status overlays. ## Remarks When working with video processing or display, identifying the stream type is essential for applying correct logic, such as routing frames to different renderers, applying specific effects, or handling streams with different quality settings. Main stream is typically used for both preview and recording in simple scenarios. Preview and Capture streams allow separate paths for display and recording, enabling different resolutions or quality settings. Still stream is used for snapshot/photo capture, often with higher resolution than video streams. PIP1 through PIP6 support multiple video overlay streams for Picture-in-Picture functionality, useful in video conferencing, security monitoring, or multi-camera recording. The distinction between stream types enables efficient resource management and flexible video processing architectures. Applications can subscribe to specific stream types to receive only the frames they need. --- # Enum VideoViewUIEngine Link: api/VisioForge.Core.Types.VideoViewUIEngine.html # Enum VideoViewUIEngine # Enum VideoViewUIEngine **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the UI framework or rendering technology used by a video view component. This enumeration helps the framework adapt its rendering pipeline to different platforms and UI environments. ```csharp public enum VideoViewUIEngine ``` ## Fields Parameters: - WinForms (): The video view is rendered using Windows Forms technology. - WPF (): The video view is rendered using Windows Presentation Foundation (WPF). - WPF_Native (): The video view is rendered using WPF with native interop (HWND). - Avalonia (): The video view is rendered using Avalonia UI framework. - Android (): The video view is rendered on Android using a standard Android View. - Android_TextureView (): The video view is rendered on Android using a TextureView, which offers more flexibility for transformations and animations. - iOS_CG (): The video view is rendered on iOS using Core Graphics. - WinUI (): The video view is rendered using WinUI (Windows UI Library). - MAUI (): The video view is rendered using .NET Multi-platform App UI (MAUI). - Apple_OpenGL (): The video view is rendered on Apple platforms using OpenGL. - Apple_Metal (): The video view is rendered on Apple platforms using Metal, Apple's low-overhead, high-performance 3D graphics API. - JPEGCallback (): The video frames are provided as JPEG images via a callback mechanism. - Android_SurfaceViewManaged (): The video view is rendered on Android using a managed SurfaceView. - BufferCallback (): The video frames are provided as raw buffers via a callback mechanism, allowing for custom rendering with specified format. ## Remarks The choice of UI engine impacts how video is displayed and integrated into an application's user interface. Some engines are platform-specific (e.g., WinForms, Android, iOS), while others offer cross-platform capabilities (e.g., Avalonia, MAUI). WinForms is the classic Windows desktop UI framework with mature support and wide compatibility. WPF (Windows Presentation Foundation) offers modern XAML-based UI with hardware acceleration, available in standard and native HWND modes. Avalonia provides cross-platform XAML-based UI similar to WPF but running on Windows, Linux, and macOS. Android engines include standard View and TextureView variants, the latter offering better support for animations and transformations. iOS engines support Core Graphics (CG) and OpenGL rendering for optimal performance on Apple devices. MAUI (.NET Multi-platform App UI) enables truly cross-platform applications across Windows, macOS, iOS, and Android with shared UI code. WinUI is the modern UI framework for Windows 10/11 applications. The framework automatically detects and adapts to the UI engine, optimizing rendering paths and resource management accordingly. --- # Enum VRMode Link: api/VisioForge.Core.Types.VRMode.html # Enum VRMode # Enum VRMode **Namespace**: VisioForge.Core.Types **Assembly**: VisioForge.Core.dll Specifies the different Virtual Reality (VR) projection modes supported for video playback. Not all modes may be supported by every component (e.g., specific video blocks, effects, or renderers). ```csharp public enum VRMode ``` ## Fields Parameters: - Normal (): Standard video mode, where no VR projection is applied. The video is displayed as a flat 2D image. - Equirectangular (): Equirectangular projection mode, commonly used for 360-degree videos. The video is mapped onto a sphere, allowing the viewer to look around. - Cubemap (): Cubemap projection mode, where the 360-degree video is represented as six faces of a cube. This can offer better visual quality at the poles compared to equirectangular projection. --- # Class AmplifyAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.AmplifyAudioEffect.html # Class AmplifyAudioEffect # Class AmplifyAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Amplify audio effect amplifies an audio stream by a specified amplification factor. Uses the GStreamer 'audioamplify' element with configurable clipping methods to prevent distortion. Implements the . ```csharp public class AmplifyAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audioamplify Properties: - amplification: Amplification factor (1.0 = no change, >1.0 = amplification) - clipping-method: How to handle signal clipping (0=None, 1=Normal, 2=Soft) The effect supports multiple clipping methods to handle signal overload gracefully. ## Constructors ### AmplifyAudioEffect(double) Initializes a new instance of the class. ```csharp public AmplifyAudioEffect(double level) ``` #### Parameters Parameters: - level (double): The amplification level. Range: 1.0 (no amplification) to 10.0 or higher. Values below 1.0 reduce volume. ## Properties ### ClippingMethod Gets or sets the method used to handle audio signal clipping when amplification causes values to exceed the valid range. Different methods provide different trade-offs between distortion and dynamic range. ```csharp public AmplifyClippingMethod ClippingMethod { get; set; } ``` #### Property Value Parameters: - (AmplifyClippingMethod): ### Level Gets or sets the amplification level. Range: 0.1 to 10.0 or higher. 1.0 means no amplification (original volume). Values greater than 1.0 amplify the signal; values less than 1.0 reduce volume. High values may cause clipping depending on the selected ClippingMethod. ```csharp public double Level { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ## See Also --- # Enum AmplifyClippingMethod Link: api/VisioForge.Core.Types.X.AudioEffects.AmplifyClippingMethod.html # Enum AmplifyClippingMethod # Enum AmplifyClippingMethod **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio amplify effect clipping method. ```csharp public enum AmplifyClippingMethod ``` ## Fields Parameters: - Normal (): Normal clipping (default). - WrapNegative (): Push overdriven values back from the opposite side. - WrapPositive (): Push overdriven values back from the same side. - NoClip (): No clipping. --- # Enum AudioCompressorMode Link: api/VisioForge.Core.Types.X.AudioEffects.AudioCompressorMode.html # Enum AudioCompressorMode # Enum AudioCompressorMode **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio compressor mode. ```csharp public enum AudioCompressorMode ``` ## Fields Parameters: - Compressor (): Compressor changes the amplitude of all samples above a specific threshold with a specific ratio. - Expander (): Expander changes the amplitude of all samples below a specific threshold with a specific ratio. --- # Enum AudioDynamicCharacteristics Link: api/VisioForge.Core.Types.X.AudioEffects.AudioDynamicCharacteristics.html # Enum AudioDynamicCharacteristics # Enum AudioDynamicCharacteristics **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio dynamic characteristics. ```csharp public enum AudioDynamicCharacteristics ``` ## Fields Parameters: - HardKnee (): Hard changes. - SoftKnee (): Smooth changes. --- # Enum AudioEffectID Link: api/VisioForge.Core.Types.X.AudioEffects.AudioEffectID.html # Enum AudioEffectID # Enum AudioEffectID **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio effect ID. ```csharp public enum AudioEffectID ``` ## Fields Parameters: - Volume (): Volume amplifier. - Balance (): Balance changer (for stereo audio). - Amplify (): Amplify. - Echo (): Echo. - ScaleTempo (): Scale tempo. - CompressorExpander (): Compressor / expander. - Equalizer10 (): Equalizer (10 bands). - EqualizerParametric (): Parametric equalizer. - ChebyshevBandPassReject (): Chebyshev band pass and band reject filter. - ChebyshevLimit (): Chebyshev low pass and high pass filter. - Karaoke (): Karaoke audio effect. - WideStereo (): Wide stereo audio effect. - Pitch (): Pitch shift audio effect using soundtouch. - BandPass (): BandPass. - ChannelOrder (): Channel order. - DownMix (): Downmix. - DynamicAmplify (): Dynamic amplify. - Flanger (): Flanger. - HighPass (): Highpass. - LowPass (): Lowpass. - Notch (): Notch. - PhaseInvert (): Phase invert. - Phaser (): Phaser. - PitchShift (): Pitch shift. - Sound3D (): Sound3D. - TrebleEnhancer (): Treble enhancer. - TrueBass (): TrueBass. - Fade (): Fade-in/fade-out. - Reverberation (): Reverberation. - RemoveSilence (): Remove silence from audio streams by automatically detecting and removing silent sections. - CsoundFilter (): Csound-based audio filter for advanced audio synthesis and processing. - RSAudioEcho (): RS Audio Echo effect from rsaudiofx plugin. - AudioLoudNorm (): Audio loudness normalization effect from rsaudiofx plugin. - AudioRNNoise (): RNN-based audio noise reduction effect from rsaudiofx plugin. - EbuR128Level (): EBU R128 loudness level measurement from rsaudiofx plugin. - HRTFRender (): Head-Related Transfer Function spatial audio rendering from rsaudiofx plugin. --- # Class AudioLoudNormAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.AudioLoudNormAudioEffect.html # Class AudioLoudNormAudioEffect # Class AudioLoudNormAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio loudness normalization effect from the rsaudiofx GStreamer plugin. Normalizes audio according to EBU R128 loudness standards. Implements the . ```csharp public class AudioLoudNormAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioLoudNormAudioEffect(double, double, double, double) Initializes a new instance of the class. ```csharp public AudioLoudNormAudioEffect(double loudnessTarget, double loudnessRangeTarget, double maxTruePeak, double offset) ``` #### Parameters Parameters: - loudnessTarget (double): The loudness target in LUFS (-70.0 to -5.0). - loudnessRangeTarget (double): The loudness range target in LU (1.0 to 20.0). - maxTruePeak (double): The maximum true peak in dbTP (-9.0 to 0.0). - offset (double): The offset gain in LU (-99.0 to 99.0). ### AudioLoudNormAudioEffect() Initializes a new instance of the class with default values. ```csharp public AudioLoudNormAudioEffect() ``` ## Properties ### LoudnessRangeTarget Gets or sets the loudness range target in LU. Valid range: 1.0 to 20.0. Default: 7.0. ```csharp public double LoudnessRangeTarget { get; set; } ``` #### Property Value Parameters: - (double): ### LoudnessTarget Gets or sets the loudness target in LUFS. Valid range: -70.0 to -5.0. Default: -24.0. ```csharp public double LoudnessTarget { get; set; } ``` #### Property Value Parameters: - (double): ### MaxTruePeak Gets or sets the maximum true peak in dbTP. Valid range: -9.0 to 0.0. Default: -2.0. ```csharp public double MaxTruePeak { get; set; } ``` #### Property Value Parameters: - (double): ### Offset Gets or sets the offset gain in LU. Valid range: -99.0 to 99.0. Default: 0.0. ```csharp public double Offset { get; set; } ``` #### Property Value Parameters: - (double): ## See Also --- # Class AudioMixerSettings Link: api/VisioForge.Core.Types.X.AudioEffects.AudioMixerSettings.html # Class AudioMixerSettings # Class AudioMixerSettings **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio mixer settings. ```csharp public class AudioMixerSettings ``` #### Inheritance #### Inherited Members ## Properties ### Format Gets or sets the audio format that will be used in mixer. ```csharp public AudioInfoX Format { get; set; } ``` #### Property Value Parameters: - (AudioInfoX): --- # Enum AudioPanoramaMethod Link: api/VisioForge.Core.Types.X.AudioEffects.AudioPanoramaMethod.html # Enum AudioPanoramaMethod # Enum AudioPanoramaMethod **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio panorama method. ```csharp public enum AudioPanoramaMethod ``` ## Fields Parameters: - Psychoacoustic (): Psychoacoustic. - Simple (): Simple. --- # Enum AudioResamplerFilterInterpolation Link: api/VisioForge.Core.Types.X.AudioEffects.AudioResamplerFilterInterpolation.html # Enum AudioResamplerFilterInterpolation # Enum AudioResamplerFilterInterpolation **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio resampler filter interpolation. ```csharp public enum AudioResamplerFilterInterpolation ``` ## Fields Parameters: - None (): The none. - Linear (): The linear. - Cubic (): The cubic. --- # Enum AudioResamplerFilterMode Link: api/VisioForge.Core.Types.X.AudioEffects.AudioResamplerFilterMode.html # Enum AudioResamplerFilterMode # Enum AudioResamplerFilterMode **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio resampler filter mode. ```csharp public enum AudioResamplerFilterMode ``` ## Fields Parameters: - Interpolated (): The interpolated. - Full (): The full. - Auto (): The automatic. --- # Enum AudioResamplerMethod Link: api/VisioForge.Core.Types.X.AudioEffects.AudioResamplerMethod.html # Enum AudioResamplerMethod # Enum AudioResamplerMethod **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio resampler method. ```csharp public enum AudioResamplerMethod ``` ## Fields Parameters: - Nearest (): The nearest. - Linear (): The linear. - Cubic (): The cubic. - BlackmanNuttall (): The Blackman/Nuttall. - Kaiser (): The Kaiser. --- # Class AudioResamplerSettings Link: api/VisioForge.Core.Types.X.AudioEffects.AudioResamplerSettings.html # Class AudioResamplerSettings # Class AudioResamplerSettings **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio resampler settings. ```csharp public class AudioResamplerSettings ``` #### Inheritance #### Inherited Members ## Constructors ### AudioResamplerSettings() Initializes a new instance of the class. ```csharp public AudioResamplerSettings() ``` ### AudioResamplerSettings(AudioFormatX, int, int) Initializes a new instance of the class. ```csharp public AudioResamplerSettings(AudioFormatX format, int sampleRate, int channels) ``` #### Parameters Parameters: - format (AudioFormatX): The format. - sampleRate (int): The sample rate. - channels (int): The channels. ## Properties ### Channels Gets or sets the channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Format Gets or sets the audio format. ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### Quality Gets or sets the resample quality with 0 being the lowest and 10 being the best. ```csharp public int Quality { get; set; } ``` #### Property Value Parameters: - (int): ### ResampleMethod Gets or sets the resample method. ```csharp public AudioResamplerMethod ResampleMethod { get; set; } ``` #### Property Value Parameters: - (AudioResamplerMethod): ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### SincFilterAutoThreshold Gets or sets the memory usage threshold to use if sinc filter mode is AUTO, given in bytes. ```csharp public uint SincFilterAutoThreshold { get; set; } ``` #### Property Value Parameters: - (uint): ### SincFilterInterpolation Gets or sets how to interpolate the sinc filter table. ```csharp public AudioResamplerFilterInterpolation SincFilterInterpolation { get; set; } ``` #### Property Value Parameters: - (AudioResamplerFilterInterpolation): ### SincFilterMode Gets or sets the table mode to use. ```csharp public AudioResamplerFilterMode SincFilterMode { get; set; } ``` #### Property Value Parameters: - (AudioResamplerFilterMode): --- # Class AudioRNNoiseAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.AudioRNNoiseAudioEffect.html # Class AudioRNNoiseAudioEffect # Class AudioRNNoiseAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll RNN-based audio noise reduction effect from the rsaudiofx GStreamer plugin. Uses a recurrent neural network to remove noise from audio streams. Implements the . ```csharp public class AudioRNNoiseAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioRNNoiseAudioEffect(float) Initializes a new instance of the class. ```csharp public AudioRNNoiseAudioEffect(float vadThreshold) ``` #### Parameters Parameters: - vadThreshold (float): The voice activity detection threshold (0.0 to 1.0). ### AudioRNNoiseAudioEffect() Initializes a new instance of the class with default values. ```csharp public AudioRNNoiseAudioEffect() ``` ## Properties ### VadThreshold Gets or sets the voice activity detection threshold. Valid range: 0.0 to 1.0. Default: 0.0. Higher values make the algorithm more sensitive to voice activity. ```csharp public float VadThreshold { get; set; } ``` #### Property Value Parameters: - (float): ## See Also --- # Class AudioTimestampCorrectorSettings Link: api/VisioForge.Core.Types.X.AudioEffects.AudioTimestampCorrectorSettings.html # Class AudioTimestampCorrectorSettings # Class AudioTimestampCorrectorSettings **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio timestamp corrector settings. ```csharp public class AudioTimestampCorrectorSettings ``` #### Inheritance #### Inherited Members ## Properties ### Silent Gets or sets a value indicating whether don't emit notify for dropped and duplicated frames. ```csharp public bool Silent { get; set; } ``` #### Property Value Parameters: - (bool): ### SkipToFirst Gets or sets a value indicating whether don't produce buffers before the first one we receive.. ```csharp public bool SkipToFirst { get; set; } ``` #### Property Value Parameters: - (bool): ### Tolerance Gets or sets the difference between incoming timestamp and next timestamp must exceed the given value for audiorate to add or drop samples. ```csharp public TimeSpan Tolerance { get; set; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class BalanceAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.BalanceAudioEffect.html # Class BalanceAudioEffect # Class BalanceAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Balance audio effect controls the stereo balance (left-right panning) of an audio stream. Uses the GStreamer 'audiopanorama' element to adjust the stereo position. Implements the . ```csharp public class BalanceAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audiopanorama Properties: - panorama: Stereo balance position (-1.0 = full left, 0.0 = center, +1.0 = full right) ## Constructors ### BalanceAudioEffect(double) Initializes a new instance of the class. ```csharp public BalanceAudioEffect(double level) ``` #### Parameters Parameters: - level (double): The balance/panorama level. Range: -1.0 (full left) to +1.0 (full right), 0.0 is center. ## Properties ### Level Gets or sets the stereo balance/panorama position. Range: -1.0 (full left) to +1.0 (full right). 0.0 represents center position. Adjusts the volume of left and right channels to create stereo positioning effect. ```csharp public double Level { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. ## See Also --- # Class BandPassAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.BandPassAudioEffect.html # Class BandPassAudioEffect # Class BandPassAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Simple band-pass audio filter that passes frequencies within a specified range. Allows frequencies between the low and high cutoff points to pass while attenuating frequencies outside this range. Useful for isolating specific frequency bands, creating "telephone" or "radio" effects, or frequency-selective processing. Implements the . ```csharp public class BandPassAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks A band-pass filter is essentially a combination of a high-pass and low-pass filter: - High-pass component removes frequencies below CutOffLow - Low-pass component removes frequencies above CutOffHigh - Result: Only frequencies between CutOffLow and CutOffHigh are passed Common applications: - Telephone effect: 300-3000 Hz (simulates telephone bandwidth) - Radio effect: 500-5000 Hz (simulates AM radio) - Vocal isolation: 200-8000 Hz (isolates vocal range) - Instrument isolation: Target the fundamental and harmonic range - Noise reduction: Remove unwanted frequency ranges above and below signal Bandwidth calculation: - Bandwidth = CutOffHigh - CutOffLow - Center frequency = (CutOffHigh + CutOffLow) / 2 - Narrow bandwidth: <500 Hz (selective filtering) - Medium bandwidth: 500-2000 Hz (typical effects) - Wide bandwidth: >2000 Hz (gentle shaping) Note: This is a simpler implementation compared to which offers steeper roll-off and more control over filter characteristics. ## Constructors ### BandPassAudioEffect(float, float) Initializes a new instance of the class. ```csharp public BandPassAudioEffect(float cutOffHigh, float cutOffLow) ``` #### Parameters Parameters: - cutOffHigh (float): The high cutoff frequency in Hz. Frequencies above this are attenuated. Must be higher than cutOffLow and typically below 20000 Hz (Nyquist limit). - cutOffLow (float): The low cutoff frequency in Hz. Frequencies below this are attenuated. Must be lower than cutOffHigh and typically above 20 Hz (below audible range). ## Properties ### CutOffHigh Gets or sets the high cutoff frequency (upper limit of the pass band). Frequencies above this point are progressively attenuated. Must be greater than . Examples: - 3000 Hz: Upper limit for telephone effect (with CutOffLow=300 Hz) - 8000 Hz: Upper limit for vocal range (with CutOffLow=200 Hz) - 15000 Hz: Preserves most audible content (with appropriate CutOffLow) ```csharp public float CutOffHigh { get; set; } ``` #### Property Value Parameters: - (float): ### CutOffLow Gets or sets the low cutoff frequency (lower limit of the pass band). Frequencies below this point are progressively attenuated. Must be less than . Examples: - 300 Hz: Lower limit for telephone effect (with CutOffHigh=3000 Hz) - 200 Hz: Lower limit for vocal range (with CutOffHigh=8000 Hz) - 80 Hz: Removes rumble while keeping most content (with appropriate CutOffHigh) - 500 Hz: More aggressive low-end filtering for clarity ```csharp public float CutOffLow { get; set; } ``` #### Property Value Parameters: - (float): ## See Also --- # Class BaseAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.BaseAudioEffect.html # Class BaseAudioEffect # Class BaseAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Class BaseAudioEffect. ```csharp public class BaseAudioEffect : ISharedAudioEffectX ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### BaseAudioEffect(AudioEffectID, string) Initializes a new instance of the class. ```csharp public BaseAudioEffect(AudioEffectID id, string name) ``` #### Parameters Parameters: - id (AudioEffectID): The identifier. - name (string): The name. ## Properties ### ID Gets or sets the identifier. ```csharp public AudioEffectID ID { get; set; } ``` #### Property Value Parameters: - (AudioEffectID): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### OnUpdateCall() Called when update required. ```csharp public void OnUpdateCall() ``` ### OnUpdate Occurs when update required. ```csharp public event EventHandler OnUpdate ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class ChannelOrderAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.ChannelOrderAudioEffect.html # Class ChannelOrderAudioEffect # Class ChannelOrderAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Channel order audio effect. Implements the . ```csharp public class ChannelOrderAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ChannelOrderAudioEffect(byte[,]) Initializes a new instance of the class. ```csharp public ChannelOrderAudioEffect(byte[,] orders) ``` #### Parameters Parameters: - orders (byte [ , ]): Specifies the order of the channels. 2xn array, each pair is byte x byte, first byte is target channel, second byte is source channel. ## Properties ### Orders Gets or sets the orders. ```csharp public byte[,] Orders { get; set; } ``` #### Property Value Parameters: - (byte [ , ]): ## See Also --- # Class ChebyshevBandPassRejectAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.ChebyshevBandPassRejectAudioEffect.html # Class ChebyshevBandPassRejectAudioEffect # Class ChebyshevBandPassRejectAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chebyshev band pass and band reject audio filter for precise frequency range control. Uses the GStreamer 'audiochebband' element implementing Chebyshev Type I or Type II filters. Provides steeper roll-off than standard filters, useful for frequency isolation or notch filtering. ```csharp public class ChebyshevBandPassRejectAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audiochebband Properties: - mode: 0=Band pass (passes frequencies within range), 1=Band reject (blocks frequencies within range) - lower-frequency: Start of frequency band (Hz) - upper-frequency: End of frequency band (Hz) - poles: Filter order (more poles = steeper roll-off but more ripple) - type: 1=Type I (ripple in passband), 2=Type II (ripple in stopband) - ripple: Amount of ripple in dB Band Pass mode: - Allows frequencies between lower and upper to pass - Attenuates everything outside this range - Use for: Isolating specific frequency ranges, telephone effect, radio effect Band Reject (Notch) mode: - Blocks frequencies between lower and upper - Allows everything outside this range to pass - Use for: Removing hum (50/60 Hz), feedback elimination, noise reduction Filter Types: - Type I: Ripple in passband, monotonic in stopband (more common) - Type II: Monotonic in passband, ripple in stopband (inverse Chebyshev) Poles (filter order): - More poles = steeper transition, but more phase distortion and ripple - Typical: 4-8 poles for most applications - Higher (10-12+): Very steep roll-off, but audible artifacts ## Constructors ### ChebyshevBandPassRejectAudioEffect() Initializes a new instance of the class with default settings. Creates a band-pass filter with moderate characteristics. ```csharp public ChebyshevBandPassRejectAudioEffect() ``` ## Properties ### LowerFrequency Gets or sets the lower frequency limit of the band in Hz. This is the starting point of the frequency range to pass (band-pass) or reject (band-reject). Must be less than . Typical ranges: - 20-100 Hz: Low-end control - 100-500 Hz: Low-mid control - 500-2000 Hz: Mid-range control - 2000-8000 Hz: High-mid control - 8000-20000 Hz: High-frequency control ```csharp public float LowerFrequency { get; set; } ``` #### Property Value Parameters: - (float): ### Mode Gets or sets the filter mode determining whether to pass or reject the specified frequency band. Band Pass: Allows frequencies between LowerFrequency and UpperFrequency to pass through. Band Reject: Blocks frequencies between LowerFrequency and UpperFrequency (acts as a notch filter). ```csharp public ChebyshevBandPassRejectAudioEffectMode Mode { get; set; } ``` #### Property Value Parameters: - (ChebyshevBandPassRejectAudioEffectMode): ### Poles Gets or sets the number of poles (filter order) in the Chebyshev filter. More poles create a steeper transition between pass and stop bands but introduce more ripple. Range: Typically 2-12. Default: 4. - 2-4 poles: Gentle slope, minimal ripple, natural sound - 4-8 poles: Moderate slope (typical for most uses) - 8-12 poles: Steep slope, more ripple, can sound artificial Higher pole counts also increase phase distortion. ```csharp public int Poles { get; set; } ``` #### Property Value Parameters: - (int): ### Ripple Gets or sets the amount of ripple in decibels. Ripple is the variation in amplitude within the passband (Type I) or stopband (Type II). Lower ripple = flatter response but less steep roll-off. Range: Typically 0.1 to 5 dB. Default: 0.25 dB. - 0.1-0.5 dB: Minimal ripple, nearly flat response (recommended) - 0.5-1.0 dB: Slight ripple, steeper roll-off - 1.0-3.0 dB: Noticeable ripple, very steep roll-off - 3.0+ dB: Significant ripple, extreme roll-off (may sound unnatural) ```csharp public float Ripple { get; set; } ``` #### Property Value Parameters: - (float): ### Type Gets or sets the type of Chebyshev filter to use. Type I (value=1): Ripple in the passband, monotonic (smooth) in the stopband. Most common. Type II (value=2): Monotonic in the passband, ripple in the stopband. Inverse Chebyshev. Range: 1 or 2. Default: 1 (Type I). Type I is generally preferred for audio applications because: - The passband (what you want to hear) has controlled, predictable ripple - The stopband (what you want to remove) has smooth, aggressive attenuation Type II is useful when: - You need a maximally flat passband - You can tolerate less aggressive stopband attenuation ```csharp public int Type { get; set; } ``` #### Property Value Parameters: - (int): ### UpperFrequency Gets or sets the upper frequency limit of the band in Hz. This is the ending point of the frequency range to pass (band-pass) or reject (band-reject). Must be greater than and less than or equal to Nyquist frequency (half the sample rate). ```csharp public float UpperFrequency { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Enum ChebyshevBandPassRejectAudioEffectMode Link: api/VisioForge.Core.Types.X.AudioEffects.ChebyshevBandPassRejectAudioEffectMode.html # Enum ChebyshevBandPassRejectAudioEffectMode # Enum ChebyshevBandPassRejectAudioEffectMode **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chebyshev band pass and band reject filter mode. ```csharp public enum ChebyshevBandPassRejectAudioEffectMode ``` ## Fields Parameters: - BandPass (): The band pass mode. - BandReject (): The band reject mode. --- # Class ChebyshevLimitAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.ChebyshevLimitAudioEffect.html # Class ChebyshevLimitAudioEffect # Class ChebyshevLimitAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chebyshev low-pass and high-pass audio filter for frequency range control. Uses the GStreamer 'audiocheblimit' element implementing Chebyshev Type I or Type II filters. Provides steep roll-off for aggressive frequency limiting, common in synthesis and audio processing. ```csharp public class ChebyshevLimitAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audiocheblimit Properties: - mode: 0=Low-pass (passes frequencies below cutoff), 1=High-pass (passes frequencies above cutoff) - cutoff: Cutoff frequency in Hz - poles: Filter order (more poles = steeper slope) - type: 1=Type I (ripple in passband), 2=Type II (ripple in stopband) - ripple: Amount of ripple in dB Low-Pass mode: - Allows frequencies below cutoff to pass - Removes high frequencies (treble, sibilance, noise) - Use for: Removing high-frequency noise, "telephone" effect, de-essing, warmth High-Pass mode: - Allows frequencies above cutoff to pass - Removes low frequencies (rumble, hum, bass) - Use for: Removing rumble, reducing muddiness, clarity in dense mixes Chebyshev characteristics: - Steeper roll-off than Butterworth filters - Some ripple in the passband (Type I) or stopband (Type II) - More phase distortion than Butterworth - Useful when steep filtering is more important than flat frequency response ## Constructors ### ChebyshevLimitAudioEffect() Initializes a new instance of the class with default settings. Creates a low-pass filter with moderate characteristics. ```csharp public ChebyshevLimitAudioEffect() ``` ## Properties ### CutOffFrequency Gets or sets the cutoff frequency in Hz where the filter transitions from pass to stop. For low-pass: Frequencies below this are passed, above are attenuated. For high-pass: Frequencies above this are passed, below are attenuated. Range: Typically 20 Hz to 20,000 Hz. Common cutoff frequencies: Low-pass: - 5000-8000 Hz: Removes air/brightness, creates warmth - 3000-5000 Hz: "Telephone" or "radio" effect - 1000-2000 Hz: Removes most high-frequency content - 500-1000 Hz: Extreme filtering, muffled sound High-pass: - 20-40 Hz: Removes sub-sonic rumble only - 60-100 Hz: Reduces bass, removes most rumble - 150-250 Hz: Reduces warmth, increases clarity - 300-500 Hz: Thins sound significantly, "tinny" quality ```csharp public float CutOffFrequency { get; set; } ``` #### Property Value Parameters: - (float): ### Mode Gets or sets the filter mode determining whether to use low-pass or high-pass filtering. Low-pass: Passes frequencies below the cutoff, removes frequencies above. High-pass: Passes frequencies above the cutoff, removes frequencies below. ```csharp public ChebyshevLimitAudioEffectMode Mode { get; set; } ``` #### Property Value Parameters: - (ChebyshevLimitAudioEffectMode): ### Poles Gets or sets the number of poles (filter order) determining the steepness of the roll-off. More poles create a steeper transition at the cutoff frequency but introduce more phase shift. Range: Typically 2-12. Default: 4. - 2 poles: 12 dB/octave slope (gentle, natural) - 4 poles: 24 dB/octave slope (moderate, typical) - 6 poles: 36 dB/octave slope (steep) - 8 poles: 48 dB/octave slope (very steep) - 12+ poles: 72+ dB/octave (extreme, "brick wall") Higher pole counts: + More aggressive filtering + Steeper transition - More passband ripple - More phase distortion - Less natural sound ```csharp public int Poles { get; set; } ``` #### Property Value Parameters: - (int): ### Ripple Gets or sets the amount of ripple in the passband (Type I) or stopband (Type II). Represents the maximum deviation from the ideal flat response. Range: Typically 0.1 to 5 dB. Default: 0.25 dB. - 0.1-0.5 dB: Minimal ripple, nearly flat response (best for audio) - 0.5-1.0 dB: Slight ripple, audible with critical listening - 1.0-3.0 dB: Noticeable ripple, steeper roll-off - 3.0+ dB: Significant ripple, may sound unnatural Trade-off: Less ripple = gentler slope, More ripple = steeper slope ```csharp public float Ripple { get; set; } ``` #### Property Value Parameters: - (float): ### Type Gets or sets the type of Chebyshev filter implementation. Type I (value=1): Ripple in passband, monotonic stopband. Most common for audio. Type II (value=2): Monotonic passband, ripple in stopband. Inverse Chebyshev. Range: 1 or 2. Default: 1 (Type I). Type I characteristics: + Steeper roll-off for given order + More aggressive filtering - Some ripple in frequencies you want to hear Type II characteristics: + Flat passband (no ripple in audible range) + Better for critical listening - Less steep roll-off - Ripple in the stopped frequencies (usually not audible) ```csharp public int Type { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Enum ChebyshevLimitAudioEffectMode Link: api/VisioForge.Core.Types.X.AudioEffects.ChebyshevLimitAudioEffectMode.html # Enum ChebyshevLimitAudioEffectMode # Enum ChebyshevLimitAudioEffectMode **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chebyshev limit effect mode. ```csharp public enum ChebyshevLimitAudioEffectMode ``` ## Fields Parameters: - LowPass (): Low pass mode. - HighPass (): High pass mode. --- # Enum ChorusPhase Link: api/VisioForge.Core.Types.X.AudioEffects.ChorusPhase.html # Enum ChorusPhase # Enum ChorusPhase **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chorus effect phase. ```csharp public enum ChorusPhase ``` ## Fields Parameters: - PhaseNeg180 (): -180. - PhaseNeg90 (): -90. - PhaseZero (): 0. - Phase90 (): 90. - Phase180 (): 180. --- # Enum ChorusWaveForm Link: api/VisioForge.Core.Types.X.AudioEffects.ChorusWaveForm.html # Enum ChorusWaveForm # Enum ChorusWaveForm **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Chorus wave form. ```csharp public enum ChorusWaveForm ``` ## Fields Parameters: - Triangle (): Triangle. - Sin (): Sin. --- # Class CompressorExpanderAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.CompressorExpanderAudioEffect.html # Class CompressorExpanderAudioEffect # Class CompressorExpanderAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Compressor/expander effect for dynamic range control of audio signals. Uses the GStreamer 'audiodynamic' element to compress loud signals or expand quiet signals. Essential for broadcast, mastering, and controlling audio dynamics. ```csharp public class CompressorExpanderAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audiodynamic Properties: - mode: 0=Compressor (reduce dynamic range), 1=Expander (increase dynamic range) - characteristics: 0=Hard knee (abrupt), 1=Soft knee (gradual) - ratio: Compression/expansion ratio - threshold: Signal level where effect begins (0.0 to 1.0) Compressor mode: - Reduces the volume of loud signals above the threshold - Ratio determines how much: 2:1 (gentle) to 10:1 (limiting) - Used for: Leveling vocals, controlling peaks, mastering Expander mode: - Reduces the volume of quiet signals below the threshold - Can act as a noise gate at high ratios - Used for: Noise reduction, transient enhancement Hard knee vs Soft knee: - Hard knee: Abrupt transition at threshold (more aggressive) - Soft knee: Gradual transition (more musical, natural) ## Constructors ### CompressorExpanderAudioEffect() Initializes a new instance of the class. Creates a compressor with default soft-knee characteristics. ```csharp public CompressorExpanderAudioEffect() ``` ## Properties ### Characteristics Gets or sets the knee characteristics determining how the effect transitions at the threshold. Hard knee provides immediate, aggressive action at the threshold. Soft knee provides gradual, more musical transition around the threshold. ```csharp public AudioDynamicCharacteristics Characteristics { get; set; } ``` #### Property Value Parameters: - (AudioDynamicCharacteristics): ### Mode Gets or sets the operating mode. Compressor mode: Reduces volume of signals above threshold (decreases dynamic range). Expander mode: Reduces volume of signals below threshold (increases dynamic range). ```csharp public AudioCompressorMode Mode { get; set; } ``` #### Property Value Parameters: - (AudioCompressorMode): ### Ratio Gets or sets the compression or expansion ratio. In Compressor mode: - 1:1 = no compression (bypass) - 2:1 = gentle compression (musical, transparent) - 4:1 = moderate compression (typical for vocals, instruments) - 6:1-10:1 = heavy compression (limiting, broadcast) - 20:1+ = brick-wall limiting In Expander mode: - 1:1 = no expansion (bypass) - 2:1 = gentle expansion - 4:1+ = stronger expansion (approaching gate behavior) - 10:1+ = hard gating (noise gate) Higher ratios produce more dramatic effects. ```csharp public double Ratio { get; set; } ``` #### Property Value Parameters: - (double): ### Threshold Gets or sets the threshold level where the compressor/expander begins to act. Signals above this level (compressor) or below this level (expander) are processed. Range: 0.0 (lowest) to 1.0 (highest). Default: 0.0. Setting guidelines: - 0.0-0.3: Affects very quiet to moderate signals - 0.3-0.6: Affects moderate to loud signals (typical for compression) - 0.6-0.9: Affects only loud signals (peak limiting) For compressors: Lower threshold = more signal is compressed For expanders: Higher threshold = more signal is expanded/gated ```csharp public double Threshold { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Class CsoundAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.CsoundAudioEffect.html # Class CsoundAudioEffect # Class CsoundAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Class CsoundAudioEffect. Implements the . Implements the . ```csharp public class CsoundAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CsoundAudioEffect(string) Initializes a new instance of the class. ```csharp public CsoundAudioEffect(string name) ``` #### Parameters Parameters: - name (string): The name. ### CsoundAudioEffect(string, string) Initializes a new instance of the class. ```csharp public CsoundAudioEffect(string name, string csdText) ``` #### Parameters Parameters: - name (string): The name. - csdText (string): The CSD text content. ### CsoundAudioEffect(string, string, bool, double) Initializes a new instance of the class. ```csharp public CsoundAudioEffect(string name, string csdText, bool loop, double scoreOffset) ``` #### Parameters Parameters: - name (string): The name. - csdText (string): The CSD text content. - loop (bool): If set to true [loop]. - scoreOffset (double): The score offset. ## Properties ### CsdText Gets or sets the CSD text content. ```csharp public string CsdText { get; set; } ``` #### Property Value Parameters: - (string): ### Location Gets or sets the CSD file location. ```csharp public string Location { get; set; } ``` #### Property Value Parameters: - (string): ### Loop Gets or sets a value indicating whether to loop the score. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): ### ScoreOffset Gets or sets the score offset in seconds. ```csharp public double ScoreOffset { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GenerateDescription() Generates the GStreamer element description for the Csound filter. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): GStreamer pipeline description string for the csoundfilter element. ## See Also --- # Class DownMixAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.DownMixAudioEffect.html # Class DownMixAudioEffect # Class DownMixAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Down mix audio effect. Implements the . ```csharp public class DownMixAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DownMixAudioEffect() Initializes a new instance of the class. ```csharp public DownMixAudioEffect() ``` ## See Also --- # Class DynamicAmplifyAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.DynamicAmplifyAudioEffect.html # Class DynamicAmplifyAudioEffect # Class DynamicAmplifyAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Dynamic amplify audio effect. Implements the . ```csharp public class DynamicAmplifyAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DynamicAmplifyAudioEffect(uint, uint, TimeSpan) Initializes a new instance of the class. ```csharp public DynamicAmplifyAudioEffect(uint attackTime, uint maxAmplification, TimeSpan releaseTime) ``` #### Parameters Parameters: - attackTime (uint): Specifies the amplification value than will be used when amplifying. - maxAmplification (uint): Sets the amplification for a channel. Default value is 10000, which means that no amplification occurs. A value of 20000 raises the amplification by 2. - releaseTime (TimeSpan): Specifies the time in milliseconds that the DSP will wait to continue amplification, after the maximum has been reached. ## Properties ### AttackTime Gets or sets the amplification value than will be used when amplifying. ```csharp public uint AttackTime { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxAmplification Gets or sets the amplification for a channel. Default value is 10000, which means that no amplification occurs. A value of 20000 raises the amplification by 2. ```csharp public uint MaxAmplification { get; set; } ``` #### Property Value Parameters: - (uint): ### ReleaseTime Gets or sets the time in milliseconds that the DSP will wait to continue amplification, after the maximum has been reached. ```csharp public TimeSpan ReleaseTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## See Also --- # Class EbuR128LevelAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.EbuR128LevelAudioEffect.html # Class EbuR128LevelAudioEffect # Class EbuR128LevelAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll EBU R128 loudness level measurement effect from the rsaudiofx GStreamer plugin. Measures and reports loudness levels according to EBU R128 standard. Implements the . ```csharp public class EbuR128LevelAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### EbuR128LevelAudioEffect(EbuR128Mode, bool, TimeSpan) Initializes a new instance of the class. ```csharp public EbuR128LevelAudioEffect(EbuR128Mode mode, bool postMessages, TimeSpan interval) ``` #### Parameters Parameters: - mode (EbuR128Mode): The measurement mode flags. - postMessages (bool): Whether to post messages with measurement results. - interval (TimeSpan): The measurement interval. ### EbuR128LevelAudioEffect() Initializes a new instance of the class with default values. ```csharp public EbuR128LevelAudioEffect() ``` ## Properties ### Interval Gets or sets the measurement interval. Determines how often measurement results are calculated and reported. ```csharp public TimeSpan Interval { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Mode Gets or sets the measurement mode flags. Specifies which types of loudness measurements to calculate. ```csharp public EbuR128Mode Mode { get; set; } ``` #### Property Value Parameters: - (EbuR128Mode): ### PostMessages Gets or sets a value indicating whether to post messages with measurement results. ```csharp public bool PostMessages { get; set; } ``` #### Property Value Parameters: - (bool): ## See Also --- # Enum EbuR128Mode Link: api/VisioForge.Core.Types.X.AudioEffects.EbuR128Mode.html # Enum EbuR128Mode # Enum EbuR128Mode **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll EBU R128 loudness measurement mode flags for the EbuR128Level effect. These flags specify which types of loudness measurements to calculate. ```csharp [Flags] public enum EbuR128Mode ``` ## Fields Parameters: - Momentary (): Calculate momentary loudness (400ms sliding window). - ShortTerm (): Calculate short-term loudness (3s sliding window). - Global (): Calculate relative threshold and global loudness. - LoudnessRange (): Calculate loudness range. - SamplePeak (): Calculate sample peak. - TruePeak (): Calculate true peak. - All (): All measurement modes enabled. --- # Class EchoAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.EchoAudioEffect.html # Class EchoAudioEffect # Class EchoAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Echo audio effect creates echo/delay effects by repeating the audio signal with configurable delay, intensity, and feedback. Uses the GStreamer 'audioecho' element to produce single or multiple echo repetitions. ```csharp public class EchoAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audioecho Properties: - delay: Time delay between original and echo (in nanoseconds internally) - max-delay: Maximum delay buffer size (must be ≥ delay) - intensity: Volume level of the echo (0.0 to 1.0) - feedback: Amount of echo fed back into the effect (0.0 to 1.0) - creates multiple repeating echoes Higher feedback values create longer echo tails with multiple repetitions. ## Constructors ### EchoAudioEffect(TimeSpan) Initializes a new instance of the class. ```csharp public EchoAudioEffect(TimeSpan delay) ``` #### Parameters Parameters: - delay (TimeSpan): The echo delay time. Typical values range from 50ms to 500ms. ## Properties ### Delay Gets or sets the delay time between the original signal and the echo. Typical values: 50ms (short slap-back) to 500ms (long echo). Can be changed during playback. ```csharp public TimeSpan Delay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Feedback Gets or sets the feedback amount that controls how much of the echo is fed back into the effect. Range: 0.0 (single echo) to 1.0 (infinite repetitions). Higher values create longer echo tails. Typical values: 0.0-0.3 for short tails, 0.4-0.6 for medium, 0.7+ for long tails. ```csharp public float Feedback { get; set; } ``` #### Property Value Parameters: - (float): ### Intensity Gets or sets the intensity (volume level) of the echo relative to the original signal. Range: 0.0 (no echo) to 1.0 (echo at same volume as original). Typical values: 0.3-0.7 for natural-sounding echoes. ```csharp public float Intensity { get; set; } ``` #### Property Value Parameters: - (float): ### MaxDelay Gets or sets the maximum delay buffer size. Must be equal to or greater than the Delay value. This allocates buffer space for the delay line. Can only be changed when the pipeline is in Pause or Stop state. ```csharp public TimeSpan MaxDelay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Class Equalizer10AudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.Equalizer10AudioEffect.html # Class Equalizer10AudioEffect # Class Equalizer10AudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll 10-band graphic equalizer for precise frequency control across the audio spectrum. Uses the GStreamer 'equalizer-10bands' element with fixed center frequencies. Each band can be adjusted independently to shape the tonal balance of audio. ```csharp public class Equalizer10AudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: equalizer-10bands Each band has a fixed center frequency and adjustable gain. Band frequencies (approximate): - Band 0: 29 Hz (Sub-bass) - Band 1: 59 Hz (Bass) - Band 2: 119 Hz (Upper bass) - Band 3: 237 Hz (Low midrange) - Band 4: 474 Hz (Midrange) - Band 5: 947 Hz (Upper midrange) - Band 6: 1889 Hz (Presence) - Band 7: 3770 Hz (Upper presence) - Band 8: 7523 Hz (Brilliance) - Band 9: 15011 Hz (Air/sparkle) Gain range per band: -24 dB (cut) to +12 dB (boost) Common EQ curves: - Vocal clarity: Boost bands 4-6, cut bands 1-2 - Bass boost: Boost bands 0-2 - Presence: Boost bands 6-7 - De-essing: Cut band 8-9 - Phone/radio: Cut bands 0-1 and 8-9 ## Constructors ### Equalizer10AudioEffect(double[]) Initializes a new instance of the class. ```csharp public Equalizer10AudioEffect(double[] levels) ``` #### Parameters Parameters: - levels (double [ ]): Array of 10 gain levels in dB for each band. Range: -24 dB (cut) to +12 dB (boost) per band. Band order: 29Hz, 59Hz, 119Hz, 237Hz, 474Hz, 947Hz, 1889Hz, 3770Hz, 7523Hz, 15011Hz. #### Exceptions Parameters: - (Exception): Levels array must contain exactly 10 values. ## Properties ### Levels Gets or sets the gain levels for all 10 equalizer bands. Array must contain exactly 10 values corresponding to the 10 frequency bands. Range: -24 dB (maximum cut) to +12 dB (maximum boost) per band. 0 dB means no change for that frequency band. ```csharp public double[] Levels { get; set; } ``` #### Property Value Parameters: - (double [ ]): #### Remarks Band frequencies: - Index 0: 29 Hz (Sub-bass - felt more than heard, rumble) - Index 1: 59 Hz (Bass - fundamental bass notes) - Index 2: 119 Hz (Upper bass - bass body, warmth) - Index 3: 237 Hz (Low midrange - muddiness, body) - Index 4: 474 Hz (Midrange - fundamentals of vocals/instruments) - Index 5: 947 Hz (Upper midrange - clarity, presence) - Index 6: 1889 Hz (Presence - speech articulation) - Index 7: 3770 Hz (Upper presence - consonants, attack) - Index 8: 7523 Hz (Brilliance - clarity, detail) - Index 9: 15011 Hz (Air - sparkle, openness) Tips: - Small adjustments (±3 dB) often sound more natural - Cutting is often more effective than boosting - Avoid extreme boosts to prevent distortion - Listen at different volumes to verify EQ settings #### Exceptions Parameters: - (Exception): Thrown if array length is not 10. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Class EqualizerParametricAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.EqualizerParametricAudioEffect.html # Class EqualizerParametricAudioEffect # Class EqualizerParametricAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Parametric n-band audio equalizer with adjustable frequency, Q (bandwidth), and gain for each band. Provides more precise and flexible frequency control compared to graphic equalizers. Ideal for surgical EQ adjustments, feedback elimination, and professional audio work. ```csharp public class EqualizerParametricAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Unlike graphic equalizers with fixed frequencies, parametric EQ allows you to: 1. Choose the exact center frequency for each band 2. Adjust the bandwidth (Q factor) to target narrow or wide frequency ranges 3. Boost or cut by any amount within limits Q Factor (bandwidth) guidelines: - Low Q (0.5-1.0): Wide bandwidth, affects broad frequency range (musical, gentle) - Medium Q (1.0-3.0): Moderate bandwidth (typical for general EQ) - High Q (5.0-10.0+): Narrow bandwidth (surgical cuts, feedback elimination) Common uses: - Feedback elimination: High Q, narrow cuts at problem frequencies - Vocal de-essing: Narrow cut at 5-8 kHz - Bass tightening: Narrow cut at 100-200 Hz - Presence boost: Wide boost at 2-5 kHz - Air enhancement: Wide boost at 10-15 kHz Each band is independently configurable via objects. Call after modifying bands to apply changes during playback. ## Constructors ### EqualizerParametricAudioEffect(int) Initializes a new instance of the class. ```csharp public EqualizerParametricAudioEffect(int numBands) ``` #### Parameters Parameters: - numBands (int): Number of equalizer bands to create. Range: 1 to 64. More bands provide finer control but use more CPU. Typical values: 3-5 bands for general use, 8-12 for professional mixing. #### Exceptions Parameters: - (Exception): Thrown if numBands is not between 1 and 64. ## Properties ### Bands Gets the array of equalizer bands. Each band can be configured with frequency, Q (bandwidth), and gain. Access individual bands by index to set their parameters. After modifying band parameters, call to apply changes. ```csharp public ParametricEqualizerBand[] Bands { get; } ``` #### Property Value Parameters: - (ParametricEqualizerBand [ ]): #### Examples
var eq = new EqualizerParametricAudioEffect(3);

// Band 0: Cut muddy low-mids
eq.Bands[0].Frequency = 200;    // Hz
eq.Bands[0].Q = 1.5;             // Moderate bandwidth
eq.Bands[0].Gain = -3;           // Cut by 3 dB

// Band 1: Boost presence
eq.Bands[1].Frequency = 3000;    // Hz
eq.Bands[1].Q = 2.0;
eq.Bands[1].Gain = 4;            // Boost by 4 dB

// Band 2: Add air/sparkle
eq.Bands[2].Frequency = 12000;   // Hz
eq.Bands[2].Q = 0.7;             // Wide bandwidth
eq.Bands[2].Gain = 2;            // Subtle boost

eq.Update();  // Apply all band settings
## Methods ### Update() Updates the equalizer with the current band settings. Must be called after modifying any band parameters in the array to apply the changes to the audio processing pipeline. Can be called during playback to adjust EQ in real-time. ```csharp public void Update() ``` --- # Enum EqualizerPreset Link: api/VisioForge.Core.Types.X.AudioEffects.EqualizerPreset.html # Enum EqualizerPreset # Enum EqualizerPreset **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Equalizer presets. All except 'Custom' have 10 bands. ```csharp public enum EqualizerPreset ``` ## Fields Parameters: - Default (): Default. All values is 0. - Custom (): Custom. You can set bands count and frequencies. - Classical (): Classical. - Club (): Club. - Dance (): Dance. - FullBass (): Full bass. - FullBassTreble (): Full bass and treble. - FullTreble (): Full treble. - Labtop (): Labtop. - LargeHall (): Large hall. - Live (): Live. - Loudness (): Loudness. - Party (): Party. - Pop (): Pop. - Reggae (): Reggae. - Rock (): Rock. - Ska (): Ska. - Soft (): Soft. - SoftRock (): Soft rock. - Techno (): Techno. ## Remarks Frequencies are 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000 Hz. --- # Class FadeAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.FadeAudioEffect.html # Class FadeAudioEffect # Class FadeAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Fade audio effect. Implements the . ```csharp public class FadeAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FadeAudioEffect(uint, uint, TimeSpan, TimeSpan) Initializes a new instance of the class. ```csharp public FadeAudioEffect(uint startVolume, uint stopVolume, TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startVolume (uint): Start volume. - stopVolume (uint): Stop volume. - startTime (TimeSpan): Start time. - stopTime (TimeSpan): Stop time. ## Properties ### StartTime Gets or sets start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StartVolume Gets or sets start volume. ```csharp public uint StartVolume { get; set; } ``` #### Property Value Parameters: - (uint): ### StopTime Gets or sets stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopVolume Gets or sets stop volume. ```csharp public uint StopVolume { get; set; } ``` #### Property Value Parameters: - (uint): ## See Also --- # Class FlangerAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.FlangerAudioEffect.html # Class FlangerAudioEffect # Class FlangerAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Flanger audio effect creates a sweeping, "jet plane" sound by mixing the audio signal with a delayed copy of itself. The delay time is modulated by a low-frequency oscillator (LFO), creating the characteristic swooshing effect. Implements the . ```csharp public class FlangerAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audioflanger (custom implementation) The flanger effect is created by: 1. Delaying the audio signal by a time-varying amount 2. The delay time oscillates at the specified frequency 3. The delayed signal can be phase-inverted before mixing for different tonal characteristics Typical delay times: 1-10ms, Typical frequency: 0.1-2 Hz ## Constructors ### FlangerAudioEffect(TimeSpan, float, bool) Initializes a new instance of the class. ```csharp public FlangerAudioEffect(TimeSpan delay, float frequency, bool phaseInvert) ``` #### Parameters Parameters: - delay (TimeSpan): The base delay time. Typical range: 1-10 milliseconds. This determines the depth of the flanger effect. - frequency (float): The LFO (Low Frequency Oscillator) rate that modulates the delay. Typical range: 0.1-2 Hz. Higher values create faster sweeps. - phaseInvert (bool): If true, inverts the phase of the delayed signal before mixing, creating a different tonal character (often more hollow/resonant). ## Properties ### Delay Gets or sets the base delay time that is modulated to create the flanger effect. Typical range: 1-10 milliseconds. Shorter delays create sharper, more metallic sounds. Longer delays create deeper, more pronounced sweeps. ```csharp public TimeSpan Delay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Frequency Gets or sets the frequency of the Low Frequency Oscillator (LFO) that modulates the delay time. Typical range: 0.1-2 Hz. Lower values (0.1-0.5 Hz) create slow, sweeping effects. Higher values (1-2 Hz) create faster, more vibrato-like modulation. ```csharp public float Frequency { get; set; } ``` #### Property Value Parameters: - (float): ### PhaseInvert Gets or sets whether the delayed signal should have its phase inverted before mixing with the original. When true, creates a more hollow, resonant character with notch filtering effects. When false, creates a more subtle, chorus-like effect with peak filtering. ```csharp public bool PhaseInvert { get; set; } ``` #### Property Value Parameters: - (bool): ## See Also --- # Enum FlangerPhase Link: api/VisioForge.Core.Types.X.AudioEffects.FlangerPhase.html # Enum FlangerPhase # Enum FlangerPhase **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Flanger effect phase. ```csharp public enum FlangerPhase ``` ## Fields Parameters: - PhaseNeg180 (): -180. - PhaseNeg90 (): -90. - PhaseZero (): 0. - Phase90 (): 90. - Phase180 (): 180. --- # Enum FlangerWaveForm Link: api/VisioForge.Core.Types.X.AudioEffects.FlangerWaveForm.html # Enum FlangerWaveForm # Enum FlangerWaveForm **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Flanger effect wave form. ```csharp public enum FlangerWaveForm ``` ## Fields Parameters: - Triangle (): Triangle. - Sin (): Sin. --- # Enum GargleWaveForm Link: api/VisioForge.Core.Types.X.AudioEffects.GargleWaveForm.html # Enum GargleWaveForm # Enum GargleWaveForm **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Gargle effect wave form. ```csharp public enum GargleWaveForm ``` ## Fields Parameters: - Triangle (): Triangle. - Square (): Square. --- # Class HighPassAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.HighPassAudioEffect.html # Class HighPassAudioEffect # Class HighPassAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll High-pass audio filter that attenuates frequencies below a specified cutoff frequency. Allows high frequencies to pass through while progressively removing low frequencies. Also known as a low-cut filter. Essential for removing rumble, reducing muddiness, and improving clarity. Implements the . ```csharp public class HighPassAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks High-pass filters are fundamental audio processing tools used to: - Remove unwanted low-frequency content (rumble, handling noise, wind) - Reduce muddiness in mixes by cleaning up low-mid frequencies - Improve clarity by preventing low-frequency buildup - Prepare audio for speakers that can't reproduce very low frequencies - Create "thin" or "tinny" effects at higher cutoff frequencies Common cutoff frequencies: - 20-40 Hz: Remove sub-sonic rumble only (most transparent) - 60-80 Hz: Remove low-end rumble and hum (typical for vocals) - 100-150 Hz: Reduce bass for clarity in dense mixes - 150-250 Hz: Thin out sound, reduce warmth (electric guitars, vocals) - 300-500 Hz: Aggressive thinning, "telephone" effect - 1000+ Hz: Extreme filtering, removes most frequency content Applications by source: - Vocals: 80-150 Hz (remove proximity effect, muddiness) - Acoustic guitar: 80-120 Hz (clarity without losing body) - Electric guitar: 100-200 Hz (definition in mix) - Snare drum: 80-120 Hz (remove rumble, improve crack) - Overhead mics: 200-400 Hz (reduce cymbal bleed from kit) Note: For more precise control with steeper slopes, see . ## Constructors ### HighPassAudioEffect(uint) Initializes a new instance of the class. ```csharp public HighPassAudioEffect(uint cutOff) ``` #### Parameters Parameters: - cutOff (uint): The cutoff frequency in Hz. Frequencies below this are progressively attenuated. Typical range: 20 Hz (minimal filtering) to 500 Hz (aggressive filtering). For most uses, 60-150 Hz is appropriate. ## Properties ### CutOff Gets or sets the cutoff frequency below which frequencies are attenuated. The filter starts to reduce the amplitude of frequencies below this point. The rate of attenuation increases further below the cutoff (typically 12-24 dB/octave). Guidelines by application: - Sub-sonic filtering: 20-30 Hz (removes inaudible content only) - General cleanup: 40-80 Hz (typical for most sources) - Vocal clarity: 80-120 Hz (removes muddiness, proximity effect) - Instrument definition: 100-200 Hz (improve clarity in mix) - Thinning effect: 200-400 Hz (reduce body, create space) - Special effects: 500+ Hz (radio/telephone effect, dramatic thinning) Start with lower values and increase gradually while monitoring the sound. Excessive high-pass filtering can make audio sound thin, hollow, or unnatural. ```csharp public uint CutOff { get; set; } ``` #### Property Value Parameters: - (uint): ## See Also --- # Class HRTFRenderAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.HRTFRenderAudioEffect.html # Class HRTFRenderAudioEffect # Class HRTFRenderAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Head-Related Transfer Function (HRTF) spatial audio rendering effect from the rsaudiofx GStreamer plugin. Renders spatial audio using HRTF data for 3D positional audio. Implements the . ```csharp public class HRTFRenderAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### HRTFRenderAudioEffect(string, ulong, ulong, float) Initializes a new instance of the class. ```csharp public HRTFRenderAudioEffect(string hrirFile, ulong interpolationSteps, ulong blockLength, float distanceGain) ``` #### Parameters Parameters: - hrirFile (string): The path to the HRIR (Head-Related Impulse Response) file. - interpolationSteps (ulong): The number of interpolation steps (default: 8). - blockLength (ulong): The block length for processing (default: 512). - distanceGain (float): The distance gain factor (default: 1.0). ### HRTFRenderAudioEffect(string) Initializes a new instance of the class with default values. ```csharp public HRTFRenderAudioEffect(string hrirFile) ``` #### Parameters Parameters: - hrirFile (string): The path to the HRIR (Head-Related Impulse Response) file. ### HRTFRenderAudioEffect() Initializes a new instance of the class with empty HRIR file. ```csharp public HRTFRenderAudioEffect() ``` ## Properties ### BlockLength Gets or sets the block length for processing. Determines the size of audio blocks processed at once. Default: 512. ```csharp public ulong BlockLength { get; set; } ``` #### Property Value Parameters: - (ulong): ### DistanceGain Gets or sets the distance gain factor. Controls how distance affects the audio volume. Default: 1.0. ```csharp public float DistanceGain { get; set; } ``` #### Property Value Parameters: - (float): ### HrirFile Gets or sets the path to the HRIR (Head-Related Impulse Response) file. This file contains the spatial audio data for HRTF rendering. ```csharp public string HrirFile { get; set; } ``` #### Property Value Parameters: - (string): ### InterpolationSteps Gets or sets the number of interpolation steps. Higher values provide smoother transitions but use more CPU. Default: 8. ```csharp public ulong InterpolationSteps { get; set; } ``` #### Property Value Parameters: - (ulong): ## See Also --- # Interface ISharedAudioEffectX Link: api/VisioForge.Core.Types.X.AudioEffects.ISharedAudioEffectX.html # Interface ISharedAudioEffectX # Interface ISharedAudioEffectX **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Interface IGSTSharedAudioEffect. ```csharp public interface ISharedAudioEffectX ``` ## Properties ### ID Gets or sets the identifier. ```csharp AudioEffectID ID { get; set; } ``` #### Property Value Parameters: - (AudioEffectID): ### Name Gets or sets the name. ```csharp string Name { get; set; } ``` #### Property Value Parameters: - (string): --- # Interface IVideoEditXAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.IVideoEditXAudioEffect.html # Interface IVideoEditXAudioEffect # Interface IVideoEditXAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Interface IVideoEditXAudioEffect. ```csharp public interface IVideoEditXAudioEffect ``` ## Methods ### GenerateDescription() Generates the description. ```csharp string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Class KaraokeAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.KaraokeAudioEffect.html # Class KaraokeAudioEffect # Class KaraokeAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Karaoke effect removes or reduces center-panned vocals from stereo audio by filtering the center channel. Uses the GStreamer 'audiokaraoke' element to analyze and suppress mono (center) content. Useful for vocal removal, karaoke track creation, or isolating background music. ```csharp public class KaraokeAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: audiokaraoke Properties: - level: Overall effect strength (0.0 to 1.0, where 1.0 = maximum vocal removal) - mono-level: Suppression level for mono/center content (0.0 to 1.0) - filter-band: Center frequency of the filter band in Hz (typically 100-400 Hz) - filter-width: Width of the frequency band to process in Hz The effect works by: 1. Identifying content that's identical in left and right channels (center-panned) 2. Applying frequency-selective filtering to target vocal ranges 3. Reducing or removing the identified center content Works best on: - Studio recordings with center-panned vocals - Professional mixes with clear stereo separation Less effective on: - Live recordings - Mono or pseudo-stereo sources - Vocals with heavy stereo processing ## Constructors ### KaraokeAudioEffect() Initializes a new instance of the class. ```csharp public KaraokeAudioEffect() ``` ## Properties ### FilterBand Gets or sets the center frequency of the filter band. This defines the frequency range where vocal removal is most effective. Range: Typically 100-400 Hz. Default: 220 Hz (middle of typical vocal fundamental range). Lower values target deeper voices, higher values target higher voices. ```csharp public float FilterBand { get; set; } ``` #### Property Value Parameters: - (float): ### FilterWidth Gets or sets the width of the frequency band to filter. This determines how wide a frequency range around FilterBand will be affected. Range: Typically 50-200 Hz. Default: 100 Hz. Wider bands remove more frequency content but may affect instruments. Narrower bands are more selective but may miss some vocal content. ```csharp public float FilterWidth { get; set; } ``` #### Property Value Parameters: - (float): ### Level Gets or sets the overall level of the karaoke effect. Controls how strongly center-panned content is suppressed. Range: 0.0 (no effect) to 1.0 (maximum suppression). Default: 1.0. Lower values (0.3-0.6) reduce vocals subtly. Higher values (0.8-1.0) attempt complete vocal removal. ```csharp public float Level { get; set; } ``` #### Property Value Parameters: - (float): ### MonoLevel Gets or sets the suppression level for mono/center channel content. Specifically targets audio that appears identically in both stereo channels. Range: 0.0 (no suppression) to 1.0 (complete suppression). Default: 1.0. This is the primary control for vocal removal strength. ```csharp public float MonoLevel { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. --- # Class LowPassAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.LowPassAudioEffect.html # Class LowPassAudioEffect # Class LowPassAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Low-pass audio filter that attenuates frequencies above a specified cutoff frequency. Allows low frequencies to pass through while progressively removing high frequencies. Also known as a high-cut filter. Used for removing harshness, controlling brightness, creating warmth, or special effects. Implements the . ```csharp public class LowPassAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Low-pass filters are fundamental audio processing tools used to: - Remove unwanted high-frequency content (hiss, digital artifacts, sibilance) - Reduce harshness and brightness in audio - Create warmth and smoothness - Simulate analog tape or vintage equipment - Create "muffled" or "underwater" effects - Control resonance and feedback in live sound Common cutoff frequencies: - 15000-20000 Hz: Remove only ultra-high frequencies (subtle, transparent) - 10000-15000 Hz: Reduce air/sparkle, gentle de-essing - 8000-10000 Hz: Noticeably warmer, reduced sibilance - 5000-8000 Hz: Clear warmth, "vintage" character - 3000-5000 Hz: "Telephone" or "radio" effect, significant dulling - 1000-3000 Hz: Very muffled, underwater effect - Below 1000 Hz: Extreme filtering, removes most harmonic content Applications by source: - Harsh vocals: 8000-12000 Hz (de-essing, smoothness) - Cymbals: 10000-15000 Hz (reduce excessive brightness) - Bass synth: 2000-5000 Hz (focus on fundamentals) - Mix bus: 18000-20000 Hz (subtle "analog" warmth) - String section: 8000-10000 Hz (reduce scratchiness) Creative effects: - Lo-fi/vintage: 5000-8000 Hz - Telephone: 3000-3500 Hz - AM radio: 4000-5000 Hz - Underwater: 1000-2000 Hz - Old record: 6000-8000 Hz with gentle slope Note: For more precise control with steeper slopes, see . ## Constructors ### LowPassAudioEffect(uint) Initializes a new instance of the class. ```csharp public LowPassAudioEffect(uint cutOff) ``` #### Parameters Parameters: - cutOff (uint): The cutoff frequency in Hz. Frequencies above this are progressively attenuated. Typical range: 1000 Hz (extreme muffling) to 15000 Hz (subtle filtering). For most uses, 5000-10000 Hz is appropriate. ## Properties ### CutOff Gets or sets the cutoff frequency above which frequencies are attenuated. The filter starts to reduce the amplitude of frequencies above this point. The rate of attenuation increases further above the cutoff (typically 12-24 dB/octave). Guidelines by application: - Gentle air reduction: 15000-18000 Hz (barely noticeable) - De-essing: 10000-12000 Hz (reduces sibilance) - Warmth: 8000-10000 Hz (vintage, analog character) - Obvious darkening: 5000-8000 Hz (reduced presence) - Special effects: 3000-5000 Hz (telephone, radio) - Extreme muffling: 1000-3000 Hz (underwater, distant) Mixing considerations: - Vocals: 10000-15000 Hz (smooth harsh recordings) - Guitars: 8000-12000 Hz (reduce pick noise, harshness) - Drums (overheads): 12000-15000 Hz (control cymbal brightness) - Bass: 3000-5000 Hz (remove clank/fret noise) - Synth pads: 8000-10000 Hz (smooth, warm pads) Start with higher cutoff values and lower gradually while listening. Excessive filtering can make audio sound dull, muffled, or lifeless. Use in combination with high-pass filtering for complete frequency shaping. ```csharp public uint CutOff { get; set; } ``` #### Property Value Parameters: - (uint): ## See Also --- # Class NotchAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.NotchAudioEffect.html # Class NotchAudioEffect # Class NotchAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Notch audio effect. Implements the . ```csharp public class NotchAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NotchAudioEffect(uint) Initializes a new instance of the class. ```csharp public NotchAudioEffect(uint cutOff) ``` #### Parameters Parameters: - cutOff (uint): Specifies the cutoff frequency for a specific channel at which the cutoff will have it's maximum amplification. ## Properties ### CutOff Gets or sets the cutoff frequency for a specific channel at which the cutoff will have it's maximum amplification. ```csharp public uint CutOff { get; set; } ``` #### Property Value Parameters: - (uint): ## See Also --- # Class ParametricEqualizerBand Link: api/VisioForge.Core.Types.X.AudioEffects.ParametricEqualizerBand.html # Class ParametricEqualizerBand # Class ParametricEqualizerBand **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Parametric equalizer band. ```csharp public class ParametricEqualizerBand ``` #### Inheritance #### Inherited Members ## Constructors ### ParametricEqualizerBand() Initializes a new instance of the class. ```csharp public ParametricEqualizerBand() ``` ### ParametricEqualizerBand(float, float, float) Initializes a new instance of the class. ```csharp public ParametricEqualizerBand(float freq, float width, float gain) ``` #### Parameters Parameters: - freq (float): The center frequency. - width (float): The band width. - gain (float): The gain in dB. ## Properties ### Frequency Gets or sets the center frequency. ```csharp public float Frequency { get; set; } ``` #### Property Value Parameters: - (float): ### Gain Gets or sets the gain (dB). ```csharp public float Gain { get; set; } ``` #### Property Value Parameters: - (float): ### Width Gets or sets the band width. ```csharp public float Width { get; set; } ``` #### Property Value Parameters: - (float): --- # Class PhaseInvertAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.PhaseInvertAudioEffect.html # Class PhaseInvertAudioEffect # Class PhaseInvertAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Phase invert audio effect. Implements the . ```csharp public class PhaseInvertAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PhaseInvertAudioEffect() Initializes a new instance of the class. ```csharp public PhaseInvertAudioEffect() ``` ## See Also --- # Class PhaserAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.PhaserAudioEffect.html # Class PhaserAudioEffect # Class PhaserAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Phaser audio effect. Implements the . ```csharp public class PhaserAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PhaserAudioEffect(byte, byte, byte, float, byte, float) Initializes a new instance of the class. ```csharp public PhaserAudioEffect(byte depth, byte dryWetRatio, byte feedback, float frequency, byte stages, float startPhase) ``` #### Parameters Parameters: - depth (byte): Sets Phaser depth (0 - 255). - dryWetRatio (byte): Sets dry-wet mix ratio. 0 - dry, 255 - wet (0 - 255). - feedback (byte): Sets phaser feedback. 0 - no feedback, 100 = 100% feedback, -100 = -100% feedback (-100 - 100). - frequency (float): Sets phaser's LFO frequency. - stages (byte): Sets phaser stages. Recommended from 2 to 24. - startPhase (float): Sets phaser's LFO start phase in radians. Needed for stereo phasers. ## Properties ### Depth Gets or sets the depth (0 - 255). ```csharp public byte Depth { get; set; } ``` #### Property Value Parameters: - (byte): ### DryWetRatio Gets or sets dry-wet mix ratio. 0 - dry, 255 - wet (0 - 255). ```csharp public byte DryWetRatio { get; set; } ``` #### Property Value Parameters: - (byte): ### Feedback Gets or sets the feedback. ```csharp public byte Feedback { get; set; } ``` #### Property Value Parameters: - (byte): ### Frequency Gets or sets phaser's LFO frequency. ```csharp public float Frequency { get; set; } ``` #### Property Value Parameters: - (float): ### Stages Gets or sets phaser stages. Recommended from 2 to 24. ```csharp public byte Stages { get; set; } ``` #### Property Value Parameters: - (byte): ### StartPhase Gets or sets phaser's LFO start phase in radians. Needed for stereo phasers. ```csharp public float StartPhase { get; set; } ``` #### Property Value Parameters: - (float): ## See Also --- # Class PitchShiftAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.PitchShiftAudioEffect.html # Class PitchShiftAudioEffect # Class PitchShiftAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Pitch shift audio effect changes the pitch of audio without affecting its tempo/speed. Uses the SoundTouch library via GStreamer to perform high-quality pitch shifting. Useful for key transposition, vocal correction, or special effects. Implements the . ```csharp public class PitchShiftAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Uses soundtouch-based pitch shifting algorithm. The effect maintains audio duration while changing frequency content. Pitch multiplier examples: - 0.5 = one octave down - 0.75 = minor third down - 1.0 = no change (original pitch) - 1.122 = approximately one semitone up - 1.5 = perfect fifth up - 2.0 = one octave up Quality considerations: - Small pitch changes (0.9-1.1) sound very natural - Moderate changes (0.7-1.4) are noticeable but acceptable - Large changes (<0.5 or >2.0) can introduce artifacts ## Constructors ### PitchShiftAudioEffect(float) Initializes a new instance of the class. ```csharp public PitchShiftAudioEffect(float pitch) ``` #### Parameters Parameters: - pitch (float): The pitch multiplier. 1.0 = no change, 0.5 = one octave down, 2.0 = one octave up. Typical range: 0.5 to 2.0. Values outside this range may produce artifacts. ## Properties ### Pitch Gets or sets the pitch multiplier that determines how much the pitch is shifted. - Values < 1.0 shift pitch down (0.5 = one octave down) - Value = 1.0 means no pitch change (original pitch) - Values > 1.0 shift pitch up (2.0 = one octave up) Musical intervals (approximate): - 0.5 = -12 semitones (one octave down) - 0.841 = -3 semitones (minor third down) - 0.943 = -1 semitone - 1.059 = +1 semitone - 1.122 = +2 semitones (whole tone up) - 1.5 = +7 semitones (perfect fifth up) - 2.0 = +12 semitones (one octave up) The duration of the audio remains unchanged. ```csharp public float Pitch { get; set; } ``` #### Property Value Parameters: - (float): ## See Also --- # Class RemoveSilenceAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.RemoveSilenceAudioEffect.html # Class RemoveSilenceAudioEffect # Class RemoveSilenceAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Audio effect for automatic silence detection and removal. This effect analyzes audio streams to identify sections where the signal level falls below a specified threshold and either removes these sections completely or reduces their volume. Useful for cleaning up recordings, podcasts, and voice content by eliminating unwanted silent gaps. Implements the . ```csharp public class RemoveSilenceAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### RemoveSilenceAudioEffect(string) Initializes a new instance of the class. ```csharp public RemoveSilenceAudioEffect(string name) ``` #### Parameters Parameters: - name (string): The unique name for this audio effect instance. ### RemoveSilenceAudioEffect(string, double, bool) Initializes a new instance of the class with custom threshold and squash settings. ```csharp public RemoveSilenceAudioEffect(string name, double threshold, bool squash) ``` #### Parameters Parameters: - name (string): The unique name for this audio effect instance. - threshold (double): The silence detection threshold (0.0 to 1.0). - squash (bool): Whether to remove silent sections completely (true) or reduce their level (false). ## Properties ### Squash Gets or sets the squash mode for silence handling. When enabled (true), silent sections are completely removed from the output stream. When disabled (false), silent sections are reduced in level but timing is preserved. Squash mode is useful for speech processing where gaps can be eliminated entirely. ```csharp public bool Squash { get; set; } ``` #### Property Value Parameters: - (bool): ### Threshold Gets or sets the silence detection threshold. Audio levels below this threshold will be considered as silence. Values range from 0.0 (complete silence only) to 1.0 (no silence detection). Lower values are more sensitive to quiet sounds, higher values require louder audio to avoid removal. ```csharp public double Threshold { get; set; } ``` #### Property Value Parameters: - (double): ## See Also --- # Class RemoveSilenceSettings Link: api/VisioForge.Core.Types.X.AudioEffects.RemoveSilenceSettings.html # Class RemoveSilenceSettings # Class RemoveSilenceSettings **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Configuration settings for the remove silence audio effect. This effect automatically detects and removes silent or quiet sections from audio streams, useful for audio cleanup, podcast processing, and voice recording optimization. ```csharp public class RemoveSilenceSettings ``` #### Inheritance #### Inherited Members ## Properties ### Squash Gets or sets whether to enable squash mode. When enabled, silent sections are completely removed from the output. When disabled, silent sections are reduced in level but not removed entirely. Default: true (remove silent sections completely). ```csharp public bool Squash { get; set; } ``` #### Property Value Parameters: - (bool): ### Threshold Gets or sets the threshold for silence detection as a linear value. Audio levels below this threshold will be considered as silence. Range: 0.0 (complete silence) to 1.0 (no silence filtering). Default: 0.05 (approximately -26dB). ```csharp public double Threshold { get; set; } ``` #### Property Value Parameters: - (double): --- # Class ReverberationAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.ReverberationAudioEffect.html # Class ReverberationAudioEffect # Class ReverberationAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Reverberation audio effect adds simulated room acoustics and spatial depth to audio. Uses the GStreamer 'freeverb' element, implementing the Freeverb algorithm for realistic room simulation. Implements the . ```csharp public class ReverberationAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: freeverb Properties: - room-size: Size of the simulated room (0.0 = small, 1.0 = large hall) - damping: High frequency damping (0.0 = bright, 1.0 = dark/muffled) - width: Stereo width/panorama (0.0 = mono, 1.0 = full stereo) - level: Wet/dry mix (0.0 = dry only, 1.0 = wet only, 0.5 = 50/50 mix) The Freeverb algorithm uses Schroeder reverberators with all-pass filters for natural-sounding reverb. ## Constructors ### ReverberationAudioEffect() Initializes a new instance of the class with default settings. Default values create a medium-sized room with balanced characteristics. ```csharp public ReverberationAudioEffect() ``` ## Properties ### Damping Gets or sets the damping of high frequencies in the reverb tail. Controls how quickly high frequencies decay compared to low frequencies. Range: 0.0 (bright, minimal damping) to 1.0 (dark, heavy damping). Lower values (0.1-0.3) simulate hard, reflective surfaces. Higher values (0.6-0.9) simulate soft, absorptive surfaces like carpets and curtains. ```csharp public float Damping { get; set; } ``` #### Property Value Parameters: - (float): ### Level Gets or sets the wet/dry mix level of the reverberation effect. Controls the balance between the original (dry) signal and the reverb (wet) signal. Range: 0.0 (completely dry, no reverb) to 1.0 (completely wet, reverb only). Typical values: 0.3-0.5 for subtle ambience, 0.6-0.8 for pronounced reverb. ```csharp public float Level { get; set; } ``` #### Property Value Parameters: - (float): ### RoomSize Gets or sets the size of the simulated room or space. Affects the length and character of the reverb tail. Range: 0.0 (small room, short reverb) to 1.0 (large hall, long reverb). Small values (0.2-0.4) simulate rooms and studios. Medium values (0.5-0.7) simulate halls and auditoriums. Large values (0.8-1.0) simulate cathedrals and large spaces. ```csharp public float RoomSize { get; set; } ``` #### Property Value Parameters: - (float): ### Width Gets or sets the stereo width of the reverb effect. Controls the spatial spread of the reverberation in the stereo field. Range: 0.0 (mono, centered reverb) to 1.0 (full stereo width). Higher values create more spacious, enveloping reverb. Lower values create more focused, centered reverb. ```csharp public float Width { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string representation of the audio effect parameters. ## See Also --- # Class RSAudioEchoAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.RSAudioEchoAudioEffect.html # Class RSAudioEchoAudioEffect # Class RSAudioEchoAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll RS Audio Echo effect from the rsaudiofx GStreamer plugin. Provides echo and reverb effects with configurable delay, intensity, and feedback. Implements the . ```csharp public class RSAudioEchoAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### RSAudioEchoAudioEffect(TimeSpan, TimeSpan, double, double) Initializes a new instance of the class. ```csharp public RSAudioEchoAudioEffect(TimeSpan delay, TimeSpan maxDelay, double intensity, double feedback) ``` #### Parameters Parameters: - delay (TimeSpan): The delay time in nanoseconds. - maxDelay (TimeSpan): The maximum delay time in nanoseconds. - intensity (double): The echo intensity (0.0 to 1.0). - feedback (double): The feedback amount (0.0 to 1.0). ### RSAudioEchoAudioEffect() Initializes a new instance of the class with default values. ```csharp public RSAudioEchoAudioEffect() ``` ## Properties ### Delay Gets or sets the delay time in nanoseconds. ```csharp public TimeSpan Delay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Feedback Gets or sets the feedback amount (0.0 to 1.0). ```csharp public double Feedback { get; set; } ``` #### Property Value Parameters: - (double): ### Intensity Gets or sets the echo intensity (0.0 to 1.0). ```csharp public double Intensity { get; set; } ``` #### Property Value Parameters: - (double): ### MaxDelay Gets or sets the maximum delay time in nanoseconds. ```csharp public TimeSpan MaxDelay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## See Also --- # Class ScaleTempoAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.ScaleTempoAudioEffect.html # Class ScaleTempoAudioEffect # Class ScaleTempoAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Scale tempo audio effect changes the playback speed (tempo) of audio without significantly affecting pitch. Uses the GStreamer 'scaletempo' element with WSOLA (Waveform Similarity Overlap-Add) algorithm. Ideal for time-stretching audio, creating slow-motion or fast-forward effects while preserving pitch. ```csharp public class ScaleTempoAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: scaletempo Properties: - rate: Playback speed multiplier (0.5 = half speed, 2.0 = double speed) - stride: Length of audio segments processed (in milliseconds) - overlap: Percentage of segment overlap for smooth transitions - search: Time window for finding best overlap position (in milliseconds) WSOLA Algorithm: 1. Divides audio into overlapping segments (stride length) 2. Searches for best position to overlap segments (search window) 3. Cross-fades overlapping portions (overlap percentage) 4. Reconstructs audio at new tempo Quality vs Efficiency trade-offs: - Larger stride = faster processing, but more artifacts - Larger search = better quality, but slower processing - More overlap = smoother, but more CPU intensive Best for: - Speech (podcasts, audiobooks): stride=30-50ms, search=14ms - Music: stride=15-30ms, search=20-30ms for better quality - Real-time: smaller stride and search for lower latency ## Constructors ### ScaleTempoAudioEffect(double) Initializes a new instance of the class. ```csharp public ScaleTempoAudioEffect(double rate = 1) ``` #### Parameters Parameters: - rate (double): The tempo scale rate. 1.0 = original speed, 0.5 = half speed, 2.0 = double speed. Typical range: 0.5 to 2.0. Values outside this range may have reduced quality. ## Properties ### Overlap Gets or sets the percentage of stride length to overlap between adjacent segments. Higher overlap creates smoother transitions but requires more processing. Range: 0.0 (no overlap) to 0.9 (90% overlap). Default: 0.2 (20%). Typical values: - 0.1-0.15: Minimal overlap, efficient but may have artifacts - 0.2-0.3: Balanced quality and performance (default: 0.2) - 0.4-0.6: High overlap, smoother but more CPU intensive Increase for: - More complex material (music with harmonics) - Higher quality requirements Decrease for: - Real-time processing - Simple material (speech, single instruments) ```csharp public double Overlap { get; set; } ``` #### Property Value Parameters: - (double): ### Rate Gets or sets the playback rate (tempo multiplier). Controls the speed of audio playback while attempting to preserve pitch. - Values < 1.0: Slower playback (0.5 = half speed) - Value = 1.0: Normal speed (no change) - Values > 1.0: Faster playback (2.0 = double speed) Typical ranges: - 0.5-0.8: Slowed down (better comprehension, detail analysis) - 1.2-1.5: Sped up (faster listening, time-saving) - 1.5-2.0: Very fast (may reduce comprehension) Quality decreases at extreme values (<0.4 or >3.0). For music, smaller changes (0.8-1.25) work best. ```csharp public double Rate { get; set; } ``` #### Property Value Parameters: - (double): ### Search Gets or sets the length of the search window for finding the best overlap position. Larger search windows find better matches but require more processing time. Default: 14 milliseconds. Typical values: - 5-10 ms: Fast, lower quality (real-time applications) - 14-20 ms: Balanced (default: 14ms for speech) - 20-40 ms: High quality (music, offline processing) Increase for: - Music or harmonic content - When quality is priority over speed Decrease for: - Real-time or low-latency requirements - Simple material like speech ```csharp public TimeSpan Search { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Stride Gets or sets the length of each audio segment (stride) to be processed. Determines the granularity of the time-stretching operation. Default: 30 milliseconds. Typical values: - 15-25 ms: Fine-grained, better for music - 30-40 ms: Balanced (default: 30ms for speech) - 50-100 ms: Coarse, efficient but may have noticeable artifacts Shorter strides: - Better quality for complex material - More CPU intensive - Better for music Longer strides: - More efficient processing - Adequate for speech - May produce audible artifacts in music Note: Stride length affects perceived quality more than search or overlap. ```csharp public TimeSpan Stride { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Class Sound3DAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.Sound3DAudioEffect.html # Class Sound3DAudioEffect # Class Sound3DAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Sound3D audio effect. Implements the . ```csharp public class Sound3DAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### Sound3DAudioEffect(uint) Initializes a new instance of the class. ```csharp public Sound3DAudioEffect(uint value) ``` #### Parameters Parameters: - value (uint): 3D amplification value. 1-20000. ## Properties ### Value Gets or sets the 3D amplification value. A value of 1000 is the same as disabling the filter. Values smaller then 1000 is the same as doing a downmix (mono) of the 2 channels. Values higher then 10000 will distort the sound. ```csharp public uint Value { get; set; } ``` #### Property Value Parameters: - (uint): ## See Also --- # Class TrebleEnhancerAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.TrebleEnhancerAudioEffect.html # Class TrebleEnhancerAudioEffect # Class TrebleEnhancerAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Treble enhancer audio effect. Implements the . ```csharp public class TrebleEnhancerAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### TrebleEnhancerAudioEffect(int, ushort) Initializes a new instance of the class. ```csharp public TrebleEnhancerAudioEffect(int frequency, ushort volume) ``` #### Parameters Parameters: - frequency (int): Specifies the frequency range that will be used to amplify. Range is frequency to (sample rate div 2). - volume (ushort): Sets the amplification for a channel. Default value is 0, which means that no amplification occurs. The value shouldn't go over 10000. If separate is True, then every channel will be amplified by its own channel amplification value. If separate is False, then every channel is amplified with the value of channel 0. ## Properties ### Frequency Gets or sets frequency. ```csharp public int Frequency { get; set; } ``` #### Property Value Parameters: - (int): ### Volume Gets or sets the volume. ```csharp public ushort Volume { get; set; } ``` #### Property Value Parameters: - (ushort): ## See Also --- # Class TrueBassAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.TrueBassAudioEffect.html # Class TrueBassAudioEffect # Class TrueBassAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll TrueBass audio effect enhances low frequencies to provide richer bass response. Boosts bass frequencies within a specified range to add depth and punch to audio. Useful for improving bass on small speakers or enhancing low-end in music. Implements the . ```csharp public class TrueBassAudioEffect : BaseAudioEffect, ISharedAudioEffectX ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This effect amplifies bass frequencies from 0 Hz up to the specified frequency. Unlike a simple low-pass boost, TrueBass can enhance perceived bass even on systems with limited low-frequency response by using psychoacoustic techniques. Frequency selection guidelines: - 60-80 Hz: Sub-bass region (rumble, kick drum fundamentals) - 80-120 Hz: Bass fundamentals (bass guitar, lower male vocals) - 120-250 Hz: Upper bass (warmth, body) Volume settings: - Moderate (1000-3000): Subtle enhancement - Strong (3000-7000): Noticeable bass boost - Very strong (7000-10000): Maximum enhancement (may distort) Caution: Excessive bass boost can cause: - Speaker damage (especially on small speakers) - Audio clipping and distortion - Muddy, undefined low end ## Constructors ### TrueBassAudioEffect(int, ushort) Initializes a new instance of the class. ```csharp public TrueBassAudioEffect(int frequency, ushort volume) ``` #### Parameters Parameters: - frequency (int): The upper frequency limit for bass enhancement in Hz. Range: 0 to 250 Hz typically. Common values: 60 Hz (deep bass), 100 Hz (balanced), 150 Hz (warm). - volume (ushort): The amplification amount for the bass frequencies. Range: 0 to 10000. 0 = no effect, 1000-3000 = subtle, 5000-8000 = strong enhancement. Values over 8000 may cause distortion. ## Properties ### Frequency Gets or sets the frequency range that will be enhanced. All frequencies from 0 Hz up to this frequency will be amplified. Typical values: - 40-60 Hz: Deep sub-bass (felt more than heard, requires good subwoofer) - 60-80 Hz: Standard bass range (kick drums, bass fundamentals) - 80-120 Hz: Upper bass (warmth, body, male vocal fundamentals) - 120-200 Hz: Lower midrange (can add muddiness if over-boosted) Lower frequencies require capable speakers/headphones to reproduce effectively. ```csharp public int Frequency { get; set; } ``` #### Property Value Parameters: - (int): ### Volume Gets or sets the amplification amount applied to frequencies below the specified frequency limit. Controls the strength of the bass enhancement effect. Range: 0 (no enhancement) to 10000 (maximum, likely to distort). Recommended values: - 0: No effect - 500-1500: Very subtle enhancement - 1500-3000: Moderate, noticeable bass boost (typical for music) - 3000-6000: Strong bass enhancement - 6000-8000: Very strong (approaching distortion threshold) - 8000+: Extreme (high risk of clipping/distortion) Start with lower values and increase gradually while monitoring for distortion. ```csharp public ushort Volume { get; set; } ``` #### Property Value Parameters: - (ushort): ## See Also --- # Class VolumeAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.VolumeAudioEffect.html # Class VolumeAudioEffect # Class VolumeAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Volume audio effect controls the volume level of an audio stream. Uses the GStreamer 'volume' element to adjust audio amplification and mute state. Implements the . ```csharp public class VolumeAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: volume Properties: - volume: Volume level (0.0 = silence, 1.0 = normal, >1.0 = amplification) - mute: Mute flag (true/false) ## Constructors ### VolumeAudioEffect(double) Initializes a new instance of the class. ```csharp public VolumeAudioEffect(double level) ``` #### Parameters Parameters: - level (double): The volume level. Range: 0.0 (silence) to 10.0 or higher (amplification). Default/normal is 1.0. ## Properties ### Level Gets or sets the volume level. Range: 0.0 (silence) to 10.0 or higher (amplification). Normal volume is 1.0. Values above 1.0 will amplify the audio signal and may cause clipping. ```csharp public double Level { get; set; } ``` #### Property Value Parameters: - (double): ### Mute Gets or sets a value indicating whether the audio stream should be muted. When muted, no audio is output regardless of the level setting. ```csharp public bool Mute { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. ## See Also --- # Class WideStereoAudioEffect Link: api/VisioForge.Core.Types.X.AudioEffects.WideStereoAudioEffect.html # Class WideStereoAudioEffect # Class WideStereoAudioEffect **Namespace**: VisioForge.Core.Types.X.AudioEffects **Assembly**: VisioForge.Core.dll Wide stereo audio effect enhances the stereo image by increasing the perceived width and spaciousness. Uses the GStreamer 'stereo' element to widen the stereo field without phase issues. Creates a more immersive, spacious sound from stereo recordings. ```csharp public class WideStereoAudioEffect : BaseAudioEffect, ISharedAudioEffectX, IVideoEditXAudioEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks GStreamer element: stereo Property: - stereo: Stereo widening amount (0.0 = no effect, higher values = wider stereo) The effect works by: 1. Analyzing the difference between left and right channels 2. Enhancing the stereo separation 3. Maintaining mono compatibility (no phase cancellation issues) Use cases: - Enhancing narrow stereo recordings - Creating more spacious mixes - Making headphone listening more immersive Caution: Excessive widening can cause: - Unnatural or exaggerated stereo images - Reduced mono compatibility - Listener fatigue ## Constructors ### WideStereoAudioEffect() Initializes a new instance of the class with default settings. Default creates a subtle stereo widening effect. ```csharp public WideStereoAudioEffect() ``` ## Properties ### Level Gets or sets the stereo widening amount. Controls how much the stereo image is expanded beyond the natural stereo width. Range: 0.0 (no widening, original stereo) to 1.0 (maximum widening). Typical values: - 0.01-0.03: Subtle enhancement, natural sound (default: 0.01) - 0.05-0.10: Moderate widening, noticeably spacious - 0.15-0.30: Strong widening, very wide stereo - 0.40+: Extreme widening, may sound unnatural Lower values are recommended for most applications to maintain natural sound. Higher values can be used for special effects or very narrow recordings. ```csharp public float Level { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Namespace VisioForge.Core.Types.X.AudioEffects Link: api/VisioForge.Core.Types.X.AudioEffects.html # Namespace VisioForge.Core.Types.X.AudioEffects # Namespace VisioForge.Core.Types.X.AudioEffects ### Classes Parameters: - (): Amplify audio effect amplifies an audio stream by a specified amplification factor. Uses the GStreamer 'audioamplify' element with configurable clipping methods to prevent distortion. Implements the . - (): Audio loudness normalization effect from the rsaudiofx GStreamer plugin. Normalizes audio according to EBU R128 loudness standards. Implements the . - (): Audio mixer settings. - (): RNN-based audio noise reduction effect from the rsaudiofx GStreamer plugin. Uses a recurrent neural network to remove noise from audio streams. Implements the . - (): Audio resampler settings. - (): Audio timestamp corrector settings. - (): Balance audio effect controls the stereo balance (left-right panning) of an audio stream. Uses the GStreamer 'audiopanorama' element to adjust the stereo position. Implements the . - (): Simple band-pass audio filter that passes frequencies within a specified range. Allows frequencies between the low and high cutoff points to pass while attenuating frequencies outside this range. Useful for isolating specific frequency bands, creating "telephone" or "radio" effects, or frequency-selective processing. Implements the . - (): Class BaseAudioEffect. - (): Channel order audio effect. Implements the . - (): Chebyshev band pass and band reject audio filter for precise frequency range control. Uses the GStreamer 'audiochebband' element implementing Chebyshev Type I or Type II filters. Provides steeper roll-off than standard filters, useful for frequency isolation or notch filtering. - (): Chebyshev low-pass and high-pass audio filter for frequency range control. Uses the GStreamer 'audiocheblimit' element implementing Chebyshev Type I or Type II filters. Provides steep roll-off for aggressive frequency limiting, common in synthesis and audio processing. - (): Compressor/expander effect for dynamic range control of audio signals. Uses the GStreamer 'audiodynamic' element to compress loud signals or expand quiet signals. Essential for broadcast, mastering, and controlling audio dynamics. - (): Class CsoundAudioEffect. Implements the . Implements the . - (): Down mix audio effect. Implements the . - (): Dynamic amplify audio effect. Implements the . - (): EBU R128 loudness level measurement effect from the rsaudiofx GStreamer plugin. Measures and reports loudness levels according to EBU R128 standard. Implements the . - (): Echo audio effect creates echo/delay effects by repeating the audio signal with configurable delay, intensity, and feedback. Uses the GStreamer 'audioecho' element to produce single or multiple echo repetitions. - (): 10-band graphic equalizer for precise frequency control across the audio spectrum. Uses the GStreamer 'equalizer-10bands' element with fixed center frequencies. Each band can be adjusted independently to shape the tonal balance of audio. - (): Parametric n-band audio equalizer with adjustable frequency, Q (bandwidth), and gain for each band. Provides more precise and flexible frequency control compared to graphic equalizers. Ideal for surgical EQ adjustments, feedback elimination, and professional audio work. - (): Fade audio effect. Implements the . - (): Flanger audio effect creates a sweeping, "jet plane" sound by mixing the audio signal with a delayed copy of itself. The delay time is modulated by a low-frequency oscillator (LFO), creating the characteristic swooshing effect. Implements the . - (): Head-Related Transfer Function (HRTF) spatial audio rendering effect from the rsaudiofx GStreamer plugin. Renders spatial audio using HRTF data for 3D positional audio. Implements the . - (): High-pass audio filter that attenuates frequencies below a specified cutoff frequency. Allows high frequencies to pass through while progressively removing low frequencies. Also known as a low-cut filter. Essential for removing rumble, reducing muddiness, and improving clarity. Implements the . - (): Karaoke effect removes or reduces center-panned vocals from stereo audio by filtering the center channel. Uses the GStreamer 'audiokaraoke' element to analyze and suppress mono (center) content. Useful for vocal removal, karaoke track creation, or isolating background music. - (): Low-pass audio filter that attenuates frequencies above a specified cutoff frequency. Allows low frequencies to pass through while progressively removing high frequencies. Also known as a high-cut filter. Used for removing harshness, controlling brightness, creating warmth, or special effects. Implements the . - (): Notch audio effect. Implements the . - (): Parametric equalizer band. - (): Phase invert audio effect. Implements the . - (): Phaser audio effect. Implements the . - (): Pitch shift audio effect changes the pitch of audio without affecting its tempo/speed. Uses the SoundTouch library via GStreamer to perform high-quality pitch shifting. Useful for key transposition, vocal correction, or special effects. Implements the . - (): RS Audio Echo effect from the rsaudiofx GStreamer plugin. Provides echo and reverb effects with configurable delay, intensity, and feedback. Implements the . - (): Audio effect for automatic silence detection and removal. This effect analyzes audio streams to identify sections where the signal level falls below a specified threshold and either removes these sections completely or reduces their volume. Useful for cleaning up recordings, podcasts, and voice content by eliminating unwanted silent gaps. Implements the . - (): Configuration settings for the remove silence audio effect. This effect automatically detects and removes silent or quiet sections from audio streams, useful for audio cleanup, podcast processing, and voice recording optimization. - (): Reverberation audio effect adds simulated room acoustics and spatial depth to audio. Uses the GStreamer 'freeverb' element, implementing the Freeverb algorithm for realistic room simulation. Implements the . - (): Scale tempo audio effect changes the playback speed (tempo) of audio without significantly affecting pitch. Uses the GStreamer 'scaletempo' element with WSOLA (Waveform Similarity Overlap-Add) algorithm. Ideal for time-stretching audio, creating slow-motion or fast-forward effects while preserving pitch. - (): Sound3D audio effect. Implements the . - (): Treble enhancer audio effect. Implements the . - (): TrueBass audio effect enhances low frequencies to provide richer bass response. Boosts bass frequencies within a specified range to add depth and punch to audio. Useful for improving bass on small speakers or enhancing low-end in music. Implements the . - (): Volume audio effect controls the volume level of an audio stream. Uses the GStreamer 'volume' element to adjust audio amplification and mute state. Implements the . - (): Wide stereo audio effect enhances the stereo image by increasing the perceived width and spaciousness. Uses the GStreamer 'stereo' element to widen the stereo field without phase issues. Creates a more immersive, spacious sound from stereo recordings. ### Interfaces Parameters: - (): Interface IGSTSharedAudioEffect. - (): Interface IVideoEditXAudioEffect. ### Enums Parameters: - (): Audio amplify effect clipping method. - (): Audio compressor mode. - (): Audio dynamic characteristics. - (): Audio effect ID. - (): Audio panorama method. - (): Audio resampler filter interpolation. - (): Audio resampler filter mode. - (): Audio resampler method. - (): Chebyshev band pass and band reject filter mode. - (): Chebyshev limit effect mode. - (): Chorus effect phase. - (): Chorus wave form. - (): EBU R128 loudness measurement mode flags for the EbuR128Level effect. These flags specify which types of loudness measurements to calculate. - (): Equalizer presets. All except 'Custom' have 10 bands. - (): Flanger effect phase. - (): Flanger effect wave form. - (): Gargle effect wave form. --- # Class AptXDecoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.AptXDecoderSettings.html # Class AptXDecoderSettings # Class AptXDecoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll AptX decoder settings for decoding high-quality Bluetooth audio streams. AptX is a psychoacoustic audio codec algorithm developed for Bluetooth audio applications, providing CD-like audio quality with low latency suitable for wireless audio transmission. ```csharp public class AptXDecoderSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Input format: AptX compressed audio stream. Output format: S32LE (32-bit signed little endian). Supported sample rates: 8000, 16000, 24000, 32000, 44100, 48000. Supported channels: 2 (stereo only). ## Fields ### Name The decoder name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Type Gets the MediaBlock type for this decoder. ```csharp public MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### CreateBlock() Creates the MediaBlock instance for this decoder. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new AptXDecoderBlock instance configured with these settings. ### GetParameters() Gets the decoder parameters as a descriptive string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A string describing the AptX decoder configuration. ### IsAvailable() Determines whether this decoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this decoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class AptXEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.AptXEncoderSettings.html # Class AptXEncoderSettings # Class AptXEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll AptX encoder settings for high-quality Bluetooth audio encoding. AptX is a psychoacoustic audio codec algorithm developed for Bluetooth audio applications, providing CD-like audio quality with low latency suitable for wireless audio transmission. ```csharp public class AptXEncoderSettings : IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Supported formats: S32LE (32-bit signed little endian). Supported sample rates: 8000, 16000, 24000, 32000, 44100, 48000. Supported channels: 2 (stereo only). AptX uses a fixed 4:1 compression ratio. ## Fields ### Name The encoder name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Type Gets the MediaBlock type for this encoder. ```csharp public MediaBlockType Type { get; } ``` #### Property Value Parameters: - (MediaBlockType): ## Methods ### CreateBlock() Creates the MediaBlock instance for this encoder. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new AptXEncoderBlock instance configured with these settings. ### GetCaps() Retrieves a string representation of the encoder's capabilities (GStreamer caps). This string describes the media formats and properties that the encoder can handle. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): A containing the encoder's capabilities. ### GetParameters() Gets the encoder parameters as a descriptive string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A string describing the AptX encoder configuration. ### GetSupportedBitrates() Gets the supported bitrates. AptX uses a fixed compression ratio, so bitrates are dependent on the sample rate. At 44.1 kHz: ~352 kbps, At 48 kHz: ~384 kbps ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[] containing approximate bitrates for different sample rates. ### GetSupportedChannelCounts() Gets the supported channel counts. AptX only supports stereo (2-channel) audio. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[] containing supported channel counts. ### GetSupportedSampleRates() Gets the supported sample rates for AptX encoding. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[] containing supported sample rates in Hz. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class AudioEncoderShared Link: api/VisioForge.Core.Types.X.AudioEncoders.AudioEncoderShared.html # Class AudioEncoderShared # Class AudioEncoderShared **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Audio encoder shared settings. ```csharp public class AudioEncoderShared ``` #### Inheritance #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public AudioEncoderType Type { get; set; } ``` #### Property Value Parameters: - (AudioEncoderType): --- # Enum AudioEncoderType Link: api/VisioForge.Core.Types.X.AudioEncoders.AudioEncoderType.html # Enum AudioEncoderType # Enum AudioEncoderType **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Audio encoder type. ```csharp public enum AudioEncoderType ``` ## Fields Parameters: - None (): The none. - AAC (): The AAC. - AptX (): The AptX. --- # Enum AudioServiceType Link: api/VisioForge.Core.Types.X.AudioEncoders.AudioServiceType.html # Enum AudioServiceType # Enum AudioServiceType **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Audio service type. ```csharp public enum AudioServiceType ``` ## Fields Parameters: - MA (): Main Audio Service. - EF (): Effects. - VI (): Visually Impaired. - HI (): Hearing Impaired. - DI (): Dialogue - CO (): Commentary. - EM (): Emergency. - VO (): Voice Over. - KA (): Karaoke. --- # Enum AVENCAACEncoderCoder Link: api/VisioForge.Core.Types.X.AudioEncoders.AVENCAACEncoderCoder.html # Enum AVENCAACEncoderCoder # Enum AVENCAACEncoderCoder **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll AAC encoder coder. ```csharp public enum AVENCAACEncoderCoder ``` ## Fields Parameters: - ANMR (): ANMR method. - TwoLoop (): Two loop searching method. - Fast (): Default fast search. --- # Class AVENCAACEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.AVENCAACEncoderSettings.html # Class AVENCAACEncoderSettings # Class AVENCAACEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll AVENC AAC encoder settings. ```csharp public class AVENCAACEncoderSettings : IAACEncoderSettings, IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate (in kbits/s). Default: 0. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### Channels Gets or sets the number of audio channels. Default: 0. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Coder Gets or sets the coder. Default: fast. ```csharp public AVENCAACEncoderCoder Coder { get; set; } ``` #### Property Value Parameters: - (AVENCAACEncoderCoder): ### ForceMS Gets or sets the force M/S stereo coding. ```csharp public AVENCAACTrilian ForceMS { get; set; } ``` #### Property Value Parameters: - (AVENCAACTrilian): ### ForcePCEs Gets or sets a value indicating whether forces the use of PCEs flag is set. ```csharp public bool ForcePCEs { get; set; } ``` #### Property Value Parameters: - (bool): ### IntensityStereo Gets or sets a value indicating whether the intensity stereo coding is enabled. ```csharp public bool IntensityStereo { get; set; } ``` #### Property Value Parameters: - (bool): ### LongTermPrediction Gets or sets a value indicating whether the long-term prediction is enabled. ```csharp public bool LongTermPrediction { get; set; } ``` #### Property Value Parameters: - (bool): ### MainPrediction Gets or sets a value indicating whether the prediction is enabled. ```csharp public bool MainPrediction { get; set; } ``` #### Property Value Parameters: - (bool): ### PNS Gets or sets a value indicating whether perceptual noise substitution is enabled. ```csharp public bool PNS { get; set; } ``` #### Property Value Parameters: - (bool): ### SampleRate Gets or sets the custom sample rate. Can be 0 to use original sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### TNS Gets or sets a value indicating whether the temporal noise shaping is enabled. ```csharp public bool TNS { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetCoderList() Gets the coder list. ```csharp public static IEnumerable GetCoderList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum AVENCAACTrilian Link: api/VisioForge.Core.Types.X.AudioEncoders.AVENCAACTrilian.html # Enum AVENCAACTrilian # Enum AVENCAACTrilian **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Represents the trilean state for AVENC AAC encoder force M/S stereo coding option. ```csharp public enum AVENCAACTrilian ``` ## Fields Parameters: - Auto (): Automatic mode - let the encoder decide. - False (): Explicitly disabled. - True (): Explicitly enabled. --- # Class FLACEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.FLACEncoderSettings.html # Class FLACEncoderSettings # Class FLACEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll FLAC encoder settings. ```csharp public class FLACEncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### BlockSize Gets or sets the block size in samples. ```csharp public uint BlockSize { get; set; } ``` #### Property Value Parameters: - (uint): ### EscapeCoding Gets or sets a value indicating whether search for escape codes in the entropy coding stage for slightly better compression. ```csharp public bool EscapeCoding { get; set; } ``` #### Property Value Parameters: - (bool): ### ExhaustiveModelSearch Gets or sets a value indicating whether do exhaustive search of LP coefficient quantization (expensive!). ```csharp public bool ExhaustiveModelSearch { get; set; } ``` #### Property Value Parameters: - (bool): ### LooseMidSideStereo Gets or sets a value indicating whether to loose mid side stereo. ```csharp public bool LooseMidSideStereo { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxLPCOrder Gets or sets the maximum LPC order. 0 => use only fixed predictors. ```csharp public uint MaxLPCOrder { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxResidualPartitionOrder Gets or sets the maximum residual partition order (above 4 doesn't usually help much). ```csharp public uint MaxResidualPartitionOrder { get; set; } ``` #### Property Value Parameters: - (uint): ### MidSideStereo Gets or sets a value indicating whether do mid side stereo (only for stereo input). ```csharp public bool MidSideStereo { get; set; } ``` #### Property Value Parameters: - (bool): ### MinResidualPartitionOrder Gets or sets the min residual partition order (above 4 doesn't usually help much). ```csharp public uint MinResidualPartitionOrder { get; set; } ``` #### Property Value Parameters: - (uint): ### Padding Gets or sets the padding block size. ```csharp public uint Padding { get; set; } ``` #### Property Value Parameters: - (uint): ### QlpCoeffPrecSearch Gets or sets a value indicating whether to search around QlpCoeffPrecision. If false = use QlpCoeffPrecision, true = search around QlpCoeffPrecision, take best. ```csharp public bool QlpCoeffPrecSearch { get; set; } ``` #### Property Value Parameters: - (bool): ### QlpCoeffPrecision Gets or sets the precision in bits of quantized linear - predictor coefficients; 0 = automatic. ```csharp public uint QlpCoeffPrecision { get; set; } ``` #### Property Value Parameters: - (uint): ### Quality Gets or sets the speed versus compression tradeoff [0..9]. 0 - Fastest compression, 8 - Highest compression, 9 - Insane. ```csharp public int Quality { get; set; } ``` #### Property Value Parameters: - (int): ### RiceParameterSearchDist Gets or sets the 0 = try only calc'd parameter k; else try all [k-dist..k+dist] parameters, use best. ```csharp public uint RiceParameterSearchDist { get; set; } ``` #### Property Value Parameters: - (uint): ### SeekPoints Gets or sets the add SEEKTABLE metadata (if bigger than 0, number of entries, if less than 0, interval in sec). ```csharp public int SeekPoints { get; set; } ``` #### Property Value Parameters: - (int): ### StreamableSubset Gets or sets a value indicating whether streamable subset enabled. true to limit encoder to generating a Subset stream, else false. ```csharp public bool StreamableSubset { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the range of supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. #### Exceptions Parameters: - (NotImplementedException): ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Interface IAACEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.IAACEncoderSettings.html # Interface IAACEncoderSettings # Interface IAACEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Shared AAC encoder settings interface. ```csharp public interface IAACEncoderSettings : IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Implements ## Properties ### SampleRate Gets or sets the custom sample rate. Can be 0 to use original sample rate. ```csharp int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class MP2EncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.MP2EncoderSettings.html # Class MP2EncoderSettings # Class MP2EncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll MP2 encoder settings. ```csharp public class MP2EncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Supported formats: S16LE. Supported sample rates: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000. Supported channels: 1, 2. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate. Bitrate in Kbit/s. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum MP3EncoderRateControl Link: api/VisioForge.Core.Types.X.AudioEncoders.MP3EncoderRateControl.html # Enum MP3EncoderRateControl # Enum MP3EncoderRateControl **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the rate control modes for MP3 encoding. ```csharp public enum MP3EncoderRateControl ``` ## Fields Parameters: - CBR (): Constant Bit Rate - maintains a fixed bitrate throughout the encoding. - ABR (): Average Bit Rate - targets an average bitrate while allowing variation. - Quality (): Quality-based encoding - uses variable bitrate to maintain consistent quality. --- # Class MP3EncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.MP3EncoderSettings.html # Class MP3EncoderSettings # Class MP3EncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll MP3 encoder settings. ```csharp public class MP3EncoderSettings : IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Supported formats: S16LE. Supported sample rates: 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000. Supported channels: 1, 2. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate. Bitrate in Kbit/s. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Only valid if target is bitrate, for CBR one of 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 or 320. ### EncodingEngineQuality Gets or sets the encoding engine quality/speed of the encoding engine, this does not affect the bitrate!. ```csharp public MP3EncodingQuality EncodingEngineQuality { get; set; } ``` #### Property Value Parameters: - (MP3EncodingQuality): ### ForceMono Gets or sets a value indicating whether mono output will be used. ```csharp public bool ForceMono { get; set; } ``` #### Property Value Parameters: - (bool): ### Quality Gets or sets the VBR Quality from 0 to 10. 0 being the best (Only valid if target is quality). ```csharp public float Quality { get; set; } ``` #### Property Value Parameters: - (float): ### RateControl Gets or sets the rate control. ```csharp public MP3EncoderRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (MP3EncoderRateControl): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (ArgumentOutOfRangeException): ### GetQualityList() Gets the quality list. ```csharp public static IEnumerable GetQualityList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum MP3EncodingQuality Link: api/VisioForge.Core.Types.X.AudioEncoders.MP3EncodingQuality.html # Enum MP3EncodingQuality # Enum MP3EncodingQuality **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the encoding engine quality/speed settings for MP3 encoding. ```csharp public enum MP3EncodingQuality ``` ## Fields Parameters: - Fast (): Fast encoding - lower quality but faster processing. - Standard (): Standard encoding - balanced quality and speed. - High (): High quality encoding - best quality but slower processing. --- # Enum MP3EncodingTarget Link: api/VisioForge.Core.Types.X.AudioEncoders.MP3EncodingTarget.html # Enum MP3EncodingTarget # Enum MP3EncodingTarget **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the encoding target mode for MP3 encoding. ```csharp public enum MP3EncodingTarget ``` ## Fields Parameters: - Quality (): Target quality-based encoding using VBR (Variable Bit Rate). - Bitrate (): Target specific bitrate encoding using CBR or ABR. --- # Enum OPUSAudioType Link: api/VisioForge.Core.Types.X.AudioEncoders.OPUSAudioType.html # Enum OPUSAudioType # Enum OPUSAudioType **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the audio type for OPUS encoder optimization. ```csharp public enum OPUSAudioType ``` ## Fields Parameters: - Generic (): Generic audio - suitable for music and general audio content. - Voice (): Voice - optimized for speech and voice communication. - RestrictedLowDelay (): Restricted low delay - for real-time applications requiring minimal latency. --- # Enum OPUSBandwidth Link: api/VisioForge.Core.Types.X.AudioEncoders.OPUSBandwidth.html # Enum OPUSBandwidth # Enum OPUSBandwidth **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the audio bandwidth settings for OPUS encoding. ```csharp public enum OPUSBandwidth ``` ## Fields Parameters: - NarrowBand (): Narrow band - 4 kHz bandwidth, suitable for basic voice communication. - MediumBand (): Medium band - 6 kHz bandwidth. - WideBand (): Wide band - 8 kHz bandwidth, good for voice clarity. - SuperWideBand (): Super wide band - 12 kHz bandwidth, enhanced audio quality. - Fullband (): Full band - 20 kHz bandwidth, highest quality for music and audio. - Auto (): Automatic mode - encoder selects optimal bandwidth based on content. --- # Class OPUSEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.OPUSEncoderSettings.html # Class OPUSEncoderSettings # Class OPUSEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll OPUS encoder settings. ```csharp public class OPUSEncoderSettings : IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Supported formats: PCM S16LE. Supported sample rates: 8000, 12000, 16000, 24000, 48000. Supported channels: [1..8]. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AudioType Gets or sets the type of the audio. ```csharp public OPUSAudioType AudioType { get; set; } ``` #### Property Value Parameters: - (OPUSAudioType): ### Bandwidth Gets or sets the bandwidth. ```csharp public OPUSBandwidth Bandwidth { get; set; } ``` #### Property Value Parameters: - (OPUSBandwidth): ### Bitrate Gets or sets the encoding bit-rate in kilobits per second (Kbps). Valid range: 6-510 Kbps. Default is 64 Kbps. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Common bitrates: 8, 16, 32, 64, 96, 128, 192, 510 Kbps. The encoder will convert this value to bits per second internally. ### Complexity Gets or sets the complexity. ```csharp public int Complexity { get; set; } ``` #### Property Value Parameters: - (int): ### DTX Gets or sets a value indicating whether DTX (Discontinuous Transmission) is enabled. ```csharp public bool DTX { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameSize Gets or sets the the duration of an audio frame, in ms. ```csharp public OPUSFrameSize FrameSize { get; set; } ``` #### Property Value Parameters: - (OPUSFrameSize): ### InBandFEC Gets or sets a value indicating whether the forward error correction is enabled. ```csharp public bool InBandFEC { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxPayloadSize Gets or sets the maximum payload size in bytes. ```csharp public uint MaxPayloadSize { get; set; } ``` #### Property Value Parameters: - (uint): ### PacketLossPercentage Gets or sets the packet loss percentage. ```csharp public int PacketLossPercentage { get; set; } ``` #### Property Value Parameters: - (int): ### RateControl Gets or sets the rate control. ```csharp public OPUSRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (OPUSRateControl): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts range. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum OPUSFrameSize Link: api/VisioForge.Core.Types.X.AudioEncoders.OPUSFrameSize.html # Enum OPUSFrameSize # Enum OPUSFrameSize **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the audio frame duration in milliseconds for OPUS encoding. ```csharp public enum OPUSFrameSize ``` ## Fields Parameters: - _2_5 (): 2.5 milliseconds frame duration. - _5 (): 5 milliseconds frame duration. - _10 (): 10 milliseconds frame duration. - _20 (): 20 milliseconds frame duration (default for most applications). - _40 (): 40 milliseconds frame duration. - _60 (): 60 milliseconds frame duration. --- # Enum OPUSRateControl Link: api/VisioForge.Core.Types.X.AudioEncoders.OPUSRateControl.html # Enum OPUSRateControl # Enum OPUSRateControl **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the rate control modes for OPUS encoding. ```csharp public enum OPUSRateControl ``` ## Fields Parameters: - CBR (): Constant Bit Rate - maintains a fixed bitrate throughout encoding. - VBR (): Variable Bit Rate - adjusts bitrate based on content complexity for better quality. - ConstrainedVBR (): Constrained Variable Bit Rate - VBR with a maximum bitrate limit. --- # Enum SpeexEncoderMode Link: api/VisioForge.Core.Types.X.AudioEncoders.SpeexEncoderMode.html # Enum SpeexEncoderMode # Enum SpeexEncoderMode **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the encoding modes for Speex audio encoder. ```csharp public enum SpeexEncoderMode ``` ## Fields Parameters: - Auto (): Automatic mode - encoder selects the best mode based on input. - UltraWideBand (): Ultra wide band mode - 32 kHz sampling rate for highest quality. - WideBand (): Wide band mode - 16 kHz sampling rate for good quality. - NarrowBand (): Narrow band mode - 8 kHz sampling rate for basic voice quality. --- # Class SpeexEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.SpeexEncoderSettings.html # Class SpeexEncoderSettings # Class SpeexEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Speex encoder settings. Implements the . ```csharp public class SpeexEncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### ABR Gets or sets the average bitrate (0 = disabled). ```csharp public float ABR { get; set; } ``` #### Property Value Parameters: - (float): ### Bitrate Gets or sets the encoding bit-rate (in bps). (0 = automatic). ```csharp public float Bitrate { get; set; } ``` #### Property Value Parameters: - (float): ### Channels Gets or sets the channels. Supported values are 1, 2. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Complexity Gets or sets the encoding complexity. ```csharp public int Complexity { get; set; } ``` #### Property Value Parameters: - (int): ### DTX Gets or sets a value indicating whether to enable discontinuous transmission. ```csharp public bool DTX { get; set; } ``` #### Property Value Parameters: - (bool): ### Mode Gets or sets the mode. ```csharp public SpeexEncoderMode Mode { get; set; } ``` #### Property Value Parameters: - (SpeexEncoderMode): ### NFrames Gets or sets the number of frames per buffer. ```csharp public int NFrames { get; set; } ``` #### Property Value Parameters: - (int): ### Quality Gets or sets the quality. [0..10]. ```csharp public float Quality { get; set; } ``` #### Property Value Parameters: - (float): ### SampleRate Gets or sets the sample rate. Supported values are 8000, 16000, 32000. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### VAD Gets or sets a value indicating whether to enable voice activity detection. ```csharp public bool VAD { get; set; } ``` #### Property Value Parameters: - (bool): ### VBR Gets or sets a value indicating whether to enable variable bitrate. ```csharp public bool VBR { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetModes() Gets the mode list. ```csharp public static IEnumerable GetModes() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetSupportedBitrates() Gets the supported bitrates. Use GetSupportedBitratesFloat for the correct float values. Ignore this method. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedBitratesFloat() Gets the bitrate list. ```csharp public float[] GetSupportedBitratesFloat() ``` #### Returns Parameters: - (float [ ]): float. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class VOAACEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.VOAACEncoderSettings.html # Class VOAACEncoderSettings # Class VOAACEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll VO-AAC encoder settings. ```csharp public class VOAACEncoderSettings : IAACEncoderSettings, IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate (in Kbits/s). Default: 128. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### SampleRate Gets or sets the custom sample rate. Can be 0 to use original sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum VorbisEncoderRateControl Link: api/VisioForge.Core.Types.X.AudioEncoders.VorbisEncoderRateControl.html # Enum VorbisEncoderRateControl # Enum VorbisEncoderRateControl **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the rate control modes for Vorbis encoding. ```csharp public enum VorbisEncoderRateControl ``` ## Fields Parameters: - Quality (): Quality-based encoding - uses VBR to maintain consistent audio quality. - Bitrate (): Bitrate-based encoding - targets a specific bitrate. --- # Class VorbisEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.VorbisEncoderSettings.html # Class VorbisEncoderSettings # Class VorbisEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Vorbis encoder settings. ```csharp public class VorbisEncoderSettings : IAudioEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Remarks Supported formats: F32LE. Supported sample rates: [1..200000]. Supported channels: [1..9]. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the target bitrate in kilobits per second (Kbps). Attempts to encode at a bitrate averaging this value. This uses the bitrate management engine. Using the Quality property is recommended for most users instead of bitrate. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks The encoder will convert this value to bits per second internally. ### MaxBitrate Gets or sets the maximum bitrate in kilobits per second (Kbps). Useful for streaming applications to cap the maximum bandwidth. ```csharp public int MaxBitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks The encoder will convert this value to bits per second internally. ### MinBitrate Gets or sets the minimum bitrate in kilobits per second (Kbps). Useful for encoding for a fixed-size channel to guarantee minimum quality. ```csharp public int MinBitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks The encoder will convert this value to bits per second internally. ### Quality Gets or sets the quality instead of specifying a particular bitrate. -1 = lowest, 10 = highest. ```csharp public int Quality { get; set; } ``` #### Property Value Parameters: - (int): ### RateControl Gets or sets the rate control. ```csharp public VorbisEncoderRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (VorbisEncoderRateControl): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class WAVEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.WAVEncoderSettings.html # Class WAVEncoderSettings # Class WAVEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll WAV audio encoder settings. ```csharp public class WAVEncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WAVEncoderSettings() Initializes a new instance of the class. ```csharp public WAVEncoderSettings() ``` ### WAVEncoderSettings(AudioFormatX, int, int) Initializes a new instance of the class. ```csharp public WAVEncoderSettings(AudioFormatX format, int sampleRate, int channels) ``` #### Parameters Parameters: - format (AudioFormatX): The format. - sampleRate (int): The sample rate. - channels (int): The channels. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Channels Gets or sets the channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Format Gets or sets audio format. ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetFormatList() Gets the format list. ```csharp public static IEnumerable GetFormatList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. #### Exceptions Parameters: - (NotImplementedException): ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum WavPackEncoderCorrectionMode Link: api/VisioForge.Core.Types.X.AudioEncoders.WavPackEncoderCorrectionMode.html # Enum WavPackEncoderCorrectionMode # Enum WavPackEncoderCorrectionMode **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the correction file modes for WavPack encoding. ```csharp public enum WavPackEncoderCorrectionMode ``` ## Fields Parameters: - False (): Create no correction file - lossy compression only. - True (): Create correction file - enables hybrid lossless mode. - Optimized (): Create optimized correction file - smaller correction files with slightly slower encoding. --- # Enum WavPackEncoderJSMode Link: api/VisioForge.Core.Types.X.AudioEncoders.WavPackEncoderJSMode.html # Enum WavPackEncoderJSMode # Enum WavPackEncoderJSMode **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the Joint Stereo mode options for WavPack encoding. ```csharp public enum WavPackEncoderJSMode ``` ## Fields Parameters: - Auto (): Automatic mode - encoder selects the best mode for each frame. - LeftRight (): Left/Right stereo - traditional stereo encoding. - MidSide (): Mid/Side stereo - encodes sum and difference of channels for better compression. --- # Enum WavPackEncoderMode Link: api/VisioForge.Core.Types.X.AudioEncoders.WavPackEncoderMode.html # Enum WavPackEncoderMode # Enum WavPackEncoderMode **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll Defines the compression modes for WavPack encoding. ```csharp public enum WavPackEncoderMode ``` ## Fields Parameters: - Fast (): Fast compression - lowest compression ratio but fastest encoding. - Normal (): Normal compression - balanced compression ratio and speed. - High (): High compression - better compression ratio, slower encoding. - VeryHigh (): Very high compression - best compression ratio but slowest encoding. --- # Class WavPackEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.WavPackEncoderSettings.html # Class WavPackEncoderSettings # Class WavPackEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll WavPack audio encoder settings. ```csharp public class WavPackEncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate. Try to encode with this average bitrate (bits/sec). This enables lossy encoding, values smaller than 24000 disable it again. ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### BitsPerSample Gets or sets the bits per sample. Try to encode with this amount of bits per sample. This enables lossy encoding, values smaller than 2.0 disable it again. ```csharp public double BitsPerSample { get; set; } ``` #### Property Value Parameters: - (double): ### CorrectionMode Gets or sets the correction mode. Use this mode for the correction stream. Only works in lossy mode!. ```csharp public WavPackEncoderCorrectionMode CorrectionMode { get; set; } ``` #### Property Value Parameters: - (WavPackEncoderCorrectionMode): ### ExtraProcessing Gets or sets the extra processing. Use better but slower filters for better compression/quality. ```csharp public uint ExtraProcessing { get; set; } ``` #### Property Value Parameters: - (uint): ### JointStereoMode Gets or sets the joint stereo mode. ```csharp public WavPackEncoderJSMode JointStereoMode { get; set; } ``` #### Property Value Parameters: - (WavPackEncoderJSMode): ### MD5 Gets or sets a value indicating whether to store MD5 hash of raw samples within the file. ```csharp public bool MD5 { get; set; } ``` #### Property Value Parameters: - (bool): ### Mode Gets or sets the mode. Speed versus compression tradeoff. ```csharp public WavPackEncoderMode Mode { get; set; } ``` #### Property Value Parameters: - (WavPackEncoderMode): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetModeList() Gets the mode list. ```csharp public static IEnumerable GetModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetSupportedBitrates() Gets the supported bitrates (result is range). ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates (range). ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class WMAEncoderSettings Link: api/VisioForge.Core.Types.X.AudioEncoders.WMAEncoderSettings.html # Class WMAEncoderSettings # Class WMAEncoderSettings **Namespace**: VisioForge.Core.Types.X.AudioEncoders **Assembly**: VisioForge.Core.dll WMA encoder settings. ```csharp public class WMAEncoderSettings : IAudioEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets bitrate (in Kbps). ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### Channels Gets or sets number of audio channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### SampleRate Gets or sets audio sampling rate (in Hz). ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetSupportedBitrates() Gets the supported bitrates. ```csharp public int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp public int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp public int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Namespace VisioForge.Core.Types.X.AudioEncoders Link: api/VisioForge.Core.Types.X.AudioEncoders.html # Namespace VisioForge.Core.Types.X.AudioEncoders # Namespace VisioForge.Core.Types.X.AudioEncoders ### Classes Parameters: - (): AVENC AAC encoder settings. - (): AptX decoder settings for decoding high-quality Bluetooth audio streams. AptX is a psychoacoustic audio codec algorithm developed for Bluetooth audio applications, providing CD-like audio quality with low latency suitable for wireless audio transmission. - (): AptX encoder settings for high-quality Bluetooth audio encoding. AptX is a psychoacoustic audio codec algorithm developed for Bluetooth audio applications, providing CD-like audio quality with low latency suitable for wireless audio transmission. - (): Audio encoder shared settings. - (): FLAC encoder settings. - (): MP2 encoder settings. - (): MP3 encoder settings. - (): OPUS encoder settings. - (): Speex encoder settings. Implements the . - (): VO-AAC encoder settings. - (): Vorbis encoder settings. - (): WAV audio encoder settings. - (): WMA encoder settings. - (): WavPack audio encoder settings. ### Interfaces Parameters: - (): Shared AAC encoder settings interface. ### Enums Parameters: - (): AAC encoder coder. - (): Represents the trilean state for AVENC AAC encoder force M/S stereo coding option. - (): Audio encoder type. - (): Audio service type. - (): Defines the rate control modes for MP3 encoding. - (): Defines the encoding engine quality/speed settings for MP3 encoding. - (): Defines the encoding target mode for MP3 encoding. - (): Defines the audio type for OPUS encoder optimization. - (): Defines the audio bandwidth settings for OPUS encoding. - (): Defines the audio frame duration in milliseconds for OPUS encoding. - (): Defines the rate control modes for OPUS encoding. - (): Defines the encoding modes for Speex audio encoder. - (): Defines the rate control modes for Vorbis encoding. - (): Defines the correction file modes for WavPack encoding. - (): Defines the Joint Stereo mode options for WavPack encoding. - (): Defines the compression modes for WavPack encoding. --- # Enum AudioFormatX Link: api/VisioForge.Core.Types.X.AudioFormatX.html # Enum AudioFormatX # Enum AudioFormatX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines various audio sample formats, including signed/unsigned integers and floating-point types, with different bit depths and endianness. This enumeration is used to specify the format of raw audio data for processing and playback within the MediaBlocks framework. ```csharp public enum AudioFormatX ``` ## Fields Parameters: - Unknown (): The audio format is unknown or not specified. - Encoded (): The audio data is in a compressed or encoded format, not raw PCM. - S8 (): 8-bit signed integer audio format. - U8 (): 8-bit unsigned integer audio format. - S16LE (): 16-bit signed integer audio format, Little-Endian. - S16 (): Alias for (16-bit signed integer audio format, Little-Endian). - S16BE (): 16-bit signed integer audio format, Big-Endian. - U16LE (): 16-bit unsigned integer audio format, Little-Endian. - U16 (): Alias for (16-bit unsigned integer audio format, Little-Endian). - U16BE (): 16-bit unsigned integer audio format, Big-Endian. - S2432LE (): 24-bit signed integer audio format packed into 32-bit containers, Little-Endian. - S2432 (): Alias for (24-bit signed integer audio format packed into 32-bit containers, Little-Endian). - S2432BE (): 24-bit signed integer audio format packed into 32-bit containers, Big-Endian. - U2432LE (): 24-bit unsigned integer audio format packed into 32-bit containers, Little-Endian. - U2432 (): Alias for (24-bit unsigned integer audio format packed into 32-bit containers, Little-Endian). - U2432BE (): 24-bit unsigned integer audio format packed into 32-bit containers, Big-Endian. - S32LE (): 32-bit signed integer audio format, Little-Endian. - S32 (): Alias for (32-bit signed integer audio format, Little-Endian). - S32BE (): 32-bit signed integer audio format, Big-Endian. - U32LE (): 32-bit unsigned integer audio format, Little-Endian. - U32 (): Alias for (32-bit unsigned integer audio format, Little-Endian). - U32BE (): 32-bit unsigned integer audio format, Big-Endian. - S24LE (): 24-bit signed integer audio format, Little-Endian. - S24 (): Alias for (24-bit signed integer audio format, Little-Endian). - S24BE (): 24-bit signed integer audio format, Big-Endian. - U24LE (): 24-bit unsigned integer audio format, Little-Endian. - U24 (): Alias for (24-bit unsigned integer audio format, Little-Endian). - U24BE (): 24-bit unsigned integer audio format, Big-Endian. - S20LE (): 20-bit signed integer audio format, Little-Endian. - S20 (): Alias for (20-bit signed integer audio format, Little-Endian). - S20BE (): 20-bit signed integer audio format, Big-Endian. - U20LE (): 20-bit unsigned integer audio format, Little-Endian. - U20 (): Alias for (20-bit unsigned integer audio format, Little-Endian). - U20BE (): 20-bit unsigned integer audio format, Big-Endian. - S18LE (): 18-bit signed integer audio format, Little-Endian. - S18 (): Alias for (18-bit signed integer audio format, Little-Endian). - S18BE (): 18-bit signed integer audio format, Big-Endian. - U18LE (): 18-bit unsigned integer audio format, Little-Endian. - U18 (): Alias for (18-bit unsigned integer audio format, Little-Endian). - U18BE (): 18-bit unsigned integer audio format, Big-Endian. - F32LE (): 32-bit floating-point audio format, Little-Endian (single precision). - F32 (): Alias for (32-bit floating-point audio format, Little-Endian). - F32BE (): 32-bit floating-point audio format, Big-Endian (single precision). - F64LE (): 64-bit floating-point audio format, Little-Endian (double precision). - F64 (): Alias for (64-bit floating-point audio format, Little-Endian). - F64BE (): 64-bit floating-point audio format, Big-Endian (double precision). ## Examples
// Specify 16-bit signed integer, Little-Endian audio format.
AudioFormatX format = AudioFormatX.S16LE;

// When configuring an audio sink or source, you would use this format.
// audioSink.Format = format;

// Check if a given format is a floating-point format.
if (format == AudioFormatX.F32LE || format == AudioFormatX.F64LE)
{
    Console.WriteLine("This is a floating-point audio format.");
}
## Remarks Understanding the audio format is crucial for correct interpretation and manipulation of audio samples. The `LE` suffix indicates Little-Endian byte order, while `BE` indicates Big-Endian. Formats without a suffix are typically Little-Endian. --- # Class AudioInfoX Link: api/VisioForge.Core.Types.X.AudioInfoX.html # Class AudioInfoX # Class AudioInfoX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents detailed audio format information for use within the MediaBlocks framework. This class defines properties such as the audio sample format, sample rate, and number of channels. ```csharp public class AudioInfoX ``` #### Inheritance #### Inherited Members ## Examples
// Create an AudioInfoX instance for stereo, 48kHz, 16-bit signed little-endian audio.
var audioInfo = new AudioInfoX(AudioFormatX.S16LE, 48000, 2);

Console.WriteLine($"Audio Format: {audioInfo.Format}");
Console.WriteLine($"Sample Rate: {audioInfo.SampleRate} Hz");
Console.WriteLine($"Channels: {audioInfo.Channels}");

// This audioInfo object can then be used to configure an audio encoder or renderer.
// audioEncoder.SetAudioInfo(audioInfo);
## Remarks This information is crucial for configuring audio processing blocks, encoders, and renderers, ensuring that audio data is handled correctly throughout the pipeline. ## Constructors ### AudioInfoX() Initializes a new instance of the class with default values. ```csharp public AudioInfoX() ``` ### AudioInfoX(AudioFormatX, int, int) Initializes a new instance of the class with specified format, sample rate, and channels. ```csharp public AudioInfoX(AudioFormatX format, int sampleRate, int channels) ``` #### Parameters Parameters: - format (AudioFormatX): The of the audio. - sampleRate (int): The sample rate in Hz. - channels (int): The number of channels. ## Properties ### Channels Gets or sets the number of audio channels. The default value is 2 (stereo). ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Format Gets or sets the audio sample format. The default value is . ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### SampleRate Gets or sets the audio sample rate in Hertz (Hz). The default value is 48000 Hz. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the audio format, sample rate, and number of channels. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class AudioRendererSettings Link: api/VisioForge.Core.Types.X.AudioRenderers.AudioRendererSettings.html # Class AudioRendererSettings # Class AudioRendererSettings **Namespace**: VisioForge.Core.Types.X.AudioRenderers **Assembly**: VisioForge.Core.dll Class AudioRendererSettings. Implements the ```csharp public class AudioRendererSettings : IAudioRendererSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioRendererSettings(AudioOutputDeviceInfo) Initializes a new instance of the class. ```csharp public AudioRendererSettings(AudioOutputDeviceInfo deviceInfo) ``` #### Parameters Parameters: - deviceInfo (AudioOutputDeviceInfo): The device information. ## Properties ### API Gets the API. ```csharp public AudioOutputDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioOutputDeviceAPI): ### DevicePath Gets the device path. ```csharp public string DevicePath { get; } ``` #### Property Value Parameters: - (string): ### Guid Gets the unique identifier. ```csharp public Guid Guid { get; } ``` #### Property Value Parameters: - (Guid): ### Info Gets the info. ```csharp public AudioOutputDeviceInfo Info { get; } ``` #### Property Value Parameters: - (AudioOutputDeviceInfo): ## See Also --- # Interface IAudioRendererSettings Link: api/VisioForge.Core.Types.X.AudioRenderers.IAudioRendererSettings.html # Interface IAudioRendererSettings # Interface IAudioRendererSettings **Namespace**: VisioForge.Core.Types.X.AudioRenderers **Assembly**: VisioForge.Core.dll Interface IAudioRendererSettings. ```csharp public interface IAudioRendererSettings ``` ## Properties ### API Gets or sets the API. ```csharp AudioOutputDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioOutputDeviceAPI): ### DevicePath Gets or sets the device path. ```csharp string DevicePath { get; } ``` #### Property Value Parameters: - (string): ### Guid Gets or sets the unique identifier. ```csharp Guid Guid { get; } ``` #### Property Value Parameters: - (Guid): --- # Namespace VisioForge.Core.Types.X.AudioRenderers Link: api/VisioForge.Core.Types.X.AudioRenderers.html # Namespace VisioForge.Core.Types.X.AudioRenderers # Namespace VisioForge.Core.Types.X.AudioRenderers ### Classes Parameters: - (): Class AudioRendererSettings. Implements the ### Interfaces Parameters: - (): Interface IAudioRendererSettings. --- # Class SpacescopeSettings Link: api/VisioForge.Core.Types.X.AudioVisualizers.SpacescopeSettings.html # Class SpacescopeSettings # Class SpacescopeSettings **Namespace**: VisioForge.Core.Types.X.AudioVisualizers **Assembly**: VisioForge.Core.dll Spacescope settings. ```csharp public class SpacescopeSettings ``` #### Inheritance #### Inherited Members ## Properties ### Style Gets or sets the drawing style for the space scope display. ```csharp public SpacescopeSettingsStyle Style { get; set; } ``` #### Property Value Parameters: - (SpacescopeSettingsStyle): --- # Enum SpacescopeSettingsStyle Link: api/VisioForge.Core.Types.X.AudioVisualizers.SpacescopeSettingsStyle.html # Enum SpacescopeSettingsStyle # Enum SpacescopeSettingsStyle **Namespace**: VisioForge.Core.Types.X.AudioVisualizers **Assembly**: VisioForge.Core.dll Spacescope settings style. ```csharp public enum SpacescopeSettingsStyle ``` ## Fields Parameters: - Dots (): Draw dots (default). - Lines (): Draw lines. - ColorDots (): Draw color dots. - ColorLines (): Draw color lines. --- # Class WavescopeSettings Link: api/VisioForge.Core.Types.X.AudioVisualizers.WavescopeSettings.html # Class WavescopeSettings # Class WavescopeSettings **Namespace**: VisioForge.Core.Types.X.AudioVisualizers **Assembly**: VisioForge.Core.dll Wavescope settings. ```csharp public class WavescopeSettings ``` #### Inheritance #### Inherited Members ## Properties ### Style Gets or sets the drawing style for the wavescope display. ```csharp public WavescopeSettingsStyle Style { get; set; } ``` #### Property Value Parameters: - (WavescopeSettingsStyle): --- # Enum WavescopeSettingsStyle Link: api/VisioForge.Core.Types.X.AudioVisualizers.WavescopeSettingsStyle.html # Enum WavescopeSettingsStyle # Enum WavescopeSettingsStyle **Namespace**: VisioForge.Core.Types.X.AudioVisualizers **Assembly**: VisioForge.Core.dll Wavescope settings style. ```csharp public enum WavescopeSettingsStyle ``` ## Fields Parameters: - Dots (): Draw dots (default). - Lines (): Draw lines. - ColorDots (): Draw color dots. - ColorLines (): Draw color lines. --- # Namespace VisioForge.Core.Types.X.AudioVisualizers Link: api/VisioForge.Core.Types.X.AudioVisualizers.html # Namespace VisioForge.Core.Types.X.AudioVisualizers # Namespace VisioForge.Core.Types.X.AudioVisualizers ### Classes Parameters: - (): Spacescope settings. - (): Wavescope settings. ### Enums Parameters: - (): Spacescope settings style. - (): Wavescope settings style. --- # Class BarcodeDetectorEventArgs Link: api/VisioForge.Core.Types.X.BarcodeDetectorEventArgs.html # Class BarcodeDetectorEventArgs # Class BarcodeDetectorEventArgs **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Provides data for barcode detection events within the VisioForge X engine. This class encapsulates information about the detected barcode, including its type, value, and the timestamp of detection. ```csharp public class BarcodeDetectorEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a barcode detection event from the X engine.
public void OnBarcodeDetectedX(object sender, BarcodeDetectorEventArgs e)
{
    Console.WriteLine($"Barcode Detected (X Engine)! Type: {e.BarcodeType}, Value: {e.Value}");
    Console.WriteLine($"  Detected at timestamp: {e.Timestamp}");

    // You can use this information to update UI, perform database lookups, etc.
    if (e.BarcodeType == "QR_CODE")
    {
        Console.WriteLine("  This is a QR Code!");
    }
}
## Remarks This event argument is used when a barcode is successfully identified in a video frame or image processed by the X engine. It allows applications to react to barcode detections, such as logging the information, triggering actions, or displaying results. ## Constructors ### BarcodeDetectorEventArgs(string, string, TimeSpan) Initializes a new instance of the class. ```csharp public BarcodeDetectorEventArgs(string barcodeType, string value, TimeSpan timeStamp) ``` #### Parameters Parameters: - barcodeType (string): The type of the detected barcode. - value (string): The decoded string value of the barcode. - timeStamp (TimeSpan): The timestamp of the detection. ## Properties ### BarcodeType Gets the type of the detected barcode (e.g., "QR_CODE", "EAN_13", "CODE_39"). ```csharp public string BarcodeType { get; } ``` #### Property Value Parameters: - (string): ### Timestamp Gets the timestamp of the video frame or image at which the barcode was detected. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Value Gets the decoded string value of the barcode. ```csharp public string Value { get; } ``` #### Property Value Parameters: - (string): --- # Enum BarcodeDetectorMode Link: api/VisioForge.Core.Types.X.BarcodeDetectorMode.html # Enum BarcodeDetectorMode # Enum BarcodeDetectorMode **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Specifies the operational mode for a barcode detector within the VisioForge X engine. This enumeration defines how the barcode detector interacts with the video processing pipeline. ```csharp public enum BarcodeDetectorMode ``` ## Fields Parameters: - InputOnly (): In this mode, the barcode detector processes the input video stream but does not pass the video frames to its output. The output pad is effectively closed, meaning no video will be rendered or further processed after detection. This is useful when only the barcode detection results are needed, and the video stream itself is not required downstream. - InputOutput (): In this mode, the barcode detector processes the input video stream and then passes the original video frames to its output. This allows the video to be rendered or further processed by other components in the pipeline after barcode detection. ## Examples
// Configure a barcode detector to only process the input and not pass the video through.
// barcodeDetector.Mode = BarcodeDetectorMode.InputOnly;

// Configure a barcode detector to process the input and output the original video stream.
// barcodeDetector.Mode = BarcodeDetectorMode.InputOutput;
## Remarks The choice of mode depends on whether the original video stream needs to be passed through the detector or if only the detection results are required. --- # Class BridgeAudioSinkSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeAudioSinkSettings.html # Class BridgeAudioSinkSettings # Class BridgeAudioSinkSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Bridge audio sink settings. ```csharp public class BridgeAudioSinkSettings ``` #### Inheritance #### Inherited Members ## Constructors ### BridgeAudioSinkSettings(string, AudioInfoX) Initializes a new instance of the class. ```csharp public BridgeAudioSinkSettings(string channel, AudioInfoX audioInfo) ``` #### Parameters Parameters: - channel (string): The channel. - audioInfo (AudioInfoX): The audio information. ## Properties ### AudioInfo Gets the optional audio information. ```csharp public AudioInfoX AudioInfo { get; set; } ``` #### Property Value Parameters: - (AudioInfoX): ### Channel Gets the channel name to match bridge source and sink elements. ```csharp public string Channel { get; } ``` #### Property Value Parameters: - (string): --- # Class BridgeAudioSourceSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeAudioSourceSettings.html # Class BridgeAudioSourceSettings # Class BridgeAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Bridge audio source settings. ```csharp public class BridgeAudioSourceSettings : IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### BridgeAudioSourceSettings(string, AudioInfoX) Initializes a new instance of the class. ```csharp public BridgeAudioSourceSettings(string channel, AudioInfoX audioInfo) ``` #### Parameters Parameters: - channel (string): The channel. - audioInfo (AudioInfoX): The audio information. ## Properties ### BufferTime Gets or sets the size of audio buffer. ```csharp public TimeSpan BufferTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Channel Gets or sets the channel name to match bridge source and sink elements. ```csharp public string Channel { get; } ``` #### Property Value Parameters: - (string): ### DisableAudioConversion Gets or sets a value indicating whether to disable audio conversion. ```csharp public bool DisableAudioConversion { get; set; } ``` #### Property Value Parameters: - (bool): ### Info Gets or sets the audio information. ```csharp public AudioInfoX Info { get; set; } ``` #### Property Value Parameters: - (AudioInfoX): ### LatencyTime Gets or sets the latency as reported by the source. ```csharp public TimeSpan LatencyTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### PeriodTime Gets or sets the minimum amount of data to read in each iteration. ```csharp public TimeSpan PeriodTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. #### Exceptions Parameters: - (NotImplementedException): ### GetMute() Gets the mute. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetVolume() Gets the volume. Value should be in 0.0 - 1.0 range. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. Value should be in 0.0 - 1.0 range. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. --- # Class BridgeSubtitleSinkSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeSubtitleSinkSettings.html # Class BridgeSubtitleSinkSettings # Class BridgeSubtitleSinkSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Bridge subtitle sink settings. ```csharp public class BridgeSubtitleSinkSettings ``` #### Inheritance #### Inherited Members ## Constructors ### BridgeSubtitleSinkSettings() Initializes a new instance of the class. ```csharp public BridgeSubtitleSinkSettings() ``` ### BridgeSubtitleSinkSettings(string) Initializes a new instance of the class. ```csharp public BridgeSubtitleSinkSettings(string channel) ``` #### Parameters Parameters: - channel (string): The channel. ## Properties ### Channel Gets or sets the channel name to match bridge source and sink elements. ```csharp public string Channel { get; set; } ``` #### Property Value Parameters: - (string): --- # Class BridgeSubtitleSourceSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeSubtitleSourceSettings.html # Class BridgeSubtitleSourceSettings # Class BridgeSubtitleSourceSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Bridge subtitle source settings. ```csharp public class BridgeSubtitleSourceSettings ``` #### Inheritance #### Inherited Members ## Constructors ### BridgeSubtitleSourceSettings() Initializes a new instance of the class. ```csharp public BridgeSubtitleSourceSettings() ``` ### BridgeSubtitleSourceSettings(string) Initializes a new instance of the class. ```csharp public BridgeSubtitleSourceSettings(string channel) ``` #### Parameters Parameters: - channel (string): The channel. ## Properties ### Channel Gets or sets the channel name to match bridge source and sink elements. ```csharp public string Channel { get; set; } ``` #### Property Value Parameters: - (string): --- # Class BridgeVideoSinkSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeVideoSinkSettings.html # Class BridgeVideoSinkSettings # Class BridgeVideoSinkSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Bridge video sink settings. ```csharp public class BridgeVideoSinkSettings ``` #### Inheritance #### Inherited Members ## Constructors ### BridgeVideoSinkSettings() Initializes a new instance of the class. ```csharp public BridgeVideoSinkSettings() ``` ### BridgeVideoSinkSettings(string, VideoFrameInfoX) Initializes a new instance of the class. ```csharp public BridgeVideoSinkSettings(string channel, VideoFrameInfoX info) ``` #### Parameters Parameters: - channel (string): The channel. - info (VideoFrameInfoX): The information. ## Properties ### Channel Gets the channel name to match bridge source and sink elements. ```csharp public string Channel { get; } ``` #### Property Value Parameters: - (string): ### CustomSyncFlag Gets or sets a value indicating whether custom synchronize flag will be used. ```csharp public bool? CustomSyncFlag { get; set; } ``` #### Property Value Parameters: - (bool ?): ### Info Gets or sets the information. ```csharp public VideoFrameInfoX Info { get; set; } ``` #### Property Value Parameters: - (VideoFrameInfoX): --- # Class BridgeVideoSourceSettings Link: api/VisioForge.Core.Types.X.Bridge.BridgeVideoSourceSettings.html # Class BridgeVideoSourceSettings # Class BridgeVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Bridge **Assembly**: VisioForge.Core.dll Internal video source settings. ```csharp public class BridgeVideoSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### BridgeVideoSourceSettings(string, VideoFrameInfoX) Initializes a new instance of the class. ```csharp public BridgeVideoSourceSettings(string channel, VideoFrameInfoX info) ``` #### Parameters Parameters: - channel (string): The channel. - info (VideoFrameInfoX): The information. ### BridgeVideoSourceSettings() Initializes a new instance of the class. ```csharp public BridgeVideoSourceSettings() ``` ## Properties ### Channel Gets the channel name to match internal source and sink elements. ```csharp public string Channel { get; } ``` #### Property Value Parameters: - (string): ### Info Gets the information. ```csharp public VideoFrameInfoX Info { get; set; } ``` #### Property Value Parameters: - (VideoFrameInfoX): ### Timeout Gets or sets the timeout after which to start outputting black frames. ```csharp public TimeSpan Timeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Namespace VisioForge.Core.Types.X.Bridge Link: api/VisioForge.Core.Types.X.Bridge.html # Namespace VisioForge.Core.Types.X.Bridge # Namespace VisioForge.Core.Types.X.Bridge ### Classes Parameters: - (): Bridge audio sink settings. - (): Bridge audio source settings. - (): Bridge subtitle sink settings. - (): Bridge subtitle source settings. - (): Bridge video sink settings. - (): Internal video source settings. --- # Enum CapsType Link: api/VisioForge.Core.Types.X.CapsType.html # Enum CapsType # Enum CapsType **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Specifies the type of media capabilities or stream content. This enumeration is used to categorize different types of media data, such as video, audio, or subtitles. ```csharp public enum CapsType ``` ## Fields Parameters: - Video (): Represents video media capabilities or a video stream. - Audio (): Represents audio media capabilities or an audio stream. - Subtitle (): Represents subtitle media capabilities or a subtitle stream. - Other (): Represents other types of media capabilities or streams not explicitly categorized. ## Examples
// Example of checking the type of a media stream.
// CapsType streamCapability = GetStreamCapability();
// switch (streamCapability)
// {
//     case CapsType.Video:
//         Console.WriteLine("This stream carries video data.");
//         break;
//     case CapsType.Audio:
//         Console.WriteLine("This stream carries audio data.");
//         break;
//     case CapsType.Subtitle:
//         Console.WriteLine("This stream carries subtitle data.");
//         break;
//     default:
//         Console.WriteLine("This stream carries other types of data.");
//         break;
// }
## Remarks This enum is commonly used in the MediaBlocks framework to define the type of data that a particular element or pad can handle. --- # Class DataMatrixDecoderEventArgs Link: api/VisioForge.Core.Types.X.DataMatrixDecoderEventArgs.html # Class DataMatrixDecoderEventArgs # Class DataMatrixDecoderEventArgs **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Provides data for DataMatrix detection events within the VisioForge X engine. This class encapsulates information about the detected DataMatrix code, including its decoded text, symbol information, corner positions, and the timestamp of detection. ```csharp public class DataMatrixDecoderEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a DataMatrix detection event from the X engine.
public void OnDataMatrixDetected(object sender, DataMatrixDecoderEventArgs e)
{
    Console.WriteLine($"DataMatrix Detected! Text: {e.DecodedText}");
    Console.WriteLine($"  Symbol: {e.SymbolInfo.Rows}x{e.SymbolInfo.Cols}");
    Console.WriteLine($"  Detected at timestamp: {e.Timestamp}");

    // Process the decoded data based on your application needs
    if (e.DecodedText.StartsWith("URL:"))
    {
        Console.WriteLine("  This DataMatrix contains a URL!");
    }
}
## Remarks This event argument is used when a DataMatrix code is successfully identified and decoded in a video frame processed by the X engine. It allows applications to react to DataMatrix detections, such as logging the information, triggering actions, or displaying results. ## Constructors ### DataMatrixDecoderEventArgs(string, byte[], SymbolInfo, Corners, TimeSpan, long) Initializes a new instance of the class. ```csharp public DataMatrixDecoderEventArgs(string decodedText, byte[] rawData, SymbolInfo symbolInfo, Corners corners, TimeSpan timestamp, long frameNumber) ``` #### Parameters Parameters: - decodedText (string): The decoded text content of the DataMatrix. - rawData (byte [ ]): The raw data bytes from the DataMatrix. - symbolInfo (SymbolInfo): Information about the symbol structure. - corners (Corners): The corner positions of the detected DataMatrix. - timestamp (TimeSpan): The timestamp of the detection. - frameNumber (long): The frame number where detection occurred. ## Properties ### Corners Gets the corner positions of the detected DataMatrix code in the image. ```csharp public Corners Corners { get; } ``` #### Property Value Parameters: - (Corners): ### DecodedText Gets the decoded text content of the DataMatrix code. ```csharp public string DecodedText { get; } ``` #### Property Value Parameters: - (string): ### FrameNumber Gets the frame number in which the DataMatrix was detected. ```csharp public long FrameNumber { get; } ``` #### Property Value Parameters: - (long): ### RawData Gets the raw data bytes from the DataMatrix code. ```csharp public byte[] RawData { get; } ``` #### Property Value Parameters: - (byte [ ]): ### SymbolInfo Gets information about the DataMatrix symbol structure. ```csharp public SymbolInfo SymbolInfo { get; } ``` #### Property Value Parameters: - (SymbolInfo): ### Timestamp Gets the timestamp of the video frame at which the DataMatrix was detected. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class DebugMediaBlockSettings Link: api/VisioForge.Core.Types.X.DebugMediaBlockSettings.html # Class DebugMediaBlockSettings # Class DebugMediaBlockSettings **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Provides a set of debugging and control settings for media blocks within the VisioForge X engine. These settings allow for fine-grained control over buffer handling, timing, and error simulation for testing and diagnostic purposes. ```csharp public class DebugMediaBlockSettings ``` #### Inheritance #### Inherited Members ## Examples
// Create new debug settings for a media block.
var debugSettings = new DebugMediaBlockSettings
{
    CheckImperfectOffset = true, // Enable checking for offset mismatches
    CheckImperfectTimestamp = true, // Enable checking for timestamp mismatches
    DataRate = 1024 * 1024, // Simulate a data rate of 1MB/s for timestamping
    DropProbability = 0.01f, // Drop 1% of buffers for testing error handling
    EOSAfter = 1000, // Send EOS signal after 1000 buffers
    ErrorAfter = 500, // Simulate an error after 500 buffers
    SignalHandoffs = true, // Enable handoff signals for debugging
    Silent = false, // Disable silent mode to see more debug output
    SingleSegment = true, // Treat all buffers as part of a single segment
    SleepTime = 10000, // Introduce a 10ms delay between processing buffers
    Sync = true, // Synchronize to pipeline clock
    TimestampOffset = -5000000 // Apply a -5ms timestamp offset
};

// Apply these settings to a media block (conceptual)
// mediaBlock.DebugSettings = debugSettings;
## Remarks This class is primarily intended for developers and advanced users to debug and analyze the behavior of media pipelines. Modifying these settings can significantly alter the performance and stability of media processing. ## Properties ### CheckImperfectOffset Gets or sets a value indicating whether to send element messages if buffer offsets and offset_ends do not match up. This helps in debugging issues related to buffer segmentation and continuity. ```csharp public bool CheckImperfectOffset { get; set; } ``` #### Property Value Parameters: - (bool): ### CheckImperfectTimestamp Gets or sets a value indicating whether to send element messages if buffer timestamps and durations do not match up. This helps in debugging issues related to timing and synchronization. ```csharp public bool CheckImperfectTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### DataRate Gets or sets the data rate in bytes per second for (re)timestamping buffers. If set to 0, this feature is inactive. Useful for simulating specific data flow rates. ```csharp public int DataRate { get; set; } ``` #### Property Value Parameters: - (int): ### DropAllocation Gets or sets a value indicating whether to drop allocation queries. If set to true, the element will not forward allocation queries, which can be used for testing memory management scenarios. ```csharp public bool DropAllocation { get; set; } ``` #### Property Value Parameters: - (bool): ### DropProbability Gets or sets the probability (0.0 to 1.0) that a buffer will be dropped. This can be used to simulate network packet loss or other data corruption scenarios. ```csharp public float DropProbability { get; set; } ``` #### Property Value Parameters: - (float): ### EOSAfter Gets or sets the number of buffers after which an End-Of-Stream (EOS) signal will be sent. A value of -1 means no EOS will be sent based on buffer count. Useful for testing stream termination. ```csharp public int EOSAfter { get; set; } ``` #### Property Value Parameters: - (int): ### ErrorAfter Gets or sets the number of buffers after which an error will be simulated. A value of -1 means no error will be simulated based on buffer count. Useful for testing error handling. ```csharp public int ErrorAfter { get; set; } ``` #### Property Value Parameters: - (int): ### SignalHandoffs Gets or sets a value indicating whether the identity element should emit a handoff signal when processing a buffer. This signal can be used for external monitoring or debugging of buffer flow. ```csharp public bool SignalHandoffs { get; set; } ``` #### Property Value Parameters: - (bool): ### Silent Gets or sets a value indicating whether the media block should operate in silent mode. In silent mode, less debug information might be printed to the console. ```csharp public bool Silent { get; set; } ``` #### Property Value Parameters: - (bool): ### SingleSegment Gets or sets a value indicating whether to timestamp buffers and eat segments so as to appear as one continuous segment. This is useful for ensuring continuous playback even with fragmented input. ```csharp public bool SingleSegment { get; set; } ``` #### Property Value Parameters: - (bool): ### SleepTime Gets or sets the time in microseconds to sleep between processing each buffer. This can be used to simulate processing delays or to throttle the pipeline for debugging purposes. ```csharp public uint SleepTime { get; set; } ``` #### Property Value Parameters: - (uint): ### Sync Gets or sets a value indicating whether the media block should synchronize to the pipeline clock. Enabling synchronization ensures smooth playback and proper timing with other elements in the pipeline. ```csharp public bool Sync { get; set; } ``` #### Property Value Parameters: - (bool): ### TimestampOffset Gets or sets the timestamp offset in nanoseconds for synchronization. A negative value indicates an earlier synchronization point, while a positive value indicates a later one. ```csharp public long TimestampOffset { get; set; } ``` #### Property Value Parameters: - (long): --- # Enum DecklinkAudioChannels Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioChannels.html # Enum DecklinkAudioChannels # Enum DecklinkAudioChannels **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio channels mode. ```csharp public enum DecklinkAudioChannels ``` ## Fields Parameters: - Ch2 (): The 2 channels. - Ch8 (): The 8 channels. - Ch16 (): The 16 channels. - Max (): Maximum channels supported. --- # Enum DecklinkAudioConnection Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioConnection.html # Enum DecklinkAudioConnection # Enum DecklinkAudioConnection **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio connection. ```csharp public enum DecklinkAudioConnection ``` ## Fields Parameters: - Auto (): Automatic. - Embedded (): SDI/HDMI embedded audio. - AES (): AES/EBU input. - Analog (): Analog input. - AnalogXLR (): XLR analog input. - AnalogRCA (): RCA analog input. --- # Enum DecklinkAudioFormat Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioFormat.html # Enum DecklinkAudioFormat # Enum DecklinkAudioFormat **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio format. ```csharp public enum DecklinkAudioFormat ``` #### Extension Methods ## Fields Parameters: - S16LE (): 16 bit signed little endian samples. - S32LE (): 32 bit signed little endian samples. --- # Class DecklinkAudioSinkInfo Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioSinkInfo.html # Class DecklinkAudioSinkInfo # Class DecklinkAudioSinkInfo **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio sink info. ```csharp public class DecklinkAudioSinkInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkAudioSinkInfo(string, uint) Initializes a new instance of the class. ```csharp public DecklinkAudioSinkInfo(string name, uint deviceNumber) ``` #### Parameters Parameters: - name (string): The name. - deviceNumber (uint): The device number. ### DecklinkAudioSinkInfo(Device) Initializes a new instance of the class. ```csharp public DecklinkAudioSinkInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### DeviceNumber Gets or sets the device number. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### ModelName Gets or sets the name of the model. ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### PersistentID Gets the persistent identifier. ```csharp public long PersistentID { get; } ``` #### Property Value Parameters: - (long): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class DecklinkAudioSinkSettings Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioSinkSettings.html # Class DecklinkAudioSinkSettings # Class DecklinkAudioSinkSettings **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio sink settings. ```csharp public class DecklinkAudioSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkAudioSinkSettings(DecklinkAudioSinkInfo) Initializes a new instance of the class. ```csharp public DecklinkAudioSinkSettings(DecklinkAudioSinkInfo info) ``` #### Parameters Parameters: - info (DecklinkAudioSinkInfo): The information. ### DecklinkAudioSinkSettings(uint) Initializes a new instance of the class. ```csharp public DecklinkAudioSinkSettings(uint deviceNumber) ``` #### Parameters Parameters: - deviceNumber (uint): The device number. ### DecklinkAudioSinkSettings() Initializes a new instance of the class. ```csharp public DecklinkAudioSinkSettings() ``` ## Properties ### AlignmentThreshold Gets or sets the timestamp alignment threshold. ```csharp public TimeSpan AlignmentThreshold { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BufferTime Gets or sets the size of audio buffer. This is the minimum latency that the sink reports. ```csharp public TimeSpan BufferTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### DeviceNumber Gets or sets the output device instance to use. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### DiscontWait Gets or sets the window of time to wait before creating a discontinuity. ```csharp public TimeSpan DiscontWait { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### IsSync Gets or sets a value indicating whether this instance is synchronized. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Class DecklinkAudioSourceInfo Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioSourceInfo.html # Class DecklinkAudioSourceInfo # Class DecklinkAudioSourceInfo **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio source info. ```csharp public class DecklinkAudioSourceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkAudioSourceInfo(string, uint) Initializes a new instance of the class. ```csharp public DecklinkAudioSourceInfo(string name, uint deviceNumber) ``` #### Parameters Parameters: - name (string): The name. - deviceNumber (uint): The device number. ### DecklinkAudioSourceInfo(Device) Initializes a new instance of the class. ```csharp public DecklinkAudioSourceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### DeviceNumber Gets or sets the device number. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxChannels Gets the maximum channels. ```csharp public uint MaxChannels { get; } ``` #### Property Value Parameters: - (uint): ### ModelName Gets or sets the name of the model. ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### PersistentID Gets the persistent identifier. ```csharp public long PersistentID { get; } ``` #### Property Value Parameters: - (long): ### SupportsFormatDetection Gets a value indicating whether the device supports format detection. ```csharp public bool SupportsFormatDetection { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class DecklinkAudioSourceSettings Link: api/VisioForge.Core.Types.X.Decklink.DecklinkAudioSourceSettings.html # Class DecklinkAudioSourceSettings # Class DecklinkAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink audio source settings. ```csharp public class DecklinkAudioSourceSettings : IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkAudioSourceSettings(DecklinkAudioSourceInfo) Initializes a new instance of the class. ```csharp public DecklinkAudioSourceSettings(DecklinkAudioSourceInfo info) ``` #### Parameters Parameters: - info (DecklinkAudioSourceInfo): The information. ### DecklinkAudioSourceSettings(uint) Initializes a new instance of the class. ```csharp public DecklinkAudioSourceSettings(uint deviceNumber) ``` #### Parameters Parameters: - deviceNumber (uint): The device number. ## Properties ### AlignmentThreshold Gets or sets the timestamp alignment threshold in nanoseconds. ```csharp public ulong AlignmentThreshold { get; set; } ``` #### Property Value Parameters: - (ulong): ### BufferSize Gets or sets the size of internal buffer in number of video frames. ```csharp public uint BufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ### Channels Gets or sets the channels. ```csharp public DecklinkAudioChannels Channels { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioChannels): ### Connection Gets or sets the audio connection to use. ```csharp public DecklinkAudioConnection Connection { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioConnection): ### DeviceNumber Gets or sets the device number. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### DisableAudioConversion Gets or sets a value indicating whether to disable audio conversion. ```csharp public bool DisableAudioConversion { get; set; } ``` #### Property Value Parameters: - (bool): ### DiscontWait Gets or sets the window of time in nanoseconds to wait before creating a discontinuity. ```csharp public ulong DiscontWait { get; set; } ``` #### Property Value Parameters: - (ulong): ### Format Gets or sets the format. ```csharp public DecklinkAudioFormat Format { get; set; } ``` #### Property Value Parameters: - (DecklinkAudioFormat): ### SampleRate Gets the sample rate. ```csharp public int SampleRate { get; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetMute() Gets the mute. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetVolume() Gets the volume. Value should be in 0.0 - 1.0 range. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. Value should be in 0.0 - 1.0 range. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. --- # Enum DecklinkConnection Link: api/VisioForge.Core.Types.X.Decklink.DecklinkConnection.html # Enum DecklinkConnection # Enum DecklinkConnection **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink connection. ```csharp public enum DecklinkConnection ``` ## Fields Parameters: - Auto (): The automatic. - SDI (): The SDI. - HDMI (): The HDMI. - OpticalSDI (): The optical SDI. - Component (): The component. - Composite (): The composite. - SVideo (): The S-Video. --- # Enum DecklinkKeyerMode Link: api/VisioForge.Core.Types.X.Decklink.DecklinkKeyerMode.html # Enum DecklinkKeyerMode # Enum DecklinkKeyerMode **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink keyer mode. ```csharp public enum DecklinkKeyerMode ``` ## Fields Parameters: - False (): The off. - Internal (): The internal. - External (): The external. --- # Enum DecklinkMode Link: api/VisioForge.Core.Types.X.Decklink.DecklinkMode.html # Enum DecklinkMode # Enum DecklinkMode **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink mode. ```csharp public enum DecklinkMode ``` #### Extension Methods ## Fields Parameters: - Unknown (): The unknown mode. Do not use it, select correct. - NTSC (): The NTSC SD 60i. - NTSC2398 (): The NTSC SD 60i (24 fps). - PAL (): The PAL SD 50i. - NTSC_P (): The NTSC SD 60p. - PAL_P (): The PAL SD 50p. - HD1080p2398 (): The HD1080 23.98p. - HD1080p24 (): The HD1080 24p. - HD1080p25 (): The HD1080 25p. - HD1080p2997 (): The HD1080 29.97p. - HD1080p30 (): The HD1080 30p. - HD1080i50 (): The HD1080 50i. - HD1080i5994 (): The HD1080 59.94i. - HD1080i60 (): The HD1080 60i. - HD1080p50 (): The HD1080 50p. - HD1080p5994 (): The HD1080 59.94p. - HD1080p60 (): The HD1080 60p. - HD720p50 (): The HD720 50p. - HD720p5994 (): The HD720 59.94p. - HD720p60 (): The HD720 60p. - HD2K1556p2398 (): The 2k 23.98p. - HD1556p24 (): The 2k 24p. - HD1556p25 (): The 2k 25p. - HD2kDCIp2398 (): The 2k DCI 23.98p. - HD2kDCIp24 (): The 2k DCI 24p. - HD2kDCIp25 (): The 2k DCI 25p. - HD2kDCIp2997 (): The 2k DCI 29.97p. - HD2kDCIp30 (): The 2k DCI 30p. - HD2kDCIp50 (): The 2k DCI 50p. - HD2kDCIp5994 (): The 2k DCI 59.94p. - HD2kDCIp60 (): The 2k DCI 60p. - UHD2160p2398 (): The 4k 23.98p. - UHD2160p24 (): The 4k 24p. - UHD2160p25 (): The 4k 25p. - UHD2160p2997 (): The 4k 29.97p. - UHD2160p30 (): The 4k 30p. - UHD2160p50 (): The 4k 50p. - UHD2160p5994 (): The 4k 59.94p. - UHD2160p60 (): The 4k 60p. - NTSC_Widescreen (): The NTSC SD 60i widescreen. - NTSC2398_Widescreen (): The NTSC SD 60i widescreen (24 fps). - PAL_Widescreen (): The PAL SD 50i widescreen. - NTSC_P_Widescreen (): The NTSC SD 60p widescreen. - PAL_P_Widescreen (): The PAL SD 50p widescreen. --- # Enum DecklinkProfileID Link: api/VisioForge.Core.Types.X.Decklink.DecklinkProfileID.html # Enum DecklinkProfileID # Enum DecklinkProfileID **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink profile ID. ```csharp public enum DecklinkProfileID ``` ## Fields Parameters: - Default (): Default, don't change profile. - OneSubDeviceFull (): One sub-device, Full-Duplex. - OneSubDeviceHalf (): One sub-device, Half-Duplex. - TwoSubDevicesFull (): Two sub-devices, Full-Duplex. - TwoSubDevicesHalf (): Two sub-devices, Half-Duplex. - FourSubDevicesHalf (): Four sub-devices, Half-Duplex. --- # Enum DecklinkTimecodeFormat Link: api/VisioForge.Core.Types.X.Decklink.DecklinkTimecodeFormat.html # Enum DecklinkTimecodeFormat # Enum DecklinkTimecodeFormat **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink timecode format. ```csharp public enum DecklinkTimecodeFormat ``` ## Fields Parameters: - RP188VITC1 (): The RP188VITC1. - RP188VITC2 (): The RP188VITC2. - RP188LTC (): The RP188LTC. - RP188Any (): The RP188Any. - VITC (): The VITC. - VITCField2 (): The VITCField2. - Serial (): The serial. --- # Enum DecklinkVideoFormat Link: api/VisioForge.Core.Types.X.Decklink.DecklinkVideoFormat.html # Enum DecklinkVideoFormat # Enum DecklinkVideoFormat **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink video format. ```csharp public enum DecklinkVideoFormat ``` ## Fields Parameters: - Auto (): The automatic. - YUV_8bit (): The YUV 8 bit. - YUV_10bit (): The YUV 10 bit. - ARGB_8bit (): The ARGB 8 bit. - BGRA_8bit (): The BGRA 8 bit. --- # Class DecklinkVideoSinkInfo Link: api/VisioForge.Core.Types.X.Decklink.DecklinkVideoSinkInfo.html # Class DecklinkVideoSinkInfo # Class DecklinkVideoSinkInfo **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink video sink info. ```csharp public class DecklinkVideoSinkInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkVideoSinkInfo(string, uint) Initializes a new instance of the class. ```csharp public DecklinkVideoSinkInfo(string name, uint deviceNumber) ``` #### Parameters Parameters: - name (string): The name. - deviceNumber (uint): The device number. ### DecklinkVideoSinkInfo(Device) Initializes a new instance of the class. ```csharp public DecklinkVideoSinkInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### DeviceNumber Gets or sets the device number. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### ModelName Gets or sets the name of the model. ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### PersistentID Gets the persistent identifier. ```csharp public long PersistentID { get; } ``` #### Property Value Parameters: - (long): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class DecklinkVideoSinkSettings Link: api/VisioForge.Core.Types.X.Decklink.DecklinkVideoSinkSettings.html # Class DecklinkVideoSinkSettings # Class DecklinkVideoSinkSettings **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink video sink settings. ```csharp public class DecklinkVideoSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkVideoSinkSettings(DecklinkVideoSinkInfo) Initializes a new instance of the class. ```csharp public DecklinkVideoSinkSettings(DecklinkVideoSinkInfo info) ``` #### Parameters Parameters: - info (DecklinkVideoSinkInfo): The information. ### DecklinkVideoSinkSettings(uint) Initializes a new instance of the class. ```csharp public DecklinkVideoSinkSettings(uint deviceNumber) ``` #### Parameters Parameters: - deviceNumber (uint): The device number. ### DecklinkVideoSinkSettings() Initializes a new instance of the class. ```csharp public DecklinkVideoSinkSettings() ``` ## Properties ### AFDBarLine Gets or sets the line number to use for inserting AFD/Bar data (0 = disabled). ```csharp public int AFDBarLine { get; set; } ``` #### Property Value Parameters: - (int): ### CCLine Gets or sets the line number to use for inserting closed captions (0 = disabled). ```csharp public int CCLine { get; set; } ``` #### Property Value Parameters: - (int): ### CustomFrameRate Gets or sets the custom frame rate. ```csharp public VideoFrameRate? CustomFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate ?): ### CustomVideoSize Gets or sets the size of the custom video. ```csharp public ResizeVideoEffect CustomVideoSize { get; set; } ``` #### Property Value Parameters: - (ResizeVideoEffect): ### DeviceNumber Gets or sets the output device instance to use. ```csharp public uint DeviceNumber { get; set; } ``` #### Property Value Parameters: - (uint): ### IsSync Gets or sets a value indicating whether this instance is synchronized. ```csharp public bool IsSync { get; set; } ``` #### Property Value Parameters: - (bool): ### KeyerLevel Gets or sets the keyer level. ```csharp public int KeyerLevel { get; set; } ``` #### Property Value Parameters: - (int): ### KeyerMode Gets or sets the keyer mode. ```csharp public DecklinkKeyerMode KeyerMode { get; set; } ``` #### Property Value Parameters: - (DecklinkKeyerMode): ### Mode Gets or sets the video mode to use for playback. ```csharp public DecklinkMode Mode { get; set; } ``` #### Property Value Parameters: - (DecklinkMode): ### Profile Gets or sets the decklink profile to use. ```csharp public DecklinkProfileID Profile { get; set; } ``` #### Property Value Parameters: - (DecklinkProfileID): ### TimecodeFormat Gets or sets the timecode format type to use for playback. ```csharp public DecklinkTimecodeFormat TimecodeFormat { get; set; } ``` #### Property Value Parameters: - (DecklinkTimecodeFormat): ### VideoFormat Gets or sets the video format. ```csharp public DecklinkVideoFormat VideoFormat { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoFormat): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Class DecklinkVideoSourceInfo Link: api/VisioForge.Core.Types.X.Decklink.DecklinkVideoSourceInfo.html # Class DecklinkVideoSourceInfo # Class DecklinkVideoSourceInfo **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink video source info. ```csharp public class DecklinkVideoSourceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkVideoSourceInfo(string, uint) Initializes a new instance of the class. ```csharp public DecklinkVideoSourceInfo(string name, uint deviceNumber) ``` #### Parameters Parameters: - name (string): The name. - deviceNumber (uint): The device number. ### DecklinkVideoSourceInfo(Device) Initializes a new instance of the class. ```csharp public DecklinkVideoSourceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### DeviceNumber Gets the device number. ```csharp public uint DeviceNumber { get; } ``` #### Property Value Parameters: - (uint): ### MaxChannels Gets the maximum channels. ```csharp public uint MaxChannels { get; } ``` #### Property Value Parameters: - (uint): ### ModelName Gets the name of the model. ```csharp public string ModelName { get; } ``` #### Property Value Parameters: - (string): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### PersistentID Gets the persistent identifier. ```csharp public long PersistentID { get; } ``` #### Property Value Parameters: - (long): ### SupportsFormatDetection Gets a value indicating whether the device supports format detection. ```csharp public bool SupportsFormatDetection { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class DecklinkVideoSourceSettings Link: api/VisioForge.Core.Types.X.Decklink.DecklinkVideoSourceSettings.html # Class DecklinkVideoSourceSettings # Class DecklinkVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Decklink **Assembly**: VisioForge.Core.dll Decklink video source settings. ```csharp public class DecklinkVideoSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkVideoSourceSettings(DecklinkVideoSourceInfo) Initializes a new instance of the class. ```csharp public DecklinkVideoSourceSettings(DecklinkVideoSourceInfo info) ``` #### Parameters Parameters: - info (DecklinkVideoSourceInfo): The information. ### DecklinkVideoSourceSettings(uint) Initializes a new instance of the class. ```csharp public DecklinkVideoSourceSettings(uint deviceNumber) ``` #### Parameters Parameters: - deviceNumber (uint): The device number. ## Properties ### AutoDeinterlaceSettings Gets or sets the deinterlacing settings used when auto deinterlacing is enabled. ```csharp public AutoDeinterlaceSettings AutoDeinterlaceSettings { get; set; } ``` #### Property Value Parameters: - (AutoDeinterlaceSettings): ### BufferSize Gets or sets the size of internal buffer in number of video frames. ```csharp public uint BufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ### Connection Gets or sets the video input connection to use. ```csharp public DecklinkConnection Connection { get; set; } ``` #### Property Value Parameters: - (DecklinkConnection): ### DeviceNumber Gets or sets the device number. ```csharp public uint DeviceNumber { get; } ``` #### Property Value Parameters: - (uint): ### DisableVideoConversion Gets or sets a value indicating whether to disable video conversion. ```csharp public bool DisableVideoConversion { get; set; } ``` #### Property Value Parameters: - (bool): ### DropNoSignalFrames Gets or sets a value indicating whether source will drop frames that are marked as having no input signal. ```csharp public bool DropNoSignalFrames { get; set; } ``` #### Property Value Parameters: - (bool): ### EnableAutoDeinterlacing Gets or sets a value indicating whether to enable automatic deinterlacing for interlaced video modes. ```csharp public bool EnableAutoDeinterlacing { get; set; } ``` #### Property Value Parameters: - (bool): ### Mode Gets or sets the video mode to use for playback. ```csharp public DecklinkMode Mode { get; set; } ``` #### Property Value Parameters: - (DecklinkMode): ### OutputAFDBar Gets or sets a value indicating whether source will extract and output AFD/Bar as Meta (if present). ```csharp public bool OutputAFDBar { get; set; } ``` #### Property Value Parameters: - (bool): ### OutputCC Gets or sets a value indicating whether source will extract and output CC as Meta (if present). ```csharp public bool OutputCC { get; set; } ``` #### Property Value Parameters: - (bool): ### OutputStreamTime Gets or sets a value indicating whether source will output stream time directly instead of translating to pipeline clock (output stream time). ```csharp public bool OutputStreamTime { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the decklink profile to use. ```csharp public DecklinkProfileID Profile { get; set; } ``` #### Property Value Parameters: - (DecklinkProfileID): ### SkipFirstTime Gets or sets the skip value. Skip that much time of initial frames after starting. ```csharp public ulong SkipFirstTime { get; set; } ``` #### Property Value Parameters: - (ulong): ### TimecodeFormat Gets or sets the timecode format. ```csharp public DecklinkTimecodeFormat TimecodeFormat { get; set; } ``` #### Property Value Parameters: - (DecklinkTimecodeFormat): ### VideoFormat Gets or sets the video format type to use for input (Only use auto for Mode=Auto). ```csharp public DecklinkVideoFormat VideoFormat { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoFormat): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Namespace VisioForge.Core.Types.X.Decklink Link: api/VisioForge.Core.Types.X.Decklink.html # Namespace VisioForge.Core.Types.X.Decklink # Namespace VisioForge.Core.Types.X.Decklink ### Classes Parameters: - (): Decklink audio sink info. - (): Decklink audio sink settings. - (): Decklink audio source info. - (): Decklink audio source settings. - (): Decklink video sink info. - (): Decklink video sink settings. - (): Decklink video source info. - (): Decklink video source settings. ### Enums Parameters: - (): Decklink audio channels mode. - (): Decklink audio connection. - (): Decklink audio format. - (): Decklink connection. - (): Decklink keyer mode. - (): Decklink mode. - (): Decklink profile ID. - (): Decklink timecode format. - (): Decklink video format. --- # Class AVIDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.AVIDemuxSettings.html # Class AVIDemuxSettings # Class AVIDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class AVIDemuxSettings. Implements the ```csharp public class AVIDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class FLVDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.FLVDemuxSettings.html # Class FLVDemuxSettings # Class FLVDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class FLVDemuxSettings. Implements the ```csharp public class FLVDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class MKVDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.MKVDemuxSettings.html # Class MKVDemuxSettings # Class MKVDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class MKVDemuxSettings. Implements the ```csharp public class MKVDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class MP4DemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.MP4DemuxSettings.html # Class MP4DemuxSettings # Class MP4DemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class MP4DemuxSettings. Implements the ```csharp public class MP4DemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class MPEGPSDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.MPEGPSDemuxSettings.html # Class MPEGPSDemuxSettings # Class MPEGPSDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class MPEGPSDemuxSettings. Implements the ```csharp public class MPEGPSDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class MPEGTSDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.MPEGTSDemuxSettings.html # Class MPEGTSDemuxSettings # Class MPEGTSDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class MPEGTSDemuxSettings. Implements the ```csharp public class MPEGTSDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Latency Gets or sets the latency. ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ProgramNumber Gets or sets the program number. -1 to default. ```csharp public int ProgramNumber { get; set; } ``` #### Property Value Parameters: - (int): ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class OGGDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.OGGDemuxSettings.html # Class OGGDemuxSettings # Class OGGDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class OGGDemuxSettings. Implements the ```csharp public class OGGDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Enum UniversalDemuxerType Link: api/VisioForge.Core.Types.X.Demuxers.UniversalDemuxerType.html # Enum UniversalDemuxerType # Enum UniversalDemuxerType **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Universal Demuxer type. ```csharp public enum UniversalDemuxerType ``` ## Fields Parameters: - Auto (): The automatic. - MKV (): The MKV. - MP4 (): The MP4. - AVI (): The AVI. - MPEGTS (): The MPEG-TS. - MPEGPS (): The MPEG-PS. - FLV (): The FLV. - OGG (): The OGG. - WebM (): The WebM. --- # Class UniversalDemuxerTypeHelper Link: api/VisioForge.Core.Types.X.Demuxers.UniversalDemuxerTypeHelper.html # Class UniversalDemuxerTypeHelper # Class UniversalDemuxerTypeHelper **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class UniversalDemuxerTypeHelper. ```csharp public static class UniversalDemuxerTypeHelper ``` #### Inheritance #### Inherited Members ## Methods ### CreateSettings(UniversalDemuxerType) Creates the settings. ```csharp public static IUniversalDemuxSettings CreateSettings(UniversalDemuxerType type) ``` #### Parameters Parameters: - type (UniversalDemuxerType): The type. #### Returns Parameters: - (IUniversalDemuxSettings): IUniversalDemuxSettings. #### Exceptions Parameters: - (Exception): Unknown demuxer type. ### ParseCaps(string) Parses the caps. ```csharp public static UniversalDemuxerType ParseCaps(string caps) ``` #### Parameters Parameters: - caps (string): The caps. #### Returns Parameters: - (UniversalDemuxerType): UniversalDemuxerType. #### Exceptions Parameters: - (Exception): Unknown demuxer type. --- # Class WebMDemuxSettings Link: api/VisioForge.Core.Types.X.Demuxers.WebMDemuxSettings.html # Class WebMDemuxSettings # Class WebMDemuxSettings **Namespace**: VisioForge.Core.Types.X.Demuxers **Assembly**: VisioForge.Core.dll Class WebMDemuxSettings. Implements the ```csharp public class WebMDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Namespace VisioForge.Core.Types.X.Demuxers Link: api/VisioForge.Core.Types.X.Demuxers.html # Namespace VisioForge.Core.Types.X.Demuxers # Namespace VisioForge.Core.Types.X.Demuxers ### Classes Parameters: - (): Class AVIDemuxSettings. Implements the - (): Class FLVDemuxSettings. Implements the - (): Class MKVDemuxSettings. Implements the - (): Class MP4DemuxSettings. Implements the - (): Class MPEGPSDemuxSettings. Implements the - (): Class MPEGTSDemuxSettings. Implements the - (): Class OGGDemuxSettings. Implements the - (): Class UniversalDemuxerTypeHelper. - (): Class WebMDemuxSettings. Implements the ### Enums Parameters: - (): Universal Demuxer type. --- # Enum DVBBandwidth Link: api/VisioForge.Core.Types.X.DVB.DVBBandwidth.html # Enum DVBBandwidth # Enum DVBBandwidth **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB bandwidth. ```csharp public enum DVBBandwidth ``` ## Fields Parameters: - B8 (): 8. - B7 (): 7. - B6 (): 6. - Auto (): The automatic. - B5 (): 5. - B10 (): 10. - B1_712 (): 1.712. --- # Enum DVBCodeRate Link: api/VisioForge.Core.Types.X.DVB.DVBCodeRate.html # Enum DVBCodeRate # Enum DVBCodeRate **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB code rate. ```csharp public enum DVBCodeRate ``` ## Fields Parameters: - None (): None. - CR_1_2 (): 1/2. - CR_2_3 (): 2/3. - CR_3_4 (): 3/4. - CR_4_5 (): 4/5. - CR_5_6 (): 5/6. - CR_6_7 (): 6/7. - CR_7_8 (): 7/8. - CR_8_9 (): 8/9. - Auto (): The automatic. - CR_3_5 (): 3/5. - CR_9_10 (): 9/10. - CR_2_5 (): 2/5. --- # Enum DVBDeliverySystem Link: api/VisioForge.Core.Types.X.DVB.DVBDeliverySystem.html # Enum DVBDeliverySystem # Enum DVBDeliverySystem **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB delsys. ```csharp public enum DVBDeliverySystem ``` ## Fields Parameters: - Undefined (): The undefined. - DVB_C_A (): The DVB-C-A. - DVB_C_B (): The DVB-C-B. - DVB_T (): The DVB-T. - DSS (): The DSS. - DVB_S (): The DVB-S. - DVB_S2 (): The DVB-S2. - DVB_H (): The DVB-H. - ISDB_T (): The ISDB-T. - ISDB_S (): The ISDB-S. - ISDB_C (): The ISDB-C. - ATSC (): The ATSC. - ATSC_MH (): The ATSC-MH. - DTMB (): The DTMB. - CMMB (): The CMMB. - DAB (): The DAB. - DVB_T2 (): The DVB-T2. - TURBO (): The TURBO. - DVB_C_C (): The DVB-C-C --- # Enum DVBGuard Link: api/VisioForge.Core.Types.X.DVB.DVBGuard.html # Enum DVBGuard # Enum DVBGuard **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB guard. ```csharp public enum DVBGuard ``` ## Fields Parameters: - G32 (): 32. - G16 (): 16. - G8 (): 8. - G4 (): 4. - Auto (): The automatic. - G128 (): 128. - G19_128 (): 19/128. - G19_256 (): 19/256. - PN420 (): PN420. - PN595 (): PN595. - PN945 (): PN945. --- # Enum DVBHierarchy Link: api/VisioForge.Core.Types.X.DVB.DVBHierarchy.html # Enum DVBHierarchy # Enum DVBHierarchy **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB hierarchy. ```csharp public enum DVBHierarchy ``` ## Fields Parameters: - None (): None. - H1 (): 1. - H2 (): 2. - H4 (): 4. - Auto (): Auto. --- # Enum DVBInterleaving Link: api/VisioForge.Core.Types.X.DVB.DVBInterleaving.html # Enum DVBInterleaving # Enum DVBInterleaving **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB interleaving. ```csharp public enum DVBInterleaving ``` ## Fields Parameters: - None (): None. - Auto (): The automatic. - I240 (): 240. - I720 (): 720. --- # Enum DVBInversion Link: api/VisioForge.Core.Types.X.DVB.DVBInversion.html # Enum DVBInversion # Enum DVBInversion **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB inversion. ```csharp public enum DVBInversion ``` ## Fields Parameters: - False (): Off. - True (): On. - Auto (): Auto. --- # Enum DVBModulation Link: api/VisioForge.Core.Types.X.DVB.DVBModulation.html # Enum DVBModulation # Enum DVBModulation **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB modulation. ```csharp public enum DVBModulation ``` ## Fields Parameters: - QPSK (): The QPSK. - QAM_16 (): The QAM 16. - QAM_32 (): The QAM 32. - QAM_64 (): The QAM 64. - QAM_128 (): The QAM 128. - QAM_256 (): The QAM 256. - Auto (): The automatic. - M8VSB (): The 8VSB - M16VSB (): The 16VSB. - M8PSK (): The 8PSK. - M16APSK (): The 16APSK. - M32APSK (): The 32APSK. - DQPSK (): The DQPSK. - QAM_4_NR (): The QAM 4 NR. --- # Enum DVBPilot Link: api/VisioForge.Core.Types.X.DVB.DVBPilot.html # Enum DVBPilot # Enum DVBPilot **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB pilot. ```csharp public enum DVBPilot ``` ## Fields Parameters: - True (): On. - False (): Off. - Auto (): The automatic. --- # Enum DVBRolloff Link: api/VisioForge.Core.Types.X.DVB.DVBRolloff.html # Enum DVBRolloff # Enum DVBRolloff **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB rolloff. ```csharp public enum DVBRolloff ``` ## Fields Parameters: - R35 (): 35. - R20 (): 20. - R25 (): 25. - Auto (): The automatic. --- # Class DVBSourceSettings Link: api/VisioForge.Core.Types.X.DVB.DVBSourceSettings.html # Class DVBSourceSettings # Class DVBSourceSettings **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB source settings. ```csharp public class DVBSourceSettings ``` #### Inheritance #### Inherited Members ## Properties ### AdapterID Gets or sets the DVB adapter device number (eg. 0 for adapter0). ```csharp public int AdapterID { get; set; } ``` #### Property Value Parameters: - (int): ### BandwidthHZ Gets or sets the channel bandwidth in Hz. ```csharp public uint BandwidthHZ { get; set; } ``` #### Property Value Parameters: - (uint): ### CodeRateHighPriority Gets or sets the high priority code rate (DVB-T, DVB-S/S2 and DVB-C). ```csharp public DVBCodeRate CodeRateHighPriority { get; set; } ``` #### Property Value Parameters: - (DVBCodeRate): ### CodeRateLowPriority Gets or sets the low priority code rate (DVB-T). ```csharp public DVBCodeRate CodeRateLowPriority { get; set; } ``` #### Property Value Parameters: - (DVBCodeRate): ### DVBBufferSize Gets or sets the kernel buffer size used by the DVB api. ```csharp public uint DVBBufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ### DeliverySystem Gets or sets the delivery system. ```csharp public DVBDeliverySystem DeliverySystem { get; set; } ``` #### Property Value Parameters: - (DVBDeliverySystem): ### DiSEqCSource Gets or sets the selected DiSEqC source (DVB-S/S2). Only needed if you have a DiSEqC switch. Otherwise leave at -1 (disabled). ```csharp public int DiSEqCSource { get; set; } ``` #### Property Value Parameters: - (int): ### Frequency Gets or sets the center frequency to tune into. Measured in kHz for the satellite distribution standards and Hz for all the rest. ```csharp public uint Frequency { get; set; } ``` #### Property Value Parameters: - (uint): ### FrontendID Gets or sets the frontend device number (eg. 0 for frontend0). ```csharp public int FrontendID { get; set; } ``` #### Property Value Parameters: - (int): ### Guard Gets or sets the guard interval (DVB-T). ```csharp public DVBGuard Guard { get; set; } ``` #### Property Value Parameters: - (DVBGuard): ### Hierarchy Gets or sets the hierarchy information (DVB-T). ```csharp public DVBHierarchy Hierarchy { get; set; } ``` #### Property Value Parameters: - (DVBHierarchy): ### ISDBT_LayerA_FEC Gets or sets the layer A Forward Error Correction (ISDB-T). ```csharp public DVBCodeRate ISDBT_LayerA_FEC { get; set; } ``` #### Property Value Parameters: - (DVBCodeRate): ### ISDBT_LayerA_Modulation Gets or sets the layer A modulation type (ISDB-T). ```csharp public DVBModulation ISDBT_LayerA_Modulation { get; set; } ``` #### Property Value Parameters: - (DVBModulation): ### ISDBT_LayerA_SegmentCount Gets or sets the layer A segment count (-1 = Auto) (ISDB-T). ```csharp public int ISDBT_LayerA_SegmentCount { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerA_TimeInterleaving Gets or sets the layer A time interleaving (-1 = AUTO) (ISDB-T). ```csharp public int ISDBT_LayerA_TimeInterleaving { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerB_FEC Gets or sets the layer B Forward Error Correction (ISDB-T). ```csharp public DVBCodeRate ISDBT_LayerB_FEC { get; set; } ``` #### Property Value Parameters: - (DVBCodeRate): ### ISDBT_LayerB_Modulation Gets or sets the layer B modulation type (ISDB-T). ```csharp public DVBModulation ISDBT_LayerB_Modulation { get; set; } ``` #### Property Value Parameters: - (DVBModulation): ### ISDBT_LayerB_SegmentCount Gets or sets the layer B segment count (-1 = Auto) (ISDB-T). ```csharp public int ISDBT_LayerB_SegmentCount { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerB_TimeInterleaving Gets or sets the layer B time interleaving (-1 = AUTO) (ISDB-T). ```csharp public int ISDBT_LayerB_TimeInterleaving { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerC_FEC Gets or sets the layer C Forward Error Correction (ISDB-T). ```csharp public DVBCodeRate ISDBT_LayerC_FEC { get; set; } ``` #### Property Value Parameters: - (DVBCodeRate): ### ISDBT_LayerC_Modulation Gets or sets the layer C modulation type (ISDB-T). ```csharp public DVBModulation ISDBT_LayerC_Modulation { get; set; } ``` #### Property Value Parameters: - (DVBModulation): ### ISDBT_LayerC_SegmentCount Gets or sets the layer B segment count (-1 = Auto) (ISDB-T). ```csharp public int ISDBT_LayerC_SegmentCount { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerC_TimeInterleaving Gets or sets the layer B time interleaving (-1 = AUTO) (ISDB-T). ```csharp public int ISDBT_LayerC_TimeInterleaving { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_LayerEnabled Gets or sets the layer enabled (ISDB-T) (7 = All layers). ```csharp public uint ISDBT_LayerEnabled { get; set; } ``` #### Property Value Parameters: - (uint): ### ISDBT_PartialReception Gets or sets the partial reception (-1 = AUTO) (ISDB-T). ```csharp public int ISDBT_PartialReception { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_SBSegmentCount Gets or sets the SB segment count (ISDB-T). ```csharp public uint ISDBT_SBSegmentCount { get; set; } ``` #### Property Value Parameters: - (uint): ### ISDBT_SBSegmentIDX Gets or sets the SB segment IDX (ISDB-T). ```csharp public int ISDBT_SBSegmentIDX { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_SBSubchannelID Gets or sets the SB Subchannel ID (-1 = AUTO) (ISDB-T). ```csharp public int ISDBT_SBSubchannelID { get; set; } ``` #### Property Value Parameters: - (int): ### ISDBT_SoundBroadcasting Gets or sets the sound broadcasting (ISDB-T). ```csharp public int ISDBT_SoundBroadcasting { get; set; } ``` #### Property Value Parameters: - (int): ### Interleaving Gets or sets the interleaving type (DTMB). ```csharp public DVBInterleaving Interleaving { get; set; } ``` #### Property Value Parameters: - (DVBInterleaving): ### Inversion Gets or sets the inversion information (DVB-T and DVB-C). ```csharp public DVBInversion Inversion { get; set; } ``` #### Property Value Parameters: - (DVBInversion): ### LNB_LOF Gets or sets the LNB's Local oscillator frequency used for low band reception (kHz). ```csharp public uint LNB_LOF { get; set; } ``` #### Property Value Parameters: - (uint): ### LNB_LOF2 Gets or sets the LNB's Local oscillator frequency used for high band reception (kHz). ```csharp public uint LNB_LOF2 { get; set; } ``` #### Property Value Parameters: - (uint): ### LNB_SLOF Gets or sets the LNB's upper bound for low band reception (kHz). ```csharp public uint LNB_SLOF { get; set; } ``` #### Property Value Parameters: - (uint): ### Modulation Gets or sets the modulation type (DVB-T/T2/C/S2, TURBO and ATSC). ```csharp public DVBModulation Modulation { get; set; } ``` #### Property Value Parameters: - (DVBModulation): ### Pids Gets or sets the colon-separated list of PIDs(eg. 110:120) to capture. ACT and CAT are automatically included but PMT should be added explicitly. Special value 8192 gets full MPEG-TS. ```csharp public string Pids { get; set; } ``` #### Property Value Parameters: - (string): ### Pilot Gets or sets the pilot (DVB-S2). ```csharp public DVBPilot Pilot { get; set; } ``` #### Property Value Parameters: - (DVBPilot): ### Polarity Gets or sets the polarity[vhHV] (eg. V for Vertical) (DVB-S/S2). ```csharp public string Polarity { get; set; } ``` #### Property Value Parameters: - (string): ### Rolloff Gets or sets the rolloff (DVB-S2). ```csharp public DVBRolloff Rolloff { get; set; } ``` #### Property Value Parameters: - (DVBRolloff): ### StatsReportingInterval Gets or sets the number of reads before reporting frontend stats. ```csharp public uint StatsReportingInterval { get; set; } ``` #### Property Value Parameters: - (uint): ### StreamID Gets or sets the stream ID (-1 = disabled) (DVB-T2 and DVB-S2 max 255, ISDB max 65535). ```csharp public int StreamID { get; set; } ``` #### Property Value Parameters: - (int): ### SymbolRate Gets or sets the symbol rate in kBd (kilobauds) (DVB-S/S2, DVB-C). ```csharp public uint SymbolRate { get; set; } ``` #### Property Value Parameters: - (uint): ### TimeoutMICROULONG Gets or sets the timeout. Post a message after timeout (0 = disabled). ```csharp public TimeSpan TimeoutMICROULONG { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### TransmissionMode Gets or sets the transmission mode (DVB-T). ```csharp public DVBTransmissionMode TransmissionMode { get; set; } ``` #### Property Value Parameters: - (DVBTransmissionMode): ### Tune Gets or sets the pointer to atomically tune to channel. ```csharp public nint Tune { get; set; } ``` #### Property Value Parameters: - (nint): ### TuningTimeoutMICROULONG Gets or sets thetimeout to wait before giving up tuning/locking on a signal. ```csharp public TimeSpan TuningTimeoutMICROULONG { get; set; } ``` #### Property Value Parameters: - (TimeSpan): --- # Enum DVBTransmissionMode Link: api/VisioForge.Core.Types.X.DVB.DVBTransmissionMode.html # Enum DVBTransmissionMode # Enum DVBTransmissionMode **Namespace**: VisioForge.Core.Types.X.DVB **Assembly**: VisioForge.Core.dll DVB transmission mode. ```csharp public enum DVBTransmissionMode ``` ## Fields Parameters: - Mode2K (): 2K. - Mode8K (): 8K. - Auto (): The automatic. - Mode4K (): 4K. - Mode1K (): 1K. - Mode16K (): 16K. - Mode32K (): 32K. - ModeC1 (): C1. - ModeC3780 (): C3780. --- # Namespace VisioForge.Core.Types.X.DVB Link: api/VisioForge.Core.Types.X.DVB.html # Namespace VisioForge.Core.Types.X.DVB # Namespace VisioForge.Core.Types.X.DVB ### Classes Parameters: - (): DVB source settings. ### Enums Parameters: - (): DVB bandwidth. - (): DVB code rate. - (): DVB delsys. - (): DVB guard. - (): DVB hierarchy. - (): DVB interleaving. - (): DVB inversion. - (): DVB modulation. - (): DVB pilot. - (): DVB rolloff. - (): DVB transmission mode. --- # Enum ElementType Link: api/VisioForge.Core.Types.X.ElementType.html # Enum ElementType # Enum ElementType **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Specifies various types of media processing elements (encoders and decoders) available within the VisioForge X engine. This enumeration helps in identifying and configuring specific components in a media processing pipeline. ```csharp public enum ElementType ``` ## Fields Parameters: - Unknown (): The element type is unknown or not specified. - H264Encoder (): H.264 video encoder. - H264Decoder (): H.264 video decoder. - H263Encoder (): H.263 video encoder. - H263Decoder (): H.263 video decoder. - HEVCEncoder (): HEVC (H.265) video encoder. - HEVCDecoder (): HEVC (H.265) video decoder. - MPEG4Encoder (): MPEG-4 video encoder. - MPEG4Decoder (): MPEG-4 video decoder. - VP8Encoder (): VP8 video encoder. - VP8Decoder (): VP8 video decoder. - VP9Encoder (): VP9 video encoder. - VP9Decoder (): VP9 video decoder. - AACEncoder (): AAC (Advanced Audio Coding) encoder. - AACDecoder (): AAC (Advanced Audio Coding) decoder. - AMRNBDecoder (): AMR-NB (Adaptive Multi-Rate Narrowband) audio decoder. - FLACEncoder (): FLAC (Free Lossless Audio Codec) encoder. - FLACDecoder (): FLAC (Free Lossless Audio Codec) decoder. - G711ALAWDecoder (): G.711 A-law audio decoder. - G711MLAWDecoder (): G.711 μ-law audio decoder. - G711ALAWEncoder (): G.711 A-law audio encoder. - G711MLAWEncoder (): G.711 μ-law audio encoder. - MP3Decoder (): MP3 (MPEG-1 Audio Layer III) decoder. - MP3Encoder (): MP3 (MPEG-1 Audio Layer III) encoder. - OPUSDecoder (): OPUS audio decoder. - OPUSEncoder (): OPUS audio encoder. - VorbisDecoder (): Vorbis audio decoder. - VorbisEncoder (): Vorbis audio encoder. ## Examples
// Example of checking the type of a media element.
// ElementType element = GetMediaElement();
// switch (element)
// {
//     case ElementType.H264Encoder:
//         Console.WriteLine("This is an H.264 video encoder.");
//         break;
//     case ElementType.AACDecoder:
//         Console.WriteLine("This is an AAC audio decoder.");
//         break;
//     default:
//         Console.WriteLine($"Unknown element type: {element}");
//         break;
// }
## Remarks Each member represents a distinct codec or processing unit, allowing developers to select the appropriate technology for their media tasks. --- # Class ElementX Link: api/VisioForge.Core.Types.X.ElementX.html # Class ElementX # Class ElementX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents a media processing element within the VisioForge X engine, typically a GStreamer element. This class provides information about the element's name, type, and its configurable properties. ```csharp public class ElementX ``` #### Inheritance #### Inherited Members ## Examples
// Create an ElementX instance (conceptual, typically obtained from a factory or discovery method)
// var element = new ElementX("videotestsrc", ElementType.Source);

// Read properties of an element (e.g., a video test source)
var element = new ElementX("videotestsrc", ElementType.Unknown); // Type might be unknown initially
if (element.ReadProperties())
{
    Console.WriteLine($"Element: {element.Name} (Type: {element.Type})");
    Console.WriteLine("Properties:");
    foreach (var prop in element.Properties)
    {
        Console.WriteLine($"  {prop.Key}: {prop.Value.Item2} (Type: {prop.Value.Item1})");
    }
}
## Remarks This class is used to abstract and manage individual components (like encoders, decoders, filters) within a media processing pipeline. It allows for dynamic inspection and configuration of element properties. ## Constructors ### ElementX(string, ElementType) Initializes a new instance of the class. ```csharp public ElementX(string name, ElementType type) ``` #### Parameters Parameters: - name (string): The name of the element. - type (ElementType): The categorized type of the element. ## Properties ### Name Gets the name of the media element. This is typically the GStreamer factory name (e.g., "videotestsrc", "audioconvert"). ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Properties Gets a dictionary of properties associated with the media element. The key is the property name (string), and the value is a containing the GType of the property and its current value. ```csharp public Dictionary> Properties { get; } ``` #### Property Value Parameters: - (Dictionary < string , Tuple < GType , object > >): ### Type Gets the categorized type of the media element (e.g., encoder, decoder, source). ```csharp public ElementType Type { get; } ``` #### Property Value Parameters: - (ElementType): ## Methods ### ReadProperties() Reads and populates the dictionary with the current properties of the underlying GStreamer element. This method dynamically inspects the element's capabilities and retrieves its configurable parameters. ```csharp public bool ReadProperties() ``` #### Returns Parameters: - (bool): true if the properties were successfully read; otherwise, false. ### ToString() Returns a string that represents the current instance. The string includes the element's name and its type. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class MouseButtonEventArgs Link: api/VisioForge.Core.Types.X.Events.MouseButtonEventArgs.html # Class MouseButtonEventArgs # Class MouseButtonEventArgs **Namespace**: VisioForge.Core.Types.X.Events **Assembly**: VisioForge.Core.dll Class MouseButtonEventArgs. Implements the ```csharp public class MouseButtonEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Properties ### Button Gets or sets the button. ```csharp public MouseButton Button { get; set; } ``` #### Property Value Parameters: - (MouseButton): ### X Gets or sets the x. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class MouseMoveEventArgs Link: api/VisioForge.Core.Types.X.Events.MouseMoveEventArgs.html # Class MouseMoveEventArgs # Class MouseMoveEventArgs **Namespace**: VisioForge.Core.Types.X.Events **Assembly**: VisioForge.Core.dll Class MouseMoveEventArgs. Implements the ```csharp public class MouseMoveEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Properties ### X Gets or sets the x. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class VideoFrameSKBitmapEventArgs Link: api/VisioForge.Core.Types.X.Events.VideoFrameSKBitmapEventArgs.html # Class VideoFrameSKBitmapEventArgs # Class VideoFrameSKBitmapEventArgs **Namespace**: VisioForge.Core.Types.X.Events **Assembly**: VisioForge.Core.dll SkiaSharp Frame bitmap event args class. ```csharp public class VideoFrameSKBitmapEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Constructors ### VideoFrameSKBitmapEventArgs(SKBitmap, VideoFrameRate, TimeSpan) Initializes a new instance of the class. ```csharp public VideoFrameSKBitmapEventArgs(SKBitmap frame, VideoFrameRate frameRate, TimeSpan timestamp) ``` #### Parameters Parameters: - frame (SKBitmap): Video frame. - frameRate (VideoFrameRate): Frame rate. - timestamp (TimeSpan): Timestamp. ## Properties ### Frame Gets frame. ```csharp public SKBitmap Frame { get; } ``` #### Property Value Parameters: - (SKBitmap): ### FrameRate Gets frame rate. ```csharp public VideoFrameRate FrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Timestamp Gets start time. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Namespace VisioForge.Core.Types.X.Events Link: api/VisioForge.Core.Types.X.Events.html # Namespace VisioForge.Core.Types.X.Events # Namespace VisioForge.Core.Types.X.Events ### Classes Parameters: - (): Class MouseButtonEventArgs. Implements the - (): Class MouseMoveEventArgs. Implements the - (): SkiaSharp Frame bitmap event args class. --- # Class FontDescriptionX Link: api/VisioForge.Core.Types.X.FontDescriptionX.html # Class FontDescriptionX # Class FontDescriptionX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents a description of a font, including its family name and available font faces (styles). This class is used to enumerate and select fonts for text rendering within the VisioForge X engine. ```csharp public class FontDescriptionX : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Examples
// Assume 'fontList' is a collection of FontDescriptionX objects obtained from the system.
// var fontList = VisioForge.Core.FontManager.GetAvailableFonts();

foreach (var font in fontList)
{
    Console.WriteLine($"Font Family: {font.Name}");
    if (font.Faces != null && font.Faces.Length > 0)
    {
        Console.WriteLine($"  Available Faces: {string.Join(", ", font.Faces)}");
    }
}

// To select a specific font for text rendering (conceptual):
// var selectedFont = fontList.FirstOrDefault(f => f.Name == "Arial");
// if (selectedFont != null)
// {
//     textOverlay.Font = selectedFont;
// }
## Remarks This class wraps a Pango FontFamily object, providing a .NET-friendly representation of font information. It is primarily used for text overlay and rendering features where specific font selection is required. ## Properties ### Faces Gets an array of available font faces (styles) for this font family (e.g., "Regular", "Bold", "Italic"). ```csharp public string[] Faces { get; } ``` #### Property Value Parameters: - (string [ ]): ### Name Gets the family name of the font (e.g., "Arial", "Times New Roman"). ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. The comparison is based on the font family name. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. It is expected to be another instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared.
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Returns a string that represents the current instance. The string includes the font family name and a comma-separated list of its available faces in parentheses. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Interface IAudioVolumeMute Link: api/VisioForge.Core.Types.X.IAudioVolumeMute.html # Interface IAudioVolumeMute # Interface IAudioVolumeMute **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines an interface for controlling audio volume and muting capabilities. This interface provides methods to check support, set/get mute status, and set/get volume levels. ```csharp public interface IAudioVolumeMute ``` ## Examples
// Assume 'audioControl' is an instance of a class implementing IAudioVolumeMute.
IAudioVolumeMute audioControl = GetAudioControlInstance();

if (audioControl.IsSupported())
{
    // Mute the audio.
    audioControl.SetMute(true);
    Console.WriteLine($"Audio muted: {audioControl.GetMute()}");

    // Set the volume to 50%.
    audioControl.SetVolume(0.5);
    Console.WriteLine($"Audio volume: {audioControl.GetVolume()}");

    // Unmute the audio.
    audioControl.SetMute(false);
}
## Remarks Implementations of this interface are typically found in audio processing elements or renderers within the MediaBlocks framework. It allows for programmatic control over the audio output. ## Methods ### GetMute() Gets the current mute state of the audio. ```csharp bool GetMute() ``` #### Returns Parameters: - (bool): true if the audio is muted; otherwise, false. ### GetVolume() Gets the current audio volume level. ```csharp double GetVolume() ``` #### Returns Parameters: - (double): A double value representing the current volume, typically in the range of 0.0 to 1.0. ### IsSupported() Determines whether this audio volume and mute interface is supported by the current component. ```csharp bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets an internal interface for audio volume and mute control. This method is typically used by the framework to link different components that manage audio. ```csharp void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface to set. ### SetMute(bool) Sets the mute state of the audio. ```csharp void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): If set to true, the audio will be muted; otherwise, it will be unmuted. ### SetVolume(double) Sets the audio volume level. ```csharp void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume level, typically a double value in the range of 0.0 (silent) to 1.0 (full volume). Values outside this range might be clamped or result in amplification depending on the implementation. --- # Interface IBaseSourceX Link: api/VisioForge.Core.Types.X.IBaseSourceX.html # Interface IBaseSourceX # Interface IBaseSourceX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines a base interface for media sources within the VisioForge X engine. This interface serves as a marker for all source elements in the MediaBlocks framework. ```csharp public interface IBaseSourceX ``` ## Examples
// Conceptual example of a file source implementing IBaseSourceX.
public class MyFileSource : IBaseSourceX, IMediaFileSource
{
    public string FilePath { get; set; }

    public void OpenFile(string path)
    {
        FilePath = path;
        // Logic to open the file and prepare for data delivery.
    }

    // Other IMediaFileSource methods...
}

// Usage:
// IBaseSourceX source = new MyFileSource();
// if (source is IMediaFileSource fileSource)
// {
//     fileSource.OpenFile("C:\video.mp4");
// }
## Remarks Implementations of this interface are responsible for providing media data (video, audio, etc.) to the processing pipeline. Specific source types (e.g., file sources, camera sources, network sources) will implement this interface along with more specialized interfaces. --- # Interface IEncoderTextInfo Link: api/VisioForge.Core.Types.X.IEncoderTextInfo.html # Interface IEncoderTextInfo # Interface IEncoderTextInfo **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines an interface for components that can provide textual information about encoder parameters and capabilities. This is useful for debugging, logging, or displaying detailed encoder settings to the user. ```csharp public interface IEncoderTextInfo ``` ## Examples
// Assume 'encoderSettings' is an instance of a class implementing IEncoderTextInfo.
IEncoderTextInfo encoderInfo = GetEncoderSettingsInstance();

if (encoderInfo != null)
{
    Console.WriteLine($"Encoder Parameters: {encoderInfo.GetParameters()}");
    Console.WriteLine($"Encoder Capabilities (Caps): {encoderInfo.GetCaps()}");
}
## Remarks Implementations of this interface are typically found in encoder configuration classes within the MediaBlocks framework. It allows for a standardized way to retrieve human-readable descriptions of complex encoder settings. ## Methods ### GetCaps() Retrieves a string representation of the encoder's capabilities (GStreamer caps). This string describes the media formats and properties that the encoder can handle. ```csharp string GetCaps() ``` #### Returns Parameters: - (string): A containing the encoder's capabilities. ### GetParameters() Retrieves a string representation of the encoder's current parameters. This string typically includes settings like bitrate, resolution, frame rate, and other configured options. ```csharp string GetParameters() ``` #### Returns Parameters: - (string): A containing the encoder parameters. --- # Interface IGetVideoStreamInfo Link: api/VisioForge.Core.Types.X.IGetVideoStreamInfo.html # Interface IGetVideoStreamInfo # Interface IGetVideoStreamInfo **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines an interface for components that can provide detailed information about a video stream. ```csharp public interface IGetVideoStreamInfo ``` ## Examples
// Assume 'videoSource' is an instance of a class implementing IGetVideoStreamInfo.
IGetVideoStreamInfo videoInfoProvider = GetVideoSourceInstance();

VideoStreamInfo streamInfo = videoInfoProvider.GetVideoStreamInfo();

if (streamInfo != null)
{
    Console.WriteLine($"Video Stream Codec: {streamInfo.Codec}");
    Console.WriteLine($"Video Resolution: {streamInfo.Width}x{streamInfo.Height}");
    Console.WriteLine($"Video Frame Rate: {streamInfo.FrameRate.Value:F2} FPS");
}
## Remarks This interface is typically implemented by video sources or processing elements that can expose the properties of the video data they handle. It allows other parts of the system to query for video stream characteristics like resolution, frame rate, and codec. ## Methods ### GetVideoStreamInfo() Retrieves detailed information about the video stream. ```csharp VideoStreamInfo GetVideoStreamInfo() ``` #### Returns Parameters: - (VideoStreamInfo): A object containing the video stream's properties. --- # Interface IMediaBlocksPipelineCustomErrorHandler Link: api/VisioForge.Core.Types.X.IMediaBlocksPipelineCustomErrorHandler.html # Interface IMediaBlocksPipelineCustomErrorHandler # Interface IMediaBlocksPipelineCustomErrorHandler **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Defines an interface for custom error handling within a MediaBlocks pipeline. Implementations of this interface can intercept and process errors that occur during pipeline execution. ```csharp public interface IMediaBlocksPipelineCustomErrorHandler ``` ## Examples
// Example custom error handler implementation.
public class MyCustomErrorHandler : IMediaBlocksPipelineCustomErrorHandler
{
    public bool ErrorHandler(Bus bus, Message msg, Pipeline pipeline)
    {
        // Log the error details.
        Console.WriteLine($"Pipeline Error: {{msg.ParseError().Message}}");

        // Attempt to recover from specific errors, e.g., network disconnections.
        if (msg.ParseError().Message.Contains("network"))
        {
            Console.WriteLine("Attempting to reconnect...");
            // Logic to re-establish connection or restart relevant elements.
            return true; // Indicate that the error was handled and pipeline should try to continue.
        }

        // For unhandled errors, return false to stop the pipeline.
        return false;
    }
}

// Usage (conceptual):
// var pipeline = new MediaBlocksPipeline();
// pipeline.CustomErrorHandler = new MyCustomErrorHandler();
// pipeline.Start();
## Remarks By implementing this interface and registering it with a MediaBlocks pipeline, developers can gain fine-grained control over how errors are managed. The method allows for custom logic to decide whether the pipeline should attempt to recover from an error or stop. ## Methods ### ErrorHandler(Bus, Message, Pipeline) Handles an error message received from the GStreamer bus. ```csharp bool ErrorHandler(Bus bus, Message msg, Pipeline pipeline) ``` #### Parameters Parameters: - bus (Bus): The GStreamer bus that emitted the error message. - msg (Message): The GStreamer object containing the error details. - pipeline (Pipeline): The GStreamer instance where the error occurred. #### Returns Parameters: - (bool): true if the error was handled and the pipeline should attempt to continue working; false if the error was not handled or if the pipeline should stop. --- # Interface IMediaPlayerBaseSource Link: api/VisioForge.Core.Types.X.MediaPlayer.IMediaPlayerBaseSource.html # Interface IMediaPlayerBaseSource # Interface IMediaPlayerBaseSource **Namespace**: VisioForge.Core.Types.X.MediaPlayer **Assembly**: VisioForge.Core.dll Media Player base source interface. Extends the . ```csharp public interface IMediaPlayerBaseSource : IBaseSourceX ``` #### Implements ## See Also --- # Interface IMediaPlayerBaseSourceSettings Link: api/VisioForge.Core.Types.X.MediaPlayer.IMediaPlayerBaseSourceSettings.html # Interface IMediaPlayerBaseSourceSettings # Interface IMediaPlayerBaseSourceSettings **Namespace**: VisioForge.Core.Types.X.MediaPlayer **Assembly**: VisioForge.Core.dll Media Player base source settings. ```csharp public interface IMediaPlayerBaseSourceSettings : IVideoSourceSettings, IMediaBlockSettings ``` #### Implements ## Methods ### ReadInfoAsync() Reads the information asynchronous. ```csharp Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. --- # Namespace VisioForge.Core.Types.X.MediaPlayer Link: api/VisioForge.Core.Types.X.MediaPlayer.html # Namespace VisioForge.Core.Types.X.MediaPlayer # Namespace VisioForge.Core.Types.X.MediaPlayer ### Interfaces Parameters: - (): Media Player base source interface. Extends the . - (): Media Player base source settings. --- # Interface IMetadata Link: api/VisioForge.Core.Types.X.Metadata.IMetadata.html # Interface IMetadata # Interface IMetadata **Namespace**: VisioForge.Core.Types.X.Metadata **Assembly**: VisioForge.Core.dll Metadata interface. ```csharp public interface IMetadata ``` --- # Class KLVMetadata Link: api/VisioForge.Core.Types.X.Metadata.KLVMetadata.html # Class KLVMetadata # Class KLVMetadata **Namespace**: VisioForge.Core.Types.X.Metadata **Assembly**: VisioForge.Core.dll KLV metadata. Implements the . ```csharp public class KLVMetadata : IMetadata ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### KLVMetadata(byte[]) Initializes a new instance of the class. ```csharp public KLVMetadata(byte[] data) ``` #### Parameters Parameters: - data (byte [ ]): The data. ### KLVMetadata(string) Initializes a new instance of the class. ```csharp public KLVMetadata(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Data Gets the data. ```csharp public byte[] Data { get; } ``` #### Property Value Parameters: - (byte [ ]): ## See Also --- # Namespace VisioForge.Core.Types.X.Metadata Link: api/VisioForge.Core.Types.X.Metadata.html # Namespace VisioForge.Core.Types.X.Metadata # Namespace VisioForge.Core.Types.X.Metadata ### Classes Parameters: - (): KLV metadata. Implements the . ### Interfaces Parameters: - (): Metadata interface. --- # Enum NVDSDewarpCudaMemoryType Link: api/VisioForge.Core.Types.X.Nvidia.NVDSDewarpCudaMemoryType.html # Enum NVDSDewarpCudaMemoryType # Enum NVDSDewarpCudaMemoryType **Namespace**: VisioForge.Core.Types.X.Nvidia **Assembly**: VisioForge.Core.dll Cuda memory type for cuda-memory-type property. ```csharp public enum NVDSDewarpCudaMemoryType ``` ## Fields Parameters: - Default (): - Device (): - Host (): --- # Enum NVDSDewarpNvbufMemoryType Link: api/VisioForge.Core.Types.X.Nvidia.NVDSDewarpNvbufMemoryType.html # Enum NVDSDewarpNvbufMemoryType # Enum NVDSDewarpNvbufMemoryType **Namespace**: VisioForge.Core.Types.X.Nvidia **Assembly**: VisioForge.Core.dll Memory type for nvbuf-memory-type property. ```csharp public enum NVDSDewarpNvbufMemoryType ``` ## Fields Parameters: - Default (): - CudaPinned (): - CudaDevice (): - CudaUnified (): - SurfaceArray (): --- # Class NVDSDewarpSettings Link: api/VisioForge.Core.Types.X.Nvidia.NVDSDewarpSettings.html # Class NVDSDewarpSettings # Class NVDSDewarpSettings **Namespace**: VisioForge.Core.Types.X.Nvidia **Assembly**: VisioForge.Core.dll NVIDIA DeepStream dewarp element settings. Configuration for nvdsdewarp GStreamer element that provides GPU-accelerated fisheye image dewarping using NVIDIA CUDA. ```csharp public class NVDSDewarpSettings ``` #### Inheritance #### Inherited Members ## Properties ### ConfigFile Gets or sets the configuration file path for the dewarp parameters. This file contains camera calibration and projection parameters. ```csharp public string ConfigFile { get; set; } ``` #### Property Value Parameters: - (string): ### CudaMemoryType Gets or sets a value indicating whether to use CUDA memory. Default is false. ```csharp public NVDSDewarpCudaMemoryType CudaMemoryType { get; set; } ``` #### Property Value Parameters: - (NVDSDewarpCudaMemoryType): ### Enabled Gets or sets a value indicating whether dewarping is enabled. Default is true. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### GpuId Gets or sets the GPU ID to use for processing. Default is 0 (first GPU). ```csharp public uint GpuId { get; set; } ``` #### Property Value Parameters: - (uint): ### NumSourcePlanes Gets or sets the number of source planes for dewarping. Default is 1. ```csharp public uint NumSourcePlanes { get; set; } ``` #### Property Value Parameters: - (uint): ### NvbufMemoryType Gets or sets the NVBUF memory type to use. Default is 0 (NVBUF_MEM_DEFAULT). ```csharp public NVDSDewarpNvbufMemoryType NvbufMemoryType { get; set; } ``` #### Property Value Parameters: - (NVDSDewarpNvbufMemoryType): ### SourceId Gets or sets the source ID for the stream. Default is 0. ```csharp public uint SourceId { get; set; } ``` #### Property Value Parameters: - (uint): --- # Namespace VisioForge.Core.Types.X.Nvidia Link: api/VisioForge.Core.Types.X.Nvidia.html # Namespace VisioForge.Core.Types.X.Nvidia # Namespace VisioForge.Core.Types.X.Nvidia ### Classes Parameters: - (): NVIDIA DeepStream dewarp element settings. Configuration for nvdsdewarp GStreamer element that provides GPU-accelerated fisheye image dewarping using NVIDIA CUDA. ### Enums Parameters: - (): Cuda memory type for cuda-memory-type property. - (): Memory type for nvbuf-memory-type property. --- # Enum CVDewarpDisplayMode Link: api/VisioForge.Core.Types.X.OpenCV.CVDewarpDisplayMode.html # Enum CVDewarpDisplayMode # Enum CVDewarpDisplayMode **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll ```csharp public enum CVDewarpDisplayMode ``` ## Fields Parameters: - SinglePanorama (): The single panorama image. - DoublePanorama (): The dewarped image is split in two images displayed one below the other. - QuadView (): The dewarped image is split in four images dysplayed as a quad view. --- # Enum CVDewarpInterpolationMode Link: api/VisioForge.Core.Types.X.OpenCV.CVDewarpInterpolationMode.html # Enum CVDewarpInterpolationMode # Enum CVDewarpInterpolationMode **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll ```csharp public enum CVDewarpInterpolationMode ``` ## Fields Parameters: - Nearest (): The nearest-neighbor interpolation. - Bilinear (): The bilinear interpolation. - Bicubic (): The bicubic interpolation over 4x4 pixel neighborhood. - Lanczos (): The Lanczos interpolation over 8x8 pixel neighborhood. --- # Class CVDewarpSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVDewarpSettings.html # Class CVDewarpSettings # Class CVDewarpSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV dewarp effect settings. ```csharp public class CVDewarpSettings ``` #### Inheritance #### Inherited Members ## Properties ### DisplayMode Gets or sets the display mode. ```csharp public CVDewarpDisplayMode DisplayMode { get; set; } ``` #### Property Value Parameters: - (CVDewarpDisplayMode): ### InnerRadius Gets or sets the inner radius of the fisheye image donut. If outer radius less or equal inner radius the element will work in passthrough mode ```csharp public double InnerRadius { get; set; } ``` #### Property Value Parameters: - (double): ### InterpolationMethod Gets or sets the interpolation method to use. ```csharp public CVDewarpInterpolationMode InterpolationMethod { get; set; } ``` #### Property Value Parameters: - (CVDewarpInterpolationMode): ### OuterRadius Gets or sets the outer radius of the fisheye image donut. If outer radius less than inner radius the element will work in passthrough mode. ```csharp public double OuterRadius { get; set; } ``` #### Property Value Parameters: - (double): ### XCenter Gets or sets the X axis center of the fisheye image. ```csharp public double XCenter { get; set; } ``` #### Property Value Parameters: - (double): ### XRemapCorrection Gets or sets the correction factor for remapping on x axis. A correction is needed if the fisheye image is not inside a circle. ```csharp public double XRemapCorrection { get; set; } ``` #### Property Value Parameters: - (double): ### YCenter Gets or sets the Y axis center of the fisheye image. ```csharp public double YCenter { get; set; } ``` #### Property Value Parameters: - (double): ### YRemapCorrection Gets or sets the correction factor for remapping on y axis. A correction is needed if the fisheye image is not inside a circle. ```csharp public double YRemapCorrection { get; set; } ``` #### Property Value Parameters: - (double): --- # Class CVEdgeDetectSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVEdgeDetectSettings.html # Class CVEdgeDetectSettings # Class CVEdgeDetectSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV edge detect settings. ```csharp public class CVEdgeDetectSettings ``` #### Inheritance #### Inherited Members ## Properties ### ApertureSize Gets or sets the aperture size (must be either 3, 5 or 7). ```csharp public int ApertureSize { get; set; } ``` #### Property Value Parameters: - (int): ### Mask Gets or sets a value indicating whether the detected edges should be used as a mask on the original input or not. ```csharp public bool Mask { get; set; } ``` #### Property Value Parameters: - (bool): ### Threshold1 Gets or sets the threshold value for canny edge detection. ```csharp public int Threshold1 { get; set; } ``` #### Property Value Parameters: - (int): ### Threshold2 Gets or sets the second threshold value for canny edge detection. ```csharp public int Threshold2 { get; set; } ``` #### Property Value Parameters: - (int): --- # Class CVFaceBlurSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVFaceBlurSettings.html # Class CVFaceBlurSettings # Class CVFaceBlurSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face blur settings. ```csharp public class CVFaceBlurSettings ``` #### Inheritance #### Inherited Members ## Properties ### MainCascadeFile Gets or sets the main face HAAR cascade file. ```csharp public string MainCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### MinNeighbors Gets or sets the minimum number (minus 1) of neighbor rectangles that makes up an object. ```csharp public int MinNeighbors { get; set; } ``` #### Property Value Parameters: - (int): ### MinSize Gets or sets the minimum size. ```csharp public Size MinSize { get; set; } ``` #### Property Value Parameters: - (Size): ### ScaleFactor Gets or sets the scale factor. ```csharp public double ScaleFactor { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### ProcessPaths(BaseContext) Processes the paths. ```csharp public void ProcessPaths(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. --- # Class CVFaceDetectSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVFaceDetectSettings.html # Class CVFaceDetectSettings # Class CVFaceDetectSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face detect settings. ```csharp public class CVFaceDetectSettings ``` #### Inheritance #### Inherited Members ## Fields ### UpdatesMode The updates mode. ```csharp public CVFaceDetectUpdates UpdatesMode ``` #### Field Value Parameters: - (CVFaceDetectUpdates): ## Properties ### Display Gets or sets a value indicating whether the detected faces should be highlighted in the output. ```csharp public bool Display { get; set; } ``` #### Property Value Parameters: - (bool): ### EyesCascadeFile Gets or sets the eyes HAAR cascade file. ```csharp public string EyesCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### MainCascadeFile Gets or sets the main face HAAR cascade file. ```csharp public string MainCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### MinDeviation Gets or sets the minimum image average standard deviation. ```csharp public int MinDeviation { get; set; } ``` #### Property Value Parameters: - (int): ### MinNeighbors Gets or sets the minimum number (minus 1) of neighbor rectangles that makes up an object. ```csharp public int MinNeighbors { get; set; } ``` #### Property Value Parameters: - (int): ### MinSize Gets or sets the minimum size. ```csharp public Size MinSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MouthCascadeFile Gets or sets the mouth HAAR cascade file. ```csharp public string MouthCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### NoseCascadeFile Gets or sets the nose cascade file. ```csharp public string NoseCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### ScaleFactor Gets or sets the scale factor. ```csharp public double ScaleFactor { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### ProcessPaths(BaseContext) Processes the paths. ```csharp public void ProcessPaths(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. --- # Enum CVFaceDetectUpdates Link: api/VisioForge.Core.Types.X.OpenCV.CVFaceDetectUpdates.html # Enum CVFaceDetectUpdates # Enum CVFaceDetectUpdates **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face detect updates mode. ```csharp public enum CVFaceDetectUpdates ``` ## Fields Parameters: - EveryFrame (): Send update messages on every frame - OnChange (): Send messages when a new face is detected or one is not anymore detected. - OnFace (): Send messages whenever a face is detected. - None (): Send no messages update. --- # Class CVHandDetectSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVHandDetectSettings.html # Class CVHandDetectSettings # Class CVHandDetectSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV hand detect settings. ```csharp public class CVHandDetectSettings ``` #### Inheritance #### Inherited Members ## Properties ### Display Gets or sets a value indicating whether the detected faces should be highlighted in the output. ```csharp public bool Display { get; set; } ``` #### Property Value Parameters: - (bool): ### FistCascadeFile Gets or sets the fist HAAR cascade file. ```csharp public string FistCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### PalmCascadeFile Gets or sets the palm HAAR cascade file. ```csharp public string PalmCascadeFile { get; set; } ``` #### Property Value Parameters: - (string): ### ROI Gets or sets the ROI. ```csharp public Rect ROI { get; set; } ``` #### Property Value Parameters: - (Rect): ## Methods ### ProcessPaths(BaseContext) Processes the paths. ```csharp public void ProcessPaths(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The context. --- # Class CVLaplaceSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVLaplaceSettings.html # Class CVLaplaceSettings # Class CVLaplaceSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV laplace effect settings. ```csharp public class CVLaplaceSettings ``` #### Inheritance #### Inherited Members ## Properties ### ApertureSize Gets or sets the size of the extended Laplace Kernel (1, 3, 5 or 7). ```csharp public int ApertureSize { get; set; } ``` #### Property Value Parameters: - (int): ### Mask Gets or sets a value indicating whether the detected edges should be used as a mask on the original input or not. ```csharp public bool Mask { get; set; } ``` #### Property Value Parameters: - (bool): ### Scale Gets or sets the scale factor. ```csharp public double Scale { get; set; } ``` #### Property Value Parameters: - (double): ### Shift Gets or sets the value added to the scaled source array elements. ```csharp public double Shift { get; set; } ``` #### Property Value Parameters: - (double): --- # Class CVMotionCellsSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVMotionCellsSettings.html # Class CVMotionCellsSettings # Class CVMotionCellsSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV motion cells. ```csharp public class CVMotionCellsSettings ``` #### Inheritance #### Inherited Members ## Properties ### CalculateMotion Gets or sets a value indicating whether to calculate motion. ```csharp public bool CalculateMotion { get; set; } ``` #### Property Value Parameters: - (bool): ### CellsColor Gets or sets a color for motion cells. ```csharp public SKColor CellsColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DataFile Gets or sets a location of motioncells data file (empty string means no saving). ```csharp public string DataFile { get; set; } ``` #### Property Value Parameters: - (string): ### Display Gets or sets a value indicating whether to display of motion cells on current frame. ```csharp public bool Display { get; set; } ``` #### Property Value Parameters: - (bool): ### Gap Gets or sets an interval after which motion is considered finished and a motion finished bus message is posted. ```csharp public TimeSpan Gap { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### GridSize Gets or sets a grid size. ```csharp public Size GridSize { get; set; } ``` #### Property Value Parameters: - (Size): ### MinimumMotionFrames Gets or sets a minimum number of motion frames triggering a motion event. ```csharp public int MinimumMotionFrames { get; set; } ``` #### Property Value Parameters: - (int): ### MotionCellBorderThickness Gets or sets motion cell border thickness. Set to -1 to fill motion cell. ```csharp public int MotionCellBorderThickness { get; set; } ``` #### Property Value Parameters: - (int): ### MotionCellsIdx Gets or sets a cell description with its line and column idx separated with ":". Pass multiple cells as a comma-separated list. ```csharp public string MotionCellsIdx { get; set; } ``` #### Property Value Parameters: - (string): ### MotionMaskCellsPos Gets or sets a cell description with its line and column idx separated with ":". Pass multiple cells as a comma-separated list. ```csharp public string MotionMaskCellsPos { get; set; } ``` #### Property Value Parameters: - (string): ### MotionMaskCoords Gets or sets a region with its upper left and lower right x, y coordinates separated with ":". Pass multiple regions as a comma-separated list. ```csharp public string MotionMaskCoords { get; set; } ``` #### Property Value Parameters: - (string): ### PostAllMotion Gets or sets a value indicating whether to call Motion event for every motion frame or just motion start and motion stop. ```csharp public bool PostAllMotion { get; set; } ``` #### Property Value Parameters: - (bool): ### PostNoMotion Gets or sets a no motion flag. If non 0, call a NoMotion event if no motion is detected for the given number of seconds. ```csharp public TimeSpan PostNoMotion { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Sensitivity Gets or sets a motion detection sensitivity. ```csharp public double Sensitivity { get; set; } ``` #### Property Value Parameters: - (double): ### Threshold Gets or sets a threshold value for motion [0.001..0.1]. Filter detects motion when at least this fraction of the cells have moved. ```csharp public double Threshold { get; set; } ``` #### Property Value Parameters: - (double): ### UseAlpha Gets or sets a value indicating whether to use alpha blending on frames with motion cells. ```csharp public bool UseAlpha { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class CVSmoothSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVSmoothSettings.html # Class CVSmoothSettings # Class CVSmoothSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV smooth settings. ```csharp public class CVSmoothSettings ``` #### Inheritance #### Inherited Members ## Properties ### Color Gets or sets the color. If type is gaussian, this means the standard deviation. If type is bilateral, this means the color-sigma. If zero, Default values are used. ```csharp public double Color { get; set; } ``` #### Property Value Parameters: - (double): ### Height Gets or sets the height of the area to blur. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### KernelHeight Gets or sets the gaussian kernel height. ```csharp public int KernelHeight { get; set; } ``` #### Property Value Parameters: - (int): ### KernelWidth Gets or sets the gaussian kernel width. If type is median, this means the aperture linear size. ```csharp public int KernelWidth { get; set; } ``` #### Property Value Parameters: - (int): ### PositionX Gets or sets the starting X position for blur. ```csharp public int PositionX { get; set; } ``` #### Property Value Parameters: - (int): ### PositionY Gets or sets the starting Y position for blur. ```csharp public int PositionY { get; set; } ``` #### Property Value Parameters: - (int): ### SpatialSigma Gets or sets the spatial sigma value. Only used in bilateral type. ```csharp public double SpatialSigma { get; set; } ``` #### Property Value Parameters: - (double): ### Type Gets or sets the type. ```csharp public CVSmoothType Type { get; set; } ``` #### Property Value Parameters: - (CVSmoothType): ### Width Gets or sets the width of the area to blur. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum CVSmoothType Link: api/VisioForge.Core.Types.X.OpenCV.CVSmoothType.html # Enum CVSmoothType # Enum CVSmoothType **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV smooth type. ```csharp public enum CVSmoothType ``` ## Fields Parameters: - Blur (): The blur. - Gaussian (): The gaussian. - Median (): The median. - Bilateral (): The bilateral. --- # Class CVSobelSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVSobelSettings.html # Class CVSobelSettings # Class CVSobelSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV sobel effect settings. ```csharp public class CVSobelSettings ``` #### Inheritance #### Inherited Members ## Properties ### ApertureSize Gets or sets the size of the extended Sobel Kernel (1, 3, 5 or 7). ```csharp public int ApertureSize { get; set; } ``` #### Property Value Parameters: - (int): ### Mask Gets or sets a value indicating whether the detected edges should be used as a mask on the original input or not. ```csharp public bool Mask { get; set; } ``` #### Property Value Parameters: - (bool): ### XOrder Gets or sets the order of the derivative X. ```csharp public int XOrder { get; set; } ``` #### Property Value Parameters: - (int): ### YOrder Gets or sets the order of the derivative Y. ```csharp public int YOrder { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum CVTemplateMatchMethod Link: api/VisioForge.Core.Types.X.OpenCV.CVTemplateMatchMethod.html # Enum CVTemplateMatchMethod # Enum CVTemplateMatchMethod **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV template match method. ```csharp public enum CVTemplateMatchMethod ``` ## Fields Parameters: - SquareDifference (): The square difference. - SquareDifferenceNormalized (): The square difference normalized. - Correlation (): The correlation. - CorrelationNormalized (): The correlation normalized. - CCOEFF (): The CCOEFF. - CCOEFFNormalized (): The CCOEFF normalized. --- # Class CVTemplateMatchSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVTemplateMatchSettings.html # Class CVTemplateMatchSettings # Class CVTemplateMatchSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV face detect settings. ```csharp public class CVTemplateMatchSettings ``` #### Inheritance #### Inherited Members ## Constructors ### CVTemplateMatchSettings(string) Initializes a new instance of the class. ```csharp public CVTemplateMatchSettings(string templateImageFile) ``` #### Parameters Parameters: - templateImageFile (string): The template image file. ## Properties ### Display Gets or sets a value indicating whether the detected template should be highlighted in the output. ```csharp public bool Display { get; set; } ``` #### Property Value Parameters: - (bool): ### Method Gets or sets the method. ```csharp public CVTemplateMatchMethod Method { get; set; } ``` #### Property Value Parameters: - (CVTemplateMatchMethod): ### TemplateImage Gets or sets the template image. ```csharp public string TemplateImage { get; set; } ``` #### Property Value Parameters: - (string): --- # Class CVTextOverlaySettings Link: api/VisioForge.Core.Types.X.OpenCV.CVTextOverlaySettings.html # Class CVTextOverlaySettings # Class CVTextOverlaySettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV text overlay settings. ```csharp public class CVTextOverlaySettings ``` #### Inheritance #### Inherited Members ## Properties ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### FontHeight Gets or sets the height of the font. ```csharp public double FontHeight { get; set; } ``` #### Property Value Parameters: - (double): ### FontThickness Gets or sets the font thickness. ```csharp public int FontThickness { get; set; } ``` #### Property Value Parameters: - (int): ### FontWidth Gets or sets the width of the font. ```csharp public double FontWidth { get; set; } ``` #### Property Value Parameters: - (double): ### Text Gets or sets the text. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### X Gets or sets the x. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum CVTrackerAlgorithm Link: api/VisioForge.Core.Types.X.OpenCV.CVTrackerAlgorithm.html # Enum CVTrackerAlgorithm # Enum CVTrackerAlgorithm **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV tracker algorithm. ```csharp public enum CVTrackerAlgorithm ``` ## Fields Parameters: - Boosting (): The boosting tracker. - CSRT (): The CSRT tracker. - KCF (): The KCF tracker. - MedianFlow (): The median flow tracker. - MIL (): The MIL tracker. - MOSSE (): The MOSSE tracker. - TLD (): The TLD tracker. --- # Class CVTrackerSettings Link: api/VisioForge.Core.Types.X.OpenCV.CVTrackerSettings.html # Class CVTrackerSettings # Class CVTrackerSettings **Namespace**: VisioForge.Core.Types.X.OpenCV **Assembly**: VisioForge.Core.dll OpenCV tracker settings. ```csharp public class CVTrackerSettings ``` #### Inheritance #### Inherited Members ## Properties ### Algorithm Gets or sets the algorithm. ```csharp public CVTrackerAlgorithm Algorithm { get; set; } ``` #### Property Value Parameters: - (CVTrackerAlgorithm): ### DrawRect Gets or sets a value indicating whether to draw rectangle around tracked object. ```csharp public bool DrawRect { get; set; } ``` #### Property Value Parameters: - (bool): ### InitialRect Gets or sets the initial rectangle. ```csharp public Rect InitialRect { get; set; } ``` #### Property Value Parameters: - (Rect): --- # Namespace VisioForge.Core.Types.X.OpenCV Link: api/VisioForge.Core.Types.X.OpenCV.html # Namespace VisioForge.Core.Types.X.OpenCV # Namespace VisioForge.Core.Types.X.OpenCV ### Classes Parameters: - (): OpenCV dewarp effect settings. - (): OpenCV edge detect settings. - (): OpenCV face blur settings. - (): OpenCV face detect settings. - (): OpenCV hand detect settings. - (): OpenCV laplace effect settings. - (): OpenCV motion cells. - (): OpenCV smooth settings. - (): OpenCV sobel effect settings. - (): OpenCV face detect settings. - (): OpenCV text overlay settings. - (): OpenCV tracker settings. ### Enums Parameters: - (): - (): - (): OpenCV face detect updates mode. - (): OpenCV smooth type. - (): OpenCV template match method. - (): OpenCV tracker algorithm. --- # Class GLAlphaVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLAlphaVideoEffect.html # Class GLAlphaVideoEffect # Class GLAlphaVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Alpha channel video effect (OpenGL). Replaces selected color by alpha channel. ```csharp public class GLAlphaVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLAlphaVideoEffect() Initializes a new instance of the class. ```csharp public GLAlphaVideoEffect() ``` ## Properties ### Alpha Gets or sets the value for the alpha channel. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### Angle Gets or sets the size of the colorcube to change. ```csharp public float Angle { get; set; } ``` #### Property Value Parameters: - (float): ### BlackSensitivity Gets or sets the sensitivity to dark colors. ```csharp public uint BlackSensitivity { get; set; } ``` #### Property Value Parameters: - (uint): ### CustomColor Gets or sets custom color value. ```csharp public SKColor CustomColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Mode Gets or sets the method. ```csharp public GLAlphaVideoEffectMode Mode { get; set; } ``` #### Property Value Parameters: - (GLAlphaVideoEffectMode): ### NoiseLevel Gets or sets the size of noise radius. ```csharp public float NoiseLevel { get; set; } ``` #### Property Value Parameters: - (float): ### WhiteSensitivity Gets or sets the sensitivity to bright colors. ```csharp public uint WhiteSensitivity { get; set; } ``` #### Property Value Parameters: - (uint): --- # Enum GLAlphaVideoEffectMode Link: api/VisioForge.Core.Types.X.OpenGL.GLAlphaVideoEffectMode.html # Enum GLAlphaVideoEffectMode # Enum GLAlphaVideoEffectMode **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Alpha video effect mode (OpenGL). ```csharp public enum GLAlphaVideoEffectMode ``` ## Fields Parameters: - Set (): Set/adjust alpha channel. - Green (): Chroma Key on pure green. - Blue (): Chroma Key on pure blue. - Custom (): Chroma Key on custom RGB values . --- # Class GLBaseVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLBaseVideoEffect.html # Class GLBaseVideoEffect # Class GLBaseVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Base video effect for OpenGL. ```csharp public class GLBaseVideoEffect ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### GLBaseVideoEffect(GLVideoEffectID, string) Initializes a new instance of the class. ```csharp public GLBaseVideoEffect(GLVideoEffectID id, string name) ``` #### Parameters Parameters: - id (GLVideoEffectID): The identifier. - name (string): The name. ## Properties ### ID Gets the identifier. ```csharp public GLVideoEffectID ID { get; } ``` #### Property Value Parameters: - (GLVideoEffectID): ### Index Gets or sets the index. ```csharp public int Index { get; set; } ``` #### Property Value Parameters: - (int): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### OnUpdateCall() Called when [update call]. ```csharp public void OnUpdateCall() ``` ### OnUpdate Occurs when [on update]. ```csharp public event EventHandler OnUpdate ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class GLBlurVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLBlurVideoEffect.html # Class GLBlurVideoEffect # Class GLBlurVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies a GPU-accelerated blur effect to video frames using OpenGL shaders. This effect softens the video image by averaging pixel values with their neighbors, creating a smooth, out-of-focus appearance. ```csharp public class GLBlurVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders for real-time processing with minimal CPU overhead. The blur operation is performed entirely on the GPU, making it suitable for high-resolution video streams.

Effect Description: The blur effect applies a convolution filter that smooths the image by averaging each pixel with surrounding pixels. This creates a soft-focus appearance by reducing detail and noise in the video.

Use Cases:

  • Privacy protection - obscuring sensitive information or faces in video streams
  • Background softening for video conferencing or presentations
  • Aesthetic effects for creative video production
  • Noise reduction in low-light or compressed video
  • Depth-of-field simulation in post-processing
  • Transition effects between video scenes

Performance: Highly optimized for real-time processing on GPU. Performance impact depends on video resolution and GPU capabilities, but typically adds less than 1-2ms per frame on modern hardware.

## Constructors ### GLBlurVideoEffect() Initializes a new instance of the class. Creates a blur effect with default settings for GPU-accelerated video processing. ```csharp public GLBlurVideoEffect() ``` ## See Also --- # Class GLBulgeVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLBulgeVideoEffect.html # Class GLBulgeVideoEffect # Class GLBulgeVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Represents a bulge geometric distortion effect that creates an outward spherical expansion from the center. ```csharp public class GLBulgeVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS (requires OpenGL/OpenGL ES support)

Rendering Backend: OpenGL-accelerated

This effect applies a convex spherical distortion that pushes pixels outward from the center of the frame, creating a bulging or ballooning appearance. The distortion is strongest at the center and gradually transitions to undistorted at the edges, simulating the appearance of viewing the video through a convex lens or on a spherical surface.

The bulge effect is commonly used for:

  • Magnification Effects: Simulating magnifying glass or zoom lens distortion
  • Cartoonish Emphasis: Exaggerating central subjects with comic-style bulging
  • Fisheye Simulation: Creating mild wide-angle lens effects
  • Attention Direction: Drawing viewer focus to center elements
  • Abstract Art: Creating surreal, distorted perspective effects
  • Video Tutorials: Emphasizing important UI elements in demonstrations

This is an OpenGL-accelerated geometric distortion effect using GPU-based radial displacement. The effect calculates pixel repositioning based on distance from center, creating smooth spherical curvature.

Performance: Real-time capable with GPU acceleration. Extremely efficient shader-based operation suitable for live video processing. Minimal performance impact even at 4K resolution.

Technical Details: Uses radial distance calculations to apply non-linear coordinate transformation. The distortion follows a quadratic or higher-order polynomial curve to create natural spherical appearance. Edge pixels remain undistorted to maintain frame boundaries.

Related Effects: See also for opposite inward pinching, for extreme wide-angle distortion, and for spiral distortion.

## Constructors ### GLBulgeVideoEffect() Initializes a new instance of the class. ```csharp public GLBulgeVideoEffect() ``` #### Remarks Creates a bulge effect using the OpenGL "bulge" shader. The effect applies convex spherical distortion centered on the frame, with intensity typically controlled through element properties. --- # Class GLColorBalanceVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLColorBalanceVideoEffect.html # Class GLColorBalanceVideoEffect # Class GLColorBalanceVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Color balance video effect (OpenGL). ```csharp public class GLColorBalanceVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLColorBalanceVideoEffect() Initializes a new instance of the class. ```csharp public GLColorBalanceVideoEffect() ``` ## Properties ### Brightness Gets or sets the brightness. ```csharp public double Brightness { get; set; } ``` #### Property Value Parameters: - (double): ### Contrast Gets or sets the contrast. ```csharp public double Contrast { get; set; } ``` #### Property Value Parameters: - (double): ### Hue Gets or sets the hue. ```csharp public double Hue { get; set; } ``` #### Property Value Parameters: - (double): ### Saturation Gets or sets the saturation. ```csharp public double Saturation { get; set; } ``` #### Property Value Parameters: - (double): --- # Enum GLDeinterlaceMethod Link: api/VisioForge.Core.Types.X.OpenGL.GLDeinterlaceMethod.html # Enum GLDeinterlaceMethod # Enum GLDeinterlaceMethod **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Deinterlace video effect method (OpenGL). ```csharp public enum GLDeinterlaceMethod ``` ## Fields Parameters: - VerticalBlur (): Vertical blur. - MAAD (): Motion Adaptive: Advanced Detection. --- # Class GLDeinterlaceVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLDeinterlaceVideoEffect.html # Class GLDeinterlaceVideoEffect # Class GLDeinterlaceVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Removes interlacing artifacts from video frames using GPU-accelerated OpenGL shaders. This effect converts interlaced video (alternating field lines) to progressive video by interpolating missing scan lines. ```csharp public class GLDeinterlaceVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders to perform deinterlacing in real-time on the GPU. Multiple deinterlacing algorithms are supported, each optimized for different types of content.

Effect Description: Interlaced video consists of two fields (odd and even scan lines) captured at different times, which can cause visible combing artifacts during motion. This effect reconstructs missing lines using either simple vertical interpolation or advanced motion-adaptive algorithms to produce smooth progressive frames.

Use Cases:

  • Converting legacy analog or broadcast video (PAL, NTSC, SECAM) to progressive format
  • Processing captures from analog cameras or video capture cards
  • Improving playback quality of interlaced content on progressive displays
  • Video editing and post-production workflows requiring progressive footage
  • Streaming applications where interlaced artifacts would be problematic
  • Video archival and restoration projects

Performance: Performance depends on the selected deinterlacing method. VerticalBlur provides the fastest processing with minimal overhead (typically 1-2ms per frame), while MAAD (Motion Adaptive: Advanced Detection) offers better quality with slightly higher computational cost (typically 2-4ms per frame). Both methods are GPU-accelerated for real-time performance.

## Constructors ### GLDeinterlaceVideoEffect() Initializes a new instance of the class. Creates a deinterlacing effect with default vertical blur method for GPU-accelerated video processing. ```csharp public GLDeinterlaceVideoEffect() ``` ## Properties ### Method Gets or sets the deinterlacing algorithm method to use for removing interlacing artifacts. ```csharp public GLDeinterlaceMethod Method { get; set; } ``` #### Property Value Parameters: - (GLDeinterlaceMethod): #### See Also ## See Also --- # Class GLEquirectangularViewSettings Link: api/VisioForge.Core.Types.X.OpenGL.GLEquirectangularViewSettings.html # Class GLEquirectangularViewSettings # Class GLEquirectangularViewSettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Class GLEquirectangularViewSettings. ```csharp public class GLEquirectangularViewSettings : IVRVideoControl ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GLEquirectangularViewSettings(int, int) Initializes a new instance of the class. ```csharp public GLEquirectangularViewSettings(int videoWidth, int videoHeight) ``` #### Parameters Parameters: - videoWidth (int): Width of the video. - videoHeight (int): Height of the video. ## Properties ### FieldOfView Gets or sets the field of view (degrees). ```csharp public float FieldOfView { get; set; } ``` #### Property Value Parameters: - (float): ### Mode Gets or sets the VR mode. ```csharp public VRMode Mode { get; set; } ``` #### Property Value Parameters: - (VRMode): ### Pitch Gets or sets the pitch (degrees). ```csharp public float Pitch { get; set; } ``` #### Property Value Parameters: - (float): ### Roll Gets or sets the roll (degrees). ```csharp public float Roll { get; set; } ``` #### Property Value Parameters: - (float): ### VideoHeight The video height. ```csharp public int VideoHeight { get; } ``` #### Property Value Parameters: - (int): ### VideoWidth The video width. ```csharp public int VideoWidth { get; } ``` #### Property Value Parameters: - (int): ### Yaw Gets or sets the yaw (degrees). ```csharp public float Yaw { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### IsModeSupported(VRMode) Checks if specific VR mode is supported by block. ```csharp public bool IsModeSupported(VRMode mode) ``` #### Parameters Parameters: - mode (VRMode): Mode. #### Returns Parameters: - (bool): bool. ### SettingsChanged Occurs when settings changed. ```csharp public event EventHandler SettingsChanged ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class GLFishEyeVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLFishEyeVideoEffect.html # Class GLFishEyeVideoEffect # Class GLFishEyeVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies a GPU-accelerated fish-eye lens distortion effect to video frames using OpenGL shaders. This effect simulates the wide-angle, curved appearance characteristic of ultra-wide fish-eye camera lenses. ```csharp public class GLFishEyeVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders to perform real-time geometric distortion entirely on the GPU. The transformation applies barrel distortion using texture coordinate mapping for efficient processing.

Effect Description: The fish-eye effect applies radial barrel distortion that curves straight lines outward from the center of the frame, mimicking the optical characteristics of fish-eye lenses. The distortion is strongest at the edges and minimal at the center, creating a spherical or hemispherical appearance that provides an ultra-wide field of view.

Use Cases:

  • Creative video effects and artistic expression in music videos or films
  • Simulating action camera aesthetics (GoPro-style footage)
  • 360-degree or VR content preview and testing
  • Security and surveillance applications requiring wide-angle views
  • Correcting or enhancing existing fish-eye lens footage
  • Special effects for gaming, live streaming, or video production

Performance: Highly optimized GPU shader operation with minimal performance impact. The geometric transformation is performed in a single rendering pass using texture coordinate remapping, typically adding less than 1-2ms per frame on modern hardware. Performance is independent of the amount of distortion applied.

## Constructors ### GLFishEyeVideoEffect() Initializes a new instance of the class. Creates a fish-eye lens distortion effect for GPU-accelerated video processing. ```csharp public GLFishEyeVideoEffect() ``` ## See Also --- # Class GLFlipVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLFlipVideoEffect.html # Class GLFlipVideoEffect # Class GLFlipVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Class GLFlipVideoEffect. Implements the . ```csharp public class GLFlipVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLFlipVideoEffect() Initializes a new instance of the class. ```csharp public GLFlipVideoEffect() ``` ## Properties ### Method Gets or sets them method. ```csharp public GLFlipVideoMethod Method { get; set; } ``` #### Property Value Parameters: - (GLFlipVideoMethod): ## See Also --- # Enum GLFlipVideoMethod Link: api/VisioForge.Core.Types.X.OpenGL.GLFlipVideoMethod.html # Enum GLFlipVideoMethod # Enum GLFlipVideoMethod **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Video flip method (OpenGL). ```csharp public enum GLFlipVideoMethod ``` ## Fields Parameters: - None (): No rotation. - Clockwise (): Rotate clockwise 90 degrees. - Rotate180 (): Rotate 180 degrees. - CounterClockwise (): Rotate counter-clockwise 90 degrees. - HorizontalFlip (): Flip horizontally. - VerticalFlip (): Flip vertically. - UpperLeftDiagonal (): Flip across upper left/lower right diagonal. - UpperRightDiagonal (): Flip across upper right/lower left diagonal. --- # Class GLGlowLightingVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLGlowLightingVideoEffect.html # Class GLGlowLightingVideoEffect # Class GLGlowLightingVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated glow lighting effect to video frames using OpenGL/OpenGL ES shaders. This effect enhances bright areas of the video by adding a soft, luminous halo around light sources and highlights, creating an ethereal, dreamlike quality or simulating light bloom and lens effects. ```csharp public class GLGlowLightingVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The glow effect is implemented using fragment shaders that extract bright regions, apply Gaussian blur to create the glow halo, and composite the result with the original image. The implementation uses optimized separable blur kernels for maximum performance. All processing, including brightness threshold extraction and multi-pass blur operations, occurs entirely on the GPU using render-to-texture techniques.

Effect Description: The glow lighting effect simulates the optical phenomenon of light bloom, where bright light sources appear to spread beyond their physical boundaries, creating a soft, luminous halo. The effect works by identifying bright areas in the video (above a certain luminance threshold), extracting them, applying a Gaussian blur to create a soft glow, and then blending this glow back with the original image. This creates the appearance of light scattering through the atmosphere or camera lens, adding atmosphere and depth to the scene. Bright highlights become softer and more prominent, light sources gain halos, and the overall image takes on a more luminous, magical quality. The effect is particularly noticeable around lights, reflections, and other bright elements, enhancing the sense of luminosity and atmosphere.

Use Cases:

  • Romantic and dreamlike scenes in films and music videos
  • Fantasy and magical content requiring ethereal, otherworldly lighting
  • Night scenes and low-light cinematography with enhanced light sources
  • Beauty and fashion videos with soft, flattering lighting effects
  • Video game cutscenes and cinematics with cinematic lighting bloom
  • Wedding and event videos with soft, romantic atmosphere enhancement

Performance Characteristics: This effect has moderate performance impact as it requires multi-pass rendering on the GPU. Typical overhead is 2-3ms per frame on modern hardware due to the Gaussian blur operations. The effect uses optimized separable blur kernels (horizontal and vertical passes) to minimize computational cost. Performance scales with resolution and blur radius but remains real-time capable at 1080p and 4K on modern GPUs. The effect uses render-to-texture for intermediate processing, requiring additional GPU memory proportional to frame resolution. On mobile devices with OpenGL ES, performance is good for resolutions up to 1080p, though frame rate may be impacted on older devices.

## Constructors ### GLGlowLightingVideoEffect() Initializes a new instance of the class. ```csharp public GLGlowLightingVideoEffect() ``` --- # Class GLGrayscaleVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLGrayscaleVideoEffect.html # Class GLGrayscaleVideoEffect # Class GLGrayscaleVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Converts video frames to grayscale (black and white) using GPU-accelerated OpenGL shaders. This effect removes all color information while preserving luminance values, creating a monochrome appearance. ```csharp public class GLGrayscaleVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders to perform real-time color-to-grayscale conversion entirely on the GPU. The conversion uses weighted luminance coefficients for perceptually accurate results.

Effect Description: The grayscale effect converts RGB color values to luminance using standard ITU-R BT.709 coefficients (typically: Y = 0.299R + 0.587G + 0.114B), which accounts for human eye sensitivity to different colors. This produces a natural-looking black and white image that preserves perceived brightness.

Use Cases:

  • Artistic and cinematic effects for video production
  • Surveillance and security applications where color is not required
  • Bandwidth reduction by simplifying color space before compression
  • Medical and scientific imaging applications
  • Accessibility features for color-blind users
  • Retro or vintage video aesthetics

Performance: Extremely lightweight operation with negligible performance impact. The GPU-accelerated shader performs the conversion in a single pass with minimal computational overhead, typically adding less than 0.5ms per frame.

## Constructors ### GLGrayscaleVideoEffect() Initializes a new instance of the class. Creates a grayscale conversion effect for GPU-accelerated video processing. ```csharp public GLGrayscaleVideoEffect() ``` ## See Also --- # Class GLHeatVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLHeatVideoEffect.html # Class GLHeatVideoEffect # Class GLHeatVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated thermal heat map visualization effect to video frames using OpenGL/OpenGL ES shaders. This effect transforms video luminance values into a false-color heat map, mapping intensity to a color gradient from cool (dark) to hot (bright) tones. ```csharp public class GLHeatVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The heat map transformation is implemented as a fragment shader that converts luminance values to false colors using a thermal gradient lookup. The shader performs per-pixel color remapping entirely on the GPU, enabling real-time thermal visualization without CPU overhead.

Effect Description: The heat effect converts the video into a thermal-style heat map by mapping pixel intensity to a color gradient that mimics thermal imaging cameras. Darker regions (low intensity) are represented with cool colors (typically dark blue or black), while brighter regions (high intensity) are shown with progressively warmer colors (green, yellow, orange, red, white). This creates a visualization similar to infrared thermal imaging or heat-sensing cameras. The effect is purely aesthetic and does not perform actual temperature measurement; it simply maps visual brightness to a thermal-style color gradient. The resulting image has high visual impact and clearly shows intensity distribution across the frame.

Use Cases:

  • Simulating thermal imaging camera output for visual effects in films and games
  • Scientific visualization of intensity distributions in video data
  • Artistic video effects creating dramatic false-color visuals
  • Security and surveillance video effects for enhanced monitoring displays
  • Educational content demonstrating heat and light intensity concepts
  • Music videos and creative projects requiring striking visual transformations

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 0.5ms per frame on modern hardware. The heat map transformation is a straightforward per-pixel lookup operation, making it extremely efficient. Performance remains constant across all resolutions and is real-time capable even at 8K on modern GPUs. The effect does not require texture lookups or complex calculations, only color space conversion and gradient mapping. On mobile devices with OpenGL ES, performance is excellent with no observable impact on frame rate at typical video resolutions.

## Constructors ### GLHeatVideoEffect() Initializes a new instance of the class. ```csharp public GLHeatVideoEffect() ``` --- # Class GLLaplacianVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLLaplacianVideoEffect.html # Class GLLaplacianVideoEffect # Class GLLaplacianVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated Laplacian edge detection filter to video frames using OpenGL/OpenGL ES shaders. This effect detects edges by computing the second derivative of image intensity, emphasizing regions of rapid intensity change. ```csharp public class GLLaplacianVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The Laplacian operator is implemented as a fragment shader that applies a 3x3 convolution kernel to detect edges based on second-order derivatives. All processing occurs on the GPU with zero CPU involvement, enabling real-time edge detection at high frame rates.

Effect Description: The Laplacian is a second-order derivative operator that measures the rate of change of the gradient in an image. Unlike the Sobel operator which computes first-order derivatives in specific directions, the Laplacian is isotropic and detects edges regardless of direction. It highlights areas of rapid intensity change, making it particularly sensitive to fine details and noise. The output emphasizes edges and texture details, producing bright edges on a dark background (or vice versa with invert enabled). The Laplacian is more sensitive to fine details compared to Sobel but also more sensitive to noise.

Use Cases:

  • Fine detail enhancement in video processing and computer vision applications
  • Texture analysis and feature detection requiring high sensitivity
  • Image sharpening and edge enhancement for visual quality improvement
  • Defect detection in industrial inspection systems requiring fine detail sensitivity
  • Medical imaging applications for subtle feature enhancement
  • Artistic video effects creating detailed sketch-like or engraving visuals

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 1ms per frame on modern hardware. The Laplacian operator requires only a single 3x3 convolution kernel, making it computationally efficient. Performance scales linearly with resolution but remains real-time capable even at 4K resolutions on mid-range GPUs. The effect does not require CPU-GPU data transfer, making it suitable for high-throughput video processing. On mobile devices with OpenGL ES, performance remains excellent for resolutions up to 1080p.

## Constructors ### GLLaplacianVideoEffect() Initializes a new instance of the class. ```csharp public GLLaplacianVideoEffect() ``` ## Properties ### Invert Gets or sets a value indicating whether to invert colors to get dark edges on bright background. ```csharp public bool Invert { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When set to false, the effect produces the standard Laplacian output with bright edges on a dark background, which is useful for edge emphasis and computer vision applications. When set to true, the colors are inverted, creating dark edges on a bright background, which can be more suitable for artistic effects or engraving-style visualizations. This inversion is performed in the GPU shader with no additional performance cost. ## See Also --- # Class GLLightTunnelVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLLightTunnelVideoEffect.html # Class GLLightTunnelVideoEffect # Class GLLightTunnelVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Represents a light tunnel effect that creates a perspective distortion with radial light rays emanating from the center. ```csharp public class GLLightTunnelVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS (requires OpenGL/OpenGL ES support)

Rendering Backend: OpenGL-accelerated

This effect creates a dramatic tunnel or vortex effect where the video appears to be drawn into or emanating from a central vanishing point, accompanied by radial light rays. The effect combines perspective distortion with luminance enhancement to create a sense of motion and depth, similar to traveling through a tunnel of light.

The light tunnel effect is commonly used for:

  • Sci-Fi Effects: Hyperspace, warp drive, or portal animations
  • Transitions: Dramatic scene transitions suggesting travel or transformation
  • Music Videos: High-energy, dynamic visual effects with strong directionality
  • Abstract Visualizations: Hypnotic, motion-centric visual designs
  • Video Game Effects: Speed boost, warp, or teleportation visual feedback
  • Intros/Outros: Attention-grabbing opening or closing sequences

This is an OpenGL-accelerated effect using GPU-based radial distortion and brightness modulation. The effect combines geometric transformation with lighting calculations to create the characteristic tunnel appearance with light rays.

Performance: Real-time capable with GPU acceleration. Highly efficient shader-based implementation suitable for high-resolution video. Performs well even on mobile GPUs.

Technical Details: Uses polar coordinate transformation combined with radial gradient calculations to create the tunnel perspective. The light rays are generated through angular brightness modulation patterns around the center point.

Related Effects: See also for spiral distortion and for center-focused expansion effects.

## Constructors ### GLLightTunnelVideoEffect() Initializes a new instance of the class. ```csharp public GLLightTunnelVideoEffect() ``` #### Remarks Creates a light tunnel effect using the OpenGL "tunnel" shader. The effect creates a radial perspective distortion with animated light rays converging at the center point. --- # Class GLLumaCrossProcessingVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLLumaCrossProcessingVideoEffect.html # Class GLLumaCrossProcessingVideoEffect # Class GLLumaCrossProcessingVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated luma cross-processing effect to video frames using OpenGL/OpenGL ES shaders. This effect simulates the photographic technique of cross-processing film, creating distinctive color shifts and contrast changes based on luminance values, resulting in surreal, high-contrast imagery with altered color relationships. ```csharp public class GLLumaCrossProcessingVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The luma cross-processing transformation is implemented as a fragment shader that applies luminance-based color curve adjustments and channel mixing. The shader uses optimized per-pixel operations with lookup tables or mathematical curves to achieve the cross-processed look. All color space conversions and curve applications occur on the GPU in a single pass with no CPU involvement.

Effect Description: Cross-processing is a photographic technique where film is developed in chemicals intended for a different type of film (e.g., processing slide film in negative chemicals or vice versa), resulting in distinctive color shifts, increased contrast, and altered tonal relationships. This digital effect simulates that aesthetic by applying luminance-dependent color transformations. The effect analyzes the brightness of each pixel and applies different color curves to highlights, midtones, and shadows, creating characteristic color shifts where blues may become more cyan, greens more yellow, and reds more magenta. The result is a surreal, stylized look with punchy contrast, shifted hues, and an overall artistic, experimental feel. Shadows often become deeper and cooler, while highlights may take on warm or unusual color casts.

Use Cases:

  • Fashion and editorial photography-style videos with avant-garde aesthetics
  • Music videos requiring bold, experimental color grading and visual style
  • Artistic films and experimental video projects with unconventional looks
  • Commercial advertising with distinctive, eye-catching color palettes
  • Social media content with trendy, Instagram-style color grading effects
  • Retro-style content simulating alternative photographic processing techniques

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 1ms per frame on modern hardware. The luma-based color transformation uses per-pixel curve evaluation or texture-based lookup tables, both of which are highly efficient on GPUs. Performance is consistent across all resolutions and remains real-time capable even at 4K on modern GPUs. The effect requires no multi-pass rendering or complex calculations, adding negligible latency to the video pipeline. On mobile devices with OpenGL ES, performance is excellent across all supported resolutions with no observable impact on frame rate.

## Constructors ### GLLumaCrossProcessingVideoEffect() Initializes a new instance of the class. ```csharp public GLLumaCrossProcessingVideoEffect() ``` --- # Class GLMirrorVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLMirrorVideoEffect.html # Class GLMirrorVideoEffect # Class GLMirrorVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies a GPU-accelerated mirror reflection effect to video frames using OpenGL shaders. This effect creates horizontal or vertical symmetry by reflecting portions of the video image along a center axis. ```csharp public class GLMirrorVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders to perform real-time geometric transformation entirely on the GPU. The mirroring operation uses optimized texture coordinate flipping for zero-copy processing.

Effect Description: The mirror effect splits the frame along a central axis (horizontal or vertical) and reflects one half onto the other, creating perfect bilateral symmetry. This can produce kaleidoscope-like or mandala patterns depending on the content, and can be applied horizontally (left-right reflection) or vertically (top-bottom reflection).

Use Cases:

  • Artistic and psychedelic visual effects for music videos or live performances
  • Creating symmetrical compositions for creative video production
  • Video conferencing applications with mirrored self-view
  • Educational demonstrations of symmetry and reflection concepts
  • Special effects in gaming or interactive installations
  • Correcting reversed video from certain cameras or capture devices

Performance: Extremely lightweight operation with negligible performance impact. The GPU-accelerated shader performs texture coordinate transformation without additional pixel processing, typically adding less than 0.5ms per frame. The effect has no dependency on frame content or complexity.

## Constructors ### GLMirrorVideoEffect() Initializes a new instance of the class. Creates a mirror reflection effect for GPU-accelerated video processing. ```csharp public GLMirrorVideoEffect() ``` ## See Also --- # Class GLOverlaySettings Link: api/VisioForge.Core.Types.X.OpenGL.GLOverlaySettings.html # Class GLOverlaySettings # Class GLOverlaySettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL overlay settings. ```csharp public class GLOverlaySettings ``` #### Inheritance #### Inherited Members ## Constructors ### GLOverlaySettings(string) Initializes a new instance of the class. ```csharp public GLOverlaySettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Alpha Gets or sets the alpha. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### Data Gets the data. ```csharp public byte[] Data { get; } ``` #### Property Value Parameters: - (byte [ ]): ### Filename Gets the filename. ```csharp public string Filename { get; } ``` #### Property Value Parameters: - (string): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the x. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): --- # Class GLOverlayVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLOverlayVideoEffect.html # Class GLOverlayVideoEffect # Class GLOverlayVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Color balance video effect (OpenGL). ```csharp public class GLOverlayVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLOverlayVideoEffect() Initializes a new instance of the class. ```csharp public GLOverlayVideoEffect() ``` --- # Class GLResizeVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLResizeVideoEffect.html # Class GLResizeVideoEffect # Class GLResizeVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Video resize video effect (OpenGL). ```csharp public class GLResizeVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLResizeVideoEffect(int, int) Initializes a new instance of the class. ```csharp public GLResizeVideoEffect(int width, int height) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. ## Properties ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): --- # Class GLSepiaVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLSepiaVideoEffect.html # Class GLSepiaVideoEffect # Class GLSepiaVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated sepia tone color grading effect to video frames using OpenGL/OpenGL ES shaders. This effect transforms video colors to warm brown tones reminiscent of vintage photographs from the 19th and early 20th centuries. ```csharp public class GLSepiaVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The sepia transformation is implemented as a fragment shader that applies a color matrix to each pixel, converting RGB values to sepia tones using industry-standard coefficients. All processing occurs on the GPU with no CPU involvement, enabling real-time color grading at any resolution.

Effect Description: The sepia effect transforms the original video colors into warm brown tones by applying a specific color transformation matrix. This creates a nostalgic, vintage appearance similar to old photographs. The effect desaturates the image and applies brown-yellow tones, reducing the color range to warm earth tones. The transformation preserves the luminance relationships in the original image while shifting the color palette to sepia brown. Unlike simple desaturation, the sepia effect adds warmth and character to the image, creating an aged, timeless aesthetic.

Use Cases:

  • Vintage and retro-style video content creation for artistic projects
  • Nostalgic storytelling and period piece video production
  • Wedding and event videography with classic, timeless aesthetics
  • Historical documentaries and archival footage simulation
  • Social media content with vintage filters and retro appeal
  • Music videos and artistic productions requiring warm, aged visual style

Performance Characteristics: This effect has negligible performance impact as it runs entirely on the GPU. Typical overhead is less than 0.5ms per frame on modern hardware. The sepia transformation is a simple per-pixel color matrix operation, making it one of the most efficient color grading effects. Performance is independent of resolution complexity and remains real-time capable even at 8K resolutions on modern GPUs. The effect requires no CPU-GPU synchronization and adds virtually no latency to the video pipeline. On mobile devices with OpenGL ES, performance is excellent across all supported resolutions with no observable impact on frame rate.

## Constructors ### GLSepiaVideoEffect() Initializes a new instance of the class. ```csharp public GLSepiaVideoEffect() ``` --- # Class GLShader Link: api/VisioForge.Core.Types.X.OpenGL.GLShader.html # Class GLShader # Class GLShader **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Class GLShader. ```csharp public class GLShader ``` #### Inheritance #### Inherited Members ## Constructors ### GLShader() Initializes a new instance of the class. ```csharp public GLShader() ``` ### GLShader(string, string) Initializes a new instance of the class. ```csharp public GLShader(string vertexShader, string fragmentShader) ``` #### Parameters Parameters: - vertexShader (string): The vertex shader. - fragmentShader (string): The fragment shader. ## Properties ### FragmentShader Gets or sets the fragment shader. ```csharp public string FragmentShader { get; set; } ``` #### Property Value Parameters: - (string): ### VertexShader Gets or sets the vertex shader. ```csharp public string VertexShader { get; set; } ``` #### Property Value Parameters: - (string): --- # Class GLShaderSettings Link: api/VisioForge.Core.Types.X.OpenGL.GLShaderSettings.html # Class GLShaderSettings # Class GLShaderSettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Class GLShaderSettings. ```csharp public class GLShaderSettings ``` #### Inheritance #### Inherited Members ## Constructors ### GLShaderSettings() Initializes a new instance of the class. ```csharp public GLShaderSettings() ``` ### GLShaderSettings(string, string) Initializes a new instance of the class. ```csharp public GLShaderSettings(string vertex, string fragment) ``` #### Parameters Parameters: - vertex (string): The vertex. - fragment (string): The fragment. ### GLShaderSettings(GLShader) Initializes a new instance of the class. ```csharp public GLShaderSettings(GLShader shader) ``` #### Parameters Parameters: - shader (GLShader): The shader. ## Properties ### Fragment GLSL fragment source. ```csharp public string Fragment { get; set; } ``` #### Property Value Parameters: - (string): ### Uniforms Uniforms (parameters). ```csharp public Dictionary Uniforms { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### Vertex GLSL vertex source. ```csharp public string Vertex { get; set; } ``` #### Property Value Parameters: - (string): --- # Class GLSinCityVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLSinCityVideoEffect.html # Class GLSinCityVideoEffect # Class GLSinCityVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated Sin City-style selective color effect to video frames using OpenGL/OpenGL ES shaders. This effect creates the iconic neo-noir visual style popularized by Frank Miller's graphic novels and film adaptations, rendering most of the scene in monochrome while preserving red color tones for dramatic emphasis. ```csharp public class GLSinCityVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The selective color transformation is implemented as a fragment shader that performs per-pixel color analysis to detect red hues, preserving them while desaturating all other colors to grayscale. The shader uses HSV color space conversion for accurate red detection and smooth transitions. All processing occurs on the GPU in a single rendering pass, enabling real-time selective color effects with no CPU overhead.

Effect Description: The Sin City effect recreates the distinctive visual style of the graphic novels and films, characterized by high-contrast black and white imagery with selective preservation of red colors. The effect analyzes each pixel's color, detecting red hues (including variations like crimson, scarlet, and deep red) and preserving their saturation and intensity. All non-red colors are desaturated to grayscale, creating a stark monochrome backdrop. This creates powerful visual contrast where red elements (clothing, lights, blood, objects) stand out dramatically against the black and white environment. The result is a neo-noir, comic book aesthetic with intense dramatic impact. The effect emphasizes composition, lighting, and the psychological significance of red elements in the scene.

Use Cases:

  • Neo-noir films and videos recreating Sin City or graphic novel aesthetics
  • Music videos requiring dramatic, stylized visuals with selective color emphasis
  • Artistic projects and experimental films with bold visual statements
  • Thriller and crime genre productions emphasizing danger, passion, or violence
  • Fashion and beauty videos highlighting red clothing, lipstick, or accessories
  • Commercial advertising featuring red brand elements or products

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 1ms per frame on modern hardware. The selective color detection requires HSV color space conversion and hue range checking, but these operations are highly efficient on modern GPUs. Performance scales with resolution but remains real-time capable even at 4K on mid-range GPUs. The effect uses a single rendering pass with no texture lookups or multi-pass operations. On mobile devices with OpenGL ES, performance is excellent for resolutions up to 1080p, with good performance at higher resolutions on modern mobile GPUs.

## Constructors ### GLSinCityVideoEffect() Initializes a new instance of the class. ```csharp public GLSinCityVideoEffect() ``` --- # Class GLSobelVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLSobelVideoEffect.html # Class GLSobelVideoEffect # Class GLSobelVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated Sobel edge detection filter to video frames using OpenGL/OpenGL ES shaders. This effect detects and highlights edges in the video by computing gradients in horizontal and vertical directions. ```csharp public class GLSobelVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The Sobel operator is implemented as a fragment shader that applies 3x3 convolution kernels to detect edges. All processing occurs on the GPU, ensuring real-time performance with minimal CPU overhead.

Effect Description: The Sobel operator is a discrete differentiation operator used in computer vision for edge detection. It works by computing the gradient magnitude of the image intensity at each pixel, emphasizing regions of high spatial frequency (edges). The result is typically bright edges on a dark background (or vice versa with invert enabled). The effect applies separate horizontal and vertical gradient calculations and combines them to produce the final edge-detected image.

Use Cases:

  • Computer vision applications requiring edge detection preprocessing
  • Object boundary detection and segmentation in video streams
  • Artistic video effects creating sketch-like or outline visuals
  • Motion detection and tracking by analyzing edge changes between frames
  • Quality control and inspection systems highlighting structural features
  • Medical imaging applications for feature enhancement

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 1ms per frame on modern hardware. Performance scales with resolution but remains real-time capable even at 4K resolutions on mid-range GPUs. The effect does not require CPU-GPU synchronization, making it suitable for high-throughput video processing pipelines. OpenGL ES implementation on mobile devices may show slightly reduced performance but remains real-time capable for typical video resolutions (up to 1080p).

## Constructors ### GLSobelVideoEffect() Initializes a new instance of the class. ```csharp public GLSobelVideoEffect() ``` ## Properties ### Invert Gets or sets a value indicating whether to invert colors to get dark edges on bright background. ```csharp public bool Invert { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When set to false, the effect produces the standard Sobel output with bright edges on a dark background, which is useful for edge emphasis and computer vision applications. When set to true, the colors are inverted, creating dark edges on a bright background, which can be more suitable for artistic effects or certain visualization scenarios. This inversion is performed in the GPU shader with no additional performance cost. ## See Also --- # Class GLSquareVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLSquareVideoEffect.html # Class GLSquareVideoEffect # Class GLSquareVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies a GPU-accelerated square pixelation effect to video frames using OpenGL shaders. This effect divides the video into a grid of square blocks, creating a mosaic or pixelated appearance by averaging colors within each block. ```csharp public class GLSquareVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in VideoCaptureCoreX, MediaPlayerCoreX, and Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

GPU Acceleration: This effect uses hardware-accelerated OpenGL shaders to perform real-time pixelation entirely on the GPU. The block averaging operation is optimized using texture sampling techniques for efficient processing.

Effect Description: The square effect divides the video frame into a uniform grid of square blocks and replaces each block with a solid color representing the average (or sampled) color of that region. This creates a mosaic or pixelated appearance that reduces image detail while maintaining overall composition and color distribution. The effect intensity depends on the block size.

Use Cases:

  • Privacy protection and censorship by obscuring faces or sensitive information
  • Artistic and retro visual effects for creative video production
  • Simulating low-resolution or 8-bit graphics aesthetics
  • Transition effects between scenes or video segments
  • Reducing bandwidth requirements by simplifying video content before compression
  • Creating abstract or stylized video presentations

Performance: Moderate GPU computational requirements that scale with block size. Larger blocks (fewer squares) result in faster processing, while smaller blocks (more detail) require more texture samples. Typically adds 1-3ms per frame depending on block size configuration and GPU capabilities. Performance is optimized through GPU texture sampling hardware.

## Constructors ### GLSquareVideoEffect() Initializes a new instance of the class. Creates a square pixelation effect for GPU-accelerated video processing. ```csharp public GLSquareVideoEffect() ``` ## See Also --- # Class GLSqueezeVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLSqueezeVideoEffect.html # Class GLSqueezeVideoEffect # Class GLSqueezeVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Represents a squeeze/pinch geometric distortion effect that creates an inward concave compression toward the center. ```csharp public class GLSqueezeVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS (requires OpenGL/OpenGL ES support)

Rendering Backend: OpenGL-accelerated

This effect applies a concave spherical distortion that pulls pixels inward toward the center of the frame, creating a squeezing or pinching appearance. The distortion is strongest at the center and gradually diminishes toward the edges, simulating the appearance of viewing the video through a concave lens or as if the center is being sucked into a vortex.

The squeeze/pinch effect is commonly used for:

  • Shrinking Effects: Simulating compression, implosion, or miniaturization
  • Vortex/Portal Effects: Creating suction or portal entry animations
  • Artistic Distortion: Abstract visual effects emphasizing center contraction
  • Transitions: Scene transitions suggesting collapse or disappearance
  • Emphasis Reduction: De-emphasizing background while keeping edges visible
  • Comedic Effects: Creating exaggerated shrinking or "being sucked in" visuals

This is an OpenGL-accelerated geometric distortion effect using GPU-based radial displacement in the opposite direction of the bulge effect. The effect performs efficient per-pixel coordinate transformation to create smooth concave curvature.

Performance: Real-time capable with GPU acceleration. Extremely efficient shader implementation with minimal computational overhead. Suitable for high-resolution video and live streaming.

Technical Details: Uses inverse radial distance calculations compared to the bulge effect, applying inward coordinate displacement. The distortion follows a negative curvature function to create the pinching effect while maintaining smooth transitions to undistorted edges.

Related Effects: See also for opposite outward expansion, for spiral distortion, and for perspective-based center effects.

## Constructors ### GLSqueezeVideoEffect() Initializes a new instance of the class. ```csharp public GLSqueezeVideoEffect() ``` #### Remarks Creates a squeeze/pinch effect using the OpenGL "squeeze" shader. The effect applies concave spherical distortion that pulls content toward the center point of the frame. --- # Class GLStretchVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLStretchVideoEffect.html # Class GLStretchVideoEffect # Class GLStretchVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Represents a stretch geometric distortion effect that elongates the video content from center to edges. ```csharp public class GLStretchVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS (requires OpenGL/OpenGL ES support)

Rendering Backend: OpenGL-accelerated

This effect applies a radial stretching distortion that elongates pixels outward from the center toward the edges of the frame. The effect creates a sense of motion or speed by stretching content radially, similar to motion blur effects in action photography or the "speed lines" seen in comics. The distortion is minimal at the center and increases progressively toward the frame edges.

The stretch effect is commonly used for:

  • Speed/Motion Effects: Simulating high-speed motion, acceleration, or warp speed
  • Impact Moments: Emphasizing dramatic action moments or impacts
  • Transitions: Dynamic transition effects suggesting forward motion
  • Comic Book Style: Creating stylized "speed lines" or motion emphasis
  • Focus Effects: Drawing attention to center elements while stretching background
  • Time Manipulation: Suggesting time dilation or relativistic effects

This is an OpenGL-accelerated geometric distortion effect using GPU-based radial expansion. The effect calculates directional stretching based on angle and distance from center, creating smooth radial elongation patterns.

Performance: Real-time capable with GPU acceleration. Highly efficient shader-based implementation with minimal performance impact. Suitable for live video processing and high frame rates.

Technical Details: Uses radial vector calculations to displace pixels along rays emanating from the center point. The displacement magnitude increases with distance from center, creating progressive stretching. The effect maintains aspect ratio while applying directional distortion.

Related Effects: See also for spherical expansion, for inward compression, and for rotational distortion.

## Constructors ### GLStretchVideoEffect() Initializes a new instance of the class. ```csharp public GLStretchVideoEffect() ``` #### Remarks Creates a stretch effect using the OpenGL "stretch" shader. The effect applies radial elongation from center to edges, with distortion intensity typically controlled through element properties. --- # Class GLTransformationVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLTransformationVideoEffect.html # Class GLTransformationVideoEffect # Class GLTransformationVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Transformation video effect (OpenGL). ```csharp public class GLTransformationVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Constructors ### GLTransformationVideoEffect() Initializes a new instance of the class. ```csharp public GLTransformationVideoEffect() ``` ## Properties ### FOV Gets or sets the field of view angle in degrees. ```csharp public float FOV { get; set; } ``` #### Property Value Parameters: - (float): ### Ortho Gets or sets the value indicating whether to use orthographic projection. ```csharp public bool Ortho { get; set; } ``` #### Property Value Parameters: - (bool): ### PivotX Gets or sets the rotation pivot point X coordinate, where 0 is a center. ```csharp public float PivotX { get; set; } ``` #### Property Value Parameters: - (float): ### PivotY Gets or sets the rotation pivot point Y coordinate, where 0 is a center. ```csharp public float PivotY { get; set; } ``` #### Property Value Parameters: - (float): ### PivotZ Gets or sets the rotation pivot point Z coordinate, where 0 is a center. ```csharp public float PivotZ { get; set; } ``` #### Property Value Parameters: - (float): ### RotationX Gets or sets the X-axis in degrees. ```csharp public float RotationX { get; set; } ``` #### Property Value Parameters: - (float): ### RotationY Gets or sets the Y-axis in degrees. ```csharp public float RotationY { get; set; } ``` #### Property Value Parameters: - (float): ### RotationZ Gets or sets the Z-axis in degrees. ```csharp public float RotationZ { get; set; } ``` #### Property Value Parameters: - (float): ### ScaleX Gets or sets the scale multiplier for the X-Axis. ```csharp public float ScaleX { get; set; } ``` #### Property Value Parameters: - (float): ### ScaleY Gets or sets the scale multiplier for the Y-Axis. ```csharp public float ScaleY { get; set; } ``` #### Property Value Parameters: - (float): ### TranslationX Gets or sets the translates the video at the X-Axis, in universal[0 - 1] coordinate. ```csharp public float TranslationX { get; set; } ``` #### Property Value Parameters: - (float): ### TranslationY Gets or sets the translates the video at the Y-Axis, in universal[0 - 1] coordinate. ```csharp public float TranslationY { get; set; } ``` #### Property Value Parameters: - (float): ### TranslationZ Gets or sets the translates the video at the Z-Axis, in universal[0 - 1] coordinate. ```csharp public float TranslationZ { get; set; } ``` #### Property Value Parameters: - (float): --- # Class GLTwirlVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLTwirlVideoEffect.html # Class GLTwirlVideoEffect # Class GLTwirlVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Represents a twirl/twist geometric distortion effect that creates spiral warping around the center point. ```csharp public class GLTwirlVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS (requires OpenGL/OpenGL ES support)

Rendering Backend: OpenGL-accelerated

This effect applies a twirl/twist distortion that spirals pixels around the center of the frame, creating a whirlpool or tornado-like effect. The distortion is strongest at the center and gradually diminishes toward the edges, creating a smooth radial twist pattern.

The twirl effect is commonly used for:

  • Transitions: Spiral wipe and spin transitions between scenes
  • Artistic Effects: Surreal, psychedelic visual styling
  • Music Videos: Dynamic, rotating visual effects synced to beat
  • Dream Sequences: Disorienting, kaleidoscopic effects
  • VJ Performances: Real-time spiral distortions for live mixing

This is an OpenGL-accelerated geometric distortion effect using GPU-based texture sampling and coordinate transformation. The effect performs radial distortion calculations on the GPU for real-time performance.

Performance: Real-time capable with GPU acceleration. Extremely efficient due to per-pixel shader operations. Suitable for high-resolution video (1080p, 4K) on modern GPUs.

Technical Details: Uses polar coordinate transformation to create spiral distortion. The effect applies angle rotation based on distance from center, creating the characteristic twirl pattern.

Related Effects: See also for outward bulging, for inward pinching, and for fisheye lens distortion.

## Constructors ### GLTwirlVideoEffect() Initializes a new instance of the class. ```csharp public GLTwirlVideoEffect() ``` #### Remarks Creates a twirl effect using the OpenGL "twirl" shader. The effect parameters are typically controlled through the underlying GStreamer element properties. --- # Enum GLVideoEffectID Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoEffectID.html # Enum GLVideoEffectID # Enum GLVideoEffectID **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Video effect ID for OpenGL video effects. ```csharp public enum GLVideoEffectID ``` ## Fields Parameters: - ColorBalance (): The color balance effect. - Grayscale (): The grayscale effect. - Resize (): The resize effect. - Deinterlace (): The deinterlace effect. - Flip (): The flip effect. - Blur (): Blur with 9x9 separable convolution effect. - FishEye (): The fish eye effect. - GlowLighting (): The glow lighting effect. - Heat (): The heat signature effect. - LumaX (): The luma cross processing effect. - Mirror (): The mirror effect. - Sepia (): The sepia effect. - Square (): The square effect. - XRay (): The X-ray effect. - Stretch (): The stretch effect. - LightTunnel (): The light tunnel effect. - Twirl (): The twirl effect. - Squeeze (): The squeeze effect. - SinCity (): The sin city movie gray-red effect. - Bulge (): The bulge effect. - Sobel (): The sobel effect. - Laplacian (): The laplacian effect. - Alpha (): The alpha channels effect. - Transformation (): The transformation effect. --- # Enum GLVideoMixerBlendEquation Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoMixerBlendEquation.html # Enum GLVideoMixerBlendEquation # Enum GLVideoMixerBlendEquation **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Blending equation. ```csharp public enum GLVideoMixerBlendEquation ``` ## Fields Parameters: - Add (): Add. - Subtract (): Subtract. - ReverseSubtract (): Reverse subtract. --- # Enum GLVideoMixerBlendFunction Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoMixerBlendFunction.html # Enum GLVideoMixerBlendFunction # Enum GLVideoMixerBlendFunction **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL video mixer blend function. ```csharp public enum GLVideoMixerBlendFunction ``` ## Fields Parameters: - Zero (): Zero. - One (): One. - SourceColor (): The source color. - OneMinusSourceColor (): The one minus source color. - DestinationColor (): The destination color. - OneMinusDestinationColor (): The one minus destination color. - SourceAlpha (): The source alpha. - OneMinusSourceAlpha (): The one minus source alpha. - DestinationAlpha (): The destination alpha. - OneMinusDestinationAlpha (): The one minus destination alpha. - ConstantColor (): The constant color. - OneMinusContantColor (): The one minus constant color. - ConstantAlpha (): The constant alpha. - OneMinusContantAlpha (): The one minus constant alpha. - SourceAlphaSaturate (): The source alpha saturate. --- # Class GLVideoMixerSettings Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoMixerSettings.html # Class GLVideoMixerSettings # Class GLVideoMixerSettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL video mixer settings. ```csharp public class GLVideoMixerSettings : VideoMixerBaseSettings ``` #### Inheritance #### Inherited Members ## Constructors ### GLVideoMixerSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public GLVideoMixerSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ### GLVideoMixerSettings(int, int, VideoFrameRate, List) Initializes a new instance of the class. ```csharp public GLVideoMixerSettings(int width, int height, VideoFrameRate frameRate, List streams) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. - streams (List < VideoMixerStream >): The streams. ## Methods ### AddStream(GLVideoMixerStream) Adds the stream. ```csharp public void AddStream(GLVideoMixerStream stream) ``` #### Parameters Parameters: - stream (GLVideoMixerStream): The stream. ### RemoveStream(GLVideoMixerStream) Removes the stream. ```csharp public void RemoveStream(GLVideoMixerStream stream) ``` #### Parameters Parameters: - stream (GLVideoMixerStream): The stream. ### SetStream(int, GLVideoMixerStream) Sets the stream. ```csharp public void SetStream(int index, GLVideoMixerStream stream) ``` #### Parameters Parameters: - index (int): The index. - stream (GLVideoMixerStream): The stream. --- # Class GLVideoMixerStream Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoMixerStream.html # Class GLVideoMixerStream # Class GLVideoMixerStream **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL video mixer stream settings. ```csharp public class GLVideoMixerStream : VideoMixerStream ``` #### Inheritance #### Inherited Members ## Constructors ### GLVideoMixerStream(Rect, uint, double) Initializes a new instance of the class. ```csharp public GLVideoMixerStream(Rect rectangle, uint zorder, double alpha = 1) ``` #### Parameters Parameters: - rectangle (Rect): The rectangle. - zorder (uint): The Z-order. - alpha (double): The alpha. ## Properties ### BlendConstantColorAlpha Gets or sets the blend constant color alpha. ```csharp public double BlendConstantColorAlpha { get; set; } ``` #### Property Value Parameters: - (double): ### BlendConstantColorBlue Gets or sets the blend constant color blue. ```csharp public double BlendConstantColorBlue { get; set; } ``` #### Property Value Parameters: - (double): ### BlendConstantColorGreen Gets or sets the blend constant color green. ```csharp public double BlendConstantColorGreen { get; set; } ``` #### Property Value Parameters: - (double): ### BlendConstantColorRed Gets or sets the blend constant color red. ```csharp public double BlendConstantColorRed { get; set; } ``` #### Property Value Parameters: - (double): ### BlendEquationAlpha Gets or sets the blend equation for alpha. ```csharp public GLVideoMixerBlendEquation BlendEquationAlpha { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendEquation): ### BlendEquationRGB Gets or sets the blend equation for RGB. ```csharp public GLVideoMixerBlendEquation BlendEquationRGB { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendEquation): ### BlendFunctionDesctinationRGB Gets or sets the blend function for destination RGB. ```csharp public GLVideoMixerBlendFunction BlendFunctionDesctinationRGB { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendFunction): ### BlendFunctionDestinationAlpha Gets or sets the blend function for destination alpha. ```csharp public GLVideoMixerBlendFunction BlendFunctionDestinationAlpha { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendFunction): ### BlendFunctionSourceAlpha Gets or sets the blend function for source alpha. ```csharp public GLVideoMixerBlendFunction BlendFunctionSourceAlpha { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendFunction): ### BlendFunctionSourceRGB Gets or sets the blend function for source RGB. ```csharp public GLVideoMixerBlendFunction BlendFunctionSourceRGB { get; set; } ``` #### Property Value Parameters: - (GLVideoMixerBlendFunction): ### Crop Gets or sets the crop rectangle. ```csharp public Rect Crop { get; set; } ``` #### Property Value Parameters: - (Rect): --- # Enum GLVideoRendererRotateMethod Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoRendererRotateMethod.html # Enum GLVideoRendererRotateMethod # Enum GLVideoRendererRotateMethod **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL rotate method. ```csharp public enum GLVideoRendererRotateMethod ``` ## Fields Parameters: - None (): The none. - _90C (): The 90 degrees clockwise. - _180 (): The 180 degrees. - _90CC (): The 90 degrees counterclockwise. - FlipHorizontal (): The horizontal flip. - FlipVertical (): The vertical flip. --- # Class GLVideoRendererSettings Link: api/VisioForge.Core.Types.X.OpenGL.GLVideoRendererSettings.html # Class GLVideoRendererSettings # Class GLVideoRendererSettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Class GLVideoRendererSettings. ```csharp public class GLVideoRendererSettings ``` #### Inheritance #### Inherited Members ## Properties ### ForceAspectRatio Gets or sets a value indicating whether scaling will respect original aspect ratio. ```csharp public bool ForceAspectRatio { get; set; } ``` #### Property Value Parameters: - (bool): ### IgnoreAlpha Gets or sets a value indicating whether alpha will be ignored and converted to black. ```csharp public bool IgnoreAlpha { get; set; } ``` #### Property Value Parameters: - (bool): ### PixelAspectRatio Gets or sets the pixel aspect ratio of the device. ```csharp public Tuple PixelAspectRatio { get; set; } ``` #### Property Value Parameters: - (Tuple < int , int >): ### Rotation Gets or sets the rotate method. ```csharp public GLVideoRendererRotateMethod Rotation { get; set; } ``` #### Property Value Parameters: - (GLVideoRendererRotateMethod): --- # Enum GLVirtualVideoSourceMode Link: api/VisioForge.Core.Types.X.OpenGL.GLVirtualVideoSourceMode.html # Enum GLVirtualVideoSourceMode # Enum GLVirtualVideoSourceMode **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Virtual video source mode (OpenGL). ```csharp public enum GLVirtualVideoSourceMode ``` ## Fields Parameters: - SMPTE (): SMPTE 100%% color bars. - Snow (): Random (television snow). - Black (): 100%% Black. - White (): 100%% White. - Red (): Red. - Green (): Green. - Blue (): Blue. - Checkers1 (): Checkers 1px. - Checkers2 (): Checkers 2px. - Checkers4 (): Checkers 4px. - Checkers8 (): Checkers 8px. - Circular (): Circular. - Blink (): Blink. - Mandelbrot (): Mandelbrot fractal. --- # Class GLVirtualVideoSourceSettings Link: api/VisioForge.Core.Types.X.OpenGL.GLVirtualVideoSourceSettings.html # Class GLVirtualVideoSourceSettings # Class GLVirtualVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll OpenGL virtual video source settings. ```csharp public class GLVirtualVideoSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GLVirtualVideoSourceSettings() Initializes a new instance of the class. ```csharp public GLVirtualVideoSourceSettings() ``` ## Properties ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### Mode Gets or sets the mode. ```csharp public GLVirtualVideoSourceMode Mode { get; set; } ``` #### Property Value Parameters: - (GLVirtualVideoSourceMode): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. --- # Class GLXRayVideoEffect Link: api/VisioForge.Core.Types.X.OpenGL.GLXRayVideoEffect.html # Class GLXRayVideoEffect # Class GLXRayVideoEffect **Namespace**: VisioForge.Core.Types.X.OpenGL **Assembly**: VisioForge.Core.dll Applies hardware-accelerated X-ray visualization effect to video frames using OpenGL/OpenGL ES shaders. This effect simulates X-ray imaging by inverting luminance values and applying a monochromatic blue-green color scheme characteristic of radiographic images. ```csharp public class GLXRayVideoEffect : GLBaseVideoEffect ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: Available in: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK (Cross-platform)

Platform Support: Windows, Linux, macOS, Android, iOS (OpenGL ES)

OpenGL Acceleration: This effect is fully GPU-accelerated using OpenGL 3.0+ on desktop platforms and OpenGL ES 2.0+ on mobile devices. The X-ray transformation is implemented as a fragment shader that inverts luminance, desaturates colors, and applies a characteristic blue-green tint. All color space transformations occur on the GPU in a single pass, ensuring real-time performance with zero CPU involvement.

Effect Description: The X-ray effect creates a visual appearance similar to medical radiographic imaging by inverting the brightness values of the video and applying a characteristic blue-green monochromatic color scheme. Dark areas become bright and vice versa, simulating how X-rays pass through less dense materials (appearing darker on film) while being absorbed by denser materials (appearing brighter). The effect desaturates the image and applies a cold blue-green tint typical of X-ray films and radiographic displays. This creates a haunting, ethereal visual that reveals internal structures and creates an otherworldly appearance. The result is reminiscent of medical imaging, security scanners, or sci-fi visualization effects.

Use Cases:

  • Science fiction films and games requiring futuristic scanning or analysis visuals
  • Music videos and artistic projects with surreal or otherworldly aesthetics
  • Horror and thriller productions creating eerie, unsettling atmospheres
  • Educational content simulating or demonstrating X-ray imaging concepts
  • Medical or scientific visualization projects requiring radiographic-style effects
  • Security and scanning simulation effects in games and interactive media

Performance Characteristics: This effect has minimal performance impact as it runs entirely on the GPU. Typical overhead is less than 0.5ms per frame on modern hardware. The X-ray transformation involves simple per-pixel operations (inversion, desaturation, and color tinting), making it extremely efficient. Performance is consistent across all resolutions and remains real-time capable even at 8K on modern GPUs. The effect requires no texture lookups or multi-pass rendering, adding virtually no latency to the video pipeline. On mobile devices with OpenGL ES, performance is excellent across all supported resolutions.

## Constructors ### GLXRayVideoEffect() Initializes a new instance of the class. ```csharp public GLXRayVideoEffect() ``` --- # Namespace VisioForge.Core.Types.X.OpenGL Link: api/VisioForge.Core.Types.X.OpenGL.html # Namespace VisioForge.Core.Types.X.OpenGL # Namespace VisioForge.Core.Types.X.OpenGL ### Classes Parameters: - (): Alpha channel video effect (OpenGL). Replaces selected color by alpha channel. - (): Base video effect for OpenGL. - (): Applies a GPU-accelerated blur effect to video frames using OpenGL shaders. This effect softens the video image by averaging pixel values with their neighbors, creating a smooth, out-of-focus appearance. - (): Represents a bulge geometric distortion effect that creates an outward spherical expansion from the center. - (): Color balance video effect (OpenGL). - (): Removes interlacing artifacts from video frames using GPU-accelerated OpenGL shaders. This effect converts interlaced video (alternating field lines) to progressive video by interpolating missing scan lines. - (): Class GLEquirectangularViewSettings. - (): Applies a GPU-accelerated fish-eye lens distortion effect to video frames using OpenGL shaders. This effect simulates the wide-angle, curved appearance characteristic of ultra-wide fish-eye camera lenses. - (): Class GLFlipVideoEffect. Implements the . - (): Applies hardware-accelerated glow lighting effect to video frames using OpenGL/OpenGL ES shaders. This effect enhances bright areas of the video by adding a soft, luminous halo around light sources and highlights, creating an ethereal, dreamlike quality or simulating light bloom and lens effects. - (): Converts video frames to grayscale (black and white) using GPU-accelerated OpenGL shaders. This effect removes all color information while preserving luminance values, creating a monochrome appearance. - (): Applies hardware-accelerated thermal heat map visualization effect to video frames using OpenGL/OpenGL ES shaders. This effect transforms video luminance values into a false-color heat map, mapping intensity to a color gradient from cool (dark) to hot (bright) tones. - (): Applies hardware-accelerated Laplacian edge detection filter to video frames using OpenGL/OpenGL ES shaders. This effect detects edges by computing the second derivative of image intensity, emphasizing regions of rapid intensity change. - (): Represents a light tunnel effect that creates a perspective distortion with radial light rays emanating from the center. - (): Applies hardware-accelerated luma cross-processing effect to video frames using OpenGL/OpenGL ES shaders. This effect simulates the photographic technique of cross-processing film, creating distinctive color shifts and contrast changes based on luminance values, resulting in surreal, high-contrast imagery with altered color relationships. - (): Applies a GPU-accelerated mirror reflection effect to video frames using OpenGL shaders. This effect creates horizontal or vertical symmetry by reflecting portions of the video image along a center axis. - (): OpenGL overlay settings. - (): Color balance video effect (OpenGL). - (): Video resize video effect (OpenGL). - (): Applies hardware-accelerated sepia tone color grading effect to video frames using OpenGL/OpenGL ES shaders. This effect transforms video colors to warm brown tones reminiscent of vintage photographs from the 19th and early 20th centuries. - (): Class GLShader. - (): Class GLShaderSettings. - (): Applies hardware-accelerated Sin City-style selective color effect to video frames using OpenGL/OpenGL ES shaders. This effect creates the iconic neo-noir visual style popularized by Frank Miller's graphic novels and film adaptations, rendering most of the scene in monochrome while preserving red color tones for dramatic emphasis. - (): Applies hardware-accelerated Sobel edge detection filter to video frames using OpenGL/OpenGL ES shaders. This effect detects and highlights edges in the video by computing gradients in horizontal and vertical directions. - (): Applies a GPU-accelerated square pixelation effect to video frames using OpenGL shaders. This effect divides the video into a grid of square blocks, creating a mosaic or pixelated appearance by averaging colors within each block. - (): Represents a squeeze/pinch geometric distortion effect that creates an inward concave compression toward the center. - (): Represents a stretch geometric distortion effect that elongates the video content from center to edges. - (): Transformation video effect (OpenGL). - (): Represents a twirl/twist geometric distortion effect that creates spiral warping around the center point. - (): OpenGL video mixer settings. - (): OpenGL video mixer stream settings. - (): Class GLVideoRendererSettings. - (): OpenGL virtual video source settings. - (): Applies hardware-accelerated X-ray visualization effect to video frames using OpenGL/OpenGL ES shaders. This effect simulates X-ray imaging by inverting luminance values and applying a monochromatic blue-green color scheme characteristic of radiographic images. ### Enums Parameters: - (): Alpha video effect mode (OpenGL). - (): Deinterlace video effect method (OpenGL). - (): Video flip method (OpenGL). - (): Video effect ID for OpenGL video effects. - (): Blending equation. - (): OpenGL video mixer blend function. - (): OpenGL rotate method. - (): Virtual video source mode (OpenGL). --- # Enum AudioOutputDeviceAPI Link: api/VisioForge.Core.Types.X.Output.AudioOutputDeviceAPI.html # Enum AudioOutputDeviceAPI # Enum AudioOutputDeviceAPI **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Audio output device API. ```csharp public enum AudioOutputDeviceAPI ``` ## Fields Parameters: - ALSA (): ALSA. - Pulse (): Pulse. - PipeWire (): PipeWire. - Decklink (): The Decklink device. - Default (): Default. --- # Class AudioOutputDeviceInfo Link: api/VisioForge.Core.Types.X.Output.AudioOutputDeviceInfo.html # Class AudioOutputDeviceInfo # Class AudioOutputDeviceInfo **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Audio output device info. ```csharp public class AudioOutputDeviceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioOutputDeviceInfo(Device) Initializes a new instance of the class. ```csharp public AudioOutputDeviceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### API Gets the API. ```csharp public AudioOutputDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioOutputDeviceAPI): ### DevicePath Gets device path. ```csharp public string DevicePath { get; } ``` #### Property Value Parameters: - (string): ### DisplayName Gets device name including API. ```csharp public string DisplayName { get; } ``` #### Property Value Parameters: - (string): ### Guid Gets or sets the unique identifier. ```csharp public Guid Guid { get; } ``` #### Property Value Parameters: - (Guid): ### InternalName Gets the internal name. ```csharp public string InternalName { get; } ``` #### Property Value Parameters: - (string): ### Name Gets device name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### GetDevice() Gets the device. ```csharp public Device GetDevice() ``` #### Returns Parameters: - (Device): Gst.Device. ### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class AVIOutput Link: api/VisioForge.Core.Types.X.Output.AVIOutput.html # Class AVIOutput # Class AVIOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll AVI output settings. Implements the . Implements the . ```csharp public class AVIOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AVIOutput(string) Initializes a new instance of the class. ```csharp public AVIOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3LameEncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Video Gets or sets the video encoder settings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class AWSS3Output Link: api/VisioForge.Core.Types.X.Output.AWSS3Output.html # Class AWSS3Output # Class AWSS3Output **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll AWS S3 output settings. ```csharp public class AWSS3Output : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AWSS3Output(AWSS3SinkSettings, IVideoEncoder, IAudioEncoder, IMediaBlockSettings) Initializes a new instance of the class. ```csharp public AWSS3Output(AWSS3SinkSettings settings, IVideoEncoder videoEnc, IAudioEncoder audioEnc, IMediaBlockSettings sink) ``` #### Parameters Parameters: - settings (AWSS3SinkSettings): The settings. - videoEnc (IVideoEncoder): The video encoder. - audioEnc (IAudioEncoder): The audio encoder. - sink (IMediaBlockSettings): The sink. ## Properties ### Audio Gets or sets the audio encoder settings. Audio encoder should be compatible with the sink settings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Settings Gets ot sets the settings. ```csharp public AWSS3SinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (AWSS3SinkSettings): ### Sink Gets or sets the sink settings. ```csharp public IMediaBlockSettings Sink { get; set; } ``` #### Property Value Parameters: - (IMediaBlockSettings): ### Video Gets or sets the video encoder settings. Video encoder should be compatible with the sink settings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class CustomBlocksOutputSettings Link: api/VisioForge.Core.Types.X.Output.CustomBlocksOutputSettings.html # Class CustomBlocksOutputSettings # Class CustomBlocksOutputSettings **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Custom Block output settings. Implements the Implements the ```csharp public class CustomBlocksOutputSettings : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Audio Gets or sets the audio block. ```csharp public MediaBlock Audio { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink block. ```csharp public MediaBlock Sink { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Video Gets or sets the video block. ```csharp public MediaBlock Video { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## See Also --- # Class DASHOutput Link: api/VisioForge.Core.Types.X.Output.DASHOutput.html # Class DASHOutput # Class DASHOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll DASH output settings. ```csharp public class DASHOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DASHOutput(DASHSinkSettings) Initializes a new instance of the class. ```csharp public DASHOutput(DASHSinkSettings settings) ``` #### Parameters Parameters: - settings (DASHSinkSettings): The settings. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Settings Gets or sets the sink settings. ```csharp public DASHSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (DASHSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class DecklinkOutput Link: api/VisioForge.Core.Types.X.Output.DecklinkOutput.html # Class DecklinkOutput # Class DecklinkOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Decklink output settings. ```csharp public class DecklinkOutput : IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DecklinkOutput(DecklinkVideoSinkSettings, DecklinkAudioSinkSettings) Initializes a new instance of the class. ```csharp public DecklinkOutput(DecklinkVideoSinkSettings video, DecklinkAudioSinkSettings audio) ``` #### Parameters Parameters: - video (DecklinkVideoSinkSettings): The video. - audio (DecklinkAudioSinkSettings): The audio. ## Properties ### Audio Gets the Decklink audio sink settings. ```csharp public DecklinkAudioSinkSettings Audio { get; } ``` #### Property Value Parameters: - (DecklinkAudioSinkSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Video Gets the Decklink video sink settings. ```csharp public DecklinkVideoSinkSettings Video { get; } ``` #### Property Value Parameters: - (DecklinkVideoSinkSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. Not implemented. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. Not implemented. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class DVOutput Link: api/VisioForge.Core.Types.X.Output.DVOutput.html # Class DVOutput # Class DVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll DV output settings. Implements the . Implements the . ```csharp public class DVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### DVOutput(string) Initializes a new instance of the class. ```csharp public DVOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Video Gets or sets the DV video encoder settings. ```csharp public DVVideoEncoderSettings Video { get; set; } ``` #### Property Value Parameters: - (DVVideoEncoderSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class FacebookLiveOutput Link: api/VisioForge.Core.Types.X.Output.FacebookLiveOutput.html # Class FacebookLiveOutput # Class FacebookLiveOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Facebook Live output settings. ```csharp public class FacebookLiveOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FacebookLiveOutput(string) Initializes a new instance of the class. ```csharp public FacebookLiveOutput(string key) ``` #### Parameters Parameters: - key (string): The key. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public FacebookLiveSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (FacebookLiveSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class FLACOutput Link: api/VisioForge.Core.Types.X.Output.FLACOutput.html # Class FLACOutput # Class FLACOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll FLAC output settings. ```csharp public class FLACOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FLACOutput(string) Initializes a new instance of the class. ```csharp public FLACOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for FLAC encoder. ```csharp public FLACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (FLACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class FLVOutput Link: api/VisioForge.Core.Types.X.Output.FLVOutput.html # Class FLVOutput # Class FLVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll FLV output settings. ```csharp public class FLVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FLVOutput() Initializes a new instance of the class. ```csharp public FLVOutput() ``` ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3LameEncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Video Gets or sets the video encoder settings. H264 encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings. ```csharp public IH264EncoderSettings Video { get; set; } ``` #### Property Value Parameters: - (IH264EncoderSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class GIFOutput Link: api/VisioForge.Core.Types.X.Output.GIFOutput.html # Class GIFOutput # Class GIFOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Animated GIF output settings. ```csharp public class GIFOutput : IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GIFOutput(string, GIFEncoderSettings) Initializes a new instance of the class. ```csharp public GIFOutput(string filename, GIFEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The filename. - settings (GIFEncoderSettings): The settings. ### GIFOutput(string) Initializes a new instance of the class. ```csharp public GIFOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Settings Gets or sets the settings. ```csharp public GIFEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (GIFEncoderSettings): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class HLSOutput Link: api/VisioForge.Core.Types.X.Output.HLSOutput.html # Class HLSOutput # Class HLSOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll HLS output settings. ```csharp public class HLSOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### HLSOutput(HLSSinkSettings) Initializes a new instance of the class. ```csharp public HLSOutput(HLSSinkSettings settings) ``` #### Parameters Parameters: - settings (HLSSinkSettings): The settings. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Settings Gets or sets the sink settings. ```csharp public HLSSinkSettings Settings { get; set; } ``` #### Property Value Parameters: - (HLSSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class HTTPMJPEGLiveOutput Link: api/VisioForge.Core.Types.X.Output.HTTPMJPEGLiveOutput.html # Class HTTPMJPEGLiveOutput # Class HTTPMJPEGLiveOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll HTTP MJPEG live output settings. ```csharp public class HTTPMJPEGLiveOutput : IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### HTTPMJPEGLiveOutput(int) Initializes a new instance of the class. ```csharp public HTTPMJPEGLiveOutput(int port) ``` #### Parameters Parameters: - port (int): The port. ## Properties ### Port Gets or sets the port. ```csharp public int Port { get; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Interface IAudioEncoder Link: api/VisioForge.Core.Types.X.Output.IAudioEncoder.html # Interface IAudioEncoder # Interface IAudioEncoder **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Audio encoder interface. ```csharp public interface IAudioEncoder : IMediaBlockSettings ``` #### Implements ## Methods ### GetSupportedBitrates() Gets the supported bitrates. ```csharp int[] GetSupportedBitrates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedChannelCounts() Gets the supported channel counts. ```csharp int[] GetSupportedChannelCounts() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. ### GetSupportedSampleRates() Gets the supported sample rates. ```csharp int[] GetSupportedSampleRates() ``` #### Returns Parameters: - (int [ ]): System.Int32[]. --- # Interface ICodecAvailable Link: api/VisioForge.Core.Types.X.Output.ICodecAvailable.html # Interface ICodecAvailable # Interface ICodecAvailable **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Codec availablility interface. ```csharp public interface ICodecAvailable ``` ## Methods ### IsAvailable() Determines whether this codec is available. ```csharp bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this codec is available; otherwise, false. --- # Interface IVideoEncoder Link: api/VisioForge.Core.Types.X.Output.IVideoEncoder.html # Interface IVideoEncoder # Interface IVideoEncoder **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Video encoder interface. ```csharp public interface IVideoEncoder : IMediaBlockSettings ``` #### Implements --- # Interface IXBaseOutput Link: api/VisioForge.Core.Types.X.Output.IXBaseOutput.html # Interface IXBaseOutput # Interface IXBaseOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Base output interface. ```csharp public interface IXBaseOutput ``` ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class JPEGCallbackOutput Link: api/VisioForge.Core.Types.X.Output.JPEGCallbackOutput.html # Class JPEGCallbackOutput # Class JPEGCallbackOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll JPEG callback output settings. ```csharp public class JPEGCallbackOutput : IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### JPEGCallbackOutput(MJPEGEncoderSettings, bool) Initializes a new instance of the class. ```csharp public JPEGCallbackOutput(MJPEGEncoderSettings settings, bool isSync) ``` #### Parameters Parameters: - settings (MJPEGEncoderSettings): The settings. - isSync (bool): if set to true is synchronize. ### JPEGCallbackOutput() Initializes a new instance of the class. ```csharp public JPEGCallbackOutput() ``` ## Properties ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Settings Gets or sets the settings. ```csharp public MJPEGEncoderSettings Settings { get; set; } ``` #### Property Value Parameters: - (MJPEGEncoderSettings): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ### OnJPEGFrame Occurs when new frame arrived. ```csharp public event EventHandler OnJPEGFrame ``` #### Event Type Parameters: - (EventHandler < byte [ ] >): --- # Class M4AOutput Link: api/VisioForge.Core.Types.X.Output.M4AOutput.html # Class M4AOutput # Class M4AOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll M4A (AAC) output settings. ```csharp public class M4AOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### M4AOutput(string) Initializes a new instance of the class. ```csharp public M4AOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MP4SinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MP4SinkSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MKVOutput Link: api/VisioForge.Core.Types.X.Output.MKVOutput.html # Class MKVOutput # Class MKVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MKV output settings. ```csharp public class MKVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MKVOutput(string, IVideoEncoder, IAudioEncoder) Initializes a new instance of the class. ```csharp public MKVOutput(string filename, IVideoEncoder videoEnc = null, IAudioEncoder audioEnc = null) ``` #### Parameters Parameters: - filename (string): The filename. - videoEnc (IVideoEncoder): The video encoder. - audioEnc (IAudioEncoder): The audio encoder. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3EncoderSettings, VorbisEncoderSettings, OPUSEncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MKVSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MKVSinkSettings): ### Video Gets or sets the video encoder settings. H264 encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings. HEVC encoders: MFHEVCEncoderSettings, AMFHEVCEncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. AV1 encoders: RAV1EEncoderSettings, SVTAV1EncoderSettings, NVENCAV1EncoderSettings, AMFAV1EncoderSettings, QSVAV1EncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MOVOutput Link: api/VisioForge.Core.Types.X.Output.MOVOutput.html # Class MOVOutput # Class MOVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MOV output settings. ```csharp public class MOVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MOVOutput(string) Initializes a new instance of the class. ```csharp public MOVOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3LameEncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MOVSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MOVSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings, RAV1EEncoderSettings, SVTAV1EncoderSettings, NVENCAV1EncoderSettings, AMFAV1EncoderSettings, QSVAV1EncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MP3Output Link: api/VisioForge.Core.Types.X.Output.MP3Output.html # Class MP3Output # Class MP3Output **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MP3 output settings. ```csharp public class MP3Output : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MP3Output(string) Initializes a new instance of the class. ```csharp public MP3Output(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for MP3 encoder. ```csharp public MP3EncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (MP3EncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MP4Output Link: api/VisioForge.Core.Types.X.Output.MP4Output.html # Class MP4Output # Class MP4Output **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MP4 output settings. ```csharp public class MP4Output : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MP4Output(string, IVideoEncoder, IAudioEncoder) Initializes a new instance of the class. ```csharp public MP4Output(string filename, IVideoEncoder videoEnc = null, IAudioEncoder audioEnc = null) ``` #### Parameters Parameters: - filename (string): The filename. - videoEnc (IVideoEncoder): The video encoder. - audioEnc (IAudioEncoder): The audio encoder. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3EncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MP4SinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MP4SinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings, RAV1EEncoderSettings, SVTAV1EncoderSettings, NVENCAV1EncoderSettings, AMFAV1EncoderSettings, QSVAV1EncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MPEGTSOutput Link: api/VisioForge.Core.Types.X.Output.MPEGTSOutput.html # Class MPEGTSOutput # Class MPEGTSOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MPEG-TS output settings. ```csharp public class MPEGTSOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MPEGTSOutput(string, bool) Initializes a new instance of the class. ```csharp public MPEGTSOutput(string filename, bool useAAC = true) ``` #### Parameters Parameters: - filename (string): The filename. - useAAC (bool): if set to true use AAC. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3EncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MPEGTSSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MPEGTSSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class MXFOutput Link: api/VisioForge.Core.Types.X.Output.MXFOutput.html # Class MXFOutput # Class MXFOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll MXF output settings. ```csharp public class MXFOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MXFOutput(string, MXFVideoStreamType, MXFAudioStreamType, IVideoEncoder, IAudioEncoder) Initializes a new instance of the class. ```csharp public MXFOutput(string filename, MXFVideoStreamType videoStreamType, MXFAudioStreamType audioStreamType, IVideoEncoder videoEnc = null, IAudioEncoder audioEnc = null) ``` #### Parameters Parameters: - filename (string): The filename. - videoStreamType (MXFVideoStreamType): Type of the video stream. - audioStreamType (MXFAudioStreamType): Type of the audio stream. - videoEnc (IVideoEncoder): The video encoder. - audioEnc (IAudioEncoder): The audio encoder. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings, MP3EncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public MXFSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (MXFSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class NDIOutput Link: api/VisioForge.Core.Types.X.Output.NDIOutput.html # Class NDIOutput # Class NDIOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll NDI output settings. ```csharp public class NDIOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NDIOutput(string) Initializes a new instance of the class. ```csharp public NDIOutput(string name) ``` #### Parameters Parameters: - name (string): ### NDIOutput(NDISinkSettings) Initializes a new instance of the class. ```csharp public NDIOutput(NDISinkSettings settings) ``` #### Parameters Parameters: - settings (NDISinkSettings): The settings. ## Properties ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public NDISinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (NDISinkSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class OGGTheoraOutput Link: api/VisioForge.Core.Types.X.Output.OGGTheoraOutput.html # Class OGGTheoraOutput # Class OGGTheoraOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Ogg Vorbis/Theora output settings. ```csharp public class OGGTheoraOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OGGTheoraOutput(string) Initializes a new instance of the class. ```csharp public OGGTheoraOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for Vorbis encoder. ```csharp public VorbisEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (VorbisEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public OGGSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (OGGSinkSettings): ### Video Gets or sets the Theora video encoder settings. ```csharp public TheoraEncoderSettings Video { get; set; } ``` #### Property Value Parameters: - (TheoraEncoderSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class OGGVorbisOutput Link: api/VisioForge.Core.Types.X.Output.OGGVorbisOutput.html # Class OGGVorbisOutput # Class OGGVorbisOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll OGG Vorbis output settings. ```csharp public class OGGVorbisOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OGGVorbisOutput(string) Initializes a new instance of the class. ```csharp public OGGVorbisOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for Vorbis encoder. ```csharp public VorbisEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (VorbisEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class OPUSOutput Link: api/VisioForge.Core.Types.X.Output.OPUSOutput.html # Class OPUSOutput # Class OPUSOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll OPUS output settings. ```csharp public class OPUSOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OPUSOutput() Initializes a new instance of the class. ```csharp public OPUSOutput() ``` ### OPUSOutput(string) Initializes a new instance of the class. ```csharp public OPUSOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for OPUS encoder. ```csharp public OPUSEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (OPUSEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class RTMPOutput Link: api/VisioForge.Core.Types.X.Output.RTMPOutput.html # Class RTMPOutput # Class RTMPOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll RTMP output settings. ```csharp public class RTMPOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### RTMPOutput(string) Initializes a new instance of the class. ```csharp public RTMPOutput(string url = null) ``` #### Parameters Parameters: - url (string): The URL. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public RTMPSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (RTMPSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class RTSPServerOutput Link: api/VisioForge.Core.Types.X.Output.RTSPServerOutput.html # Class RTSPServerOutput # Class RTSPServerOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll RTSP server output settings. ```csharp public class RTSPServerOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### RTSPServerOutput(RTSPServerSettings) Initializes a new instance of the class. ```csharp public RTSPServerOutput(RTSPServerSettings settings) ``` #### Parameters Parameters: - settings (RTSPServerSettings): The RTSP server settings. ## Properties ### Settings Gets the RTSP server settings. ```csharp public RTSPServerSettings Settings { get; } ``` #### Property Value Parameters: - (RTSPServerSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. Not used. Use the Settings. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. Not used. Use the Settings. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class RTSPServerSettings Link: api/VisioForge.Core.Types.X.Output.RTSPServerSettings.html # Class RTSPServerSettings # Class RTSPServerSettings **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Represents the settings for the RTSP server. ```csharp public class RTSPServerSettings ``` #### Inheritance #### Inherited Members ## Constructors ### RTSPServerSettings(IVideoEncoder, IAudioEncoder) Initializes a new instance of the class. ```csharp public RTSPServerSettings(IVideoEncoder videoEncoder, IAudioEncoder audioEncoder) ``` #### Parameters Parameters: - videoEncoder (IVideoEncoder): The video encoder. Use null to disable video stream. - audioEncoder (IAudioEncoder): The audio encoder. Use null to disable audio stream. ### RTSPServerSettings(Uri, IVideoEncoder, IAudioEncoder) Initializes a new instance of the class. ```csharp public RTSPServerSettings(Uri uri, IVideoEncoder videoEncoder, IAudioEncoder audioEncoder) ``` #### Parameters Parameters: - uri (Uri): The URI of the RTSP server. - videoEncoder (IVideoEncoder): The video encoder. Use null to disable video stream. - audioEncoder (IAudioEncoder): The audio encoder. Use null to disable audio stream. ## Properties ### Address Gets or sets the address of the RTSP server. ```csharp public string Address { get; set; } ``` #### Property Value Parameters: - (string): ### AudioEncoder Gets or sets the audio encoder for the RTSP server. ```csharp public IAudioEncoder AudioEncoder { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### Description Gets or sets the description of the RTSP server. ```csharp public string Description { get; set; } ``` #### Property Value Parameters: - (string): ### Latency Gets or sets the latency of the RTSP server. ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name of the RTSP server. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Password Gets or sets the password for the RTSP server authentication. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### Point Gets or sets the point for the RTSP server. ```csharp public string Point { get; set; } ``` #### Property Value Parameters: - (string): ### Port Gets or sets the port number for the RTSP server. ```csharp public int Port { get; set; } ``` #### Property Value Parameters: - (int): ### URL Gets the URL of the RTSP server. ```csharp public string URL { get; } ``` #### Property Value Parameters: - (string): ### Username Gets or sets the username for the RTSP server authentication. ```csharp public string Username { get; set; } ``` #### Property Value Parameters: - (string): ### VideoEncoder Gets or sets the video encoder for the RTSP server. ```csharp public IVideoEncoder VideoEncoder { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): --- # Class SeparateOutput Link: api/VisioForge.Core.Types.X.Output.SeparateOutput.html # Class SeparateOutput # Class SeparateOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Separate Output settings. ```csharp public class SeparateOutput : IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### SeparateOutput() Initializes a new instance of the class. ```csharp public SeparateOutput() ``` ## Properties ### AudioEncoder Gets or sets the audio encoder. ```csharp public MediaBlock AudioEncoder { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### AudioProcessor Gets or sets the audio processor. ```csharp public MediaBlock AudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### SharedAudioName Gets or sets the name of the shared audio sink/source pair. ```csharp public string SharedAudioName { get; } ``` #### Property Value Parameters: - (string): ### SharedVideoName Gets or sets the name of the shared video sink/source pair. ```csharp public string SharedVideoName { get; } ``` #### Property Value Parameters: - (string): ### Sink Gets or sets the sink. ```csharp public MediaBlock Sink { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### VideoEncoder Gets or sets the video encoder. ```csharp public MediaBlock VideoEncoder { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### VideoProcessor Gets or sets the video processor. ```csharp public MediaBlock VideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Writer Gets or sets the writer (optional, most of sinks have writer inside). ```csharp public MediaBlock Writer { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): System.Tuple<System.String, System.Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): System.Tuple<System.String, System.Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. #### Exceptions Parameters: - (NotImplementedException): --- # Class SpeexOutput Link: api/VisioForge.Core.Types.X.Output.SpeexOutput.html # Class SpeexOutput # Class SpeexOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll Speex output settings. ```csharp public class SpeexOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### SpeexOutput(string) Initializes a new instance of the class. ```csharp public SpeexOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ### SpeexOutput(string, SpeexEncoderSettings) Initializes a new instance of the class. ```csharp public SpeexOutput(string filename, SpeexEncoderSettings settings) ``` #### Parameters Parameters: - filename (string): The filename. - settings (SpeexEncoderSettings): The settings. ## Properties ### Audio Gets the audio encoder settings for OPUS encoder. ```csharp public SpeexEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (SpeexEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class SRTOutput Link: api/VisioForge.Core.Types.X.Output.SRTOutput.html # Class SRTOutput # Class SRTOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll SRT output settings. ```csharp public class SRTOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### SRTOutput(string) Initializes a new instance of the class. ```csharp public SRTOutput(string url) ``` #### Parameters Parameters: - url (string): The URL. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: AAC, MP3. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public SRTSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (SRTSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: All H264, HEVC, MPEG-2, AV1. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class WAVOutput Link: api/VisioForge.Core.Types.X.Output.WAVOutput.html # Class WAVOutput # Class WAVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll WAV output settings. ```csharp public class WAVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WAVOutput(string) Initializes a new instance of the class. ```csharp public WAVOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for WAV encoder. ```csharp public WAVEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (WAVEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class WavPackOutput Link: api/VisioForge.Core.Types.X.Output.WavPackOutput.html # Class WavPackOutput # Class WavPackOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll WavPack output settings. ```csharp public class WavPackOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WavPackOutput(string) Initializes a new instance of the class. ```csharp public WavPackOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for WavPack encoder. ```csharp public WavPackEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (WavPackEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class WebMOutput Link: api/VisioForge.Core.Types.X.Output.WebMOutput.html # Class WebMOutput # Class WebMOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll WebM output settings. ```csharp public class WebMOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WebMOutput(string) Initializes a new instance of the class. ```csharp public WebMOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets or sets the audio encoder settings. Use VorbisEncoderSettings or OPUSEncoderSettings. ```csharp public IAudioEncoder Audio { get; set; } ``` #### Property Value Parameters: - (IAudioEncoder): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Video Gets or sets the video encoder settings. Use VP8EncoderSettings, VP9EncoderSettings, QSVVP9EncoderSettings, RAV1EEncoderSettings, SVTAV1EncoderSettings, NVENCAV1EncoderSettings, AMFAV1EncoderSettings, or QSVAV1EncoderSettings classes. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class WMAOutput Link: api/VisioForge.Core.Types.X.Output.WMAOutput.html # Class WMAOutput # Class WMAOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll WMA output settings. ```csharp public class WMAOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WMAOutput(string) Initializes a new instance of the class. ```csharp public WMAOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings for WMA encoder. ```csharp public WMAEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (WMAEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Class WMVOutput Link: api/VisioForge.Core.Types.X.Output.WMVOutput.html # Class WMVOutput # Class WMVOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll WMV output settings. ```csharp public class WMVOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WMVOutput(string) Initializes a new instance of the class. ```csharp public WMVOutput(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Audio Gets the audio encoder settings. ```csharp public WMAEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (WMAEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Video Gets the video encoder settings. ```csharp public WMVEncoderSettings Video { get; set; } ``` #### Property Value Parameters: - (WMVEncoderSettings): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Namespace VisioForge.Core.Types.X.Output Link: api/VisioForge.Core.Types.X.Output.html # Namespace VisioForge.Core.Types.X.Output # Namespace VisioForge.Core.Types.X.Output ### Classes Parameters: - (): AVI output settings. Implements the . Implements the . - (): AWS S3 output settings. - (): Audio output device info. - (): Custom Block output settings. Implements the Implements the - (): DASH output settings. - (): DV output settings. Implements the . Implements the . - (): Decklink output settings. - (): FLAC output settings. - (): FLV output settings. - (): Facebook Live output settings. - (): Animated GIF output settings. - (): HLS output settings. - (): HTTP MJPEG live output settings. - (): JPEG callback output settings. - (): M4A (AAC) output settings. - (): MKV output settings. - (): MOV output settings. - (): MP3 output settings. - (): MP4 output settings. - (): MPEG-TS output settings. - (): MXF output settings. - (): NDI output settings. - (): Ogg Vorbis/Theora output settings. - (): OGG Vorbis output settings. - (): OPUS output settings. - (): RTMP output settings. - (): RTSP server output settings. - (): Represents the settings for the RTSP server. - (): SRT output settings. - (): Separate Output settings. - (): Speex output settings. - (): WAV output settings. - (): WMA output settings. - (): WMV output settings. - (): WavPack output settings. - (): WebM output settings. - (): YouTube output settings. ### Interfaces Parameters: - (): Audio encoder interface. - (): Codec availablility interface. - (): Video encoder interface. - (): Base output interface. ### Enums Parameters: - (): Audio output device API. --- # Class YouTubeOutput Link: api/VisioForge.Core.Types.X.Output.YouTubeOutput.html # Class YouTubeOutput # Class YouTubeOutput **Namespace**: VisioForge.Core.Types.X.Output **Assembly**: VisioForge.Core.dll YouTube output settings. ```csharp public class YouTubeOutput : IVideoEditXBaseOutput, IVideoCaptureXBaseOutput, IXBaseOutput ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### YouTubeOutput(string) Initializes a new instance of the class. ```csharp public YouTubeOutput(string key) ``` #### Parameters Parameters: - key (string): The key. ## Properties ### Audio Gets or sets the audio encoder settings. Supported encoders: VOAACEncoderSettings, AVENCAACEncoderSettings, MFAACEncoderSettings. ```csharp public IAACEncoderSettings Audio { get; set; } ``` #### Property Value Parameters: - (IAACEncoderSettings): ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Sink Gets or sets the sink settings. ```csharp public YouTubeSinkSettings Sink { get; set; } ``` #### Property Value Parameters: - (YouTubeSinkSettings): ### Video Gets or sets the video encoder settings. Supported encoders: OpenH264EncoderSettings, AMFH264EncoderSettings, NVENCH264EncoderSettings, QSVH264EncoderSettings, MFHEVCEncoderSettings, AMFH265EncoderSettings, NVENCHEVCEncoderSettings, QSVHEVCEncoderSettings. ```csharp public IVideoEncoder Video { get; set; } ``` #### Property Value Parameters: - (IVideoEncoder): ## Methods ### GetAudioEncoders() Gets the audio encoders. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### GetFilename() Gets the filename. ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): System.String. ### GetVideoEncoders() Gets the video encoders. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Tuple<System.String, Type>[]. ### SetFilename(string) Sets the filename. ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. --- # Interface IPhotography Link: api/VisioForge.Core.Types.X.Photography.IPhotography.html # Interface IPhotography # Interface IPhotography **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Interface IPhotography - used to get and set camera settings. ```csharp public interface IPhotography ``` ## Methods ### GetAperture(out uint) Gets the aperture. ```csharp bool GetAperture(out uint aperture) ``` #### Parameters Parameters: - aperture (uint): The aperture. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetColorToneMode(out PhotographyColorToneMode) Gets the color tone mode. ```csharp bool GetColorToneMode(out PhotographyColorToneMode mode) ``` #### Parameters Parameters: - mode (PhotographyColorToneMode): The mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetEVCompensation(out float) Get the ev compensation value. ```csharp bool GetEVCompensation(out float ev_comp) ``` #### Parameters Parameters: - ev_comp (float): The ev comp. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetExposureMode(out PhotographyExposureMode) Gets the exposure mode. ```csharp bool GetExposureMode(out PhotographyExposureMode exposureMode) ``` #### Parameters Parameters: - exposureMode (PhotographyExposureMode): The exposure mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetExposureTime(out uint) Get the fixed exposure time (in ms). ```csharp bool GetExposureTime(out uint exposureTime) ``` #### Parameters Parameters: - exposureTime (uint): The exposure. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetFlashMode(out PhotographyFlashMode) Gets the flash mode. ```csharp bool GetFlashMode(out PhotographyFlashMode flash_mode) ``` #### Parameters Parameters: - flash_mode (PhotographyFlashMode): The flash mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetFlickerMode(out PhotographyFlickerReductionMode) Gets the flicker mode. ```csharp bool GetFlickerMode(out PhotographyFlickerReductionMode mode) ``` #### Parameters Parameters: - mode (PhotographyFlickerReductionMode): The mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetFocusMode(out PhotographyFocusMode) Gets the focus mode. ```csharp bool GetFocusMode(out PhotographyFocusMode mode) ``` #### Parameters Parameters: - mode (PhotographyFocusMode): The mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetISO(out uint) Get the ISO value (light sensivity). ```csharp bool GetISO(out uint iso_speed) ``` #### Parameters Parameters: - iso_speed (uint): The iso speed. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetNoiseReduction(out PhotographyNoiseReduction) Gets the noise reduction. ```csharp bool GetNoiseReduction(out PhotographyNoiseReduction noise_reduction) ``` #### Parameters Parameters: - noise_reduction (PhotographyNoiseReduction): The noise reduction. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetSceneMode(out PhotographySceneMode) Gets the scene mode. ```csharp bool GetSceneMode(out PhotographySceneMode scene_mode) ``` #### Parameters Parameters: - scene_mode (PhotographySceneMode): The scene mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetWhiteBalanceMode(out PhotographyWhiteBalanceMode) Gets the white balance mode. ```csharp bool GetWhiteBalanceMode(out PhotographyWhiteBalanceMode wb_mode) ``` #### Parameters Parameters: - wb_mode (PhotographyWhiteBalanceMode): The wb mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetZoom(out float) Gets the zoom. ```csharp bool GetZoom(out float zoom) ``` #### Parameters Parameters: - zoom (float): The zoom. #### Returns Parameters: - (bool): true if successful, false otherwise. ### PrepareForCapture() Start preparations for capture. Preparations can take indeterminate amount of time and func callback is called after preparations are done. Image capture will begin after callback returns. ```csharp bool PrepareForCapture() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetAperture(uint) Sets the aperture. ```csharp bool SetAperture(uint aperture) ``` #### Parameters Parameters: - aperture (uint): The aperture. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetAutoFocus(bool) Sets the automatic focus. ```csharp void SetAutoFocus(bool on) ``` #### Parameters Parameters: - True (bool): if set to true [on]. ### SetColorToneMode(PhotographyColorToneMode) Sets the color tone mode. ```csharp bool SetColorToneMode(PhotographyColorToneMode tone_mode) ``` #### Parameters Parameters: - tone_mode (PhotographyColorToneMode): The tone mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetEVCompensation(float) Sets the ev compensation. ```csharp bool SetEVCompensation(float ev_comp) ``` #### Parameters Parameters: - ev_comp (float): The ev comp. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetExposureMode(PhotographyExposureMode) Sets the exposure mode. ```csharp bool SetExposureMode(PhotographyExposureMode value) ``` #### Parameters Parameters: - value (PhotographyExposureMode): The value. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetExposureTime(uint) Set the fixed exposure time (in ms). ```csharp bool SetExposureTime(uint exposure) ``` #### Parameters Parameters: - exposure (uint): The exposure. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetFlashMode(PhotographyFlashMode) Sets the flash mode. ```csharp bool SetFlashMode(PhotographyFlashMode flash_mode) ``` #### Parameters Parameters: - flash_mode (PhotographyFlashMode): The flash mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetFlickerMode(PhotographyFlickerReductionMode) Sets the flicker mode. ```csharp bool SetFlickerMode(PhotographyFlickerReductionMode mode) ``` #### Parameters Parameters: - mode (PhotographyFlickerReductionMode): The mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetFocusMode(PhotographyFocusMode) Sets the focus mode. ```csharp bool SetFocusMode(PhotographyFocusMode mode) ``` #### Parameters Parameters: - mode (PhotographyFocusMode): The mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetISO(uint) Sets the ISO. ```csharp bool SetISO(uint iso_speed) ``` #### Parameters Parameters: - iso_speed (uint): The iso speed. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetNoiseReduction(PhotographyNoiseReduction) Sets the noise reduction. ```csharp bool SetNoiseReduction(PhotographyNoiseReduction noise_reduction) ``` #### Parameters Parameters: - noise_reduction (PhotographyNoiseReduction): The noise reduction. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetSceneMode(PhotographySceneMode) Sets the scene mode. ```csharp bool SetSceneMode(PhotographySceneMode scene_mode) ``` #### Parameters Parameters: - scene_mode (PhotographySceneMode): The scene mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetWhiteBalanceMode(PhotographyWhiteBalanceMode) Sets the white balance mode. ```csharp bool SetWhiteBalanceMode(PhotographyWhiteBalanceMode wb_mode) ``` #### Parameters Parameters: - wb_mode (PhotographyWhiteBalanceMode): The wb mode. #### Returns Parameters: - (bool): true if successful, false otherwise. ### SetZoom(float) Sets the zoom. ```csharp bool SetZoom(float zoom) ``` #### Parameters Parameters: - zoom (float): The zoom. #### Returns Parameters: - (bool): true if successful, false otherwise. --- # Enum PhotographyColorToneMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyColorToneMode.html # Enum PhotographyColorToneMode # Enum PhotographyColorToneMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Modes for special color effects. ```csharp public enum PhotographyColorToneMode ``` ## Fields Parameters: - Normal (): No effects. - Sepia (): Sepia. - Negative (): Negative. - Grayscale (): Grayscale. - Natural (): Natural. - Vivid (): Vivid. - Colorswap (): Colorswap. - Solarize (): Solarize. - OutOfFocus (): Out of focus. - SkyBlue (): Sky blue. - GrassGreen (): Grass green. - SkinWhiten (): Skin whiten. - Posterize (): Posterize. - Whiteboard (): Whiteboard. - Blackboard (): Blackboard. - Aqua (): Aqua. - Emboss (): Emboss. - Sketch (): Sketch. - Neon (): Neon. --- # Enum PhotographyExposureMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyExposureMode.html # Enum PhotographyExposureMode # Enum PhotographyExposureMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Photography exposure mode. ```csharp public enum PhotographyExposureMode ``` ## Fields Parameters: - Auto (): Adjust exposure automatically. - Manual (): Disable automatic exposure adjustment. --- # Enum PhotographyFlashMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyFlashMode.html # Enum PhotographyFlashMode # Enum PhotographyFlashMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Modes for flash control. ```csharp public enum PhotographyFlashMode ``` ## Fields Parameters: - Auto (): Fire flash automatically according to lighting conditions. - False (): Never fire flash. - True (): Always fire flash. - FillIn (): Fill in flash. - RedEye (): Flash mode for reducing chance of capturing red eyes. --- # Enum PhotographyFlickerReductionMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyFlickerReductionMode.html # Enum PhotographyFlickerReductionMode # Enum PhotographyFlickerReductionMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Reduce flicker in video caused by light source fluctuation. ```csharp public enum PhotographyFlickerReductionMode ``` ## Fields Parameters: - False (): Disable flicker reduction. - Reduction50Hz (): 50Hz flicker reduction. - Reduction60Hz (): 60Hz flicker reduction. - Auto (): Choose mode automatically. --- # Enum PhotographyFocusMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyFocusMode.html # Enum PhotographyFocusMode # Enum PhotographyFocusMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Choose mode for focusing algorithm. ```csharp public enum PhotographyFocusMode ``` ## Fields Parameters: - Auto (): Choose focus mode automatically. - Macro (): Mode for focusing objects close to lens. - Portrait (): Mode for portraits. - Infinity (): Mode for landscapes and far away objects. - Hyperfocal (): Mode for maximum depth of field, keeping focus acceptable both in infinity and as close objects as possible. - Extended (): Extended focus mode. - ContinuousNormal (): Continuous autofocus mode. - ContinuousExtended (): Extended continuous autofocus mode. - Manual (): Disable automatic focusing and keep current value. GstPhotography:lens-focus property can be used to change focus manually. --- # Enum PhotographyFocusStatus Link: api/VisioForge.Core.Types.X.Photography.PhotographyFocusStatus.html # Enum PhotographyFocusStatus # Enum PhotographyFocusStatus **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Status of the focusing operation, used in Photography autofocus done message. ```csharp public enum PhotographyFocusStatus ``` ## Fields Parameters: - None (): No status available. - Running (): Focusing is ongoing. - Fail (): Focusing failed. - Success (): Focusing succeeded. --- # Enum PhotographyNoiseReduction Link: api/VisioForge.Core.Types.X.Photography.PhotographyNoiseReduction.html # Enum PhotographyNoiseReduction # Enum PhotographyNoiseReduction **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Noise Reduction features of a photography capture or filter element. ```csharp [Flags] public enum PhotographyNoiseReduction ``` ## Fields Parameters: - None (): None. - Bayer (): Adaptive noise reduction on Bayer format. - Ycc (): Reduces the noise on Y and 2-chroma images. - Temporal (): Multi-frame adaptive NR, provided for the video mode. - Fixed (): Fixed Pattern Noise refers to noise that does not change between frames. The noise is removed from the sensor image, by subtracting a previously-captured black image in memory. - Extra (): Extra Noise Reduction. In the case of high-ISO capturing, some noise remains after YCC NR. XNR reduces this remaining noise. --- # Enum PhotographySceneMode Link: api/VisioForge.Core.Types.X.Photography.PhotographySceneMode.html # Enum PhotographySceneMode # Enum PhotographySceneMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Each mode contains preset Photography options in order to produce good capturing result in certain scene. ```csharp public enum PhotographySceneMode ``` ## Fields Parameters: - Manual (): Set individual options manually. - Closeup (): Mode for close objects. - Portrait (): Mode for portraits. - Landscape (): Mode for landscapes. - Sport (): Mode for scene with fast motion. - Night (): Mode for night conditions. - Auto (): Choose scene mode automatically. - Action (): Take photos of fast moving objects. - NightPortrait (): Take people pictures at night. - Theatre (): Take photos in a theater. - Beach (): Take pictures on the beach. - Snow (): Take pictures on the snow. - Sunset (): Take sunset photos. - SteadyPhoto (): Avoid blurry pictures (for example, due to hand shake). - Fireworks (): For shooting firework displays. - Party (): Take indoor low-light shot. - Candlelight (): Capture the naturally warm color of scenes lit by candles. - Barcode (): Applications are looking for a barcode. - Backlight (): Backlit photos. - Flowers (): For shooting flowers. - Ar (): Specific for Augmented Reality. - Hdr (): High Dynamic Range photography. --- # Enum PhotographyWhiteBalanceMode Link: api/VisioForge.Core.Types.X.Photography.PhotographyWhiteBalanceMode.html # Enum PhotographyWhiteBalanceMode # Enum PhotographyWhiteBalanceMode **Namespace**: VisioForge.Core.Types.X.Photography **Assembly**: VisioForge.Core.dll Photography API white balance mode. ```csharp public enum PhotographyWhiteBalanceMode ``` ## Fields Parameters: - Auto (): Choose white balance mode automatically. - Daylight (): Mode for daylight conditions. - Cloudy (): Mode for cloudy conditions. - Sunset (): Mode for sunset conditions. - Tungsten (): Mode for tungsten lighting. - Fluorescent (): Mode for fluorescent lighting. - Manual (): Disable automatic white balance adjustment and keep current values. - Warmluorescent (): Mode for warm fluorescent lighting. - Shade (): Mode for shade lighting. --- # Namespace VisioForge.Core.Types.X.Photography Link: api/VisioForge.Core.Types.X.Photography.html # Namespace VisioForge.Core.Types.X.Photography # Namespace VisioForge.Core.Types.X.Photography ### Interfaces Parameters: - (): Interface IPhotography - used to get and set camera settings. ### Enums Parameters: - (): Modes for special color effects. - (): Photography exposure mode. - (): Modes for flash control. - (): Reduce flicker in video caused by light source fluctuation. - (): Choose mode for focusing algorithm. - (): Status of the focusing operation, used in Photography autofocus done message. - (): Noise Reduction features of a photography capture or filter element. - (): Each mode contains preset Photography options in order to produce good capturing result in certain scene. - (): Photography API white balance mode. --- # Enum PixelFormatX Link: api/VisioForge.Core.Types.X.PixelFormatX.html # Enum PixelFormatX # Enum PixelFormatX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Specifies various pixel formats for images and video frames within the VisioForge X engine. This enumeration defines how color data is stored and interpreted for each pixel. ```csharp public enum PixelFormatX ``` #### Extension Methods ## Fields Parameters: - Indexed (): The pixel data contains color-indexed values, meaning the values are an index to colors in the system color table, as opposed to individual color values. - Gdi (): The pixel data contains GDI (Graphics Device Interface) colors. - Alpha (): The pixel data contains alpha values that are not premultiplied. - PAlpha (): The pixel format contains premultiplied alpha values. - Extended (): Reserved for future use or extended pixel formats. - Canonical (): The default pixel format of 32 bits per pixel. The format specifies 24-bit color depth and an 8-bit alpha channel. - Undefined (): The pixel format is undefined. - DontCare (): No pixel format is specified. This value is typically used as a placeholder or when the format is not relevant. - Format1bppIndexed (): Specifies that the pixel format is 1 bit per pixel and that it uses indexed color. The color table therefore has two colors in it. - Format4bppIndexed (): Specifies that the format is 4 bits per pixel, indexed. - Format8bppIndexed (): Specifies that the format is 8 bits per pixel, indexed. The color table therefore has 256 colors in it. - Format16bppGrayScale (): The pixel format is 16 bits per pixel. The color information specifies 65536 shades of gray. - Format16bppRgb555 (): Specifies that the format is 16 bits per pixel; 5 bits each are used for the red, green, and blue components. The remaining bit is not used. - Format16bppRgb565 (): Specifies that the format is 16 bits per pixel; 5 bits are used for the red component, 6 bits are used for the green component, and 5 bits are used for the blue component. - Format16bppArgb1555 (): The pixel format is 16 bits per pixel. The color information specifies 32,768 shades of color, of which 5 bits are red, 5 bits are green, 5 bits are blue, and 1 bit is alpha. - Format24bppRgb (): Specifies that the format is 24 bits per pixel; 8 bits each are used for the red, green, and blue components. - Format32bppRgb (): Specifies that the format is 32 bits per pixel; 8 bits each are used for the red, green, and blue components. The remaining 8 bits are not used. - Format32bppArgb (): Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components. - Format32bppPArgb (): Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied, according to the alpha component. - Format48bppRgb (): Specifies that the format is 48 bits per pixel; 16 bits each are used for the red, green, and blue components. - Format64bppArgb (): Specifies that the format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components. - Format64bppPArgb (): Specifies that the format is 64 bits per pixel; 16 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component. - Max (): The maximum value for this enumeration. ## Examples
// Example of specifying a pixel format for a video frame.
// videoFrame.Format = PixelFormatX.Format32bppArgb;

// When processing raw pixel data, you would use this information to correctly interpret the byte array.
// if (pixelFormat == PixelFormatX.Format24bppRgb)
// {
//     // Process 3 bytes per pixel (Red, Green, Blue)
// }
## Remarks The choice of pixel format is crucial for correct rendering, processing, and compatibility with different hardware and software components. It includes common RGB, indexed, and alpha-channel formats. --- # Enum RTPMediaType Link: api/VisioForge.Core.Types.X.RTPMediaType.html # Enum RTPMediaType # Enum RTPMediaType **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents the media types supported in RTP (Real-time Transport Protocol) payloads. This enumeration covers common audio and video codecs used in real-time streaming applications. ```csharp public enum RTPMediaType ``` ## Fields Parameters: - H264 (): H.264/AVC (Advanced Video Coding). Widely used video compression standard offering good quality and compression. Common in streaming, broadcasting, and video conferencing. - H265 (): H.265/HEVC (High Efficiency Video Coding). Next-generation video codec offering improved compression over H.264. Designed for 4K/8K resolutions and HDR content. - VP8 (): VP8 Video Codec. Open-source video codec developed by Google/WebM Project. Commonly used in WebRTC and web-based video applications. - VP9 (): VP9 Video Codec Successor to VP8, offering improved compression efficiency. Used extensively by YouTube and other web platforms. - JPEG (): Motion JPEG. Series of JPEG images used for video compression. Commonly used in security cameras and professional video equipment. - RAW (): Raw Video Format. Uncompressed video data in its native format. Used in professional video production and high-quality capture. - AAC (): Advanced Audio Coding (AAC). Digital audio compression standard offering high quality at lower bitrates. Widely used in streaming services, digital broadcasting, and mobile devices. - Opus (): Opus Audio Codec. Open-source, highly versatile audio codec. Excellent for both speech and music, with low latency for real-time applications. - Vorbis (): Vorbis Audio Codec. Free and open-source audio compression format. Popular in game development and open-source multimedia applications. - MP3 (): MPEG Audio Layer III (MP3). Popular audio compression format with wide device support. Commonly used for music distribution and streaming. - PCM (): Pulse Code Modulation (PCM). Raw digital representation of sampled analog signals. Used in professional audio equipment and high-quality recordings. - G722 (): G.722 Audio Codec. Wideband audio codec operating at 16 kHz sampling rate. Common in VoIP systems and digital telephony applications. - AMR (): Adaptive Multi-Rate (AMR) Audio Codec. Speech codec optimized for voice communication. Widely used in GSM and UMTS mobile phone systems. - Unknown (): The media type is unknown or not specified. ## Examples
// Configure an RTP sender to use H.264 video.
// rtpSender.VideoMediaType = RTPMediaType.H264;

// Configure an RTP receiver to expect Opus audio.
// rtpReceiver.AudioMediaType = RTPMediaType.Opus;

// In an RTP stream information event, check the media type.
// public void OnRTPStreamInfo(object sender, RTPStreamInfoEventArgs e)
// {
//     if (e.MediaType == RTPMediaType.H264)
//     {
//         Console.WriteLine("Received H.264 video over RTP.");
//     }
// }
## Remarks The RTP protocol is widely used for transmitting real-time data such as audio and video over IP networks. This enum helps in identifying the specific codec and format of the media being transported. --- # Delegate SilenceDetectionCallbackDelegate Link: api/VisioForge.Core.Types.X.SilenceDetectionCallbackDelegate.html # Delegate SilenceDetectionCallbackDelegate # Delegate SilenceDetectionCallbackDelegate **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Delegate for silence detection callbacks. Receives real-time silence detection data during audio processing. ```csharp public delegate void SilenceDetectionCallbackDelegate(SilenceDetectionData data) ``` #### Parameters Parameters: - data (SilenceDetectionData): The silence detection data containing current audio level and silence state. --- # Class SilenceDetectionData Link: api/VisioForge.Core.Types.X.SilenceDetectionData.html # Class SilenceDetectionData # Class SilenceDetectionData **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents real-time silence detection data provided through callback events. This class contains information about the current audio level and whether silence is currently being detected, enabling applications to respond immediately to silence detection state changes. ```csharp public class SilenceDetectionData ``` #### Inheritance #### Inherited Members ## Constructors ### SilenceDetectionData() Initializes a new instance of the class with default values. ```csharp public SilenceDetectionData() ``` ### SilenceDetectionData(TimeSpan, bool, double, double) Initializes a new instance of the class with specified values. ```csharp public SilenceDetectionData(TimeSpan timestamp, bool isSilent, double levelDb, double thresholdDb) ``` #### Parameters Parameters: - timestamp (TimeSpan): The timestamp in the audio stream. - isSilent (bool): True if silence is detected. - levelDb (double): The current audio level in decibels. - thresholdDb (double): The silence threshold in decibels. ## Properties ### IsSilent Gets or sets a value indicating whether silence is currently detected. True if the audio level is below the configured threshold, false otherwise. ```csharp public bool IsSilent { get; set; } ``` #### Property Value Parameters: - (bool): ### LevelDb Gets or sets the current audio level in decibels (dB). This represents the RMS (Root Mean Square) level of the audio signal. Values are typically negative, with lower values indicating quieter audio. ```csharp public double LevelDb { get; set; } ``` #### Property Value Parameters: - (double): ### ThresholdDb Gets or sets the configured silence threshold in decibels (dB). Audio levels below this threshold are considered silence. ```csharp public double ThresholdDb { get; set; } ``` #### Property Value Parameters: - (double): ### Timestamp Gets or sets the timestamp of this detection event in the audio stream. ```csharp public TimeSpan Timestamp { get; set; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class SilencePeriod Link: api/VisioForge.Core.Types.X.SilencePeriod.html # Class SilencePeriod # Class SilencePeriod **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents a detected period of silence in an audio stream with precise timing information. This class captures the start time, end time, and duration of a silence segment, enabling detailed analysis of audio content for editing, quality control, or speech processing applications. ```csharp public class SilencePeriod ``` #### Inheritance #### Inherited Members ## Constructors ### SilencePeriod() Initializes a new instance of the class with default values. ```csharp public SilencePeriod() ``` ### SilencePeriod(TimeSpan, TimeSpan) Initializes a new instance of the class with specified times. ```csharp public SilencePeriod(TimeSpan startTime, TimeSpan endTime) ``` #### Parameters Parameters: - startTime (TimeSpan): The start time of the silence period. - endTime (TimeSpan): The end time of the silence period. ## Properties ### Duration Gets the duration of the silence period. Calculated as the difference between end time and start time. ```csharp public TimeSpan Duration { get; } ``` #### Property Value Parameters: - (TimeSpan): ### EndTime Gets or sets the end time of the silence period in the audio stream. Represents the timestamp when audio level rose above the silence threshold. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StartTime Gets or sets the start time of the silence period in the audio stream. Represents the timestamp when audio level dropped below the silence threshold. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### ToString() Returns a string representation of the silence period with detailed timing information. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string containing the start time, end time, and duration of the silence period. --- # Class ASFSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.ASFSinkSettings.html # Class ASFSinkSettings # Class ASFSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll ASF sink settings. ```csharp public class ASFSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ASFSinkSettings() Initializes a new instance of the class. ```csharp public ASFSinkSettings() ``` ### ASFSinkSettings(string) Initializes a new instance of the class. ```csharp public ASFSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### MergeStreamTags Gets or sets a value indicating whether the stream metadata (received as events in the sink) should be merged to the main file metadata. ```csharp public bool MergeStreamTags { get; set; } ``` #### Property Value Parameters: - (bool): ### PacketSize Gets or sets the size of the ASF packets. ```csharp public uint PacketSize { get; set; } ``` #### Property Value Parameters: - (uint): ### Padding Gets or sets the padding size of the padding object to be added to the end of the header. If this less than 24 (the smaller size of an ASF object), no padding is added. ```csharp public ulong Padding { get; set; } ``` #### Property Value Parameters: - (ulong): ### Preroll Gets or sets the preroll time. ```csharp public TimeSpan Preroll { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Streamable Gets or sets a value indicating whether ASF file is streamable. If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. ```csharp public bool Streamable { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the media block instance for ASF sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class AVISinkSettings Link: api/VisioForge.Core.Types.X.Sinks.AVISinkSettings.html # Class AVISinkSettings # Class AVISinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll AVI sink settings. ```csharp public class AVISinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AVISinkSettings() Initializes a new instance of the class. ```csharp public AVISinkSettings() ``` ### AVISinkSettings(string) Initializes a new instance of the class. ```csharp public AVISinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for AVI sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class AWSS3SinkSettings Link: api/VisioForge.Core.Types.X.Sinks.AWSS3SinkSettings.html # Class AWSS3SinkSettings # Class AWSS3SinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll AWS S3 sink settings. ```csharp public class AWSS3SinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AWSS3SinkSettings() Initializes a new instance of the class. ```csharp public AWSS3SinkSettings() ``` ## Properties ### AccessKey AWS Access Key. ```csharp public string AccessKey { get; set; } ``` #### Property Value Parameters: - (string): ### Bucket The bucket of the file to write. ```csharp public string Bucket { get; set; } ``` #### Property Value Parameters: - (string): ### ContentDisposition Content-Disposition header to set for uploaded object. ```csharp public string ContentDisposition { get; set; } ``` #### Property Value Parameters: - (string): ### ContentType Content-Type header to set for uploaded object. ```csharp public string ContentType { get; set; } ``` #### Property Value Parameters: - (string): ### EndpointUri The S3 endpoint URI to use. ```csharp public string EndpointUri { get; set; } ``` #### Property Value Parameters: - (string): ### ForcePathStyle Force client to use path-style addressing for buckets. ```csharp public bool ForcePathStyle { get; set; } ``` #### Property Value Parameters: - (bool): ### Key The key of the file to write. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): ### MaxLatency Maximum latency before uploading buffer (in nanoseconds). ```csharp public ulong MaxLatency { get; set; } ``` #### Property Value Parameters: - (ulong): ### Metadata A map of metadata to store with the object in S3. ```csharp public Dictionary Metadata { get; set; } ``` #### Property Value Parameters: - (Dictionary < string , string >): ### OnError How to handle errors during upload. ```csharp public S3SinkOnError OnError { get; set; } ``` #### Property Value Parameters: - (S3SinkOnError): ### PartSize A size (in bytes) of an individual part used for multipart upload. ```csharp public ulong PartSize { get; set; } ``` #### Property Value Parameters: - (ulong): ### QueueSize Size of the upload queue. ```csharp public uint QueueSize { get; set; } ``` #### Property Value Parameters: - (uint): ### Region An AWS region. ```csharp public string Region { get; set; } ``` #### Property Value Parameters: - (string): ### RequestTimeout Timeout for general S3 requests (set to Zero for infinity). ```csharp public TimeSpan RequestTimeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### RetryAttempts Number of times AWS SDK attempts a request before abandoning the request. ```csharp public uint RetryAttempts { get; set; } ``` #### Property Value Parameters: - (uint): ### SecretAccessKey AWS Secret Access Key. ```csharp public string SecretAccessKey { get; set; } ``` #### Property Value Parameters: - (string): ### ServerSideEncryption Server-side encryption method (e.g., "AES256", "aws:kms"). ```csharp public string ServerSideEncryption { get; set; } ``` #### Property Value Parameters: - (string): ### SessionToken AWS temporary Session Token from STS. ```csharp public string SessionToken { get; set; } ``` #### Property Value Parameters: - (string): ### StorageClass Storage class for the uploaded object (e.g., "STANDARD", "STANDARD_IA", "GLACIER"). ```csharp public string StorageClass { get; set; } ``` #### Property Value Parameters: - (string): ### Uri The S3 object URI. ```csharp public string Uri { get; set; } ``` #### Property Value Parameters: - (string): ### UseMultipartUpload Use multipart upload for large files. ```csharp public bool UseMultipartUpload { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Class DASHSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.DASHSinkSettings.html # Class DASHSinkSettings # Class DASHSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll DASH (Dynamic Adaptive Streaming over HTTP) sink settings. ```csharp public class DASHSinkSettings ``` #### Inheritance #### Inherited Members ## Properties ### Custom_HTTP_Server_Enabled Gets or sets a value indicating whether the custom HTTP server enabled. ```csharp public bool Custom_HTTP_Server_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Custom_HTTP_Server_Port Gets or sets the custom HTTP server port. ```csharp public int Custom_HTTP_Server_Port { get; set; } ``` #### Property Value Parameters: - (int): ### Dynamic Gets or sets the dynamic type (false for static DASH, true for live DASH). ```csharp public bool Dynamic { get; set; } ``` #### Property Value Parameters: - (bool): ### MPDBaseURL Gets or sets the base URL for the DASH segments in the MPD file. ```csharp public string MPDBaseURL { get; set; } ``` #### Property Value Parameters: - (string): ### MPDFilename Gets or sets the MPD filename. The file will be written to this location. ```csharp public string MPDFilename { get; set; } ``` #### Property Value Parameters: - (string): ### MinBufferTime Gets or sets the minimum buffer time that the player should keep buffered. ```csharp public TimeSpan MinBufferTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### MinimumUpdatePeriod Gets or sets the minimum update period for live streaming MPD updates. ```csharp public TimeSpan MinimumUpdatePeriod { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### PresentationDelay Gets or sets the presentation delay for live streaming. ```csharp public TimeSpan PresentationDelay { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### SendKeyframeRequests Gets or sets a value indicating whether to send keyframe requests to ensure correct fragmentation. ```csharp public bool SendKeyframeRequests { get; set; } ``` #### Property Value Parameters: - (bool): ### TargetDuration Gets or sets the target duration for each segment. ```csharp public TimeSpan TargetDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### TimeShiftBufferDepth Gets or sets the time shift buffer depth for live content. ```csharp public TimeSpan TimeShiftBufferDepth { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### CheckAndCreateFolders() Checks if the directories for the output files exist and creates them if necessary. ```csharp public void CheckAndCreateFolders() ``` --- # Class FacebookLiveSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.FacebookLiveSinkSettings.html # Class FacebookLiveSinkSettings # Class FacebookLiveSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Facebook Live sink settings. ```csharp public class FacebookLiveSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### FacebookLiveSinkSettings(string) Initializes a new instance of the class. ```csharp public FacebookLiveSinkSettings(string key) ``` #### Parameters Parameters: - key (string): The Facebook Live streaming key. ## Properties ### Key Gets or sets the Facebook Live streaming key. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for Facebook Live sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class FLVSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.FLVSinkSettings.html # Class FLVSinkSettings # Class FLVSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll FLV sink settings. ```csharp public class FLVSinkSettings ``` #### Inheritance #### Inherited Members ## Constructors ### FLVSinkSettings() Initializes a new instance of the class. ```csharp public FLVSinkSettings() ``` ### FLVSinkSettings(string) Initializes a new instance of the class. ```csharp public FLVSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): --- # Enum HLSPlaylistType Link: api/VisioForge.Core.Types.X.Sinks.HLSPlaylistType.html # Enum HLSPlaylistType # Enum HLSPlaylistType **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll HLS playlist type for controlling stream behavior. ```csharp public enum HLSPlaylistType ``` ## Fields Parameters: - Unspecified (): Unspecified playlist type. The tag #EXT-X-PLAYLIST-TYPE won't be present in the playlist. - Event (): Event playlist type. No segments will be removed from the playlist. At the end of processing, #EXT-X-ENDLIST is added. - Vod (): VOD (Video on Demand) playlist type. Behaves like event but sets #EXT-X-PLAYLIST-TYPE:VOD at the end. --- # Class HLSSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.HLSSinkSettings.html # Class HLSSinkSettings # Class HLSSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll HLS sink settings. ```csharp public class HLSSinkSettings ``` #### Inheritance #### Inherited Members ## Properties ### Custom_HTTP_Server_Enabled Gets or sets a value indicating whether the custom HTTP server enabled. ```csharp public bool Custom_HTTP_Server_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Custom_HTTP_Server_Port Gets or sets the custom HTTP server port. ```csharp public int Custom_HTTP_Server_Port { get; set; } ``` #### Property Value Parameters: - (int): ### EnableEndlist Gets or sets whether to add #EXT-X-ENDLIST tag at the end of the playlist (hlssink3/hlscmafsink only). ```csharp public bool EnableEndlist { get; set; } ``` #### Property Value Parameters: - (bool): ### EnableProgramDateTime Gets or sets whether to enable program date time tags in the playlist (hlssink3/hlscmafsink only). Adds #EXT-X-PROGRAM-DATE-TIME tags to the playlist for synchronization. ```csharp public bool EnableProgramDateTime { get; set; } ``` #### Property Value Parameters: - (bool): ### IFramesOnly Gets or sets whether to create I-frames only playlist (hlssink3 only). ```csharp public bool IFramesOnly { get; set; } ``` #### Property Value Parameters: - (bool): ### InitLocation Gets or sets the init segment location pattern (hlscmafsink only). Used for CMAF initialization segments. ```csharp public string InitLocation { get; set; } ``` #### Property Value Parameters: - (string): ### Latency Gets or sets the latency (hlscmafsink only). ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Location Gets or sets the location pattern for segment files. For hlssink2/hlssink3: segment_%05d.ts For hlscmafsink: segment_%05d.m4s ```csharp public string Location { get; set; } ``` #### Property Value Parameters: - (string): ### MaxFiles Gets or sets the maximum number of files to keep on disk. Once the maximum is reached, old files start to be deleted to make room for new ones. ```csharp public uint MaxFiles { get; set; } ``` #### Property Value Parameters: - (uint): ### PdtFollowsPipelineClock Gets or sets whether program date time should follow the pipeline clock (hlssink3/hlscmafsink only). ```csharp public bool PdtFollowsPipelineClock { get; set; } ``` #### Property Value Parameters: - (bool): ### PlaylistLength Gets or sets the length of the HLS playlist. By HLS specification, this should be at least 3. If set to 0, the playlist will be infinite. ```csharp public uint PlaylistLength { get; set; } ``` #### Property Value Parameters: - (uint): ### PlaylistLocation Gets or sets the location of the playlist to write. ```csharp public string PlaylistLocation { get; set; } ``` #### Property Value Parameters: - (string): ### PlaylistRoot Gets or sets the playlist root URL for segments in the playlist. ```csharp public string PlaylistRoot { get; set; } ``` #### Property Value Parameters: - (string): ### PlaylistType Gets or sets the playlist type (hlssink3/hlscmafsink only). Controls whether the playlist is for live streaming (Unspecified), event, or VOD. ```csharp public HLSPlaylistType PlaylistType { get; set; } ``` #### Property Value Parameters: - (HLSPlaylistType): ### SendKeyframeRequests Gets or sets a value indicating whether to send keyframe requests to ensure correct fragmentation. If this is disabled, then the input must have keyframes in regular intervals. ```csharp public bool SendKeyframeRequests { get; set; } ``` #### Property Value Parameters: - (bool): ### SinkType Gets or sets the HLS sink implementation type to use. ```csharp public HLSSinkType SinkType { get; set; } ``` #### Property Value Parameters: - (HLSSinkType): ### Sync Gets or sets whether to sync with clock for live streaming (hlscmafsink only). Required for proper timeout handling in live pipelines. ```csharp public bool Sync { get; set; } ``` #### Property Value Parameters: - (bool): ### TargetDuration Gets or sets the target duration of a segment/file. TimeSpan.Zero - disabled, useful for management of segment duration by the streaming server. ```csharp public TimeSpan TargetDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### CheckAndCreateFolders() Checks if the directories for the output files exist and creates them if necessary. ```csharp public void CheckAndCreateFolders() ``` --- # Enum HLSSinkType Link: api/VisioForge.Core.Types.X.Sinks.HLSSinkType.html # Enum HLSSinkType # Enum HLSSinkType **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll HLS sink implementation type. ```csharp public enum HLSSinkType ``` ## Fields Parameters: - Auto (): Automatically select the best available sink (prefers hlssink3, falls back to hlssink2). - HlsSink2 (): Use hlssink2 (legacy, MPEG-TS segments). - HlsSink3 (): Use hlssink3 (recommended, MPEG-TS segments with improved features). - HlsCmafSink (): Use hlscmafsink (CMAF/fMP4 segments for better compatibility). - HlsMultivariantSink (): Use hlsmultivariantsink (for multi-bitrate adaptive streaming with master playlist). Manages multiple quality variants and creates a master playlist automatically. --- # Class MKVSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MKVSinkSettings.html # Class MKVSinkSettings # Class MKVSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MKV sink settings. ```csharp public class MKVSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MKVSinkSettings() Initializes a new instance of the class. ```csharp public MKVSinkSettings() ``` ### MKVSinkSettings(string) Initializes a new instance of the class. ```csharp public MKVSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### ClusterTimestampOffset Gets or sets an offset to add to all clusters/blocks (in nanoseconds). ```csharp public ulong ClusterTimestampOffset { get; set; } ``` #### Property Value Parameters: - (ulong): ### CreationTime Gets or sets the creation time. This will be used for the DateUTC field. Null means that the current time will be used. ```csharp public DateTime? CreationTime { get; set; } ``` #### Property Value Parameters: - (DateTime ?): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### MaxClusterDuration Gets or sets the maximum duration of the cluster. A new cluster will be created if its duration exceeds this value. 0 means no maximum duration. ```csharp public long MaxClusterDuration { get; set; } ``` #### Property Value Parameters: - (long): ### MinClusterDuration Gets or sets the minimum duration of the cluster. A new cluster will be created irrespective of this property if a force key unit event is received. 0 means create a new cluster for each video keyframe or for each audio buffer in audio only streams. ```csharp public long MinClusterDuration { get; set; } ``` #### Property Value Parameters: - (long): ### MinIndexInterval Gets or sets the minimum index interval. An index entry is created every so many nanoseconds. ```csharp public long MinIndexInterval { get; set; } ``` #### Property Value Parameters: - (long): ### OffsetToZero Gets or sets a value indicating whether offsets all streams so that the earliest stream starts at 0. ```csharp public bool OffsetToZero { get; set; } ``` #### Property Value Parameters: - (bool): ### Streamable Gets or sets a value indicating whether the output file is streamable. If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. ```csharp public bool Streamable { get; set; } ``` #### Property Value Parameters: - (bool): ### Timecodescale Gets or sets the timecode scale value, used to calculate the Raw Timecode of a Block. ```csharp public long Timecodescale { get; set; } ``` #### Property Value Parameters: - (long): ### Version Gets or sets the version. This parameter determines what Matroska features can be used. ```csharp public int Version { get; set; } ``` #### Property Value Parameters: - (int): ### WritingApp Gets or sets the writing application name that creates the matroska file. ```csharp public string WritingApp { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for MKV sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class MOVSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MOVSinkSettings.html # Class MOVSinkSettings # Class MOVSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MOV (QuickTime) sink settings. Inherits from MP4SinkSettings as MOV and MP4 share similar container format. Implements the . ```csharp public class MOVSinkSettings : MP4SinkSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MOVSinkSettings(string) Initializes a new instance of the class. ```csharp public MOVSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Methods ### CreateBlock() Creates the media block instance for MOV sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. ## See Also --- # Enum MP4FragmentMode Link: api/VisioForge.Core.Types.X.Sinks.MP4FragmentMode.html # Enum MP4FragmentMode # Enum MP4FragmentMode **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MP4 fragment mode. ```csharp public enum MP4FragmentMode ``` ## Fields Parameters: - DashOrMSS (): DASH (Dynamic Adaptive Streaming over HTTP) or Microsoft Smooth Streaming mode. - FirstMOOVThenFinalise (): First MOOV Fragment Then Finalise mode. Starts with a self-contained 'moov' atom for the first fragment, then produces fragments. When finalized, the initial 'moov' is invalidated and a new 'moov' is written covering the entire file. --- # Class MP4SinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MP4SinkSettings.html # Class MP4SinkSettings # Class MP4SinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MP4 sink settings. ```csharp public class MP4SinkSettings : IMediaBlockSettings ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### MP4SinkSettings(string) Initializes a new instance of the class. ```csharp public MP4SinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ### MP4SinkSettings(int) Initializes a new instance of the class. ```csharp public MP4SinkSettings(int fileDescriptor) ``` #### Parameters Parameters: - fileDescriptor (int): The file descriptor. ### MP4SinkSettings() Initializes a new instance of the class. ```csharp public MP4SinkSettings() ``` ## Properties ### FastStart Gets or sets a value indicating whether fast start enabled. ```csharp public bool FastStart { get; set; } ``` #### Property Value Parameters: - (bool): ### FileDescriptor Gets or sets the file descriptor. If set, the file will be written to this descriptor instead of a file. ```csharp public int? FileDescriptor { get; set; } ``` #### Property Value Parameters: - (int ?): ### Filename Gets or sets the filename (or pattern like "file%02d.mp4" if the split mode used). ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### ForceChunks Gets or sets a value indicating whether force multiple chunks to be created even for single-stream files. ```csharp public bool ForceChunks { get; set; } ``` #### Property Value Parameters: - (bool): ### ForceCreateTimecodeTrak Gets or sets a value indicating whether create a timecode trak even in unsupported flavors. ```csharp public bool ForceCreateTimecodeTrak { get; set; } ``` #### Property Value Parameters: - (bool): ### FragmentDuration Gets or sets the fragment durations (produce a fragmented file if > 0). ```csharp public TimeSpan FragmentDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FragmentMode Gets or sets the influence how fragmented files are produces. Only has any affect when the the 'FragmentDuration' property is set to a value greater than '0'. ```csharp public MP4FragmentMode FragmentMode { get; set; } ``` #### Property Value Parameters: - (MP4FragmentMode): #### Remarks Currently, two options exist: "dash-or-mss": for the original fragmented mode that supports dash or mocrosoft smoothstreaming with a single input stream "first-moov-then-finalise" is a fragmented mode that will start with a self-contained 'moov' atom fo the first fragment, then produce fragments.When the file is finalised, the initial 'moov' is invalidated and a new 'moov' is written covering the entire file. ### InterleaveBytes Gets or sets the interleave between streams in bytes. ```csharp public ulong InterleaveBytes { get; set; } ``` #### Property Value Parameters: - (ulong): ### InterleaveTime Gets or sets the interleave between streams in nanoseconds. ```csharp public ulong InterleaveTime { get; set; } ``` #### Property Value Parameters: - (ulong): ### MOOVRecoveryFile Gets or sets the file to be used to store data for moov atom making movie file recovery possible in case of a crash during muxing. Null for disabled. (Experimental). ```csharp public string MOOVRecoveryFile { get; set; } ``` #### Property Value Parameters: - (string): ### MaxRAWAudioDrift Gets or sets the maximum allowed drift of raw audio samples vs.timestamps in nanoseconds. ```csharp public ulong MaxRAWAudioDrift { get; set; } ``` #### Property Value Parameters: - (ulong): ### MovieTimescale Gets or sets the timescale to use in the movie (units per second, 0 == default). ```csharp public uint MovieTimescale { get; set; } ``` #### Property Value Parameters: - (uint): ### MuxOnly Gets or sets a value indicating whether to mux only and send data to an output pad instead of a file. ```csharp public bool MuxOnly { get; set; } ``` #### Property Value Parameters: - (bool): ### PresentationTime Gets or sets a value indicating whether calculate and include presentation/composition time (in addition to decoding time). ```csharp public bool PresentationTime { get; set; } ``` #### Property Value Parameters: - (bool): ### ReservedBytesPerSec Gets or sets the multiplier for converting reserved-max-duration into bytes of header to reserve, per second, per track. ```csharp public uint ReservedBytesPerSec { get; set; } ``` #### Property Value Parameters: - (uint): ### ReservedMOOVUpdatePeriod Gets or sets the when used with reserved-max-duration, periodically updates the index tables with information muxed so far. ```csharp public ulong ReservedMOOVUpdatePeriod { get; set; } ``` #### Property Value Parameters: - (ulong): ### ReservedMaxDuration Gets or sets the when set to a value > 0, reserves space for index tables at the beginning of the file.. ```csharp public ulong ReservedMaxDuration { get; set; } ``` #### Property Value Parameters: - (ulong): ### ReservedPrefill Gets or sets a value indicating whether prefill samples table of reserved duration. ```csharp public bool ReservedPrefill { get; set; } ``` #### Property Value Parameters: - (bool): ### StartGapThreshold Gets or sets the threshold for creating an edit list for gaps at the start in nanoseconds. ```csharp public ulong StartGapThreshold { get; set; } ``` #### Property Value Parameters: - (ulong): ### TrakTimescale Gets or sets the timescale to use for the tracks (units per second, 0 is automatic). ```csharp public uint TrakTimescale { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the media block instance for MP4 sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class MP4SplitSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MP4SplitSinkSettings.html # Class MP4SplitSinkSettings # Class MP4SplitSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MP4 sink settings with file splitting capabilities. Allows splitting output into multiple files based on size, duration, or timecode. ```csharp public class MP4SplitSinkSettings : MP4SinkSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MP4SplitSinkSettings(string) Initializes a new instance of the class. ```csharp public MP4SplitSinkSettings(string locationPattern) ``` #### Parameters Parameters: - locationPattern (string): The location pattern (like "file%02d.mp4"). ## Properties ### SplitDuration Gets or sets the duration of the split. 0 is disabled. ```csharp public TimeSpan SplitDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### SplitFileSize Gets or sets the maximal size of the file. 0 is disabled. ```csharp public ulong SplitFileSize { get; set; } ``` #### Property Value Parameters: - (ulong): ### SplitMaxFiles Gets or sets the maximum number of files to keep on disk. Once the maximum is reached, old files start to be deleted to make room for new ones. ```csharp public uint SplitMaxFiles { get; set; } ``` #### Property Value Parameters: - (uint): ### SplitMaxSizeTimecode Gets or sets the maximum difference in timecode between first and last frame. Separator is assumed to be ":" everywhere (e.g. 01:00:00:00). ```csharp public string SplitMaxSizeTimecode { get; set; } ``` #### Property Value Parameters: - (string): ### StartIndex Gets or sets the start value of fragment index. ```csharp public int StartIndex { get; set; } ``` #### Property Value Parameters: - (int): --- # Class MPEGTSSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MPEGTSSinkSettings.html # Class MPEGTSSinkSettings # Class MPEGTSSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MPEG-TS sink settings. ```csharp public class MPEGTSSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### MPEGTSSinkSettings() Initializes a new instance of the class. ```csharp public MPEGTSSinkSettings() ``` ### MPEGTSSinkSettings(string) Initializes a new instance of the class. ```csharp public MPEGTSSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### FileOutput Gets or sets a value indicating whether file output is enabled. If not set, output is streamed to the output pin. ```csharp public bool FileOutput { get; set; } ``` #### Property Value Parameters: - (bool): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### M2TSMode Gets or sets a value indicating whether m2ts mode is enabled. Set to TRUE to output Blu-Ray disc format with 192 byte packets. FALSE for standard TS format with 188 byte packets. ```csharp public bool M2TSMode { get; set; } ``` #### Property Value Parameters: - (bool): ### Metadata Gets or sets the metadata. ```csharp public IMetadata Metadata { get; set; } ``` #### Property Value Parameters: - (IMetadata): ## Methods ### CreateBlock() Creates the media block instance for MPEG-TS sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class MPEGTSSplitSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MPEGTSSplitSinkSettings.html # Class MPEGTSSplitSinkSettings # Class MPEGTSSplitSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MPEG-TS sink settings with file splitting capabilities. Allows splitting output into multiple files based on size, duration, or timecode. ```csharp public class MPEGTSSplitSinkSettings : MPEGTSSinkSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MPEGTSSplitSinkSettings(string) Initializes a new instance of the class. ```csharp public MPEGTSSplitSinkSettings(string locationPattern) ``` #### Parameters Parameters: - locationPattern (string): The location pattern (like "file%02d.ts"). ## Properties ### SplitDuration Gets or sets the duration of the split. 0 is disabled. ```csharp public TimeSpan SplitDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### SplitFileSize Gets or sets the maximal size of the file. 0 is disabled. ```csharp public ulong SplitFileSize { get; set; } ``` #### Property Value Parameters: - (ulong): ### SplitMaxFiles Gets or sets the maximum number of files to keep on disk. Once the maximum is reached, old files start to be deleted to make room for new ones. ```csharp public uint SplitMaxFiles { get; set; } ``` #### Property Value Parameters: - (uint): ### SplitMaxSizeTimecode Gets or sets the maximum difference in timecode between first and last frame. Separator is assumed to be ":" everywhere (e.g. 01:00:00:00). ```csharp public string SplitMaxSizeTimecode { get; set; } ``` #### Property Value Parameters: - (string): ### StartIndex Gets or sets the start value of fragment index. ```csharp public int StartIndex { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum MXFAudioStreamType Link: api/VisioForge.Core.Types.X.Sinks.MXFAudioStreamType.html # Enum MXFAudioStreamType # Enum MXFAudioStreamType **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MXF audio stream type. ```csharp public enum MXFAudioStreamType ``` ## Fields Parameters: - None (): None. - ALAW (): A-law audio compression algorithm used in telephony. - MPEG (): MPEG audio encoding (e.g., MP2, MP3). - Uncompressed (): Uncompressed PCM (Pulse Code Modulation) or IEEE floating-point audio. --- # Class MXFSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.MXFSinkSettings.html # Class MXFSinkSettings # Class MXFSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MXF sink settings. ```csharp public class MXFSinkSettings ``` #### Inheritance #### Inherited Members ## Constructors ### MXFSinkSettings(string, MXFVideoStreamType, MXFAudioStreamType) Initializes a new instance of the class. ```csharp public MXFSinkSettings(string filename, MXFVideoStreamType videoStreamType, MXFAudioStreamType audioStreamType) ``` #### Parameters Parameters: - filename (string): The filename. - videoStreamType (MXFVideoStreamType): Type of the video stream. - audioStreamType (MXFAudioStreamType): Type of the audio stream. ## Properties ### AudioStreamType Gets or sets the audio stream type. ```csharp public MXFAudioStreamType AudioStreamType { get; set; } ``` #### Property Value Parameters: - (MXFAudioStreamType): ### Filename Gets or sets the file name. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### VideoStreamType Gets or sets the video stream type. ```csharp public MXFVideoStreamType VideoStreamType { get; set; } ``` #### Property Value Parameters: - (MXFVideoStreamType): --- # Enum MXFVideoStreamType Link: api/VisioForge.Core.Types.X.Sinks.MXFVideoStreamType.html # Enum MXFVideoStreamType # Enum MXFVideoStreamType **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll MXF video stream type. ```csharp public enum MXFVideoStreamType ``` ## Fields Parameters: - None (): None. - DV (): Digital Video format commonly used in camcorders. - JPEG2000 (): JPEG 2000 wavelet-based image compression standard. - MPEG1 (): MPEG-1 video compression standard. - MPEG2 (): MPEG-2 video compression standard used in DVD and broadcast. - MPEG4 (): MPEG-4 video compression standard. - H264 (): H.264/AVC (Advanced Video Coding) compression standard. - RGB_YUV_Uncompressed (): Uncompressed RGB or YUV video data. - DNxHD (): Avid DNxHD (Digital Nonlinear Extensible High Definition) codec. --- # Class NDISinkSettings Link: api/VisioForge.Core.Types.X.Sinks.NDISinkSettings.html # Class NDISinkSettings # Class NDISinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll NDI (Network Device Interface) sink settings for streaming video over IP networks. ```csharp public class NDISinkSettings : IVideoCaptureXBaseOutput, IXBaseOutput, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NDISinkSettings() Initializes a new instance of the class. ```csharp public NDISinkSettings() ``` ### NDISinkSettings(string) Initializes a new instance of the class. ```csharp public NDISinkSettings(string name) ``` #### Parameters Parameters: - name (string): The name. ## Properties ### CustomAudioProcessor Gets or sets the custom audio processor block. ```csharp public MediaBlock CustomAudioProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### CustomVideoProcessor Gets or sets the custom video processor block. ```csharp public MediaBlock CustomVideoProcessor { get; set; } ``` #### Property Value Parameters: - (MediaBlock): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for NDI sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. ### GetAudioEncoders() Gets the available audio encoders. Not implemented for NDI as it uses its own encoding. ```csharp public Tuple[] GetAudioEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Not applicable for NDI sink. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented for NDI sink. ### GetFilename() Gets the NDI stream name (treated as filename for interface compatibility). ```csharp public string GetFilename() ``` #### Returns Parameters: - (string): The NDI stream name. ### GetVideoEncoders() Gets the available video encoders. Not implemented for NDI as it uses its own encoding. ```csharp public Tuple[] GetVideoEncoders() ``` #### Returns Parameters: - (Tuple < string , Type > [ ]): Not applicable for NDI sink. #### Exceptions Parameters: - (NotImplementedException): This method is not implemented for NDI sink. ### SetFilename(string) Sets the NDI stream name (treated as filename for interface compatibility). ```csharp public void SetFilename(string filename) ``` #### Parameters Parameters: - filename (string): The NDI stream name. --- # Class OGGSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.OGGSinkSettings.html # Class OGGSinkSettings # Class OGGSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll OGG sink settings. ```csharp public class OGGSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OGGSinkSettings() Initializes a new instance of the class. ```csharp public OGGSinkSettings() ``` ### OGGSinkSettings(string) Initializes a new instance of the class. ```csharp public OGGSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for OGG sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Enum RTMPAuthMode Link: api/VisioForge.Core.Types.X.Sinks.RTMPAuthMode.html # Enum RTMPAuthMode # Enum RTMPAuthMode **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll RTMP (Real-Time Messaging Protocol) authentication mode. ```csharp public enum RTMPAuthMode ``` ## Fields Parameters: - None (): No authentication required. - Auto (): Automatically detect and use the appropriate authentication method. - Adobe (): Adobe authentication method for RTMP. --- # Enum RTMPScheme Link: api/VisioForge.Core.Types.X.Sinks.RTMPScheme.html # Enum RTMPScheme # Enum RTMPScheme **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll RTMP connection scheme (protocol variant). ```csharp public enum RTMPScheme ``` ## Fields Parameters: - RTMP (): Standard RTMP protocol (unencrypted). - RTMPS (): RTMPS protocol (RTMP over TLS/SSL for secure connections). --- # Class RTMPSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.RTMPSinkSettings.html # Class RTMPSinkSettings # Class RTMPSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll RTMP sink settings. ```csharp public class RTMPSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Application Gets or sets the RTMP application path. ```csharp public string Application { get; set; } ``` #### Property Value Parameters: - (string): ### AsyncConnect Gets or sets a value indicating whether to connect on READY, otherwise on first push. ```csharp public bool AsyncConnect { get; set; } ``` #### Property Value Parameters: - (bool): ### AuthMode Gets or sets the authentication mode. ```csharp public RTMPAuthMode AuthMode { get; set; } ``` #### Property Value Parameters: - (RTMPAuthMode): ### ChunkSize Gets or sets the RTMP chunk size. ```csharp public uint ChunkSize { get; set; } ``` #### Property Value Parameters: - (uint): ### FlashVersion Gets or sets the flash version reported to the server. ```csharp public string FlashVersion { get; set; } ``` #### Property Value Parameters: - (string): ### Host Gets or sets the RTMP server host name. ```csharp public string Host { get; set; } ``` #### Property Value Parameters: - (string): ### Location Gets or sets the location of RTMP stream to access. ```csharp public string Location { get; set; } ``` #### Property Value Parameters: - (string): ### Password Gets or sets the RTMP authorization password. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### PeakBitrate Gets or sets the bitrate in Kbps to pace outgoing packets. ```csharp public uint PeakBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### Port Gets or sets the RTMP server port. ```csharp public int Port { get; set; } ``` #### Property Value Parameters: - (int): ### Scheme Gets or sets the RTMP connection scheme. ```csharp public RTMPScheme Scheme { get; set; } ``` #### Property Value Parameters: - (RTMPScheme): ### SecureToken Gets or sets the RTMP authorization token. ```csharp public string SecureToken { get; set; } ``` #### Property Value Parameters: - (string): ### StopCommands Gets or sets which commands (if any) to send on EOS event before closing connection. ```csharp public RTMPStopCommands StopCommands { get; set; } ``` #### Property Value Parameters: - (RTMPStopCommands): ### Stream Gets or sets the RTMP stream path. ```csharp public string Stream { get; set; } ``` #### Property Value Parameters: - (string): ### TLSValidationFlags Gets or sets the TLS validation flags. ```csharp public RTMPTLSCertificateFlags TLSValidationFlags { get; set; } ``` #### Property Value Parameters: - (RTMPTLSCertificateFlags): ### Timeout Gets or sets the RTMP timeout. ```csharp public TimeSpan Timeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Username Gets or sets the RTMP authorization user name. ```csharp public string Username { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for RTMP sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Enum RTMPStopCommands Link: api/VisioForge.Core.Types.X.Sinks.RTMPStopCommands.html # Enum RTMPStopCommands # Enum RTMPStopCommands **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll RTMP stop commands sent when closing the connection. ```csharp [Flags] public enum RTMPStopCommands ``` ## Fields Parameters: - None (): No command will be sent on connection close. - FCUnpublish (): Send FCUnpublish command to notify the server that publishing is stopping. - CloseStream (): Send CloseStream command to close the stream. - DeleteStream (): Send DeleteStream command to delete the stream from the server. --- # Enum RTMPTLSCertificateFlags Link: api/VisioForge.Core.Types.X.Sinks.RTMPTLSCertificateFlags.html # Enum RTMPTLSCertificateFlags # Enum RTMPTLSCertificateFlags **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll RTMP TLS certificate flags. ```csharp [Flags] public enum RTMPTLSCertificateFlags ``` ## Fields Parameters: - UNKNOWN_CA (): The signing certificate authority is not known. - BAD_IDENTITY (): The certificate does not match the expected identity of the site that it was retrieved from. - NOT_ACTIVATED (): The certificate's activation time is still in the future. - EXPIRED (): The certificate has expired. - REVOKED (): The certificate has been revoked. - INSECURE (): The certificate's algorithm is considered insecure. - GENERIC_ERROR (): Some other error occurred validating the certificate. - VALIDATE_ALL (): The combination of all of the above flags. --- # Enum S3SinkOnError Link: api/VisioForge.Core.Types.X.Sinks.S3SinkOnError.html # Enum S3SinkOnError # Enum S3SinkOnError **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Defines error handling strategies for S3 uploads. ```csharp public enum S3SinkOnError ``` ## Fields Parameters: - Abort (): The abort. - Complete (): The complete. - DoNothing (): Do Nothing. --- # Class SharedMemorySinkSettings Link: api/VisioForge.Core.Types.X.Sinks.SharedMemorySinkSettings.html # Class SharedMemorySinkSettings # Class SharedMemorySinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Shared memory sink settings for inter-process communication via shared memory. ```csharp public class SharedMemorySinkSettings ``` #### Inheritance #### Inherited Members ## Properties ### BufferTime Gets or sets the maximum size of the memory buffer in nanoseconds (-1 to disable). ```csharp public long BufferTime { get; set; } ``` #### Property Value Parameters: - (long): ### MemorySize Gets or sets the size of the shared memory area. ```csharp public uint MemorySize { get; set; } ``` #### Property Value Parameters: - (uint): ### Permissions Gets or sets the permissions to set on the shm area. ```csharp public uint Permissions { get; set; } ``` #### Property Value Parameters: - (uint): ### SocketPath Gets or sets the path to the control socket used to control the shared memory transport. ```csharp public string SocketPath { get; set; } ``` #### Property Value Parameters: - (string): ### WaitForConnection Gets or sets a value indicating whether block the stream until the pipe is connected. ```csharp public bool WaitForConnection { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class ShoutcastSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.ShoutcastSinkSettings.html # Class ShoutcastSinkSettings # Class ShoutcastSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Represents settings for a Shout/Icecast streaming connection. ```csharp public class ShoutcastSinkSettings ``` #### Inheritance #### Inherited Members ## Properties ### Description Gets or sets the description of the stream. ```csharp public string Description { get; set; } ``` #### Property Value Parameters: - (string): ### Genre Gets or sets the genre of the stream. ```csharp public string Genre { get; set; } ``` #### Property Value Parameters: - (string): ### IP Gets or sets the IP address or hostname of the server. ```csharp public string IP { get; set; } ``` #### Property Value Parameters: - (string): ### Mount Gets or sets the mount point for the stream. ```csharp public string Mount { get; set; } ``` #### Property Value Parameters: - (string): ### Password Gets or sets the password for server authentication. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### Port Gets or sets the port number to connect to. ```csharp public int Port { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Valid values range from 1 to 65535. ### Protocol Gets or sets the connection protocol to use. ```csharp public ShoutProtocol Protocol { get; set; } ``` #### Property Value Parameters: - (ShoutProtocol): ### Public Gets or sets whether the stream should be listed on the server's stream directory. ```csharp public bool Public { get; set; } ``` #### Property Value Parameters: - (bool): ### StreamName Gets or sets the name of the stream. ```csharp public string StreamName { get; set; } ``` #### Property Value Parameters: - (string): ### URL Gets or sets the stream's homepage URL. ```csharp public string URL { get; set; } ``` #### Property Value Parameters: - (string): ### Username Gets or sets the username for server authentication. ```csharp public string Username { get; set; } ``` #### Property Value Parameters: - (string): --- # Enum ShoutProtocol Link: api/VisioForge.Core.Types.X.Sinks.ShoutProtocol.html # Enum ShoutProtocol # Enum ShoutProtocol **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Represents the protocol used for Shout/Icecast streaming. ```csharp public enum ShoutProtocol ``` ## Fields Parameters: - XAudiocast (): XAudioCast Protocol - ICY (): ICY Protocol (Shoutcast) - HTTP (): HTTP Protocol (Icecast 2.x) --- # Class SinkShared Link: api/VisioForge.Core.Types.X.Sinks.SinkShared.html # Class SinkShared # Class SinkShared **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Shared sink configuration containing common sink properties. ```csharp public class SinkShared ``` #### Inheritance #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public SinkType Type { get; set; } ``` #### Property Value Parameters: - (SinkType): ### URI Gets or sets the URI. ```csharp public string URI { get; set; } ``` #### Property Value Parameters: - (string): --- # Enum SinkType Link: api/VisioForge.Core.Types.X.Sinks.SinkType.html # Enum SinkType # Enum SinkType **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll Supported sink types for media output. ```csharp public enum SinkType ``` ## Fields Parameters: - MP4 (): MP4 file format sink. - AVI (): AVI file format sink. - RTSP (): RTSP (Real Time Streaming Protocol) network sink. - HTTP (): HTTP protocol network sink. - UDP (): UDP (User Datagram Protocol) network sink. - RTMP (): RTMP (Real-Time Messaging Protocol) network sink. --- # Class SRTSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.SRTSinkSettings.html # Class SRTSinkSettings # Class SRTSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll SRT (Secure Reliable Transport) sink settings for low-latency video streaming. ```csharp public class SRTSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Authentication Boolean to authenticate a connection. If true, the incoming connection is authenticated. Defaults to true. ```csharp public bool Authentication { get; set; } ``` #### Property Value Parameters: - (bool): ### AutoReconnect Automatically reconnect when the connection fails. Defaults to true. ```csharp public bool AutoReconnect { get; set; } ``` #### Property Value Parameters: - (bool): ### Latency Gets or sets the latency. Defaults to 125 milliseconds. ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### LocalAddress Local address to bind. Defaults to null. ```csharp public string LocalAddress { get; set; } ``` #### Property Value Parameters: - (string): ### LocalPort Local port to bind. Defaults to 7001. ```csharp public uint LocalPort { get; set; } ``` #### Property Value Parameters: - (uint): ### Mode SRT connection mode. Defaults to GstSRTConnectionMode.GST_SRT_CONNECTION_MODE_CALLER. ```csharp public SRTConnectionMode Mode { get; set; } ``` #### Property Value Parameters: - (SRTConnectionMode): ### Passphrase Password for the encrypted transmission. ```csharp public string Passphrase { get; set; } ``` #### Property Value Parameters: - (string): ### PbKeyLen Crypto key length in bytes. Defaults to GstSRTKeyLength.GST_SRT_KEY_LENGTH_NO_KEY. ```csharp public SRTKeyLength PbKeyLen { get; set; } ``` #### Property Value Parameters: - (SRTKeyLength): ### PollTimeout Return poll wait after timeout. A value of null indicates an infinite wait. Defaults to 1000 milliseconds. ```csharp public TimeSpan? PollTimeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### StreamID Stream ID for the SRT access control. ```csharp public string StreamID { get; set; } ``` #### Property Value Parameters: - (string): ### Uri URI in the form of srt://address:port. Defaults to "srt://:8888". ```csharp public string Uri { get; set; } ``` #### Property Value Parameters: - (string): ### WaitForConnection Boolean to block streaming until a client connects. If true, streaming only starts when a client is connected. Defaults to true. ```csharp public bool WaitForConnection { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the media block instance for SRT sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Class WebMSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.WebMSinkSettings.html # Class WebMSinkSettings # Class WebMSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll WebM sink settings. ```csharp public class WebMSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### WebMSinkSettings() Initializes a new instance of the class. ```csharp public WebMSinkSettings() ``` ### WebMSinkSettings(string) Initializes a new instance of the class. ```csharp public WebMSinkSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### ClusterTimestampOffset Gets or sets an offset to add to all clusters/blocks (in nanoseconds). ```csharp public ulong ClusterTimestampOffset { get; set; } ``` #### Property Value Parameters: - (ulong): ### CreationTime Gets or sets the creation time. This will be used for the DateUTC field. Null means that the current time will be used. ```csharp public DateTime? CreationTime { get; set; } ``` #### Property Value Parameters: - (DateTime ?): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### MaxClusterDuration Gets or sets the maximum duration of the cluster. A new cluster will be created if its duration exceeds this value. 0 means no maximum duration. ```csharp public long MaxClusterDuration { get; set; } ``` #### Property Value Parameters: - (long): ### MinClusterDuration Gets or sets the minimum duration of the cluster. A new cluster will be created irrespective of this property if a force key unit event is received. 0 means create a new cluster for each video keyframe or for each audio buffer in audio only streams. ```csharp public long MinClusterDuration { get; set; } ``` #### Property Value Parameters: - (long): ### MinIndexInterval Gets or sets the minimum index interval. An index entry is created every so many nanoseconds. ```csharp public long MinIndexInterval { get; set; } ``` #### Property Value Parameters: - (long): ### OffsetToZero Gets or sets a value indicating whether offsets all streams so that the earliest stream starts at 0. ```csharp public bool OffsetToZero { get; set; } ``` #### Property Value Parameters: - (bool): ### Streamable Gets or sets a value indicating whether the output file is streamable. If set to true, the output should be as if it is to be streamed and hence no indexes written or duration written. ```csharp public bool Streamable { get; set; } ``` #### Property Value Parameters: - (bool): ### Timecodescale Gets or sets the timecode scale value, used to calculate the Raw Timecode of a Block. ```csharp public long Timecodescale { get; set; } ``` #### Property Value Parameters: - (long): ### Version Gets or sets the version. This parameter determines what Matroska features can be used. ```csharp public int Version { get; set; } ``` #### Property Value Parameters: - (int): ### WritingApp Gets or sets the writing application name that creates the matroska file. ```csharp public string WritingApp { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for WebM sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Namespace VisioForge.Core.Types.X.Sinks Link: api/VisioForge.Core.Types.X.Sinks.html # Namespace VisioForge.Core.Types.X.Sinks # Namespace VisioForge.Core.Types.X.Sinks ### Classes Parameters: - (): ASF sink settings. - (): AVI sink settings. - (): AWS S3 sink settings. - (): DASH (Dynamic Adaptive Streaming over HTTP) sink settings. - (): FLV sink settings. - (): Facebook Live sink settings. - (): HLS sink settings. - (): MKV sink settings. - (): MOV (QuickTime) sink settings. Inherits from MP4SinkSettings as MOV and MP4 share similar container format. Implements the . - (): MP4 sink settings. - (): MP4 sink settings with file splitting capabilities. Allows splitting output into multiple files based on size, duration, or timecode. - (): MPEG-TS sink settings. - (): MPEG-TS sink settings with file splitting capabilities. Allows splitting output into multiple files based on size, duration, or timecode. - (): MXF sink settings. - (): NDI (Network Device Interface) sink settings for streaming video over IP networks. - (): OGG sink settings. - (): RTMP sink settings. - (): SRT (Secure Reliable Transport) sink settings for low-latency video streaming. - (): Shared memory sink settings for inter-process communication via shared memory. - (): Represents settings for a Shout/Icecast streaming connection. - (): Shared sink configuration containing common sink properties. - (): WebM sink settings. - (): YouTube sink settings. ### Enums Parameters: - (): HLS playlist type for controlling stream behavior. - (): HLS sink implementation type. - (): MP4 fragment mode. - (): MXF audio stream type. - (): MXF video stream type. - (): RTMP (Real-Time Messaging Protocol) authentication mode. - (): RTMP connection scheme (protocol variant). - (): RTMP stop commands sent when closing the connection. - (): RTMP TLS certificate flags. - (): Defines error handling strategies for S3 uploads. - (): Represents the protocol used for Shout/Icecast streaming. - (): Supported sink types for media output. --- # Class YouTubeSinkSettings Link: api/VisioForge.Core.Types.X.Sinks.YouTubeSinkSettings.html # Class YouTubeSinkSettings # Class YouTubeSinkSettings **Namespace**: VisioForge.Core.Types.X.Sinks **Assembly**: VisioForge.Core.dll YouTube sink settings. ```csharp public class YouTubeSinkSettings : IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### YouTubeSinkSettings(string) Initializes a new instance of the class. ```csharp public YouTubeSinkSettings(string key) ``` #### Parameters Parameters: - key (string): The YouTube streaming key. ## Properties ### Key Gets or sets the YouTube streaming key. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the media block instance for YouTube sink. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new instance of configured with these settings. --- # Enum VmbFeatureData Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbFeatureData.html # Enum VmbFeatureData # Enum VmbFeatureData **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Enum representing supported feature data types. ```csharp public enum VmbFeatureData : uint ``` ## Fields Parameters: - Unknown (): Unknown feature type. - Int (): 64-bit integer feature. - Float (): 64-bit floating point feature. - Enum (): Enumeration feature. - String (): String feature. - Bool (): Boolean feature. - Command (): Command feature. - Raw (): Raw (direct register access) feature. - None (): Feature with no data. --- # Struct VmbFeatureEnumEntry Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbFeatureEnumEntry.html # Struct VmbFeatureEnumEntry # Struct VmbFeatureEnumEntry **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Structure containing information about possible entries of an enumeration feature. ```csharp public struct VmbFeatureEnumEntry ``` #### Inherited Members ## Fields ### Description Longer description. ```csharp public string Description ``` #### Field Value Parameters: - (string): ### DisplayName Enumeration entry name to be used in GUIs. ```csharp public string DisplayName ``` #### Field Value Parameters: - (string): ### IntValue Integer value of this enumeration entry. ```csharp public long IntValue ``` #### Field Value Parameters: - (long): ### Name Name used in the API. ```csharp public string Name ``` #### Field Value Parameters: - (string): ### SfncNamespace Namespace this feature resides in. ```csharp public string SfncNamespace ``` #### Field Value Parameters: - (string): ### Tooltip Short description, e.g. for a tooltip. ```csharp public string Tooltip ``` #### Field Value Parameters: - (string): ### Visibility GUI visibility. ```csharp public VmbFeatureVisibility Visibility ``` #### Field Value Parameters: - (VmbFeatureVisibility): --- # Enum VmbFeatureFlags Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbFeatureFlags.html # Enum VmbFeatureFlags # Enum VmbFeatureFlags **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Enum representing feature flags types. ```csharp public enum VmbFeatureFlags : uint ``` ## Fields Parameters: - None (): No additional information is provided. - Read (): Static info about read access. Current status depends on access mode. - Write (): Static info about write access. Current status depends on access mode. - Volatile (): Value may change at any time. - ModifyWrite (): Value may change after a write. --- # Struct VmbFeatureInfo Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbFeatureInfo.html # Struct VmbFeatureInfo # Struct VmbFeatureInfo **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Structure holding read-only information about a feature. ```csharp public struct VmbFeatureInfo ``` #### Inherited Members ## Fields ### Category Category this feature can be found in. ```csharp public string Category ``` #### Field Value Parameters: - (string): ### Description Longer description. ```csharp public string Description ``` #### Field Value Parameters: - (string): ### DisplayName Feature name to be used in GUIs. ```csharp public string DisplayName ``` #### Field Value Parameters: - (string): ### FeatureDataType Data type of this feature. ```csharp public VmbFeatureData FeatureDataType ``` #### Field Value Parameters: - (VmbFeatureData): ### FeatureFlags Access flags for this feature. ```csharp public VmbFeatureFlags FeatureFlags ``` #### Field Value Parameters: - (VmbFeatureFlags): ### HasSelectedFeatures Indicates if the feature selects other features. ```csharp public bool HasSelectedFeatures ``` #### Field Value Parameters: - (bool): ### IsStreamable Indicates if a feature can be stored to / loaded from a file. ```csharp public bool IsStreamable ``` #### Field Value Parameters: - (bool): ### Name Name used in the API. ```csharp public string Name ``` #### Field Value Parameters: - (string): ### PollingTime Predefined polling time for volatile features. ```csharp public uint PollingTime ``` #### Field Value Parameters: - (uint): ### Representation Representation of a numeric feature. ```csharp public string Representation ``` #### Field Value Parameters: - (string): ### SfncNamespace Namespace this feature resides in. ```csharp public string SfncNamespace ``` #### Field Value Parameters: - (string): ### Tooltip Short description, e.g. for a tooltip. ```csharp public string Tooltip ``` #### Field Value Parameters: - (string): ### Unit Measuring unit as given in the XML file. ```csharp public string Unit ``` #### Field Value Parameters: - (string): ### Visibility GUI visibility. ```csharp public VmbFeatureVisibility Visibility ``` #### Field Value Parameters: - (VmbFeatureVisibility): --- # Enum VmbFeatureVisibility Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbFeatureVisibility.html # Enum VmbFeatureVisibility # Enum VmbFeatureVisibility **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Enum representing feature visibility levels. ```csharp public enum VmbFeatureVisibility : uint ``` ## Fields Parameters: - Unknown (): Feature visibility is not known. - Beginner (): Feature is visible in feature list at the beginner level. - Expert (): Feature is visible in feature list at the expert level. - Guru (): Feature is visible in feature list at the guru level. - Invisible (): Feature is visible in the feature list, but should be hidden in GUI applications. --- # Enum VmbSrcBalanceWhiteAutoModes Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcBalanceWhiteAutoModes.html # Enum VmbSrcBalanceWhiteAutoModes # Enum VmbSrcBalanceWhiteAutoModes **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Controls the mode for automatic white balancing between the color channels. The white balancing ratios are automatically adjusted. ```csharp public enum VmbSrcBalanceWhiteAutoModes ``` ## Fields Parameters: - False (): White balancing is user controlled using BalanceRatioSelector and BalanceRatio. - Once (): White balancing is automatically adjusted once by the device. Once it has converged, it automatically returns to the Off state. - Continuous (): White balancing is constantly adjusted by the device. --- # Enum VmbSrcExposureAutoModes Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcExposureAutoModes.html # Enum VmbSrcExposureAutoModes # Enum VmbSrcExposureAutoModes **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Sets the auto exposure mode. The output of the auto exposure function affects the whole image. ```csharp public enum VmbSrcExposureAutoModes ``` ## Fields Parameters: - False (): Exposure duration is user controlled using ExposureTime. - Once (): Exposure duration is adapted once by the device. Once it has converged, it returns to the Off state. - Continuous (): Exposure duration is constantly adapted by the device to maximize the dynamic range. --- # Enum VmbSrcIncompleteFrameHandlingValues Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcIncompleteFrameHandlingValues.html # Enum VmbSrcIncompleteFrameHandlingValues # Enum VmbSrcIncompleteFrameHandlingValues **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Determines how the element should handle received frames where data transmission was incomplete. Incomplete frames may contain pixel intensities from old acquisitions or random data. ```csharp public enum VmbSrcIncompleteFrameHandlingValues ``` ## Fields Parameters: - Drop (): Drop incomplete frames. - Submit (): Use incomplete frames and submit them to the next element for processing. --- # Enum VmbSrcTriggerActivationValues Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcTriggerActivationValues.html # Enum VmbSrcTriggerActivationValues # Enum VmbSrcTriggerActivationValues **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Specifies the activation mode of the trigger. Not all cameras support every trigger activation listed below. Check which activations are supported by the used camera model. ```csharp public enum VmbSrcTriggerActivationValues ``` ## Fields Parameters: - Unchanged (): Does not change the currently applied trigger activation value on the device. - RisingEdge (): Specifies that the trigger is considered valid on the rising edge of the source signal. - FallingEdge (): Specifies that the trigger is considered valid on the falling edge of the source signal. - AnyEdge (): Specifies that the trigger is considered valid on the falling or rising edge of the source signal. - LevelHigh (): Specifies that the trigger is considered valid as long as the level of the source signal is high. - LevelLow (): Specifies that the trigger is considered valid as long as the level of the source signal is low. --- # Enum VmbSrcTriggerModeValues Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcTriggerModeValues.html # Enum VmbSrcTriggerModeValues # Enum VmbSrcTriggerModeValues **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Controls if the selected trigger is active. ```csharp public enum VmbSrcTriggerModeValues ``` ## Fields Parameters: - Unchanged (): Does not change the currently applied trigger mode value on the device. - False (): Disables the selected trigger. - True (): Enables the selected trigger. --- # Enum VmbSrcTriggerSelectorValues Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcTriggerSelectorValues.html # Enum VmbSrcTriggerSelectorValues # Enum VmbSrcTriggerSelectorValues **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Selects the type of trigger to configure. Not all cameras support every trigger selector listed below. Check which selectors are supported by the used camera model. ```csharp public enum VmbSrcTriggerSelectorValues ``` ## Fields Parameters: - Unchanged (): Does not change the currently applied trigger selector value on the device. - AcquisitionStart (): Selects a trigger that starts the acquisition of one or many frames according to the Acquisition Mode. - AcquisitionEnd (): Selects a trigger that ends the acquisition of one or many frames according to the Acquisition Mode. - AcquisitionActive (): Selects a trigger that controls the duration of the acquisition of one or many frames. The acquisition is activated when the trigger signal becomes active and terminated when it goes back to the inactive state. - FrameStart (): Selects a trigger starting the capture of one frame. - FrameEnd (): Selects a trigger ending the capture of one frame (mainly used in line scan mode). - FrameActive (): Selects a trigger controlling the duration of one frame (mainly used in line scan mode). - FrameBurstStart (): Selects a trigger starting the capture of bursts of frames in an acquisition. Acquisition Burst Frame Count controls the length of each burst unless a Frame Burst End trigger is active. The total number of frames captured is also conditioned by Acquisition Frame Count if Acquisition Mode is MultiFrame. - FrameBurstEnd (): Selects a trigger ending the capture of the bursts of frames in an acquisition. - FrameBurstActive (): Selects a trigger controlling the duration of the capture of the bursts of frames in an acquisition. - LineStart (): Selects a trigger starting the capture of one line of a frame (mainly used in line scan mode). - ExposureStart (): Selects a trigger controlling the start of the exposure of one frame (or line). - ExposureEnd (): Selects a trigger controlling the end of the exposure of one frame (or line). - ExposureActive (): Selects a trigger controlling the duration of the exposure of one frame (or line). --- # Enum VmbSrcTriggerSourceValues Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.VmbSrcTriggerSourceValues.html # Enum VmbSrcTriggerSourceValues # Enum VmbSrcTriggerSourceValues **Namespace**: VisioForge.Core.Types.X.Sources.AlliedVision **Assembly**: VisioForge.Core.dll Specifies the internal signal or physical input Line to use as the trigger source. The selected trigger must have its TriggerMode set to On. Not all cameras support every trigger source listed below. Check which sources are supported by the used camera model. ```csharp public enum VmbSrcTriggerSourceValues ``` ## Fields Parameters: - Unchanged (): Does not change the currently applied trigger source value on the device. - Line0 (): Specifies that physical line 0 (or pin) and associated I/O control block is to be used as the external source for the trigger signal. - Line1 (): Specifies that physical line 1 (or pin) and associated I/O control block is to be used as the external source for the trigger signal. - Line2 (): Specifies that physical line 2 (or pin) and associated I/O control block is to be used as the external source for the trigger signal. - Line3 (): Specifies that physical line 3 (or pin) and associated I/O control block is to be used as the external source for the trigger signal. - Action0 (): Specifies that the Action0 command is to be used as an internal source for the trigger. - Action1 (): Specifies that the Action1 command is to be used as an internal source for the trigger. - Action2 (): Specifies that the Action2 command is to be used as an internal source for the trigger. - Action3 (): Specifies that the Action3 command is to be used as an internal source for the trigger. --- # Namespace VisioForge.Core.Types.X.Sources.AlliedVision Link: api/VisioForge.Core.Types.X.Sources.AlliedVision.html # Namespace VisioForge.Core.Types.X.Sources.AlliedVision # Namespace VisioForge.Core.Types.X.Sources.AlliedVision ### Structs Parameters: - (): Structure containing information about possible entries of an enumeration feature. - (): Structure holding read-only information about a feature. ### Enums Parameters: - (): Enum representing supported feature data types. - (): Enum representing feature flags types. - (): Enum representing feature visibility levels. - (): Controls the mode for automatic white balancing between the color channels. The white balancing ratios are automatically adjusted. - (): Sets the auto exposure mode. The output of the auto exposure function affects the whole image. - (): Determines how the element should handle received frames where data transmission was incomplete. Incomplete frames may contain pixel intensities from old acquisitions or random data. - (): Specifies the activation mode of the trigger. Not all cameras support every trigger activation listed below. Check which activations are supported by the used camera model. - (): Controls if the selected trigger is active. - (): Selects the type of trigger to configure. Not all cameras support every trigger selector listed below. Check which selectors are supported by the used camera model. - (): Specifies the internal signal or physical input Line to use as the trigger source. The selected trigger must have its TriggerMode set to On. Not all cameras support every trigger source listed below. Check which sources are supported by the used camera model. --- # Class AlliedVisionCameraInfo Link: api/VisioForge.Core.Types.X.Sources.AlliedVisionCameraInfo.html # Class AlliedVisionCameraInfo # Class AlliedVisionCameraInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class AlliedVisionCameraInfo. ```csharp public class AlliedVisionCameraInfo ``` #### Inheritance #### Inherited Members ## Constructors ### AlliedVisionCameraInfo(string) Initializes a new instance of the class. ```csharp public AlliedVisionCameraInfo(string name) ``` #### Parameters Parameters: - name (string): The name. ### AlliedVisionCameraInfo(VmbCameraInfo) Initializes a new instance of the class. ```csharp public AlliedVisionCameraInfo(VmbCameraInfo info) ``` #### Parameters Parameters: - info (VmbCameraInfo): The information. ## Properties ### FrameRate Gets the frame rate. Call the ReadInfo if 0. ```csharp public VideoFrameRate FrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets the height. Call the ReadInfo if 0. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### ID Gets or sets the identifier of the camera. ```csharp public string ID { get; set; } ``` #### Property Value Parameters: - (string): ### IdExtended Gets or sets the globally unique identifier for the camera. ```csharp public string IdExtended { get; set; } ``` #### Property Value Parameters: - (string): ### ModelName Gets or sets the model name. ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the the display name of the camera. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### SerialNumber Gets or sets the serial number. ```csharp public string SerialNumber { get; set; } ``` #### Property Value Parameters: - (string): ### Width Gets the width. Call the ReadInfo if 0. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): ## Methods ### ReadFeatures(out Dictionary) Reads the features. ```csharp public bool ReadFeatures(out Dictionary features) ``` #### Parameters Parameters: - features (Dictionary < string , VmbFeatureInfo >): The features. #### Returns Parameters: - (bool): true if successful, false otherwise. ### ReadInfo() Reads the information. ```csharp public bool ReadInfo() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. --- # Class AlliedVisionSourceSettings Link: api/VisioForge.Core.Types.X.Sources.AlliedVisionSourceSettings.html # Class AlliedVisionSourceSettings # Class AlliedVisionSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Allied Vision camera source settings. ```csharp public class AlliedVisionSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AlliedVisionSourceSettings(AlliedVisionCameraInfo, int?, int?, int?, int?) Initializes a new instance of the class. ```csharp public AlliedVisionSourceSettings(AlliedVisionCameraInfo camera, int? width = null, int? height = null, int? x = null, int? y = null) ``` #### Parameters Parameters: - camera (AlliedVisionCameraInfo): The camera. - width (int ?): The width (sensor height used if null). - height (int ?): The height (sensor width used if null). - x (int ?): The X (0 by default). - y (int ?): The Y (0 by default). ## Properties ### BalanceWhiteAuto Gets or sets the mode for automatic white balancing between the color channels. The white balancing ratios are automatically adjusted. ```csharp public VmbSrcBalanceWhiteAutoModes BalanceWhiteAuto { get; set; } ``` #### Property Value Parameters: - (VmbSrcBalanceWhiteAutoModes): ### Camera Gets the camera. ```csharp public AlliedVisionCameraInfo Camera { get; } ``` #### Property Value Parameters: - (AlliedVisionCameraInfo): ### ExposureAuto Gets or sets the auto exposure mode. The output of the auto exposure function affects the whole image. ```csharp public VmbSrcExposureAutoModes ExposureAuto { get; set; } ``` #### Property Value Parameters: - (VmbSrcExposureAutoModes): ### ExposureTime Gets or sets exposure time when ExposureMode is Timed and ExposureAuto is Off. This controls the duration where the photosensitive cells are exposed to light. ```csharp public TimeSpan ExposureTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Gain Gets or sets the selected gain as an absolute physical value. This is an amplification factor applied to the video signal. ```csharp public double Gain { get; set; } ``` #### Property Value Parameters: - (double): ### IncompleteFrameHandling Gets or sets the incomplete frame handling method. Determines how the element should handle received frames where data transmission was incomplete. Incomplete frames may contain pixel intensities from old acquisitions or random data ```csharp public VmbSrcIncompleteFrameHandlingValues IncompleteFrameHandling { get; set; } ``` #### Property Value Parameters: - (VmbSrcIncompleteFrameHandlingValues): ### Region Gets the region. ```csharp public Rect Region { get; } ``` #### Property Value Parameters: - (Rect): ### SettingsFile Gets or sets the path to XML file containing camera settings that should be applied. All settings from this file will be applied before any other property is set. ```csharp public string SettingsFile { get; set; } ``` #### Property Value Parameters: - (string): ### TriggerActivation Gets or sets the activation mode of the trigger. Not all cameras support every trigger activation listed below. Check which activations are supported by the used camera model. ```csharp public VmbSrcTriggerActivationValues TriggerActivation { get; set; } ``` #### Property Value Parameters: - (VmbSrcTriggerActivationValues): ### TriggerMode Gets or sets the controls if the selected trigger is active. ```csharp public VmbSrcTriggerModeValues TriggerMode { get; set; } ``` #### Property Value Parameters: - (VmbSrcTriggerModeValues): ### TriggerSelector Gets or sets the type of trigger to configure. Not all cameras support every trigger selector listed below. Check which selectors are supported by the used camera model ```csharp public VmbSrcTriggerSelectorValues TriggerSelector { get; set; } ``` #### Property Value Parameters: - (VmbSrcTriggerSelectorValues): ### TriggerSource Gets or sets the internal signal or physical input Line to use as the trigger source. The selected trigger must have its TriggerMode set to On. Not all cameras support every trigger source listed below. Check which sources are supported by the used camera model. ```csharp public VmbSrcTriggerSourceValues TriggerSource { get; set; } ``` #### Property Value Parameters: - (VmbSrcTriggerSourceValues): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum AudioCaptureDeviceAPI Link: api/VisioForge.Core.Types.X.Sources.AudioCaptureDeviceAPI.html # Enum AudioCaptureDeviceAPI # Enum AudioCaptureDeviceAPI **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Audio capture device API. ```csharp public enum AudioCaptureDeviceAPI ``` ## Fields Parameters: - Decklink (): The Decklink device. - ALSA (): ALSA. - Pulse (): Pulse. - PipeWire (): PipeWire. - Other (): Other. --- # Class AudioCaptureDeviceFormat Link: api/VisioForge.Core.Types.X.Sources.AudioCaptureDeviceFormat.html # Class AudioCaptureDeviceFormat # Class AudioCaptureDeviceFormat **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Audio capture device format. ```csharp public class AudioCaptureDeviceFormat : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioCaptureDeviceFormat() Initializes a new instance of the class. ```csharp public AudioCaptureDeviceFormat() ``` ### AudioCaptureDeviceFormat(AudioFormatX, int, int) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceFormat(AudioFormatX format, int sampleRate, int channels) ``` #### Parameters Parameters: - format (AudioFormatX): The format. - sampleRate (int): The sample rate. - channels (int): The channels. ## Properties ### Channels Gets or sets the channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Format Gets or sets the format. ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes obj in the sort order. Zero This instance occurs in the same position in the sort order as obj. Greater than zero This instance follows obj in the sort order. ### Equals(object) Determines whether the specified is equal to this instance. ```csharp public override bool Equals(object obj) ``` #### Parameters Parameters: - obj (object): The object to compare with the current object. #### Returns Parameters: - (bool): true if the specified is equal to this instance; otherwise, false. #### Exceptions Parameters: - (NotImplementedException): ### GetHashCode() Returns a hash code for this instance. ```csharp public override int GetHashCode() ``` #### Returns Parameters: - (int): A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## Operators ### operator ==(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the == operator. ```csharp public static bool operator ==(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the > operator. ```csharp public static bool operator >(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >=(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the >= operator. ```csharp public static bool operator >=(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator !=(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the != operator. ```csharp public static bool operator !=(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the < operator. ```csharp public static bool operator <(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <=(AudioCaptureDeviceFormat, AudioCaptureDeviceFormat) Implements the <= operator. ```csharp public static bool operator <=(AudioCaptureDeviceFormat left, AudioCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormat): The left. - right (AudioCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. --- # Class AudioCaptureDeviceFormatInfo Link: api/VisioForge.Core.Types.X.Sources.AudioCaptureDeviceFormatInfo.html # Class AudioCaptureDeviceFormatInfo # Class AudioCaptureDeviceFormatInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class AudioCaptureDeviceFormatInfo. ```csharp public class AudioCaptureDeviceFormatInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioCaptureDeviceFormatInfo() Initializes a new instance of the class. ```csharp public AudioCaptureDeviceFormatInfo() ``` ### AudioCaptureDeviceFormatInfo(Structure, bool) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceFormatInfo(Structure structure, bool parse = true) ``` #### Parameters Parameters: - structure (Structure): The structure. - parse (bool): if set to true [parse]. ### AudioCaptureDeviceFormatInfo(AudioFormatX, int, int) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceFormatInfo(AudioFormatX format, int sampleRate, int channels) ``` #### Parameters Parameters: - format (AudioFormatX): The format. - sampleRate (int): The sample rate. - channels (int): The channels. ## Properties ### Channels Gets or sets the channels. ```csharp public int[] Channels { get; set; } ``` #### Property Value Parameters: - (int [ ]): ### Formats Gets or sets the format. ```csharp public AudioFormatX[] Formats { get; set; } ``` #### Property Value Parameters: - (AudioFormatX [ ]): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### SampleRates Gets or sets the sample rate. ```csharp public int[] SampleRates { get; set; } ``` #### Property Value Parameters: - (int [ ]): ### Struct Gets the structure. ```csharp public Structure Struct { get; } ``` #### Property Value Parameters: - (Structure): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes obj in the sort order. Zero This instance occurs in the same position in the sort order as obj. Greater than zero This instance follows obj in the sort order. ### Equals(object) Determines whether the specified is equal to this instance. ```csharp public override bool Equals(object obj) ``` #### Parameters Parameters: - obj (object): The object to compare with the current object. #### Returns Parameters: - (bool): true if the specified is equal to this instance; otherwise, false. #### Exceptions Parameters: - (NotImplementedException): ### GetHashCode() Returns a hash code for this instance. ```csharp public override int GetHashCode() ``` #### Returns Parameters: - (int): A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. ### Split() Splits this instance. ```csharp public AudioCaptureDeviceFormatInfo[] Split() ``` #### Returns Parameters: - (AudioCaptureDeviceFormatInfo [ ]): AudioCaptureDeviceFormatInfo[]. ### ToFormat() Converts to AudioCaptureDeviceFormat. ```csharp public AudioCaptureDeviceFormat ToFormat() ``` #### Returns Parameters: - (AudioCaptureDeviceFormat): VideoCaptureDeviceFormat. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## Operators ### operator ==(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the == operator. ```csharp public static bool operator ==(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the > operator. ```csharp public static bool operator >(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >=(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the >= operator. ```csharp public static bool operator >=(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator !=(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the != operator. ```csharp public static bool operator !=(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the < operator. ```csharp public static bool operator <(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <=(AudioCaptureDeviceFormatInfo, AudioCaptureDeviceFormatInfo) Implements the <= operator. ```csharp public static bool operator <=(AudioCaptureDeviceFormatInfo left, AudioCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (AudioCaptureDeviceFormatInfo): The left. - right (AudioCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. --- # Class AudioCaptureDeviceInfo Link: api/VisioForge.Core.Types.X.Sources.AudioCaptureDeviceInfo.html # Class AudioCaptureDeviceInfo # Class AudioCaptureDeviceInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Audio capture device information. ```csharp public class AudioCaptureDeviceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioCaptureDeviceInfo(Device) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### API Gets the API. ```csharp public AudioCaptureDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioCaptureDeviceAPI): ### DevicePath Gets device path. ```csharp public string DevicePath { get; } ``` #### Property Value Parameters: - (string): ### DisplayName Gets device name including API. ```csharp public string DisplayName { get; } ``` #### Property Value Parameters: - (string): ### Formats Gets video formats. ```csharp public List Formats { get; } ``` #### Property Value Parameters: - (List < AudioCaptureDeviceFormatInfo >): ### InternalName Gets the internal name. ```csharp public string InternalName { get; } ``` #### Property Value Parameters: - (string): ### Name Gets device name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### CreateSourceSettings(AudioCaptureDeviceFormat) Converts to audio source settings. ```csharp public IAudioCaptureDeviceSourceSettings CreateSourceSettings(AudioCaptureDeviceFormat format = null) ``` #### Parameters Parameters: - format (AudioCaptureDeviceFormat): The format. #### Returns Parameters: - (IAudioCaptureDeviceSourceSettings): IAudioCaptureDeviceSourceSettings. ### CreateSourceSettingsVC(AudioCaptureDeviceFormat) Creates the source settings for VideoCaptureCoreX. ```csharp public IVideoCaptureBaseAudioSourceSettings CreateSourceSettingsVC(AudioCaptureDeviceFormat format = null) ``` #### Parameters Parameters: - format (AudioCaptureDeviceFormat): The format. #### Returns Parameters: - (IVideoCaptureBaseAudioSourceSettings): IVideoCaptureBaseAudioSourceSettings. ### GetDefaultFormat() Gets the default format. ```csharp public AudioCaptureDeviceFormat GetDefaultFormat() ``` #### Returns Parameters: - (AudioCaptureDeviceFormat): AudioCaptureDeviceFormat. ### GetDevice() Gets the device. ```csharp public Device GetDevice() ``` #### Returns Parameters: - (Device): Gst.Device. ### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Class AudioCaptureDeviceSourceSettings Link: api/VisioForge.Core.Types.X.Sources.AudioCaptureDeviceSourceSettings.html # Class AudioCaptureDeviceSourceSettings # Class AudioCaptureDeviceSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Common audio capture device source settings. ```csharp public class AudioCaptureDeviceSourceSettings : IAudioCaptureDeviceSourceSettings, IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AudioCaptureDeviceSourceSettings(AudioCaptureDeviceAPI, AudioCaptureDeviceInfo, AudioCaptureDeviceFormat) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceSourceSettings(AudioCaptureDeviceAPI api, AudioCaptureDeviceInfo device, AudioCaptureDeviceFormat format) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI): The API. - device (AudioCaptureDeviceInfo): The device. - format (AudioCaptureDeviceFormat): The format. ### AudioCaptureDeviceSourceSettings(AudioCaptureDeviceInfo) Initializes a new instance of the class. ```csharp public AudioCaptureDeviceSourceSettings(AudioCaptureDeviceInfo device) ``` #### Parameters Parameters: - device (AudioCaptureDeviceInfo): The device. ### AudioCaptureDeviceSourceSettings() Initializes a new instance of the class. ```csharp public AudioCaptureDeviceSourceSettings() ``` ## Properties ### API Gets or sets the API. ```csharp public AudioCaptureDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioCaptureDeviceAPI): ### Device Gets or sets the device. ```csharp public AudioCaptureDeviceInfo Device { get; set; } ``` #### Property Value Parameters: - (AudioCaptureDeviceInfo): ### Format Gets or sets the format. ```csharp public AudioCaptureDeviceFormat Format { get; set; } ``` #### Property Value Parameters: - (AudioCaptureDeviceFormat): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetMute() Gets the mute. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetVolume() Gets the volume. Value should be in 0.0 - 1.0 range. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. Value should be in 0.0 - 1.0 range. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class AudioMixerSourceSettings Link: api/VisioForge.Core.Types.X.Sources.AudioMixerSourceSettings.html # Class AudioMixerSourceSettings # Class AudioMixerSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class AudioMixerSourceSettings. Implements the ```csharp public class AudioMixerSourceSettings : IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Format Gets or sets the audio format that will be used in mixer. ```csharp public AudioInfoX Format { get; set; } ``` #### Property Value Parameters: - (AudioInfoX): ### Inputs Gets the inputs. ```csharp public List Inputs { get; } ``` #### Property Value Parameters: - (List < IVideoCaptureBaseAudioSourceSettings >): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. #### Exceptions Parameters: - (NotImplementedException): ### GetMute() Gets the mute. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetVolume() Gets the volume. Value should be in 0.0 - 1.0 range. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. Value should be in 0.0 - 1.0 range. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. ## See Also --- # Class BaslerCameraInfo Link: api/VisioForge.Core.Types.X.Sources.BaslerCameraInfo.html # Class BaslerCameraInfo # Class BaslerCameraInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class BaslerCameraInfo. ```csharp public class BaslerCameraInfo ``` #### Inheritance #### Inherited Members ## Constructors ### BaslerCameraInfo(string) Initializes a new instance of the class. ```csharp public BaslerCameraInfo(string name) ``` #### Parameters Parameters: - name (string): The name. ### BaslerCameraInfo(int, PylonDeviceInfo_t) Initializes a new instance of the class. ```csharp public BaslerCameraInfo(int index, PylonDeviceInfo_t info) ``` #### Parameters Parameters: - index (int): The index. - info (PylonDeviceInfo_t): The information. ## Properties ### DeviceClass Gets or sets the device class. ```csharp public string DeviceClass { get; set; } ``` #### Property Value Parameters: - (string): ### DeviceIndex Gets the index of the device. ```csharp public int DeviceIndex { get; } ``` #### Property Value Parameters: - (int): ### DeviceVersion Gets or sets the device version. ```csharp public string DeviceVersion { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets the frame rate. Call the ReadInfo if 0. ```csharp public VideoFrameRate FrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### FullName Gets or sets the full name. ```csharp public string FullName { get; set; } ``` #### Property Value Parameters: - (string): ### Height Gets the height. Call the ReadInfo if 0. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### ModelName Gets or sets the name of the model. ```csharp public string ModelName { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### SerialNumber Gets or sets the serial number. ```csharp public string SerialNumber { get; set; } ``` #### Property Value Parameters: - (string): ### UserDefinedName Gets or sets the name of the user defined. ```csharp public string UserDefinedName { get; set; } ``` #### Property Value Parameters: - (string): ### VendorName Gets or sets the name of the vendor. ```csharp public string VendorName { get; set; } ``` #### Property Value Parameters: - (string): ### Width Gets the width. Call the ReadInfo if 0. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): ## Methods ### ReadInfo() Reads the information. ```csharp public bool ReadInfo() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. --- # Class BaslerSourceSettings Link: api/VisioForge.Core.Types.X.Sources.BaslerSourceSettings.html # Class BaslerSourceSettings # Class BaslerSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Basler camera source settings. ```csharp public class BaslerSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### BaslerSourceSettings(BaslerCameraInfo) Initializes a new instance of the class. ```csharp public BaslerSourceSettings(BaslerCameraInfo camera) ``` #### Parameters Parameters: - camera (BaslerCameraInfo): The camera. ## Properties ### Camera Gets the camera. ```csharp public BaslerCameraInfo Camera { get; } ``` #### Property Value Parameters: - (BaslerCameraInfo): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class CDGSourceSettings Link: api/VisioForge.Core.Types.X.Sources.CDGSourceSettings.html # Class CDGSourceSettings # Class CDGSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll CDG source settings. Supports both standalone CDG+Audio files and ZIP archives containing CDG+MP3/WAV pairs. Implements the . ```csharp public class CDGSourceSettings : IMediaPlayerBaseSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CDGSourceSettings(string, string) Initializes a new instance of the class. ```csharp public CDGSourceSettings(string cdgFilename, string audioFilename) ``` #### Parameters Parameters: - cdgFilename (string): The CDG filename. - audioFilename (string): The audio filename. ### CDGSourceSettings(string) Initializes a new instance of the class from a ZIP archive. The ZIP archive should contain a CDG file and an audio file (MP3, WAV, etc.). ```csharp public CDGSourceSettings(string zipFilename) ``` #### Parameters Parameters: - zipFilename (string): The ZIP filename containing CDG and audio files. ## Properties ### AudioFilename Gets or sets the audio filename. ```csharp public string AudioFilename { get; set; } ``` #### Property Value Parameters: - (string): ### CDGFilename Gets or sets the CDG filename. ```csharp public string CDGFilename { get; set; } ``` #### Property Value Parameters: - (string): ### EnablePitchShifting Gets or sets a value indicating whether to enable pitch shifting capability. When true, the pitch element will be created even if Pitch is 1.0, allowing runtime pitch changes. When false, the pitch element is only created if Pitch != 1.0 at initialization. Default is false for backwards compatibility. ```csharp public bool EnablePitchShifting { get; set; } ``` #### Property Value Parameters: - (bool): ### IgnoreAudio Gets a value indicating whether to ignore audio. ```csharp public bool IgnoreAudio { get; } ``` #### Property Value Parameters: - (bool): ### IsExtracted Gets a value indicating whether ZIP contents have been extracted. ```csharp public bool IsExtracted { get; } ``` #### Property Value Parameters: - (bool): ### IsZipSource Gets a value indicating whether source is from a ZIP archive. ```csharp public bool IsZipSource { get; } ``` #### Property Value Parameters: - (bool): ### Pitch Gets or sets the pitch multiplier for audio playback. Default is 1.0 (no pitch change). Values greater than 1.0 increase pitch, values less than 1.0 decrease pitch. Valid range is approximately 0.1 to 10.0. Setting this property during playback will immediately apply the pitch change if EnablePitchShifting is true. ```csharp public double Pitch { get; set; } ``` #### Property Value Parameters: - (double): ### PitchSemitones Gets or sets the pitch in semitones for audio playback. This is a convenience property that converts semitones to pitch multiplier. Valid range is -12 to +12 semitones (one octave down/up). Setting this property during playback will immediately apply the pitch change if EnablePitchShifting is true. ```csharp public double PitchSemitones { get; set; } ``` #### Property Value Parameters: - (double): ### ZipFilename Gets or sets the ZIP filename containing CDG and audio files. When set, the ZIP archive will be extracted to a temporary directory and CDG/Audio filenames will be auto-detected. ```csharp public string ZipFilename { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CleanupTempDirectory() Cleans up the temporary directory used for ZIP extraction. ```csharp public void CleanupTempDirectory() ``` ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ExtractZipContents() Extracts the ZIP archive contents to a temporary directory and auto-detects CDG and audio files. ```csharp public bool ExtractZipContents() ``` #### Returns Parameters: - (bool): true if extraction and detection succeeded; otherwise, false. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. ## See Also --- # Class DemuxerSourceSettings Link: api/VisioForge.Core.Types.X.Sources.DemuxerSourceSettings.html # Class DemuxerSourceSettings # Class DemuxerSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Demuxer source settings. ```csharp public class DemuxerSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Filename Gets the file name. ```csharp public string Filename { get; } ``` #### Property Value Parameters: - (string): ### RenderAudio The render audio. ```csharp public bool RenderAudio { get; } ``` #### Property Value Parameters: - (bool): ### RenderSubtitle The render subtitle. ```csharp public bool RenderSubtitle { get; } ``` #### Property Value Parameters: - (bool): ### RenderVideo The render video. ```csharp public bool RenderVideo { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateAsync(string, bool, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(string filename, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false) ``` #### Parameters Parameters: - filename (string): The filename. - renderVideo (bool): if set to true [render video]. - renderAudio (bool): if set to true [render audio]. - renderSubtitle (bool): if set to true [render subtitle]. #### Returns Parameters: - (Task < DemuxerSourceSettings >): A Task<DemuxerSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the file information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Class FallbackSwitchSettings Link: api/VisioForge.Core.Types.X.Sources.FallbackSwitchSettings.html # Class FallbackSwitchSettings # Class FallbackSwitchSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Main fallback switch configuration container. ```csharp public class FallbackSwitchSettings ``` #### Inheritance #### Inherited Members ## Properties ### EnableAudio Gets or sets whether audio fallback is enabled. Default is true. ```csharp public bool EnableAudio { get; set; } ``` #### Property Value Parameters: - (bool): ### EnableVideo Gets or sets whether video fallback is enabled. Default is true. ```csharp public bool EnableVideo { get; set; } ``` #### Property Value Parameters: - (bool): ### Enabled Gets or sets whether fallback switch is enabled. Default is false. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Fallback Gets or sets the fallback configuration. ```csharp public FallbackSwitchSettingsBase Fallback { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettingsBase): ### FallbackAudioCaps Gets or sets the audio caps for the fallback stream. Can be used to specify raw audio format requirements for the fallback. Example: "audio/x-raw,rate=48000,channels=2" ```csharp public string FallbackAudioCaps { get; set; } ``` #### Property Value Parameters: - (string): ### FallbackVideoCaps Gets or sets the video caps for the fallback stream. Can be used to specify raw video format requirements for the fallback. Example: "video/x-raw,width=1920,height=1080,format=RGB" ```csharp public string FallbackVideoCaps { get; set; } ``` #### Property Value Parameters: - (string): ### MinLatencyMs Gets or sets the minimum latency for the fallback switch (in milliseconds). When the main source has a higher latency than the fallback source, this configures a minimum latency that would be used if initially the fallback is enabled. Default is 0. ```csharp public int MinLatencyMs { get; set; } ``` #### Property Value Parameters: - (int): --- # Class FallbackSwitchSettingsBase Link: api/VisioForge.Core.Types.X.Sources.FallbackSwitchSettingsBase.html # Class FallbackSwitchSettingsBase # Class FallbackSwitchSettingsBase **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Base class for fallback switch configuration settings. ```csharp public abstract class FallbackSwitchSettingsBase ``` #### Inheritance #### Derived #### Inherited Members ## Properties ### ImmediateFallback Gets or sets whether to immediately switch to fallback on error. Default is false. ```csharp public bool ImmediateFallback { get; set; } ``` #### Property Value Parameters: - (bool): ### ManualUnblock Gets or sets whether manual unblocking is required. When enabled, the application must call unblock, except for live streams. Default is false. ```csharp public bool ManualUnblock { get; set; } ``` #### Property Value Parameters: - (bool): ### RestartOnEos Gets or sets whether to restart the main source on EOS. Default is false. ```csharp public bool RestartOnEos { get; set; } ``` #### Property Value Parameters: - (bool): ### RestartTimeoutMs Gets or sets the restart timeout for the main source (in milliseconds). Default is 5000ms (5 seconds). ```csharp public int RestartTimeoutMs { get; set; } ``` #### Property Value Parameters: - (int): ### RetryTimeoutMs Gets or sets the retry timeout for stopping after repeated failure (in milliseconds). Default is 60000ms (60 seconds). ```csharp public int RetryTimeoutMs { get; set; } ``` #### Property Value Parameters: - (int): ### TimeoutMs Gets or sets the timeout before switching to fallback (in milliseconds). Default is 5000ms (5 seconds). ```csharp public int TimeoutMs { get; set; } ``` #### Property Value Parameters: - (int): ### Type Gets or sets the fallback switch type. ```csharp public FallbackSwitchType Type { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchType): --- # Enum FallbackSwitchType Link: api/VisioForge.Core.Types.X.Sources.FallbackSwitchType.html # Enum FallbackSwitchType # Enum FallbackSwitchType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Enumeration of fallback switch types. ```csharp public enum FallbackSwitchType ``` ## Fields Parameters: - None (): No fallback switch. - StaticText (): Static text fallback with configurable font and position. - StaticImage (): Static image fallback with SkiaSharp rendering. - MediaBlock (): Media block fallback with GStreamer elements. --- # Enum GenICamAccessCheckPolicy Link: api/VisioForge.Core.Types.X.Sources.GenICamAccessCheckPolicy.html # Enum GenICamAccessCheckPolicy # Enum GenICamAccessCheckPolicy **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Access check policy enumeration ```csharp public enum GenICamAccessCheckPolicy ``` ## Fields Parameters: - Disable (): Never check the register access mode - Enable (): Always check the register access mode - Default (): Default access check policy --- # Enum GenICamAcquisitionMode Link: api/VisioForge.Core.Types.X.Sources.GenICamAcquisitionMode.html # Enum GenICamAcquisitionMode # Enum GenICamAcquisitionMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Acquisition modes ```csharp public enum GenICamAcquisitionMode ``` ## Fields Parameters: - Continuous (): Frames are captured continuously until stopped with the AcquisitionStop command - SingleFrame (): Only one frame will be acquired - MultiFrame (): The number of frames specified by AcquisitionFrameCount is captured --- # Enum GenICamAuto Link: api/VisioForge.Core.Types.X.Sources.GenICamAuto.html # Enum GenICamAuto # Enum GenICamAuto **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Auto setting modes ```csharp public enum GenICamAuto ``` ## Fields Parameters: - False (): Manual setting - Once (): Automatic setting done once, then returns to manual - Continuous (): Setting is adjusted continuously --- # Enum GenICamBufferPartDataType Link: api/VisioForge.Core.Types.X.Sources.GenICamBufferPartDataType.html # Enum GenICamBufferPartDataType # Enum GenICamBufferPartDataType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Buffer part data type enumeration ```csharp public enum GenICamBufferPartDataType ``` ## Fields Parameters: - Unknown (): Unknown data type - Image2D (): 2D image - Plane2DBiplanar (): 2D plane biplanar - Plane2DTriplanar (): 2D plane triplanar - Plane2DQuadplanar (): 2D plane quadplanar - Image3D (): 3D image - Plane3DBiplanar (): 3D plane biplanar - Plane3DTriplanar (): 3D plane triplanar - Plane3DQuadplanar (): 3D plane quadplanar - ConfidenceMap (): Confidence map - ChunkData (): Chunk data - Jpeg (): JPEG - Jpeg2000 (): JPEG2000 - DeviceSpecific (): Device specific --- # Enum GenICamBufferPayloadType Link: api/VisioForge.Core.Types.X.Sources.GenICamBufferPayloadType.html # Enum GenICamBufferPayloadType # Enum GenICamBufferPayloadType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Buffer payload type enumeration ```csharp public enum GenICamBufferPayloadType ``` ## Fields Parameters: - Unknown (): Unknown payload type - NoData (): No data - Image (): Image data - RawData (): Raw data (not supported) - File (): File (not supported) - ChunkData (): Chunk data (not supported) - ExtendedChunkData (): Extended chunk data - Jpeg (): JPEG data (not supported) - Jpeg2000 (): JPEG2000 data (not supported) - H264 (): H264 data (not supported) - MultizoneImage (): Multizone image (not supported) - Multipart (): Multipart data - GendcContainer (): GenDC container - GendcComponentData (): GenDC component data --- # Enum GenICamBufferStatus Link: api/VisioForge.Core.Types.X.Sources.GenICamBufferStatus.html # Enum GenICamBufferStatus # Enum GenICamBufferStatus **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Buffer status enumeration ```csharp public enum GenICamBufferStatus ``` ## Fields Parameters: - Unknown (): Unknown status - Success (): The buffer contains a valid image - Cleared (): The buffer is cleared - Timeout (): Timeout was reached before all packets are received - MissingPackets (): Stream has missing packets - WrongPacketId (): Stream has packet with wrong id - SizeMismatch (): The received image didn't fit in the buffer data space - Filling (): The image is currently being filled - Aborted (): The filling was aborted before completion - PayloadNotSupported (): Payload not yet supported --- # Enum GenICamCachable Link: api/VisioForge.Core.Types.X.Sources.GenICamCachable.html # Enum GenICamCachable # Enum GenICamCachable **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam cache mode enumeration ```csharp public enum GenICamCachable ``` ## Fields Parameters: - Undefined (): Undefined cache mode - NoCache (): No value caching - WriteThrough (): Write-through cache mode - WriteAround (): Write-around cache mode --- # Enum GenICamChunkParserError Link: api/VisioForge.Core.Types.X.Sources.GenICamChunkParserError.html # Enum GenICamChunkParserError # Enum GenICamChunkParserError **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Chunk parser error enumeration ```csharp public enum GenICamChunkParserError ``` ## Fields Parameters: - InvalidFeatureType (): Invalid feature type - BufferNotFound (): A buffer is not attached to the chunk parser - ChunkNotFound (): The requested chunk is not found in the buffer data - FeatureNotFound (): Feature not found --- # Enum GenICamDeviceAccessFlags Link: api/VisioForge.Core.Types.X.Sources.GenICamDeviceAccessFlags.html # Enum GenICamDeviceAccessFlags # Enum GenICamDeviceAccessFlags **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Device access flags for opening devices ```csharp public enum GenICamDeviceAccessFlags ``` ## Fields Parameters: - Unknown (): Unknown access mode - None (): Device is not open or access denied - ReadOnly (): Open device read-only - Control (): Open device for control (read/write), allows other read-only access - Exclusive (): Open device exclusively (read/write), no other access allowed - CustomId (): Starting value for custom access flag IDs --- # Enum GenICamDeviceAccessStatus Link: api/VisioForge.Core.Types.X.Sources.GenICamDeviceAccessStatus.html # Enum GenICamDeviceAccessStatus # Enum GenICamDeviceAccessStatus **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Device access status enumeration ```csharp public enum GenICamDeviceAccessStatus ``` ## Fields Parameters: - Unknown (): Device accessibility is unknown - ReadWrite (): Device is available for read/write access - ReadOnly (): Device is available for read-only access - NoAccess (): Device is not accessible - Busy (): Device is busy (opened by another process/host) - OpenReadWrite (): Device is already opened read/write by this process - OpenReadOnly (): Device is already opened read-only by this process - CustomId (): Starting value for custom status IDs --- # Enum GenICamDisplayNotation Link: api/VisioForge.Core.Types.X.Sources.GenICamDisplayNotation.html # Enum GenICamDisplayNotation # Enum GenICamDisplayNotation **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam display notation enumeration ```csharp public enum GenICamDisplayNotation ``` ## Fields Parameters: - Undefined (): Undefined number notation - Automatic (): Automatically detect whether to use fixed or scientific number notation - Fixed (): Used fixed (i.e. decimal) notation for displaying numbers - Scientific (): Use scientific notation for displaying numbers --- # Enum GenICamExposureMode Link: api/VisioForge.Core.Types.X.Sources.GenICamExposureMode.html # Enum GenICamExposureMode # Enum GenICamExposureMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Exposure modes ```csharp public enum GenICamExposureMode ``` ## Fields Parameters: - False (): Disables the Exposure and let the shutter open - Timed (): Timed exposure. The exposure duration time is set using the ExposureTime or ExposureAuto features and the exposure starts with the FrameStart or LineStart - TriggerWidth (): Uses the width of the current Frame or Line trigger signal(s) pulse to control the exposure duration - TriggerControlled (): Uses one or more trigger signal(s) to control the exposure duration independently from the current Frame or Line triggers --- # Enum GenICamGcAccessMode Link: api/VisioForge.Core.Types.X.Sources.GenICamGcAccessMode.html # Enum GenICamGcAccessMode # Enum GenICamGcAccessMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam access mode enumeration ```csharp public enum GenICamGcAccessMode ``` ## Fields Parameters: - Undefined (): Undefined access mode - ReadOnly (): Read-only access - WriteOnly (): Write-only access - ReadWrite (): Read and write access --- # Enum GenICamGcError Link: api/VisioForge.Core.Types.X.Sources.GenICamGcError.html # Enum GenICamGcError # Enum GenICamGcError **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam error enumeration ```csharp public enum GenICamGcError ``` ## Fields Parameters: - PropertyNotDefined (): Property not defined - PvalueNotDefined (): Pvalue not defined - InvalidPvalue (): Invalid pvalue - EmptyEnumeration (): Empty enumeration - OutOfRange (): Out of range - NoDeviceSet (): No device set - NoEventImplementation (): No event implementation - NodeNotFound (): Node not found - EnumEntryNotFound (): Enum entry not found - InvalidLength (): Invalid length - ReadOnly (): Read only - SetFromStringUndefined (): Set from string undefined - GetAsStringUndefined (): Get as string undefined - InvalidBitRange (): Invalid bit range - InvalidSyntax (): Invalid syntax --- # Enum GenICamGcNameSpace Link: api/VisioForge.Core.Types.X.Sources.GenICamGcNameSpace.html # Enum GenICamGcNameSpace # Enum GenICamGcNameSpace **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam name space enumeration ```csharp public enum GenICamGcNameSpace ``` ## Fields Parameters: - Undefined (): Undefined name space - Standard (): Genicam standardized name space - Custom (): Non-standardized name space --- # Enum GenICamGenTLError Link: api/VisioForge.Core.Types.X.Sources.GenICamGenTLError.html # Enum GenICamGenTLError # Enum GenICamGenTLError **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenTL error codes ```csharp public enum GenICamGenTLError ``` ## Fields Parameters: - Success (): Operation completed successfully - Error (): Unspecified internal error - NotInitialized (): GenTL Producer or system not initialized - NotImplemented (): Operation is not implemented - ResourceInUse (): Resource is in use - AccessDenied (): Access denied - InvalidHandle (): Invalid handle - InvalidId (): Invalid ID - NoData (): No data available - InvalidParameter (): Invalid parameter passed - Io (): Input/output error - Timeout (): Timeout reached - Abort (): Operation aborted - InvalidBuffer (): Invalid buffer - NotAvailable (): Feature not available - InvalidAddress (): Invalid address - BufferTooSmall (): Buffer too small - InvalidIndex (): Invalid index - ParsingChunkData (): Error parsing chunk data - InvalidValue (): Invalid value - ResourceExhausted (): Resource exhausted - OutOfMemory (): Out of memory - Busy (): System is busy - CustomId (): Starting value for custom error IDs --- # Enum GenICamInfoDataType Link: api/VisioForge.Core.Types.X.Sources.GenICamInfoDataType.html # Enum GenICamInfoDataType # Enum GenICamInfoDataType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Information data types for GenTL parameters ```csharp public enum GenICamInfoDataType ``` ## Fields Parameters: - Unknown (): Unknown data type - String (): NULL-terminated C string (ASCII encoded) - StringList (): Concatenated string list - Int16 (): Signed 16 bit integer - UInt16 (): Unsigned 16 bit integer - Int32 (): Signed 32 bit integer - UInt32 (): Unsigned 32 bit integer - Int64 (): Signed 64 bit integer - UInt64 (): Unsigned 64 bit integer - Float64 (): 64 bit floating point number - Ptr (): Pointer type (platform dependent) - Bool8 (): Boolean value occupying 8 bit - SizeT (): Platform dependent unsigned integer - Buffer (): Arbitrary data buffer - PtrDiff (): Platform dependent signed integer - CustomId (): Starting value for custom data type IDs --- # Enum GenICamIsLinear Link: api/VisioForge.Core.Types.X.Sources.GenICamIsLinear.html # Enum GenICamIsLinear # Enum GenICamIsLinear **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam linear relationship enumeration ```csharp public enum GenICamIsLinear ``` ## Fields Parameters: - Undefined (): Undefined relationship between variables - False (): Non-linear relationship between variables - True (): Linear relationship between variables --- # Enum GenICamPixelFormat Link: api/VisioForge.Core.Types.X.Sources.GenICamPixelFormat.html # Enum GenICamPixelFormat # Enum GenICamPixelFormat **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Represents various pixel formats available for GenICam cameras. ```csharp public enum GenICamPixelFormat : uint ``` ## Fields Parameters: - Default (): Default. - Mono8 (): Monochrome, 8 bits per pixel. - Mono8Signed (): Monochrome, 8 bits per pixel, signed. - Mono10 (): Monochrome, 10 bits per pixel. - Mono10Packed (): Monochrome, 10 bits per pixel, packed. - Mono12 (): Monochrome, 12 bits per pixel. - Mono12Packed (): Monochrome, 12 bits per pixel, packed. - Mono14 (): Monochrome, 14 bits per pixel. - Mono16 (): Monochrome, 16 bits per pixel. - BayerGR8 (): Bayer Green Red, 8 bits per pixel. - BayerRG8 (): Bayer Red Green, 8 bits per pixel. - BayerGB8 (): Bayer Green Blue, 8 bits per pixel. - BayerBG8 (): Bayer Blue Green, 8 bits per pixel. - BayerGR10 (): Bayer Green Red, 10 bits per pixel. - BayerRG10 (): Bayer Red Green, 10 bits per pixel. - BayerGB10 (): Bayer Green Blue, 10 bits per pixel. - BayerBG10 (): Bayer Blue Green, 10 bits per pixel. - BayerGR12 (): Bayer Green Red, 12 bits per pixel. - BayerRG12 (): Bayer Red Green, 12 bits per pixel. - BayerGB12 (): Bayer Green Blue, 12 bits per pixel. - BayerBG12 (): Bayer Blue Green, 12 bits per pixel. - BayerGR16 (): Bayer Green Red, 16 bits per pixel. - BayerRG16 (): Bayer Red Green, 16 bits per pixel. - BayerGB16 (): Bayer Green Blue, 16 bits per pixel. - BayerBG16 (): Bayer Blue Green, 16 bits per pixel. - BayerBG10P (): Bayer Blue Green, 10 bits per pixel, packed. - BayerGB10P (): Bayer Green Blue, 10 bits per pixel, packed. - BayerGR10P (): Bayer Green Red, 10 bits per pixel, packed. - BayerRG10P (): Bayer Red Green, 10 bits per pixel, packed. - BayerBG12P (): Bayer Blue Green, 12 bits per pixel, packed. - BayerGB12P (): Bayer Green Blue, 12 bits per pixel, packed. - BayerGR12P (): Bayer Green Red, 12 bits per pixel, packed. - BayerRG12P (): Bayer Red Green, 12 bits per pixel, packed. - BayerGR12Packed (): Bayer Green Red, 12 bits per pixel, packed. - BayerRG12Packed (): Bayer Red Green, 12 bits per pixel, packed. - BayerGB12Packed (): Bayer Green Blue, 12 bits per pixel, packed. - BayerBG12Packed (): Bayer Blue Green, 12 bits per pixel, packed. - BayerGR10Packed (): Bayer Green Red, 10 bits per pixel, packed. - BayerRG10Packed (): Bayer Red Green, 10 bits per pixel, packed. - BayerGB10Packed (): Bayer Green Blue, 10 bits per pixel, packed. - BayerBG10Packed (): Bayer Blue Green, 10 bits per pixel, packed. - Coord3D_ABC_8 (): 3D coordinate A, B, C, 8 bits per pixel. - Coord3D_ABC_8_Planar (): 3D coordinate A, B, C, 8 bits per pixel, planar. - Coord3D_ABC_10P (): 3D coordinate A, B, C, 10 bits per pixel, packed. - Coord3D_ABC_10P_Planar (): 3D coordinate A, B, C, 10 bits per pixel, packed, planar. - Coord3D_ABC_12P (): 3D coordinate A, B, C, 12 bits per pixel, packed. - Coord3D_ABC_12P_Planar (): 3D coordinate A, B, C, 12 bits per pixel, packed, planar. - Coord3D_ABC_16 (): 3D coordinate A, B, C, 16 bits per pixel. - Coord3D_ABC_16_Planar (): 3D coordinate A, B, C, 16 bits per pixel, planar. - Coord3D_ABC_32F (): 3D coordinate A, B, C, 32 bits per pixel, floating point. - Coord3D_ABC_32F_Planar (): 3D coordinate A, B, C, 32 bits per pixel, floating point, planar. - Coord3D_AC_8 (): 3D coordinate A, C, 8 bits per pixel. - Coord3D_AC_8_Planar (): 3D coordinate A, C, 8 bits per pixel, planar. - Coord3D_AC_10P (): 3D coordinate A, C, 10 bits per pixel, packed. - Coord3D_AC_10P_Planar (): 3D coordinate A, C, 10 bits per pixel, packed, planar. - Coord3D_AC_12P (): 3D coordinate A, C, 12 bits per pixel, packed. - Coord3D_AC_12P_Planar (): 3D coordinate A, C, 12 bits per pixel, packed, planar. - Coord3D_AC_16 (): 3D coordinate A, C, 16 bits per pixel. - Coord3D_AC_16_Planar (): 3D coordinate A, C, 16 bits per pixel, planar. - Coord3D_AC_32F (): 3D coordinate A, C, 32 bits per pixel, floating point. - Coord3D_AC_32F_Planar (): 3D coordinate A, C, 32 bits per pixel, floating point, planar. - Coord3D_A_8 (): 3D coordinate A, 8 bits per pixel. - Coord3D_A_10P (): 3D coordinate A, 10 bits per pixel, packed. - Coord3D_A_12P (): 3D coordinate A, 12 bits per pixel, packed. - Coord3D_A_16 (): 3D coordinate A, 16 bits per pixel. - Coord3D_A_32F (): 3D coordinate A, 32 bits per pixel, floating point. - Coord3D_B_8 (): 3D coordinate B, 8 bits per pixel. - Coord3D_B_10P (): 3D coordinate B, 10 bits per pixel, packed. - Coord3D_B_12P (): 3D coordinate B, 12 bits per pixel, packed. - Coord3D_B_16 (): 3D coordinate B, 16 bits per pixel. - Coord3D_B_32F (): 3D coordinate B, 32 bits per pixel, floating point. - Coord3D_C_8 (): 3D coordinate C, 8 bits per pixel. - Coord3D_C_10P (): 3D coordinate C, 10 bits per pixel, packed. - Coord3D_C_12P (): 3D coordinate C, 12 bits per pixel, packed. - Coord3D_C_16 (): 3D coordinate C, 16 bits per pixel. - Coord3D_C_32F (): 3D coordinate C, 32 bits per pixel, floating point. - Data8 (): Data, 8 bits. - Data8S (): Data, 8 bits, signed. - Data16 (): Data, 16 bits. - Data16S (): Data, 16 bits, signed. - Data32 (): Data, 32 bits. - Data32F (): Data, 32 bits, floating point. - Data32S (): Data, 32 bits, signed. - Data64 (): Data, 64 bits. - Data64F (): Data, 64 bits, floating point. - Data64S (): Data, 64 bits, signed. - RGB8Packed (): RGB, 8 bits per pixel, packed. - BGR8Packed (): BGR, 8 bits per pixel, packed. - RGBA8Packed (): RGBA, 8 bits per pixel, packed. - BGRA8Packed (): BGRA, 8 bits per pixel, packed. - RGB10Packed (): RGB, 10 bits per pixel, packed. - BGR10Packed (): BGR, 10 bits per pixel, packed. - RGB12Packed (): RGB, 12 bits per pixel, packed. - BGR12Packed (): BGR, 12 bits per pixel, packed. - YUV411Packed (): YUV 411, packed. - YUV422Packed (): YUV 422, packed. - YUV444Packed (): YUV 444, packed. - RGB8Planar (): RGB, 8 bits per pixel, planar. - RGB10Planar (): RGB, 10 bits per pixel, planar. - RGB12Planar (): RGB, 12 bits per pixel, planar. - RGB16Planar (): RGB, 16 bits per pixel, planar. - YUV422YUYVPacked (): YUV 422, YUYV packed. - CustomBayerGR12Packed (): Custom Bayer Green Red, 12 bits per pixel, packed. - CustomBayerRG12Packed (): Custom Bayer Red Green, 12 bits per pixel, packed. - CustomBayerGB12Packed (): Custom Bayer Green Blue, 12 bits per pixel, packed. - CustomBayerBG12Packed (): Custom Bayer Blue Green, 12 bits per pixel, packed. - CustomYUV422YUYVPacked (): Custom YUV 422, YUYV packed. - CustomBayerGR16 (): Custom Bayer Green Red, 16 bits per pixel. - CustomBayerRG16 (): Custom Bayer Red Green, 16 bits per pixel. - CustomBayerGB16 (): Custom Bayer Green Blue, 16 bits per pixel. - CustomBayerBG16 (): Custom Bayer Blue Green, 16 bits per pixel. --- # Enum GenICamPixelFormatNamespace Link: api/VisioForge.Core.Types.X.Sources.GenICamPixelFormatNamespace.html # Enum GenICamPixelFormatNamespace # Enum GenICamPixelFormatNamespace **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Pixel format namespace identifiers ```csharp public enum GenICamPixelFormatNamespace ``` ## Fields Parameters: - Unknown (): Unknown pixel format namespace - Gev (): GigE Vision pixel format namespace - Iidc (): IIDC pixel format namespace - Pfnc16Bit (): PFNC 16-bit pixel format namespace - Pfnc32Bit (): PFNC 32-bit pixel format namespace - CustomId (): Starting value for custom namespace IDs --- # Enum GenICamRangeCheckPolicy Link: api/VisioForge.Core.Types.X.Sources.GenICamRangeCheckPolicy.html # Enum GenICamRangeCheckPolicy # Enum GenICamRangeCheckPolicy **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Range check policy enumeration ```csharp public enum GenICamRangeCheckPolicy ``` ## Fields Parameters: - Disable (): Never check if float or integer node value is in min/max range - Enable (): Always check if float or integer node is in min/max range - Debug (): Check the value, but only display an error message if the value is not allowed - Default (): Default range check policy --- # Enum GenICamRegisterCachePolicy Link: api/VisioForge.Core.Types.X.Sources.GenICamRegisterCachePolicy.html # Enum GenICamRegisterCachePolicy # Enum GenICamRegisterCachePolicy **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Register cache policy enumeration ```csharp public enum GenICamRegisterCachePolicy ``` ## Fields Parameters: - Disable (): Disable register caching - Enable (): Enable register caching - Debug (): Enable register caching, but read the actual register value for comparison - Default (): Default cache policy --- # Enum GenICamRepresentation Link: api/VisioForge.Core.Types.X.Sources.GenICamRepresentation.html # Enum GenICamRepresentation # Enum GenICamRepresentation **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam representation enumeration ```csharp public enum GenICamRepresentation ``` ## Fields Parameters: - Undefined (): Undefined representation - Linear (): Number presented on linear scale (e.g. on a linear slider) - Logarithmic (): Number presented on logarithmic scale (e.g. on a logarithmic slider) - Boolean (): Binary choice (e.g. a checkbox) - PureNumber (): Number presented in an editable field (e.g. a spinbox) - HexNumber (): Number presented in hexadecimal format - Ipv4Address (): IPv4 address - MacAddress (): MAC address --- # Enum GenICamSettingsMode Link: api/VisioForge.Core.Types.X.Sources.GenICamSettingsMode.html # Enum GenICamSettingsMode # Enum GenICamSettingsMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam settings mode. ```csharp public enum GenICamSettingsMode ``` ## Fields Parameters: - Manual (): Manual setting. - AutoOnce (): Automatic setting done once, then returns to manual. - AutoContinuous (): Setting is adjusted continuously. --- # Enum GenICamSignedness Link: api/VisioForge.Core.Types.X.Sources.GenICamSignedness.html # Enum GenICamSignedness # Enum GenICamSignedness **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam signedness enumeration ```csharp public enum GenICamSignedness ``` ## Fields Parameters: - Undefined (): Undefined sign - Signed (): Signed integer - Unsigned (): Unsigned integer --- # Class GenICamSourceSettings Link: api/VisioForge.Core.Types.X.Sources.GenICamSourceSettings.html # Class GenICamSourceSettings # Class GenICamSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam camera source settings. ```csharp public class GenICamSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### GenICamSourceSettings(string, Rect, VideoFrameRate, GenICamPixelFormat) Initializes a new instance of the class. ```csharp public GenICamSourceSettings(string deviceName, Rect region, VideoFrameRate frameRate, GenICamPixelFormat pixelFormat) ``` #### Parameters Parameters: - deviceName (string): Name of the device. - region (Rect): The region. - frameRate (VideoFrameRate): The frame rate. - pixelFormat (GenICamPixelFormat): The pixel format. ### GenICamSourceSettings(string) Initializes a new instance of the class. ```csharp public GenICamSourceSettings(string deviceName) ``` #### Parameters Parameters: - deviceName (string): Name of the device. ## Properties ### AutoExposureMode Gets or sets the automatic exposure mode. ```csharp public GenICamSettingsMode AutoExposureMode { get; set; } ``` #### Property Value Parameters: - (GenICamSettingsMode): ### AutoGainMode Gets or sets the automatic gain mode. ```csharp public GenICamSettingsMode AutoGainMode { get; set; } ``` #### Property Value Parameters: - (GenICamSettingsMode): ### AutoPacketSize Gets or sets a value indicating whether to negotiate GigEVision streaming packet size. ```csharp public bool AutoPacketSize { get; set; } ``` #### Property Value Parameters: - (bool): ### ExposureTime Gets or sets the exposure time [0 - 100_000_000 µs]. ```csharp public TimeSpan? ExposureTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### Features Gets or sets the additional configuration parameters as a space separated list of feature assignations. ```csharp public string Features { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets the frame rate. ```csharp public VideoFrameRate FrameRate { get; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Gain Gets or sets the gain (dB) [-1.0 - 500]. ```csharp public double Gain { get; set; } ``` #### Property Value Parameters: - (double): ### HBinning Gets or sets the CCD horizontal binning. ```csharp public int HBinning { get; set; } ``` #### Property Value Parameters: - (int): ### Name Gets or sets the camera name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### OffsetX Gets or sets the X offset. ```csharp public int OffsetX { get; set; } ``` #### Property Value Parameters: - (int): ### OffsetY Gets or sets the Y offset. ```csharp public int OffsetY { get; set; } ``` #### Property Value Parameters: - (int): ### PacketDelay Gets or sets the GigEVision streaming inter packet delay (in ns, -1 = default). ```csharp public long PacketDelay { get; set; } ``` #### Property Value Parameters: - (long): ### PacketResend Gets or sets a value indicating whether to request dropped packets to be reissued by the camera. ```csharp public bool PacketResend { get; set; } ``` #### Property Value Parameters: - (bool): ### PacketSize Gets or sets the size of the packet [36-65500]. ```csharp public int PacketSize { get; set; } ``` #### Property Value Parameters: - (int): ### PixelFormat Gets the pixel format. ```csharp public GenICamPixelFormat PixelFormat { get; } ``` #### Property Value Parameters: - (GenICamPixelFormat): ### Region Gets the region. ```csharp public Rect Region { get; } ``` #### Property Value Parameters: - (Rect): ### USBMode Gets or sets the USB mode. ```csharp public GenICamUSBMode USBMode { get; set; } ``` #### Property Value Parameters: - (GenICamUSBMode): ### VBinning Gets or sets the CCD vertical binning. ```csharp public int VBinning { get; set; } ``` #### Property Value Parameters: - (int): ### VBuffersNumber Gets or sets the number of video buffers to allocate for video frames. ```csharp public int VBuffersNumber { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum GenICamStreamable Link: api/VisioForge.Core.Types.X.Sources.GenICamStreamable.html # Enum GenICamStreamable # Enum GenICamStreamable **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam streamable enumeration ```csharp public enum GenICamStreamable ``` ## Fields Parameters: - Undefined (): Undefined streamable - False (): The feature can't be used for camera state persistence - True (): The feature can be used for camera state persistence --- # Enum GenICamStreamCallbackType Link: api/VisioForge.Core.Types.X.Sources.GenICamStreamCallbackType.html # Enum GenICamStreamCallbackType # Enum GenICamStreamCallbackType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Stream callback type enumeration ```csharp public enum GenICamStreamCallbackType ``` ## Fields Parameters: - Init (): Thread initialization, happens once - Exit (): Thread end, happens once - StartBuffer (): Buffer filling start, happens at each frame - BufferDone (): Buffer filled, happens at each frame --- # Enum GenICamUSBMode Link: api/VisioForge.Core.Types.X.Sources.GenICamUSBMode.html # Enum GenICamUSBMode # Enum GenICamUSBMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam USB mode. ```csharp public enum GenICamUSBMode ``` ## Fields Parameters: - Sync (): libUSB synchronous device I/O API. - Async (): libUSB asynchronous device I/O API. - Default (): The default USB mode. --- # Enum GenICamUvUsbMode Link: api/VisioForge.Core.Types.X.Sources.GenICamUvUsbMode.html # Enum GenICamUvUsbMode # Enum GenICamUvUsbMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll USB modes for UV cameras ```csharp public enum GenICamUvUsbMode ``` ## Fields Parameters: - Sync (): Utilize libusb synchronous device I/O API - Async (): Utilize libusb asynchronous device I/O API - Default (): Default USB mode --- # Enum GenICamVisibility Link: api/VisioForge.Core.Types.X.Sources.GenICamVisibility.html # Enum GenICamVisibility # Enum GenICamVisibility **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam visibility enumeration ```csharp public enum GenICamVisibility ``` ## Fields Parameters: - Undefined (): Undefined feature visibility level - Invisible (): Feature should be not be visible in user interface - Guru (): Very advanced feature to be shown to very experienced users - Expert (): Advanced feature to be shown to expert users - Beginner (): Basic feature to be shown to all users --- # Class HTTPMJPEGSourceSettings Link: api/VisioForge.Core.Types.X.Sources.HTTPMJPEGSourceSettings.html # Class HTTPMJPEGSourceSettings # Class HTTPMJPEGSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll HTTP MJPEG source settings. ```csharp public class HTTPMJPEGSourceSettings : HTTPSourceSettings, IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### CustomVideoFrameRate Gets or sets the custom video frame rate. Usually MJPEG cameras do not provide frame rate information. ```csharp public VideoFrameRate CustomVideoFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Latency Gets or sets the latency (buffer size). ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### CreateAsync(Uri, string, string, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(Uri uri, string login = null, string password = null, bool readInfo = true) ``` #### Parameters Parameters: - uri (Uri): The URI. - login (string): The login. - password (string): The password. - readInfo (bool): if set to true to read information. Disable only if you have some issues. #### Returns Parameters: - (Task < HTTPMJPEGSourceSettings >): A Task<RTSPSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the information. Call the ReadInfoAsync method to get the information first. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### IsAudioAvailable() Determines whether audio available. ```csharp public bool IsAudioAvailable() ``` #### Returns Parameters: - (bool): true if audio available; otherwise, false. ### IsVideoAvailable() Determines whether video available. ```csharp public bool IsVideoAvailable() ``` #### Returns Parameters: - (bool): true if video available; otherwise, false. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Enum HTTPSourceSettings.SOUPLoggerLogLevel Link: api/VisioForge.Core.Types.X.Sources.HTTPSourceSettings.SOUPLoggerLogLevel.html # Enum HTTPSourceSettings.SOUPLoggerLogLevel # Enum HTTPSourceSettings.SOUPLoggerLogLevel **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Describes the level of logging output to provide. ```csharp public enum HTTPSourceSettings.SOUPLoggerLogLevel ``` ## Fields Parameters: - None (): No logging. - Minimal (): Log the Request-Line or Status-Line and the Soup-Debug pseudo-headers. - Headers (): Log the full request/response headers. - Body (): Log the full headers and request/response bodies. --- # Class HTTPSourceSettings Link: api/VisioForge.Core.Types.X.Sources.HTTPSourceSettings.html # Class HTTPSourceSettings # Class HTTPSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll HTTP/HTTPS source settings. Implements the . Implements the . ```csharp public class HTTPSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### HTTPSourceSettings(Uri, bool) Initializes a new instance of the class. ```csharp public HTTPSourceSettings(Uri uri, bool live = true) ``` #### Parameters Parameters: - uri (Uri): The URI. - live (bool): if set to true is live. ## Properties ### AutomaticRedirect Automatically follow HTTP redirects (HTTP Status Code 3xx). Default value: true. ```csharp public bool AutomaticRedirect { get; set; } ``` #### Property Value Parameters: - (bool): ### Compress Allow compressed content encodings. Default value: false. ```csharp public bool Compress { get; set; } ``` #### Property Value Parameters: - (bool): ### Cookies HTTP request cookies. ```csharp public string[] Cookies { get; set; } ``` #### Property Value Parameters: - (string [ ]): ### ExtraHeaders Extra headers to append to the HTTP request. ```csharp public Dictionary ExtraHeaders { get; } ``` #### Property Value Parameters: - (Dictionary < string , string >): ### FallbackSwitch Gets or sets the fallback switch settings for automatic failover. When configured, the source will automatically switch to a fallback (static text, image, or media) when the main HTTP/HTTPS stream fails. ```csharp public FallbackSwitchSettings FallbackSwitch { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettings): ### HTTPLogLevel Set log level for SOUP's HTTP session log. Default value: headers (2). ```csharp public HTTPSourceSettings.SOUPLoggerLogLevel HTTPLogLevel { get; set; } ``` #### Property Value Parameters: - (HTTPSourceSettings . SOUPLoggerLogLevel): ### InternetRadioMode Enable internet radio mode (ask server to send shoutcast/icecast metadata interleaved with the actual stream data). Default value: true. ```csharp public bool InternetRadioMode { get; set; } ``` #### Property Value Parameters: - (bool): ### IsLive Act like a live source. Default value: false. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### KeepAlive Use HTTP persistent connections. Default value: true. ```csharp public bool KeepAlive { get; set; } ``` #### Property Value Parameters: - (bool): ### Location Location to read from. Default value: NULL. ```csharp public Uri Location { get; set; } ``` #### Property Value Parameters: - (Uri): ### Method The HTTP method to use (GET, HEAD, OPTIONS, etc). Default value: NULL. ```csharp public string Method { get; set; } ``` #### Property Value Parameters: - (string): ### Proxy HTTP proxy server URI. ```csharp public string Proxy { get; set; } ``` #### Property Value Parameters: - (string): ### ProxyPassword HTTP proxy URI user password for authentication. Default value: NULL. ```csharp public string ProxyPassword { get; set; } ``` #### Property Value Parameters: - (string): ### ProxyUserId HTTP proxy URI user id for authentication. Default value: NULL. ```csharp public string ProxyUserId { get; set; } ``` #### Property Value Parameters: - (string): ### Retries Maximum number of retries until giving up (-1=infinite). Default value: 3. ```csharp public int Retries { get; set; } ``` #### Property Value Parameters: - (int): ### SSLCAFile Location of a SSL anchor CA file to use. Default value: NULL. ```csharp public string SSLCAFile { get; set; } ``` #### Property Value Parameters: - (string): ### SSLStrict Strict SSL certificate checking. Default value: true. ```csharp public bool SSLStrict { get; set; } ``` #### Property Value Parameters: - (bool): ### SSLUseSystemCAFile Use system CA file. Default value: true. ```csharp public bool SSLUseSystemCAFile { get; set; } ``` #### Property Value Parameters: - (bool): ### Timeout Value in seconds to timeout a blocking I/O (0 = No timeout). Default value: 15. ```csharp public TimeSpan Timeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### UserAgent Value of the User-Agent HTTP request header field. Default value: GStreamer souphttpsrc {VERSION}. ```csharp public string UserAgent { get; set; } ``` #### Property Value Parameters: - (string): ### UserID HTTP location URI user id for authentication. Default value: NULL. ```csharp public string UserID { get; set; } ``` #### Property Value Parameters: - (string): ### UserPassword HTTP location URI user password for authentication. Default value: NULL. ```csharp public string UserPassword { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. ## See Also --- # Interface IAudioCaptureDeviceSourceSettings Link: api/VisioForge.Core.Types.X.Sources.IAudioCaptureDeviceSourceSettings.html # Interface IAudioCaptureDeviceSourceSettings # Interface IAudioCaptureDeviceSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Audio capture device source settings interface. ```csharp public interface IAudioCaptureDeviceSourceSettings : IAudioVolumeMute ``` #### Implements ## Properties ### API Gets or sets the API. ```csharp AudioCaptureDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioCaptureDeviceAPI): ### Format Gets or sets the format. ```csharp AudioCaptureDeviceFormat Format { get; set; } ``` #### Property Value Parameters: - (AudioCaptureDeviceFormat): --- # Class ImageSequenceSourceSettings Link: api/VisioForge.Core.Types.X.Sources.ImageSequenceSourceSettings.html # Class ImageSequenceSourceSettings # Class ImageSequenceSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Image sequence source settings for reading image sequences from a folder. ```csharp public class ImageSequenceSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ImageSequenceSourceSettings(string, string) Initializes a new instance of the class. ```csharp public ImageSequenceSourceSettings(string folderPath, string filePattern = null) ``` #### Parameters Parameters: - folderPath (string): The folder path containing the image sequence. - filePattern (string): The file pattern (optional, will auto-detect if not provided). ## Properties ### FilePattern Gets or sets the image file pattern (e.g., "image_%05d.jpg"). ```csharp public string FilePattern { get; set; } ``` #### Property Value Parameters: - (string): ### FolderPath Gets or sets the folder path containing the image sequence. ```csharp public string FolderPath { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets or sets the frame rate for the image sequence playback. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### ImageFiles Gets the image file names found in the folder. ```csharp public string[] ImageFiles { get; } ``` #### Property Value Parameters: - (string [ ]): ### IsLive True for live stream, false for a stream with seeking support. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### Loop Gets or sets whether the sequence should loop infinitely. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): ### NumBuffers Gets or sets the number of buffers to output before sending Stop call (-1 = unlimited). ```csharp public int NumBuffers { get; set; } ``` #### Property Value Parameters: - (int): ### StartIndex Gets or sets the starting index for the image sequence. ```csharp public int StartIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the media block for this image sequence source. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetImageCount() Gets the number of image files detected in the folder. ```csharp public int GetImageCount() ``` #### Returns Parameters: - (int): The count of image files. --- # Class ImageVideoSourceSettings Link: api/VisioForge.Core.Types.X.Sources.ImageVideoSourceSettings.html # Class ImageVideoSourceSettings # Class ImageVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Image video source settings. ```csharp public class ImageVideoSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ImageVideoSourceSettings(string) Initializes a new instance of the class. ```csharp public ImageVideoSourceSettings(string filename) ``` #### Parameters Parameters: - filename (string): The file name. ## Properties ### AnimationInfiniteLoop Gets or sets a value indicating whether the animation should loop infinitely. ```csharp public bool AnimationInfiniteLoop { get; set; } ``` #### Property Value Parameters: - (bool): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Format Gets the image format. ```csharp public SKEncodedImageFormat Format { get; } ``` #### Property Value Parameters: - (SKEncodedImageFormat): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets the height. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### IsAnimated Is the image animated? ```csharp public bool IsAnimated { get; } ``` #### Property Value Parameters: - (bool): ### IsLive True for live stream, false for a stream with seeking support. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### NumBuffers Gets or sets the number of buffers to output before sending Stop call (-1 = unlimited). ```csharp public int NumBuffers { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets the width. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Interface IPushSourceSettings Link: api/VisioForge.Core.Types.X.Sources.IPushSourceSettings.html # Interface IPushSourceSettings # Interface IPushSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Interface IPushSourceSettings. ```csharp public interface IPushSourceSettings ``` ## Properties ### BlockPushData Gets or sets a value indicating whether to block pushing data until it's read. ```csharp bool BlockPushData { get; set; } ``` #### Property Value Parameters: - (bool): ### DoTimestamp Gets or sets a value indicating whether to add timestamp. ```csharp bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### PushFormat Gets or sets the format. ```csharp PushSourceFormat PushFormat { get; set; } ``` #### Property Value Parameters: - (PushSourceFormat): ### StreamType Gets or sets the type of the stream. ```csharp PushSourceStreamType StreamType { get; set; } ``` #### Property Value Parameters: - (PushSourceStreamType): ## Methods ### GetSourceType() Gets the type of the source. ```csharp PushSourceType GetSourceType() ``` #### Returns Parameters: - (PushSourceType): PushSourceType. --- # Interface IScreenCaptureSourceSettings Link: api/VisioForge.Core.Types.X.Sources.IScreenCaptureSourceSettings.html # Interface IScreenCaptureSourceSettings # Interface IScreenCaptureSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Screen capture source settings interface. ```csharp public interface IScreenCaptureSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Implements ## Properties ### CaptureCursor Gets or sets a value indicating whether mouse cursor capture is enabled. ```csharp bool CaptureCursor { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameRate Gets or sets the frame rate. ```csharp VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Rectangle Gets or sets the rectangle to capture. ```csharp Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ## Methods ### GetSourceType() Gets the type of the source. ```csharp ScreenCaptureSourceType GetSourceType() ``` #### Returns Parameters: - (ScreenCaptureSourceType): ScreenCaptureSourceType. ### UpdateLiveSettings(int, int, bool) Updates the live settings. ```csharp void UpdateLiveSettings(int x, int y, bool cursor) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. - cursor (bool): if set to true show cursor. ### OnUpdated Occurs when on updated. ```csharp event EventHandler OnUpdated ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Interface IUniversalDemuxSettings Link: api/VisioForge.Core.Types.X.Sources.IUniversalDemuxSettings.html # Interface IUniversalDemuxSettings # Interface IUniversalDemuxSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Interface IUniversalDemuxSettings. ```csharp public interface IUniversalDemuxSettings ``` ## Properties ### Type Gets or sets the type. ```csharp UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): --- # Interface IVideoMixerControl Link: api/VisioForge.Core.Types.X.Sources.IVideoMixerControl.html # Interface IVideoMixerControl # Interface IVideoMixerControl **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video mixer control interface. ```csharp public interface IVideoMixerControl ``` ## Methods ### Input_Get(Guid) Gets input by GUID. ```csharp VideoMixerStream Input_Get(Guid id) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. #### Returns Parameters: - (VideoMixerStream): VideoMixerStream. ### Input_List() Gets all input streams. ```csharp VideoMixerStream[] Input_List() ``` #### Returns Parameters: - (VideoMixerStream [ ]): Array of VideoMixerStream. ### Input_Move(Guid, Rect, TimeSpan, double?, double?) Moves the input by GUID. ```csharp void Input_Move(Guid id, Rect rect, TimeSpan duration, double? startAlpha, double? endAlpha) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. - rect (Rect): The rectangle. - duration (TimeSpan): The duration. - startAlpha (double ?): The start alpha (optional). - endAlpha (double ?): The end alpha (optional). ### Input_SetChromaKeyEnabled(Guid, bool) Enables or disables chroma key for a specific input stream by GUID. ```csharp void Input_SetChromaKeyEnabled(Guid id, bool enabled) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. - enabled (bool): Whether chroma key should be enabled. ### Input_Update(VideoMixerStream) Updates input by GUID. ```csharp void Input_Update(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The stream. ### Input_UpdateChromaKeySettings(Guid, ChromaKeySettingsX) Updates the chroma key settings for a specific input stream by GUID. ```csharp void Input_UpdateChromaKeySettings(Guid id, ChromaKeySettingsX settings) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. - settings (ChromaKeySettingsX): The new chroma key settings. ### SetSettings(VideoMixerBaseSettings) Sets the settings. ```csharp void SetSettings(VideoMixerBaseSettings settings) ``` #### Parameters Parameters: - settings (VideoMixerBaseSettings): The settings. ### StartFadeIn(Guid, TimeSpan) Starts the fade-in by GUID. ```csharp void StartFadeIn(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. - duration (TimeSpan): The duration. ### StartFadeOut(Guid, TimeSpan) Starts the fade-out by GUID. ```csharp void StartFadeOut(Guid id, TimeSpan duration) ``` #### Parameters Parameters: - id (Guid): The GUID identifier. - duration (TimeSpan): The duration. --- # Interface IVideoMixerSource Link: api/VisioForge.Core.Types.X.Sources.IVideoMixerSource.html # Interface IVideoMixerSource # Interface IVideoMixerSource **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Interface IVideoMixerSource. ```csharp public interface IVideoMixerSource : IVideoSourceSettings, IMediaBlockSettings ``` #### Implements --- # Interface IVideoSourceSettings Link: api/VisioForge.Core.Types.X.Sources.IVideoSourceSettings.html # Interface IVideoSourceSettings # Interface IVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Shared video source settings. ```csharp public interface IVideoSourceSettings : IMediaBlockSettings ``` #### Implements --- # Class MediaBlockFallbackSettings Link: api/VisioForge.Core.Types.X.Sources.MediaBlockFallbackSettings.html # Class MediaBlockFallbackSettings # Class MediaBlockFallbackSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Configuration for media block fallback. ```csharp public class MediaBlockFallbackSettings : FallbackSwitchSettingsBase ``` #### Inheritance #### Inherited Members ## Constructors ### MediaBlockFallbackSettings() Initializes a new instance of the class. ```csharp public MediaBlockFallbackSettings() ``` ## Properties ### BufferDurationMs Gets or sets the buffer duration for the fallback source (in milliseconds). Default is -1 (use default buffering). ```csharp public int BufferDurationMs { get; set; } ``` #### Property Value Parameters: - (int): ### CustomPipeline Gets or sets the custom GStreamer pipeline elements for fallback. This allows for complex fallback scenarios with custom processing. ```csharp public string CustomPipeline { get; set; } ``` #### Property Value Parameters: - (string): ### FallbackUri Gets or sets the fallback media source (URI or file path). ```csharp public string FallbackUri { get; set; } ``` #### Property Value Parameters: - (string): ### IsLive Gets or sets whether the fallback source is live. Default is false. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): --- # Enum NDIRecvColorFormat Link: api/VisioForge.Core.Types.X.Sources.NDIRecvColorFormat.html # Enum NDIRecvColorFormat # Enum NDIRecvColorFormat **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll NDI receive color format options. ```csharp public enum NDIRecvColorFormat ``` ## Fields Parameters: - BgrxBgra (): BGRX or BGRA format. - UyvyBgra (): UYVY or BGRA format (default). - RgbxRgba (): RGBX or RGBA format. - UyvyRgba (): UYVY or RGBA format. - Fastest (): Fastest format (recommended for best performance). - Best (): Best quality format. --- # Class NDISourceInfo Link: api/VisioForge.Core.Types.X.Sources.NDISourceInfo.html # Class NDISourceInfo # Class NDISourceInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll NDI source information. ```csharp public class NDISourceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NDISourceInfo(string, string) Initializes a new instance of the class. ```csharp public NDISourceInfo(string name, string url) ``` #### Parameters Parameters: - name (string): The name. - url (string): The URL. ### NDISourceInfo(Device) Initializes a new instance of the class. ```csharp public NDISourceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### Name Gets or sets the name of the source. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### URL Gets or sets the URL. ```csharp public string URL { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class NDISourceSettings Link: api/VisioForge.Core.Types.X.Sources.NDISourceSettings.html # Class NDISourceSettings # Class NDISourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll NDI source settings. ```csharp public class NDISourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bandwidth Gets or sets the bandwidth setting. ```csharp public int Bandwidth { get; set; } ``` #### Property Value Parameters: - (int): ### ColorFormat Gets or sets the color format for receiving video. ```csharp public NDIRecvColorFormat ColorFormat { get; set; } ``` #### Property Value Parameters: - (NDIRecvColorFormat): ### ConnectTimeout Gets or sets the connection timeout for initial connection attempts. ```csharp public TimeSpan ConnectTimeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### DoTimestamp Gets or sets whether to apply timestamps to buffers. ```csharp public bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### FallbackSwitch Gets or sets the fallback switch settings for automatic failover. When configured, the source will automatically switch to a fallback (static text, image, or media) when the main NDI stream fails. ```csharp public FallbackSwitchSettings FallbackSwitch { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettings): ### MaxQueueLength Gets or sets the maximum receive queue length. ```csharp public uint MaxQueueLength { get; set; } ``` #### Property Value Parameters: - (uint): ### ReceiverName Gets or sets the name of the receiver. ```csharp public string ReceiverName { get; set; } ``` #### Property Value Parameters: - (string): ### SourceName Gets or sets the name of the source. ```csharp public string SourceName { get; set; } ``` #### Property Value Parameters: - (string): ### Timeout Gets or sets the receive timeout for detecting disconnected sources. ```csharp public TimeSpan Timeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### TimestampMode Gets or sets the timestamp mode for synchronization. ```csharp public NDITimestampMode TimestampMode { get; set; } ``` #### Property Value Parameters: - (NDITimestampMode): ### URL Gets or sets the URL. ```csharp public string URL { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateAsync(ContextX, NDISourceInfo) Create as an asynchronous operation. ```csharp public static Task CreateAsync(ContextX context, NDISourceInfo info) ``` #### Parameters Parameters: - context (ContextX): The context. - info (NDISourceInfo): The information. #### Returns Parameters: - (Task < NDISourceSettings >): A Task<NDISourceSettings> representing the asynchronous operation. ### CreateAsync(ContextX, string, string) Create as an asynchronous operation. ```csharp public static Task CreateAsync(ContextX context, string sourceName, string url) ``` #### Parameters Parameters: - context (ContextX): The context. - sourceName (string): Name of the source. - url (string): The URL. #### Returns Parameters: - (Task < NDISourceSettings >): A Task<NDISourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### IsValid() Check that the source is available. ```csharp public bool IsValid() ``` #### Returns Parameters: - (bool): true if both and are not null or empty; otherwise, false. --- # Enum NDITimestampMode Link: api/VisioForge.Core.Types.X.Sources.NDITimestampMode.html # Enum NDITimestampMode # Enum NDITimestampMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll NDI timestamp mode options. ```csharp public enum NDITimestampMode ``` ## Fields Parameters: - Auto (): Automatic timestamp selection. - ReceiveTimeVsTimecode (): Use receive time vs timecode. - ReceiveTimeVsTimestamp (): Use receive time vs timestamp. - Timecode (): Use NDI timecode. - Timestamp (): Use NDI timestamp. - ReceiveTime (): Use receive time. - Clocked (): Use clocked mode. --- # Class PulseAudioSourceSettings Link: api/VisioForge.Core.Types.X.Sources.PulseAudioSourceSettings.html # Class PulseAudioSourceSettings # Class PulseAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll PulseAudio source settings for capturing audio using pulsesrc GStreamer element. PulseAudio is the default sound server on many Linux distributions. Implements the Implements the ```csharp public class PulseAudioSourceSettings : IAudioCaptureDeviceSourceSettings, IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PulseAudioSourceSettings() Initializes a new instance of the class. ```csharp public PulseAudioSourceSettings() ``` ### PulseAudioSourceSettings(AudioCaptureDeviceInfo, AudioCaptureDeviceFormat) Initializes a new instance of the class with device information. ```csharp public PulseAudioSourceSettings(AudioCaptureDeviceInfo device, AudioCaptureDeviceFormat format) ``` #### Parameters Parameters: - device (AudioCaptureDeviceInfo): The device. - format (AudioCaptureDeviceFormat): The format. ## Properties ### API Gets the API type. ```csharp public AudioCaptureDeviceAPI API { get; } ``` #### Property Value Parameters: - (AudioCaptureDeviceAPI): ### ClientName Gets or sets the client name that will be visible in PulseAudio volume control applications. ```csharp public string ClientName { get; set; } ``` #### Property Value Parameters: - (string): ### Device Gets or sets the device information. ```csharp public AudioCaptureDeviceInfo Device { get; set; } ``` #### Property Value Parameters: - (AudioCaptureDeviceInfo): ### DeviceName Gets or sets the PulseAudio device name. If null or empty, the default device will be used. ```csharp public string DeviceName { get; set; } ``` #### Property Value Parameters: - (string): ### Format Gets or sets the audio format. ```csharp public AudioCaptureDeviceFormat Format { get; set; } ``` #### Property Value Parameters: - (AudioCaptureDeviceFormat): ### ProvideClock Gets or sets a value indicating whether to provide a clock for the pipeline. ```csharp public bool ProvideClock { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the media block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetMute() Gets the mute state. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if muted, false otherwise. ### GetVolume() Gets the volume. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute state. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Class PushAudioSourceSettings Link: api/VisioForge.Core.Types.X.Sources.PushAudioSourceSettings.html # Class PushAudioSourceSettings # Class PushAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Push audio source settings. Implements the ```csharp public class PushAudioSourceSettings : IPushSourceSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PushAudioSourceSettings(bool, int, int, AudioFormatX) Initializes a new instance of the class. ```csharp public PushAudioSourceSettings(bool isLive = true, int sampleRate = 48000, int channels = 2, AudioFormatX format = AudioFormatX.S16) ``` #### Parameters Parameters: - isLive (bool): if set to true source is live. - sampleRate (int): The sample rate. - channels (int): The channels. - format (AudioFormatX): The format. ## Properties ### BlockPushData Gets or sets a value indicating whether to block pushing data until it's read. ```csharp public bool BlockPushData { get; set; } ``` #### Property Value Parameters: - (bool): ### Channels Gets or sets the channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### DoTimestamp Gets or sets a value indicating whether to add timestamp. ```csharp public bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### Format Gets or sets the format. ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### IsLive Gets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### PushFormat Gets or sets the format. ```csharp public PushSourceFormat PushFormat { get; set; } ``` #### Property Value Parameters: - (PushSourceFormat): ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### StreamType Gets or sets the type of the stream. ```csharp public PushSourceStreamType StreamType { get; set; } ``` #### Property Value Parameters: - (PushSourceStreamType): ## Methods ### GetSourceType() Gets the type of the source. ```csharp public PushSourceType GetSourceType() ``` #### Returns Parameters: - (PushSourceType): PushSourceType. ## See Also --- # Class PushDataSourceSettings Link: api/VisioForge.Core.Types.X.Sources.PushDataSourceSettings.html # Class PushDataSourceSettings # Class PushDataSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Push data source settings. Implements the . ```csharp public class PushDataSourceSettings : IPushSourceSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### BlockPushData Gets or sets a value indicating whether to block pushing data until it's read. ```csharp public bool BlockPushData { get; set; } ``` #### Property Value Parameters: - (bool): ### Caps Gets or sets the caps. ```csharp public Caps Caps { get; set; } ``` #### Property Value Parameters: - (Caps): ### DoTimestamp Gets or sets a value indicating whether to add timestamp. ```csharp public bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### PadMediaType Gets or sets the type of the pad. ```csharp public MediaBlockPadMediaType PadMediaType { get; set; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): ### PushFormat Gets or sets the format. ```csharp public PushSourceFormat PushFormat { get; set; } ``` #### Property Value Parameters: - (PushSourceFormat): ### StreamType Gets or sets the type of the stream. ```csharp public PushSourceStreamType StreamType { get; set; } ``` #### Property Value Parameters: - (PushSourceStreamType): ## Methods ### GetSourceType() Gets the type of the source. ```csharp public PushSourceType GetSourceType() ``` #### Returns Parameters: - (PushSourceType): PushSourceType. ## See Also --- # Class PushJPEGSourceSettings Link: api/VisioForge.Core.Types.X.Sources.PushJPEGSourceSettings.html # Class PushJPEGSourceSettings # Class PushJPEGSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Push JPEG source settings. Implements the . ```csharp public class PushJPEGSourceSettings : IPushSourceSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PushJPEGSourceSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public PushJPEGSourceSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ## Properties ### BlockPushData Gets or sets a value indicating whether to block pushing data until it's read. ```csharp public bool BlockPushData { get; set; } ``` #### Property Value Parameters: - (bool): ### DoTimestamp Gets or sets a value indicating whether to add timestamp. ```csharp public bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### PushFormat Gets or sets the format. ```csharp public PushSourceFormat PushFormat { get; set; } ``` #### Property Value Parameters: - (PushSourceFormat): ### StreamType Gets or sets the type of the stream. ```csharp public PushSourceStreamType StreamType { get; set; } ``` #### Property Value Parameters: - (PushSourceStreamType): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GetSourceType() Gets the type of the source. ```csharp public PushSourceType GetSourceType() ``` #### Returns Parameters: - (PushSourceType): PushSourceType. ## See Also --- # Enum PushSourceFormat Link: api/VisioForge.Core.Types.X.Sources.PushSourceFormat.html # Enum PushSourceFormat # Enum PushSourceFormat **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Enum PushSourceFormat. ```csharp public enum PushSourceFormat ``` ## Fields Parameters: - Undefined (): The undefined. - Default (): The default. - Bytes (): The bytes. - Time (): The time. - Buffers (): The buffers. - Percent (): The percent. --- # Enum PushSourceStreamType Link: api/VisioForge.Core.Types.X.Sources.PushSourceStreamType.html # Enum PushSourceStreamType # Enum PushSourceStreamType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Enum PushSourceStreamType. ```csharp public enum PushSourceStreamType ``` ## Fields Parameters: - Stream (): The stream. - Seekable (): The seekable data. - RandomAccess (): The random access data. --- # Enum PushSourceType Link: api/VisioForge.Core.Types.X.Sources.PushSourceType.html # Enum PushSourceType # Enum PushSourceType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Push Source type. ```csharp public enum PushSourceType ``` ## Fields Parameters: - Video (): The video. - Audio (): The audio. - Data (): The data. - JPEG (): JPEG. --- # Class PushVideoSourceSettings Link: api/VisioForge.Core.Types.X.Sources.PushVideoSourceSettings.html # Class PushVideoSourceSettings # Class PushVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Push video source settings. Implements the . ```csharp public class PushVideoSourceSettings : IPushSourceSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PushVideoSourceSettings(int, int, VideoFrameRate, VideoFormatX) Initializes a new instance of the class. ```csharp public PushVideoSourceSettings(int width, int height, VideoFrameRate frameRate, VideoFormatX format = VideoFormatX.RGB) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. - format (VideoFormatX): The format. ## Properties ### BlockPushData Gets or sets a value indicating whether to block pushing data until it's read. ```csharp public bool BlockPushData { get; set; } ``` #### Property Value Parameters: - (bool): ### DoTimestamp Gets or sets a value indicating whether to add timestamp. ```csharp public bool DoTimestamp { get; set; } ``` #### Property Value Parameters: - (bool): ### Format Gets or sets the format. ```csharp public VideoFormatX Format { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### PushFormat Gets or sets the format. ```csharp public PushSourceFormat PushFormat { get; set; } ``` #### Property Value Parameters: - (PushSourceFormat): ### StreamType Gets or sets the type of the stream. ```csharp public PushSourceStreamType StreamType { get; set; } ``` #### Property Value Parameters: - (PushSourceStreamType): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GetSourceType() Gets the type of the source. ```csharp public PushSourceType GetSourceType() ``` #### Returns Parameters: - (PushSourceType): PushSourceType. ## See Also --- # Class RTMPSourceSettings Link: api/VisioForge.Core.Types.X.Sources.RTMPSourceSettings.html # Class RTMPSourceSettings # Class RTMPSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll RTMP source settings for streaming from RTMP servers. ```csharp public class RTMPSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AsyncConnect Gets or sets a value indicating whether to use asynchronous connection. ```csharp public bool AsyncConnect { get; set; } ``` #### Property Value Parameters: - (bool): ### AudioEnabled Gets or sets a value indicating whether audio stream is enabled. ```csharp public bool AudioEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### CompatibilityMode Gets or sets a value indicating whether to use compatibility mode. In compatibility mode, the SDK will not try to read stream information, but will still try to open and play the stream. ```csharp public bool CompatibilityMode { get; set; } ``` #### Property Value Parameters: - (bool): ### CustomVideoDecoder Gets or sets the custom video decoder to use. ```csharp public string CustomVideoDecoder { get; set; } ``` #### Property Value Parameters: - (string): ### ExtraConnectArgs Gets or sets extra connection arguments for the RTMP connection. ```csharp public string ExtraConnectArgs { get; set; } ``` #### Property Value Parameters: - (string): ### FallbackSwitch Gets or sets the fallback switch settings for automatic failover. When configured, the source will automatically switch to a fallback (static text, image, or media) when the main RTMP stream fails. ```csharp public FallbackSwitchSettings FallbackSwitch { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettings): ### IdleTimeout Gets or sets the idle timeout for the connection. ```csharp public TimeSpan IdleTimeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### NoEofIsError Gets or sets a value indicating whether no EOF should be treated as an error. ```csharp public bool NoEofIsError { get; set; } ``` #### Property Value Parameters: - (bool): ### Uri Gets or sets the RTMP stream URI. ```csharp public Uri Uri { get; set; } ``` #### Property Value Parameters: - (Uri): ### UseGPUDecoder Gets or sets a value indicating whether to use GPU decoder. ```csharp public bool UseGPUDecoder { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateAsync(Uri, bool, bool) Creates RTMP source settings asynchronously. ```csharp public static Task CreateAsync(Uri uri, bool audioEnabled = true, bool readInfo = true) ``` #### Parameters Parameters: - uri (Uri): The RTMP stream URI. - audioEnabled (bool): if set to true audio is enabled. - readInfo (bool): if set to true to read stream information. Disable only if you have connection issues. #### Returns Parameters: - (Task < RTMPSourceSettings >): A Task<RTMPSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates a MediaBlock instance from these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A new RTMPSourceBlock configured with these settings. ### GetInfo() Gets the cached media information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo containing stream information. ### IsAudioAvailable() Determines whether audio is available in the stream. ```csharp public bool IsAudioAvailable() ``` #### Returns Parameters: - (bool): true if audio is available; otherwise, false. ### IsVideoAvailable() Determines whether video is available in the stream. ```csharp public bool IsVideoAvailable() ``` #### Returns Parameters: - (bool): true if video is available; otherwise, false. ### ReadInfo() Reads the stream information. ```csharp public MediaFileInfo ReadInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo containing stream information. ### ReadInfoAsync() Reads the stream information asynchronously. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo> containing stream information. --- # Enum RTSPBufferMode Link: api/VisioForge.Core.Types.X.Sources.RTSPBufferMode.html # Enum RTSPBufferMode # Enum RTSPBufferMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll RTSP buffer mode for jitter buffer control. Controls how the jitter buffer in rtspsrc handles incoming RTP packets. ```csharp public enum RTSPBufferMode ``` ## Fields Parameters: - None (): No buffering. Packets are passed through immediately without reordering. This provides the lowest latency but may result in out-of-order packets. Best for ultra-low latency applications where some packet loss is acceptable. - Auto (): Automatic buffer mode selection based on stream characteristics. GStreamer will automatically choose the best buffering strategy. Recommended for most applications. - Slave (): Slave mode. The jitter buffer will adjust its buffering based on a master clock. Used for synchronized playback across multiple streams. - Buffer (): Buffer mode. Provides packet reordering and buffering for smooth playback. Adds some latency but provides the most stable playback. - Synced (): Synced mode. Synchronizes the jitter buffer with RTP timestamps. Balances latency and stability for synchronized multi-stream scenarios. --- # Enum RTSPNTPTimeSource Link: api/VisioForge.Core.Types.X.Sources.RTSPNTPTimeSource.html # Enum RTSPNTPTimeSource # Enum RTSPNTPTimeSource **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll NTP time source for RTSP timestamp synchronization. Determines which clock source to use for NTP timestamp calculations. ```csharp public enum RTSPNTPTimeSource ``` ## Fields Parameters: - NTP (): Use NTP time from RTCP packets. The most accurate method when the RTSP server provides NTP information. - RunningTime (): Use the system clock. Uses the local machine's clock for timestamp calculations. - Clock (): Use the global pipeline clock. Synchronizes with other elements in the GStreamer pipeline. Recommended for multi-stream synchronized playback. --- # Class RTSPRAWSourceSettings Link: api/VisioForge.Core.Types.X.Sources.RTSPRAWSourceSettings.html # Class RTSPRAWSourceSettings # Class RTSPRAWSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll RTSP RAW source settings. ```csharp public class RTSPRAWSourceSettings : IMediaPlayerBaseSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AllowedProtocols Gets or sets the allowed protocols. ```csharp public RTSPSourceProtocol AllowedProtocols { get; set; } ``` #### Property Value Parameters: - (RTSPSourceProtocol): ### AudioEnabled Gets a value indicating whether audio stream is enabled. ```csharp public bool AudioEnabled { get; } ``` #### Property Value Parameters: - (bool): ### DecodeAudioStream Gets or sets a value indicating whether to decode audio stream. May be required if you want to save an original video stream and PCM audio to a file. ```csharp public bool DecodeAudioStream { get; set; } ``` #### Property Value Parameters: - (bool): ### DoRTCP Gets or sets a value indicating whether do RTCP. ```csharp public bool DoRTCP { get; set; } ``` #### Property Value Parameters: - (bool): ### Latency Gets or sets the latency. ```csharp public int Latency { get; set; } ``` #### Property Value Parameters: - (int): ### Login Gets or sets the login. ```csharp public string Login { get; set; } ``` #### Property Value Parameters: - (string): ### Password Gets or sets the password. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### RTPBlockSize Gets or sets the size of the RTP block. ```csharp public int RTPBlockSize { get; set; } ``` #### Property Value Parameters: - (int): ### SyncAudioWithKeyframe Gets or sets whether to synchronize audio with the first video keyframe. When enabled, audio frames before the first keyframe are dropped to maintain A/V sync. ```csharp public bool SyncAudioWithKeyframe { get; set; } ``` #### Property Value Parameters: - (bool): ### UDPBufferSize Gets or sets the size of the UDP buffer. ```csharp public int UDPBufferSize { get; set; } ``` #### Property Value Parameters: - (int): ### Uri Gets the URI. ```csharp public Uri Uri { get; } ``` #### Property Value Parameters: - (Uri): ### WaitForKeyframe Gets or sets whether to wait for a keyframe before starting video playback. When enabled, ensures clean stream start from an I-frame with synchronized audio. ```csharp public bool WaitForKeyframe { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateAsync(Uri, string, string, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(Uri uri, string login, string password, bool audioEnabled = true) ``` #### Parameters Parameters: - uri (Uri): The URI. - login (string): - password (string): - audioEnabled (bool): if set to true audio enabled. #### Returns Parameters: - (Task < RTSPRAWSourceSettings >): A Task<RTSPRAWSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the file information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Enum RTSPSourceProtocol Link: api/VisioForge.Core.Types.X.Sources.RTSPSourceProtocol.html # Enum RTSPSourceProtocol # Enum RTSPSourceProtocol **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll The RTSP transport. ```csharp [Flags] public enum RTSPSourceProtocol ``` ## Fields Parameters: - Unknown (): Invalid transport flag. - UDP (): Stream data over UDP. - UDP_Multicast (): Stream data over UDP multicast. - TCP (): Stream data over TCP. - HTTP (): Stream data tunneled over HTTP. - EnableTLS (): Encrypt TCP and HTTP with TLS. --- # Class RTSPSourceSettings Link: api/VisioForge.Core.Types.X.Sources.RTSPSourceSettings.html # Class RTSPSourceSettings # Class RTSPSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll RTSP source settings. ```csharp public class RTSPSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AllowedProtocols Gets or sets the allowed protocols. ```csharp public RTSPSourceProtocol AllowedProtocols { get; set; } ``` #### Property Value Parameters: - (RTSPSourceProtocol): ### AudioEnabled Gets or sets a value indicating whether audio stream is enabled. ```csharp public bool AudioEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### BufferMode Gets or sets the buffer mode for the jitter buffer. Controls how incoming RTP packets are buffered and reordered. Note: This property is currently only used internally when LowLatencyMode is enabled. For normal operation, GStreamer's default buffering is used. ```csharp public RTSPBufferMode BufferMode { get; set; } ``` #### Property Value Parameters: - (RTSPBufferMode): ### CompatibilityMode Gets or sets a value indicating whether to use compatibility mode. In compatibility mode, the SDK will not try to read camera information, but will still try to open and play the stream inside the RTSPSourceBlock. ```csharp public bool CompatibilityMode { get; set; } ``` #### Property Value Parameters: - (bool): ### CustomVideoDecoder Gets or sets the custom video decoder to use. ```csharp public string CustomVideoDecoder { get; set; } ``` #### Property Value Parameters: - (string): ### DoRTCP Gets or sets a value indicating whether do RTCP. ```csharp public bool DoRTCP { get; set; } ``` #### Property Value Parameters: - (bool): ### DropOnLatency Gets or sets a value indicating whether to drop frames that arrive later than the configured latency. When true, late frames are dropped to maintain the target latency. Note: This property is currently only used internally when LowLatencyMode is enabled. For normal operation, GStreamer's default behavior is used. ```csharp public bool DropOnLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### EnableRAWVideoAudioEvents Gets or sets a value indicating whether to enable RAW audio/video events. ```csharp public bool EnableRAWVideoAudioEvents { get; set; } ``` #### Property Value Parameters: - (bool): ### FallbackSwitch Gets or sets the fallback switch settings for automatic failover. When configured, the source will automatically switch to a fallback (static text, image, or media) when the main RTSP stream fails. ```csharp public FallbackSwitchSettings FallbackSwitch { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettings): ### Latency Gets or sets the latency (buffer size). For low latency mode, set this to a lower value (e.g., 0-200ms). ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Login Gets or sets IP camera login, if required. ```csharp public string Login { get; set; } ``` #### Property Value Parameters: - (string): ### LowLatencyMode Gets or sets a value indicating whether to enable low latency mode. When enabled, configures the RTSP source for minimal buffering and latency. This sets buffer-mode to None and drop-on-latency to true automatically. ```csharp public bool LowLatencyMode { get; set; } ``` #### Property Value Parameters: - (bool): ### NTPSync Gets or sets a value indicating whether to synchronize RTP timestamps with NTP timestamps. Improves timestamp accuracy for synchronized multi-stream playback. Default is false. ```csharp public bool NTPSync { get; set; } ``` #### Property Value Parameters: - (bool): ### NTPTimeSource Gets or sets the NTP time source for timestamp synchronization. Only used when NTPSync is enabled. Default is NTP. ```csharp public RTSPNTPTimeSource NTPTimeSource { get; set; } ``` #### Property Value Parameters: - (RTSPNTPTimeSource): ### Password Gets or sets IP camera password, if required. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### RTPBlockSize Gets or sets the size of the RTP block. ```csharp public int RTPBlockSize { get; set; } ``` #### Property Value Parameters: - (int): ### UDPBufferSize Gets or sets the size of the UDP buffer. ```csharp public int UDPBufferSize { get; set; } ``` #### Property Value Parameters: - (int): ### Uri Gets or sets the URI. ```csharp public Uri Uri { get; set; } ``` #### Property Value Parameters: - (Uri): ### UseGPUDecoder Gets or sets a value indicating whether to use GPU decoder. ```csharp public bool UseGPUDecoder { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateAsync(Uri, string, string, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(Uri uri, string login, string password, bool audioEnabled, bool readInfo = true) ``` #### Parameters Parameters: - uri (Uri): The URI. - login (string): The login. - password (string): The password. - audioEnabled (bool): if set to true audio is enabled. - readInfo (bool): if set to true to read information. Disable only if you have some issues. #### Returns Parameters: - (Task < RTSPSourceSettings >): A Task<RTSPSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the information. Call the ReadInfoAsync method to get the information first. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### GetVideoURLByONVIFAsync() Get video URL by onvif as an asynchronous operation. ```csharp public Task GetVideoURLByONVIFAsync() ``` #### Returns Parameters: - (Task < bool >): A Task<System.Boolean> representing the asynchronous operation. ### IsAudioAvailable() Determines whether audio available. ```csharp public bool IsAudioAvailable() ``` #### Returns Parameters: - (bool): true if audio available; otherwise, false. ### IsVideoAvailable() Determines whether video available. ```csharp public bool IsVideoAvailable() ``` #### Returns Parameters: - (bool): true if video available; otherwise, false. ### ReadInfo() Reads the information. ```csharp public MediaFileInfo ReadInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. --- # Enum ScreenCaptureSourceType Link: api/VisioForge.Core.Types.X.Sources.ScreenCaptureSourceType.html # Enum ScreenCaptureSourceType # Enum ScreenCaptureSourceType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Screen capture source type. ```csharp public enum ScreenCaptureSourceType ``` ## Fields Parameters: - XDisplay (): The X Display. --- # Class ScreenCaptureXDisplaySourceSettings Link: api/VisioForge.Core.Types.X.Sources.ScreenCaptureXDisplaySourceSettings.html # Class ScreenCaptureXDisplaySourceSettings # Class ScreenCaptureXDisplaySourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Screen capture X Display source settings. ```csharp public class ScreenCaptureXDisplaySourceSettings : IScreenCaptureSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### CaptureCursor Gets or sets a value indicating whether mouse cursor capture is enabled. ```csharp public bool CaptureCursor { get; set; } ``` #### Property Value Parameters: - (bool): ### DisplayName Gets or sets the X Display name. Not set by default. ```csharp public string DisplayName { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### IsRemote Gets or sets a value indicating whether the X display is remote. The element will try to use alternate calls known to work better with remote displays. ```csharp public bool IsRemote { get; set; } ``` #### Property Value Parameters: - (bool): ### Rectangle Gets or sets the rectangle to capture. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ### UseDamage Gets or sets a value indicating whether to use X Damage. ```csharp public bool UseDamage { get; set; } ``` #### Property Value Parameters: - (bool): ### XID Gets or sets the XID of the window to capture. 0 for the root window (default). ```csharp public ulong XID { get; set; } ``` #### Property Value Parameters: - (ulong): ### XName Gets or sets the name of the window to capture, if any. ```csharp public string XName { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetSourceType() Gets the type of the source. ```csharp public ScreenCaptureSourceType GetSourceType() ``` #### Returns Parameters: - (ScreenCaptureSourceType): ScreenCaptureSourceType. ### UpdateLiveSettings(int, int, bool) Updates the live settings. ```csharp public void UpdateLiveSettings(int x, int y, bool cursor) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. - cursor (bool): if set to true show cursor. ### OnUpdated Occurs when on updated. ```csharp public event EventHandler OnUpdated ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class SharedMemorySourceSettings Link: api/VisioForge.Core.Types.X.Sources.SharedMemorySourceSettings.html # Class SharedMemorySourceSettings # Class SharedMemorySourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Shared memory source settings. ```csharp public class SharedMemorySourceSettings ``` #### Inheritance #### Inherited Members ## Constructors ### SharedMemorySourceSettings(string) Initializes a new instance of the class. ```csharp public SharedMemorySourceSettings(string socketPath) ``` #### Parameters Parameters: - socketPath (string): The socket path. ## Properties ### IsLive Gets or sets a value indicating whether the element cannot produce data in PAUSED. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### SocketPath Gets the path to the control socket used to control the shared memory. ```csharp public string SocketPath { get; } ``` #### Property Value Parameters: - (string): --- # Enum SourceType Link: api/VisioForge.Core.Types.X.Sources.SourceType.html # Enum SourceType # Enum SourceType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Source type. ```csharp public enum SourceType ``` ## Fields Parameters: - None (): None. - Universal (): Universal. - UniversalV2 (): Universal V2. - RTSP (): RTSP. - RTMP (): RTMP. - VideoCaptureDevice (): Video capture device. - AudioCaptureDevice (): Audio capture device. - VirtualVideoSource (): Virtual video source. - VirtualAudioSource (): Virtual audio source. - ScreenSource (): Screen source. - StreamSource (): The stream source. - SubtitleSource (): The subtitle source. - DecklinkVideoSource (): The Decklink video source. - DecklinkAudioSource (): The Decklink audio source. It can be used only with DecklinkVideoSource present in the pipeline. - PushSource (): The push source. - IOSVideoSource (): iOS video source. - BridgeVideoSource (): The bridge video source. - BridgeAudioSource (): The bridge audio source. - BridgeSubtitleSource (): The bridge subtitle source. - InterPipeSource (): The InterPipe source. - RSInterSource (): The RS inter source. - RSInterSink (): The RS inter sink. - ImageVideoSource (): The image video source generate a video stream from a still image. - ImageSequenceSource (): The image sequence source generates a video stream from a sequence of images. - GLVirtualVideoSource (): The virtual video source (OpenGL). - NDISource (): The NDI source. - NDISourceX (): The NDI source X. - DVBSource (): The DVB source. - VNCSource (): The VNC/RFB source. - CDG (): The CDG. - RTSP_RAW (): RTSP RAW. - HTTPSource (): The HTTP source. - VideoMixerSource (): The video mixer source. - GenICamSource (): The GenICam source. - BaslerSource (): The Basler camera source. - AlliedVisionSource (): The Allied Vision camera source. - ProxySource (): The proxy source. - BridgeBufferSource (): The bridge buffer source. - SRTSource (): The SRT source. - RaspberryPiSource (): The Raspberry Pi camera source using rpicamsrc. --- # Enum SpinnakerPixelFormat Link: api/VisioForge.Core.Types.X.Sources.Spinnaker.SpinnakerPixelFormat.html # Enum SpinnakerPixelFormat # Enum SpinnakerPixelFormat **Namespace**: VisioForge.Core.Types.X.Sources.Spinnaker **Assembly**: VisioForge.Core.dll Spinnaker pixel format. ```csharp public enum SpinnakerPixelFormat ``` ## Fields Parameters: - RGB (): The RGB (24 bit). - GRAY8 (): The 8-bit grayscale. --- # Enum SpinnakerSourceShutterType Link: api/VisioForge.Core.Types.X.Sources.Spinnaker.SpinnakerSourceShutterType.html # Enum SpinnakerSourceShutterType # Enum SpinnakerSourceShutterType **Namespace**: VisioForge.Core.Types.X.Sources.Spinnaker **Assembly**: VisioForge.Core.dll Spinnaker source shutter type. ```csharp public enum SpinnakerSourceShutterType ``` ## Fields Parameters: - Rolling (): The rolling shutter. - RollingGlobalReset (): The rolling shutter with global reset. - Global (): The global shutter. --- # Namespace VisioForge.Core.Types.X.Sources.Spinnaker Link: api/VisioForge.Core.Types.X.Sources.Spinnaker.html # Namespace VisioForge.Core.Types.X.Sources.Spinnaker # Namespace VisioForge.Core.Types.X.Sources.Spinnaker ### Enums Parameters: - (): Spinnaker pixel format. - (): Spinnaker source shutter type. --- # Class SpinnakerCameraInfo Link: api/VisioForge.Core.Types.X.Sources.SpinnakerCameraInfo.html # Class SpinnakerCameraInfo # Class SpinnakerCameraInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll GenICam source information. ```csharp public class SpinnakerCameraInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### FirmwareVersion Gets the firmware version. ```csharp public string FirmwareVersion { get; } ``` #### Property Value Parameters: - (string): ### HeightMax Gets the height maximum. ```csharp public int HeightMax { get; } ``` #### Property Value Parameters: - (int): ### Model Gets or sets the model. ```csharp public string Model { get; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name of the source. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### NetworkInterfaceName Gets or sets the name of the network interface. ```csharp public string NetworkInterfaceName { get; } ``` #### Property Value Parameters: - (string): ### SensorSize Gets the size of the sensor. Call the ReadInfo method first. ```csharp public Size SensorSize { get; } ``` #### Property Value Parameters: - (Size): ### SerialNumber Gets or sets the serial number. ```csharp public string SerialNumber { get; } ``` #### Property Value Parameters: - (string): ### Vendor Gets or sets the vendor. ```csharp public string Vendor { get; } ``` #### Property Value Parameters: - (string): ### WidthMax Gets the width maximum. ```csharp public int WidthMax { get; } ``` #### Property Value Parameters: - (int): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum SRTConnectionMode Link: api/VisioForge.Core.Types.X.Sources.SRTConnectionMode.html # Enum SRTConnectionMode # Enum SRTConnectionMode **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Defines the SRT connection types. ```csharp public enum SRTConnectionMode ``` ## Fields Parameters: - None (): No connection mode specified. - Caller (): Acts as the caller in an SRT connection. - Listener (): Acts as the listener in an SRT connection. - Rendezvous (): Uses the rendezvous mode in an SRT connection. --- # Enum SRTKeyLength Link: api/VisioForge.Core.Types.X.Sources.SRTKeyLength.html # Enum SRTKeyLength # Enum SRTKeyLength **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Defines the key lengths used for SRT connections. ```csharp public enum SRTKeyLength ``` ## Fields Parameters: - NoKey (): No encryption key is used. - Length0 (): Encryption key length of 0 bits (equivalent to no key). - Length16 (): Encryption key length of 16 bits. - Length24 (): Encryption key length of 24 bits. - Length32 (): Encryption key length of 32 bits. --- # Class SRTSourceSettings Link: api/VisioForge.Core.Types.X.Sources.SRTSourceSettings.html # Class SRTSourceSettings # Class SRTSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Configuration settings for an SRT connection. ```csharp public class SRTSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Authentication Authenticate a connection. Defaults to true. ```csharp public bool Authentication { get; set; } ``` #### Property Value Parameters: - (bool): ### AutoReconnect Automatically reconnect when connection fails. Defaults to true. ```csharp public bool AutoReconnect { get; set; } ``` #### Property Value Parameters: - (bool): ### FallbackSwitch Gets or sets the fallback switch settings for automatic failover. When configured, the source will automatically switch to a fallback (static text, image, or media) when the main SRT stream fails. ```csharp public FallbackSwitchSettings FallbackSwitch { get; set; } ``` #### Property Value Parameters: - (FallbackSwitchSettings): ### KeepListening If false, the element will return GST_FLOW_EOS when the remote client disconnects. If true, the element will keep waiting for the client to reconnect. Defaults to false. ```csharp public bool KeepListening { get; set; } ``` #### Property Value Parameters: - (bool): ### Latency Gets or sets the maximum accepted transmission latency. Defaults to 125 milliseconds. ```csharp public TimeSpan Latency { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### LocalAddress The address to bind when mode is listener or rendezvous. Defaults to null. ```csharp public string LocalAddress { get; set; } ``` #### Property Value Parameters: - (string): ### LocalPort The local port to bind when mode is listener or rendezvous. Defaults to 7001. ```csharp public uint LocalPort { get; set; } ``` #### Property Value Parameters: - (uint): ### Mode The SRT connection mode. Defaults to GstSRTConnectionMode.GST_SRT_CONNECTION_MODE_CALLER. ```csharp public SRTConnectionMode Mode { get; set; } ``` #### Property Value Parameters: - (SRTConnectionMode): ### Passphrase The password for the encrypted transmission. ```csharp public string Passphrase { get; set; } ``` #### Property Value Parameters: - (string): ### PbKeyLen The crypto key length. Defaults to GstSRTKeyLength.GST_SRT_KEY_LENGTH_NO_KEY. ```csharp public SRTKeyLength PbKeyLen { get; set; } ``` #### Property Value Parameters: - (SRTKeyLength): ### PollTimeout The polling timeout used when SRT poll is started. Defaults to 1000 milliseconds. ```csharp public TimeSpan PollTimeout { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StreamId The stream ID for the SRT access control. ```csharp public string StreamId { get; set; } ``` #### Property Value Parameters: - (string): ### Uri The URI used by SRT connection. Defaults to "srt://127.0.0.1:7001". ```csharp public string Uri { get; set; } ``` #### Property Value Parameters: - (string): ### WaitForConnection Block the stream until a client connects. Defaults to true. ```csharp public bool WaitForConnection { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateAsync(string, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(string uri, bool ignoreMediaInfoReader = false) ``` #### Parameters Parameters: - uri (string): The URI. - ignoreMediaInfoReader (bool): if set to true [ignore media information reader]. #### Returns Parameters: - (Task < SRTSourceSettings >): A Task<SRTSourceSettings> representing the asynchronous operation. #### Exceptions Parameters: - (Exception): Unable to read file info. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the file information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. #### Remarks If VideoCustomFrameRate is set you'll have this value as a frame rate. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Class StaticImageFallbackSettings Link: api/VisioForge.Core.Types.X.Sources.StaticImageFallbackSettings.html # Class StaticImageFallbackSettings # Class StaticImageFallbackSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Configuration for static image fallback. ```csharp public class StaticImageFallbackSettings : FallbackSwitchSettingsBase ``` #### Inheritance #### Inherited Members ## Constructors ### StaticImageFallbackSettings() Initializes a new instance of the class. ```csharp public StaticImageFallbackSettings() ``` ## Properties ### BackgroundColor Gets or sets the background color when image doesn't fill the frame. Default is Black. ```csharp public SKColor BackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### ImagePath Gets or sets the path to the fallback image file. ```csharp public string ImagePath { get; set; } ``` #### Property Value Parameters: - (string): ### MaintainAspectRatio Gets or sets whether to maintain the image aspect ratio when scaling. Default is true. ```csharp public bool MaintainAspectRatio { get; set; } ``` #### Property Value Parameters: - (bool): ### Position Gets or sets the image position within the video frame. X and Y values are percentages (0.0 to 1.0). Default is center (0.5, 0.5). ```csharp public SKPoint Position { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### ScaleToFit Gets or sets whether to scale the image to fit the video frame. Default is true. ```csharp public bool ScaleToFit { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class StaticTextFallbackSettings Link: api/VisioForge.Core.Types.X.Sources.StaticTextFallbackSettings.html # Class StaticTextFallbackSettings # Class StaticTextFallbackSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Configuration for static text fallback. ```csharp public class StaticTextFallbackSettings : FallbackSwitchSettingsBase ``` #### Inheritance #### Inherited Members ## Constructors ### StaticTextFallbackSettings() Initializes a new instance of the class. ```csharp public StaticTextFallbackSettings() ``` ## Properties ### BackgroundColor Gets or sets the background color. Default is Black. ```csharp public SKColor BackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### CenterAlign Gets or sets whether the text position is relative to center. Default is true. ```csharp public bool CenterAlign { get; set; } ``` #### Property Value Parameters: - (bool): ### FontFamily Gets or sets the font family name. Default is "Arial". ```csharp public string FontFamily { get; set; } ``` #### Property Value Parameters: - (string): ### FontSize Gets or sets the font size. Default is 24. ```csharp public float FontSize { get; set; } ``` #### Property Value Parameters: - (float): ### FontStyle Gets or sets the font style. Default is Normal. ```csharp public FontStyle FontStyle { get; set; } ``` #### Property Value Parameters: - (FontStyle): ### Position Gets or sets the text position relative to the video frame. X and Y values are percentages (0.0 to 1.0). Default is center (0.5, 0.5). ```csharp public SKPoint Position { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Text Gets or sets the fallback text to display. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### TextColor Gets or sets the text color. Default is White. ```csharp public SKColor TextColor { get; set; } ``` #### Property Value Parameters: - (SKColor): --- # Class StreamSourceSettings Link: api/VisioForge.Core.Types.X.Sources.StreamSourceSettings.html # Class StreamSourceSettings # Class StreamSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Stream source settings. Implements the . ```csharp public class StreamSourceSettings : IMediaPlayerBaseSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### StreamSourceSettings(Stream) Initializes a new instance of the class. ```csharp public StreamSourceSettings(Stream stream) ``` #### Parameters Parameters: - stream (Stream): The stream. ## Properties ### Stream Gets the stream. ```csharp public Stream Stream { get; } ``` #### Property Value Parameters: - (Stream): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. ## See Also --- # Class SubtitleSourceSettings Link: api/VisioForge.Core.Types.X.Sources.SubtitleSourceSettings.html # Class SubtitleSourceSettings # Class SubtitleSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Subtitle source settings. ```csharp public class SubtitleSourceSettings ``` #### Inheritance #### Inherited Members ## Constructors ### SubtitleSourceSettings(string) Initializes a new instance of the class. ```csharp public SubtitleSourceSettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## Properties ### Filename Gets the filename. ```csharp public string Filename { get; } ``` #### Property Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Class UniversalDemuxSettings Link: api/VisioForge.Core.Types.X.Sources.UniversalDemuxSettings.html # Class UniversalDemuxSettings # Class UniversalDemuxSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class UniversalDemuxSettings. Implements the ```csharp public class UniversalDemuxSettings : IUniversalDemuxSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public UniversalDemuxerType Type { get; } ``` #### Property Value Parameters: - (UniversalDemuxerType): ## See Also --- # Class UniversalSourceSettings Link: api/VisioForge.Core.Types.X.Sources.UniversalSourceSettings.html # Class UniversalSourceSettings # Class UniversalSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Universal source settings. ```csharp public class UniversalSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### DisableHWDecoders Gets or sets a value indicating whether HW decoders will be disabled. ```csharp public bool DisableHWDecoders { get; set; } ``` #### Property Value Parameters: - (bool): ### MPEGTSProgramNumber Gets or sets the MPEG-TS program number (optional). ```csharp public int MPEGTSProgramNumber { get; set; } ``` #### Property Value Parameters: - (int): ### RenderAudio The render audio. ```csharp public bool RenderAudio { get; } ``` #### Property Value Parameters: - (bool): ### RenderSubtitle The render subtitle. ```csharp public bool RenderSubtitle { get; } ``` #### Property Value Parameters: - (bool): ### RenderVideo The render video. ```csharp public bool RenderVideo { get; } ``` #### Property Value Parameters: - (bool): ### StartPosition Start position. ```csharp public TimeSpan? StartPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### StopPosition Stop position. ```csharp public TimeSpan? StopPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### URI Gets the URI. ```csharp public Uri URI { get; } ``` #### Property Value Parameters: - (Uri): ### UseAdvancedEngine Gets or sets a value indicating whether to use advanced engine, with stream selection support. ```csharp public bool UseAdvancedEngine { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoCustomFrameRate Gets or sets the video custom frame rate. If not set, then source frame rate will be used. Video frames will be dropped or duplicated to match this frame rate. ```csharp public VideoFrameRate? VideoCustomFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate ?): ## Methods ### CheckURI() Checks the URI. ```csharp public bool CheckURI() ``` #### Returns Parameters: - (bool): bool. ### CreateAsync(string, bool, bool, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(string filename, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool deepDiscovery = false) ``` #### Parameters Parameters: - filename (string): The file name. - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true [render subtitle]. - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < UniversalSourceSettings >): A Task<UniversalSourceSettings> representing the asynchronous operation. ### CreateAsync(Uri, bool, bool, bool, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(Uri uri, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool ignoreMediaInfoReader = false, bool deepDiscovery = false) ``` #### Parameters Parameters: - uri (Uri): The URI. - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true render subtitle. - ignoreMediaInfoReader (bool): if set to true ignore media information reader. - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < UniversalSourceSettings >): A Task<UniversalSourceSettings> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the file information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. #### Remarks If VideoCustomFrameRate is set you'll have this value as a frame rate. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. ### ReadInfoAsync(bool) Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync(bool deepDiscovery) ``` #### Parameters Parameters: - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Class UniversalSourceSettingsV2 Link: api/VisioForge.Core.Types.X.Sources.UniversalSourceSettingsV2.html # Class UniversalSourceSettingsV2 # Class UniversalSourceSettingsV2 **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Universal source settings (V2). ```csharp public class UniversalSourceSettingsV2 : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### RenderAudio The render audio. ```csharp public bool RenderAudio { get; } ``` #### Property Value Parameters: - (bool): ### RenderSubtitle The render subtitle. ```csharp public bool RenderSubtitle { get; } ``` #### Property Value Parameters: - (bool): ### RenderVideo The render video. ```csharp public bool RenderVideo { get; } ``` #### Property Value Parameters: - (bool): ### StartPosition Start position. ```csharp public TimeSpan? StartPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### StopPosition Stop position. ```csharp public TimeSpan? StopPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### URI Gets the URI. ```csharp public Uri URI { get; } ``` #### Property Value Parameters: - (Uri): ### VideoCustomFrameRate Gets or sets the video custom frame rate. If not set, then source frame rate will be used. Video frames will be dropped or duplicated to match this frame rate. ```csharp public VideoFrameRate? VideoCustomFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate ?): ## Methods ### CheckURI() Checks the URI. ```csharp public bool CheckURI() ``` #### Returns Parameters: - (bool): bool. ### CreateAsync(string, bool, bool, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(string filename, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool deepDiscovery = false) ``` #### Parameters Parameters: - filename (string): The file name. - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true [render subtitle]. - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < UniversalSourceSettingsV2 >): A Task<UniversalSourceSettingsV2> representing the asynchronous operation. ### CreateAsync(Uri, bool, bool, bool, bool, bool) Create as an asynchronous operation. ```csharp public static Task CreateAsync(Uri uri, bool renderVideo = true, bool renderAudio = true, bool renderSubtitle = false, bool ignoreMediaInfoReader = false, bool deepDiscovery = false) ``` #### Parameters Parameters: - uri (Uri): The URI. - renderVideo (bool): if set to true render video. - renderAudio (bool): if set to true render audio. - renderSubtitle (bool): if set to true render subtitle. - ignoreMediaInfoReader (bool): if set to true ignore media information reader. - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < UniversalSourceSettingsV2 >): A Task<UniversalSourceSettingsV2> representing the asynchronous operation. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetInfo() Gets the file information. ```csharp public MediaFileInfo GetInfo() ``` #### Returns Parameters: - (MediaFileInfo): MediaFileInfo. #### Remarks If VideoCustomFrameRate is set you'll have this value as a frame rate. ### ReadInfoAsync() Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. ### ReadInfoAsync(bool) Read information as an asynchronous operation. ```csharp public Task ReadInfoAsync(bool deepDiscovery) ``` #### Parameters Parameters: - deepDiscovery (bool): if set to true use deep discovery mode with uridecodebin for more thorough media analysis. #### Returns Parameters: - (Task < MediaFileInfo >): A Task<MediaFileInfo> representing the asynchronous operation. --- # Enum VideoCaptureDeviceAPI Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceAPI.html # Enum VideoCaptureDeviceAPI # Enum VideoCaptureDeviceAPI **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video Capture Device API. ```csharp public enum VideoCaptureDeviceAPI ``` ## Fields Parameters: - Decklink (): The Decklink devices. - V4L2 (): V4L2. - LibCamera (): The libCamera source. - UVCH264 (): UVC H264 source. - Other (): The other --- # Enum VideoCaptureDeviceFacing Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceFacing.html # Enum VideoCaptureDeviceFacing # Enum VideoCaptureDeviceFacing **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video capture device facing (for mobile devices). ```csharp public enum VideoCaptureDeviceFacing ``` ## Fields Parameters: - Back (): The back. - Front (): The front. --- # Class VideoCaptureDeviceFormat Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceFormat.html # Class VideoCaptureDeviceFormat # Class VideoCaptureDeviceFormat **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class VideoCaptureDeviceFormat. ```csharp public class VideoCaptureDeviceFormat : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoCaptureDeviceFormat() Initializes a new instance of the class. ```csharp public VideoCaptureDeviceFormat() ``` ### VideoCaptureDeviceFormat(int, int, string) Initializes a new instance of the class. ```csharp public VideoCaptureDeviceFormat(int width, int height, string format) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - format (string): The format. ## Properties ### AdditionalProperties Gets or sets the additional properties that will be applied for format. ```csharp public Dictionary AdditionalProperties { get; set; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### AspectRatio Gets or sets the aspect ratio. ```csharp public Tuple AspectRatio { get; set; } ``` #### Property Value Parameters: - (Tuple < float , float >): ### ForceFrameRate True to force the specified frame rate even if the source do not provide it or the original frame rate is unstable. SDK will duplicate or drop frames if required. ```csharp public bool ForceFrameRate { get; set; } ``` #### Property Value Parameters: - (bool): ### Format Gets or sets the format. ```csharp public string Format { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Struct Gets the structure. ```csharp public Structure Struct { get; } ``` #### Property Value Parameters: - (Structure): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes obj in the sort order. Zero This instance occurs in the same position in the sort order as obj. Greater than zero This instance follows obj in the sort order. ### Equals(object) Determines whether the specified is equal to this instance. ```csharp public override bool Equals(object obj) ``` #### Parameters Parameters: - obj (object): The object to compare with the current object. #### Returns Parameters: - (bool): true if the specified is equal to this instance; otherwise, false. #### Exceptions Parameters: - (NotImplementedException): ### GetHashCode() Returns a hash code for this instance. ```csharp public override int GetHashCode() ``` #### Returns Parameters: - (int): A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## Operators ### operator ==(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the == operator. ```csharp public static bool operator ==(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the > operator. ```csharp public static bool operator >(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >=(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the >= operator. ```csharp public static bool operator >=(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator !=(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the != operator. ```csharp public static bool operator !=(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the < operator. ```csharp public static bool operator <(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <=(VideoCaptureDeviceFormat, VideoCaptureDeviceFormat) Implements the <= operator. ```csharp public static bool operator <=(VideoCaptureDeviceFormat left, VideoCaptureDeviceFormat right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormat): The left. - right (VideoCaptureDeviceFormat): The right. #### Returns Parameters: - (bool): The result of the operator. --- # Class VideoCaptureDeviceFormatInfo Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceFormatInfo.html # Class VideoCaptureDeviceFormatInfo # Class VideoCaptureDeviceFormatInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Class VideoCaptureDeviceFormatInfo. ```csharp public class VideoCaptureDeviceFormatInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoCaptureDeviceFormatInfo() Initializes a new instance of the class. ```csharp public VideoCaptureDeviceFormatInfo() ``` ### VideoCaptureDeviceFormatInfo(Structure) Initializes a new instance of the class. ```csharp public VideoCaptureDeviceFormatInfo(Structure structure) ``` #### Parameters Parameters: - structure (Structure): The structure. ## Properties ### AspectRatio Gets or sets the aspect ratio. ```csharp public Tuple AspectRatio { get; set; } ``` #### Property Value Parameters: - (Tuple < float , float >): ### Format Gets or sets the format. ```csharp public string Format { get; set; } ``` #### Property Value Parameters: - (string): ### FrameRateList Gets or sets the frame rate list. ```csharp public List FrameRateList { get; } ``` #### Property Value Parameters: - (List < VideoFrameRate >): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes obj in the sort order. Zero This instance occurs in the same position in the sort order as obj. Greater than zero This instance follows obj in the sort order. ### Equals(object) Determines whether the specified is equal to this instance. ```csharp public override bool Equals(object obj) ``` #### Parameters Parameters: - obj (object): The object to compare with the current object. #### Returns Parameters: - (bool): true if the specified is equal to this instance; otherwise, false. #### Exceptions Parameters: - (NotImplementedException): ### GetFrameRateRangeAsStringList() Gets the frame rate range as string list. ```csharp public string[] GetFrameRateRangeAsStringList() ``` #### Returns Parameters: - (string [ ]): System.String[]. ### GetHashCode() Returns a hash code for this instance. ```csharp public override int GetHashCode() ``` #### Returns Parameters: - (int): A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. ### ToFormat() Converts to VideoCaptureDeviceFormat. ```csharp public VideoCaptureDeviceFormat ToFormat() ``` #### Returns Parameters: - (VideoCaptureDeviceFormat): VideoCaptureDeviceFormat. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## Operators ### operator ==(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the == operator. ```csharp public static bool operator ==(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the > operator. ```csharp public static bool operator >(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator >=(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the >= operator. ```csharp public static bool operator >=(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator !=(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the != operator. ```csharp public static bool operator !=(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the < operator. ```csharp public static bool operator <(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. ### operator <=(VideoCaptureDeviceFormatInfo, VideoCaptureDeviceFormatInfo) Implements the <= operator. ```csharp public static bool operator <=(VideoCaptureDeviceFormatInfo left, VideoCaptureDeviceFormatInfo right) ``` #### Parameters Parameters: - left (VideoCaptureDeviceFormatInfo): The left. - right (VideoCaptureDeviceFormatInfo): The right. #### Returns Parameters: - (bool): The result of the operator. --- # Class VideoCaptureDeviceInfo Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceInfo.html # Class VideoCaptureDeviceInfo # Class VideoCaptureDeviceInfo **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video capture device information. ```csharp public class VideoCaptureDeviceInfo : IComparable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoCaptureDeviceInfo() ```csharp public VideoCaptureDeviceInfo() ``` ### VideoCaptureDeviceInfo(Device) Initializes a new instance of the class. ```csharp public VideoCaptureDeviceInfo(Device device) ``` #### Parameters Parameters: - device (Device): The device. ## Properties ### API Gets the API. ```csharp public VideoCaptureDeviceAPI API { get; protected set; } ``` #### Property Value Parameters: - (VideoCaptureDeviceAPI): ### AudioFormats Gets audio formats (if device have audio pin). ```csharp public List AudioFormats { get; protected set; } ``` #### Property Value Parameters: - (List < string >): ### AudioOutput Gets a value indicating whether audio output pin present on video capture device. ```csharp public bool AudioOutput { get; protected set; } ``` #### Property Value Parameters: - (bool): ### DevicePath Gets device path. ```csharp public string DevicePath { get; set; } ``` #### Property Value Parameters: - (string): ### DisplayName Gets device name including API. ```csharp public string DisplayName { get; } ``` #### Property Value Parameters: - (string): ### Facing Gets the facing. ```csharp public VideoCaptureDeviceFacing Facing { get; protected set; } ``` #### Property Value Parameters: - (VideoCaptureDeviceFacing): ### InternalName Gets the internal name. ```csharp public string InternalName { get; protected set; } ``` #### Property Value Parameters: - (string): ### Name Gets device name. ```csharp public string Name { get; protected set; } ``` #### Property Value Parameters: - (string): ### Orientation Gets the orientation. ```csharp public VideoCaptureDeviceOrientation Orientation { get; } ``` #### Property Value Parameters: - (VideoCaptureDeviceOrientation): ### VideoFormats Gets video formats. ```csharp public List VideoFormats { get; protected set; } ``` #### Property Value Parameters: - (List < VideoCaptureDeviceFormatInfo >): ## Methods ### CalculateVideoRotation() Calculates the video rotation. ```csharp public virtual int CalculateVideoRotation() ``` #### Returns Parameters: - (int): System.Int32. ### CompareTo(object) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. ```csharp public int CompareTo(object obj) ``` #### Parameters Parameters: - obj (object): An object to compare with this instance. #### Returns Parameters: - (int): A value that indicates the relative order of the objects being compared. The return value has these meanings:
Value Meaning
Less than zero This instance precedes obj in the sort order.
Zero This instance occurs in the same position in the sort order as obj.
Greater than zero This instance follows obj in the sort order.
### GetHDOrAnyVideoFormatAndFrameRate(out VideoFrameRate) Gets the HD (if available) or any video format and frame rate. ```csharp public VideoCaptureDeviceFormatInfo GetHDOrAnyVideoFormatAndFrameRate(out VideoFrameRate frameRate) ``` #### Parameters Parameters: - frameRate (VideoFrameRate): The frame rate. #### Returns Parameters: - (VideoCaptureDeviceFormatInfo): VideoCaptureDeviceFormatInfo. ### GetHDVideoFormatAndFrameRate(out VideoFrameRate) Gets the HD video format and frame rate. ```csharp public VideoCaptureDeviceFormatInfo GetHDVideoFormatAndFrameRate(out VideoFrameRate frameRate) ``` #### Parameters Parameters: - frameRate (VideoFrameRate): The frame rate. #### Returns Parameters: - (VideoCaptureDeviceFormatInfo): VideoCaptureDeviceFormatInfo. ### GetVideoFormatAndFrameRate(int, int, out VideoFrameRate) Gets the HD video format and frame rate. ```csharp public VideoCaptureDeviceFormatInfo GetVideoFormatAndFrameRate(int widthLimit, int heightLimit, out VideoFrameRate frameRate) ``` #### Parameters Parameters: - widthLimit (int): The max width. - heightLimit (int): The max height. - frameRate (VideoFrameRate): The frame rate. #### Returns Parameters: - (VideoCaptureDeviceFormatInfo): VideoCaptureDeviceFormatInfo. ### ToString() Class as a string. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): Returns . --- # Enum VideoCaptureDeviceOrientation Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceOrientation.html # Enum VideoCaptureDeviceOrientation # Enum VideoCaptureDeviceOrientation **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video capture device orientation (for mobile devices). ```csharp public enum VideoCaptureDeviceOrientation ``` ## Fields Parameters: - Degree0 (): 0 degrees. - Degree90 (): 90 degrees. - Degree180 (): 180 degrees. - Degree270 (): 270 degrees. --- # Class VideoCaptureDeviceSourceSettings Link: api/VisioForge.Core.Types.X.Sources.VideoCaptureDeviceSourceSettings.html # Class VideoCaptureDeviceSourceSettings # Class VideoCaptureDeviceSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video capture device source settings. ```csharp public class VideoCaptureDeviceSourceSettings : IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoCaptureDeviceSourceSettings(VideoCaptureDeviceInfo, VideoCaptureDeviceFormat) Initializes a new instance of the class. ```csharp public VideoCaptureDeviceSourceSettings(VideoCaptureDeviceInfo device, VideoCaptureDeviceFormat format) ``` #### Parameters Parameters: - device (VideoCaptureDeviceInfo): The device. - format (VideoCaptureDeviceFormat): The format. ### VideoCaptureDeviceSourceSettings() ```csharp public VideoCaptureDeviceSourceSettings() ``` ### VideoCaptureDeviceSourceSettings(VideoCaptureDeviceInfo) Initializes a new instance of the class. ```csharp public VideoCaptureDeviceSourceSettings(VideoCaptureDeviceInfo device) ``` #### Parameters Parameters: - device (VideoCaptureDeviceInfo): The device. ## Properties ### CustomFlipRotate Gets or sets the custom optional flip/rotate. ```csharp public VideoFlipRotateMethod CustomFlipRotate { get; set; } ``` #### Property Value Parameters: - (VideoFlipRotateMethod): ### Device Gets or sets the device. ```csharp public VideoCaptureDeviceInfo Device { get; set; } ``` #### Property Value Parameters: - (VideoCaptureDeviceInfo): ### DisableH264Decoder Gets or sets a value indicating whether to disable H264 decoder for cameras provided H264 output. ```csharp public bool DisableH264Decoder { get; set; } ``` #### Property Value Parameters: - (bool): ### Format Gets or sets the format. ```csharp public VideoCaptureDeviceFormat Format { get; set; } ``` #### Property Value Parameters: - (VideoCaptureDeviceFormat): ### SmoothZoom Gets or sets a value indicating whether smooth zoom is enabled. ```csharp public bool SmoothZoom { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class VideoMixerSourceSettings Link: api/VisioForge.Core.Types.X.Sources.VideoMixerSourceSettings.html # Class VideoMixerSourceSettings # Class VideoMixerSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video mixer source settings. ```csharp public class VideoMixerSourceSettings : IVideoCaptureBaseVideoSourceSettings, IMediaPlayerBaseSourceSettings, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoMixerSourceSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public VideoMixerSourceSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ### VideoMixerSourceSettings() Initializes a new instance of the class. ```csharp public VideoMixerSourceSettings() ``` ## Properties ### Count Gets the count. ```csharp public int Count { get; } ``` #### Property Value Parameters: - (int): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### MixerType Gets or sets the type of video mixer to be used for processing video streams. ```csharp public VideoMixerType MixerType { get; set; } ``` #### Property Value Parameters: - (VideoMixerType): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Add(IVideoMixerSource, Rect, ChromaKeySettingsX) Adds the specified source. ```csharp public void Add(IVideoMixerSource source, Rect rect, ChromaKeySettingsX chromaKeySettings = null) ``` #### Parameters Parameters: - source (IVideoMixerSource): The source. - rect (Rect): The rectangle. - chromaKeySettings (ChromaKeySettingsX): The chroma key settings. ### Add(IVideoMixerSource, int, int, int, int, ChromaKeySettingsX) Adds the specified source. ```csharp public void Add(IVideoMixerSource source, int left, int top, int width, int height, ChromaKeySettingsX chromaKeySettings = null) ``` #### Parameters Parameters: - source (IVideoMixerSource): The source. - left (int): The left. - top (int): The top. - width (int): The width. - height (int): The height. - chromaKeySettings (ChromaKeySettingsX): The chroma key settings. ### Clear() Clears this instance. ```csharp public void Clear() ``` ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### Get(int) Gets the specified source. ```csharp public Tuple Get(int id) ``` #### Parameters Parameters: - id (int): The identifier. #### Returns Parameters: - (Tuple < IVideoMixerSource , Rect , ChromaKeySettingsX >): Tuple<IVideoMixerSource, Rect>. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. ### Remove(IVideoMixerSource) Removes the specified source. ```csharp public void Remove(IVideoMixerSource source) ``` #### Parameters Parameters: - source (IVideoMixerSource): The source. ### RemoveAt(int) Removes the specified source. ```csharp public void RemoveAt(int id) ``` #### Parameters Parameters: - id (int): The identifier. --- # Enum VideoMixerType Link: api/VisioForge.Core.Types.X.Sources.VideoMixerType.html # Enum VideoMixerType # Enum VideoMixerType **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Video mixer type. ```csharp public enum VideoMixerType ``` ## Fields Parameters: - CPU (): The CPU. - OpenGL (): The OpenGL. --- # Class VirtualAudioSourceSettings Link: api/VisioForge.Core.Types.X.Sources.VirtualAudioSourceSettings.html # Class VirtualAudioSourceSettings # Class VirtualAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Virtual audio source settings. ```csharp public class VirtualAudioSourceSettings : IVideoCaptureBaseAudioSourceSettings, IMediaBlockSettings, IAudioVolumeMute ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VirtualAudioSourceSettings(VirtualAudioSourceSettingsWave, int, int, AudioFormatX) Initializes a new instance of the class. ```csharp public VirtualAudioSourceSettings(VirtualAudioSourceSettingsWave wave = VirtualAudioSourceSettingsWave.Ticks, int sampleRate = 48000, int channels = 2, AudioFormatX format = AudioFormatX.S16) ``` #### Parameters Parameters: - wave (VirtualAudioSourceSettingsWave): - sampleRate (int): The sample rate. - channels (int): The channels. - format (AudioFormatX): The format. ## Properties ### ApplyTickRamp Apply ramp to tick samples. ```csharp public bool ApplyTickRamp { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Default value: false ### CanActivatePull Can activate in pull mode. ```csharp public bool CanActivatePull { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Default value: false. ### CanActivatePush Can activate in push mode. ```csharp public bool CanActivatePush { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Default value: true. ### Channels Gets or sets the channels. ```csharp public int Channels { get; set; } ``` #### Property Value Parameters: - (int): ### Format Gets or sets the format. ```csharp public AudioFormatX Format { get; set; } ``` #### Property Value Parameters: - (AudioFormatX): ### Frequency Frequency of test signal. The sample rate needs to be at least 2 times higher. ```csharp public double Frequency { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Default value: 440. ### IsLive Gets or sets a value indicating whether this instance is live. ```csharp public bool IsLive { get; set; } ``` #### Property Value Parameters: - (bool): ### MarkerTickPeriod Make every Nth tick a marker tick (= a tick with different volume). Only used if wave = ticks. 0 = no marker ticks. ```csharp public uint MarkerTickPeriod { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Flags: Read / Write Default value: 0 ### MarkerTickVolume Volume of marker ticks. Only used if wave = ticks and marker-tick-period is set to a nonzero value. ```csharp public double MarkerTickVolume { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Flags: Read / Write Default value: 1 ### SampleRate Gets or sets the sample rate. ```csharp public int SampleRate { get; set; } ``` #### Property Value Parameters: - (int): ### SamplesPerBuffer Number of samples in each outgoing buffer ```csharp public int SamplesPerBuffer { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Default value: 1024. ### SinePeriodsPerTick Number of sine wave periods in one tick. Only used if wave = ticks. ```csharp public uint SinePeriodsPerTick { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Default value: 10. ### TickInterval Distance between start of current and start of next tick. ```csharp public TimeSpan TickInterval { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Default value: 1 second. ### TimestampOffset An offset added to timestamps set on buffers. ```csharp public TimeSpan TimestampOffset { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Default value: 0. ### Volume Volume of test signal. ```csharp public double Volume { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Default value: 0.8. ### Wave Oscillator waveform. ```csharp public VirtualAudioSourceSettingsWave Wave { get; set; } ``` #### Property Value Parameters: - (VirtualAudioSourceSettingsWave): #### Remarks Default value: sine (0). ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetMute() Gets the mute. ```csharp public bool GetMute() ``` #### Returns Parameters: - (bool): true if successful, false otherwise. ### GetVolume() Gets the volume. Value should be in 0.0 - 1.0 range. ```csharp public double GetVolume() ``` #### Returns Parameters: - (double): System.Double. ### IsSupported() Determines whether this interface is supported. ```csharp public bool IsSupported() ``` #### Returns Parameters: - (bool): true if this interface is supported; otherwise, false. ### SetInterface(IAudioVolumeMute) Sets the interface. ```csharp public void SetInterface(IAudioVolumeMute intf) ``` #### Parameters Parameters: - intf (IAudioVolumeMute): The interface. ### SetMute(bool) Sets the mute. ```csharp public void SetMute(bool mute) ``` #### Parameters Parameters: - mute (bool): if set to true mute. ### SetVolume(double) Sets the volume. Value should be in 0.0 - 1.0 range. ```csharp public void SetVolume(double volume) ``` #### Parameters Parameters: - volume (double): The volume. --- # Enum VirtualAudioSourceSettingsWave Link: api/VisioForge.Core.Types.X.Sources.VirtualAudioSourceSettingsWave.html # Enum VirtualAudioSourceSettingsWave # Enum VirtualAudioSourceSettingsWave **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Type of sound wave. ```csharp public enum VirtualAudioSourceSettingsWave ``` ## Fields Parameters: - Sine (): Sine - Square (): Square - Saw (): Saw - Triangle (): Triangle - Silence (): Silence - WhiteNoise (): White uniform noise - PinkNoise (): Pink noise - SineTable (): Sine table - Ticks (): Periodic Ticks - GaussianNoise (): White Gaussian noise - RedNoise (): Red (brownian) noise - BlueNoise (): Blue noise - VioletNoise (): Violet noise --- # Enum VirtualVideoSourcePattern Link: api/VisioForge.Core.Types.X.Sources.VirtualVideoSourcePattern.html # Enum VirtualVideoSourcePattern # Enum VirtualVideoSourcePattern **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Virtual video source pattern. ```csharp public enum VirtualVideoSourcePattern ``` ## Fields Parameters: - SMPTE (): SMPTE 100%% color bars. - Snow (): Random (television snow). - Black (): 100%% Black. - White (): 100%% White. - Red (): The red. - Green (): The green. - Blue (): The blue. - Checkers1 (): Checkers 1px. - Checkers2 (): Checkers 2px. - Checkers4 (): Checkers 4px. - Checkers8 (): Checkers 8px. - Circular (): The circular. - Blink (): The blink. - SMPTE75 (): SMPTE 75%% color bars. - ZonePlate (): The zone plate. - Gamut (): Gamut checkers. - ChromaZonePlate (): The chroma zone plate. - SolidColor (): The solid color. - Ball (): The moving ball. - SMPTE100 (): SMPTE 100%% color bars. - Bar (): The bar. - Pinwheel (): The pinwheel. - Spokes (): The spokes. - Gradient (): The gradient. - Colors (): The colors. - SMPTERP219 (): SMPTE test pattern, RP 219 conformant. --- # Class VirtualVideoSourceSettings Link: api/VisioForge.Core.Types.X.Sources.VirtualVideoSourceSettings.html # Class VirtualVideoSourceSettings # Class VirtualVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll Virtual video source settings. ```csharp public class VirtualVideoSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VirtualVideoSourceSettings() Initializes a new instance of the class. ```csharp public VirtualVideoSourceSettings() ``` ### VirtualVideoSourceSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public VirtualVideoSourceSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ## Properties ### ForegroundColor Gets or sets the color of the foreground. ```csharp public SKColor ForegroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Format Gets or sets the format. ```csharp public VideoFormatX Format { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Pattern Gets or sets the pattern. ```csharp public VirtualVideoSourcePattern Pattern { get; set; } ``` #### Property Value Parameters: - (VirtualVideoSourcePattern): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. --- # Class VNCSourceSettings Link: api/VisioForge.Core.Types.X.Sources.VNCSourceSettings.html # Class VNCSourceSettings # Class VNCSourceSettings **Namespace**: VisioForge.Core.Types.X.Sources **Assembly**: VisioForge.Core.dll VNC/RFB source settings. Implements the . Implements the . ```csharp public class VNCSourceSettings : IMediaPlayerBaseSourceSettings, IVideoCaptureBaseVideoSourceSettings, IVideoMixerSource, IVideoSourceSettings, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Host Gets or sets the host to connect to. ```csharp public string Host { get; set; } ``` #### Property Value Parameters: - (string): ### Incremental Gets or sets a value indicating whether to use incremental updates. ```csharp public bool Incremental { get; set; } ``` #### Property Value Parameters: - (bool): ### OffsetX Gets or sets the X offset for screen scrapping. ```csharp public int OffsetX { get; set; } ``` #### Property Value Parameters: - (int): ### OffsetY Gets or sets the Y offset for screen scrapping. ```csharp public int OffsetY { get; set; } ``` #### Property Value Parameters: - (int): ### Password Gets or sets the password. ```csharp public string Password { get; set; } ``` #### Property Value Parameters: - (string): ### Port Gets or sets the port. ```csharp public int Port { get; set; } ``` #### Property Value Parameters: - (int): ### RFBVersion Gets or sets the RFB protocol version. ```csharp public string RFBVersion { get; set; } ``` #### Property Value Parameters: - (string): ### Shared Gets or sets a value indicating whether to share desktop with other clients. ```csharp public bool Shared { get; set; } ``` #### Property Value Parameters: - (bool): ### Uri Gets or sets the URI to an RFB from. URI format is RFC compliant. ```csharp public string Uri { get; set; } ``` #### Property Value Parameters: - (string): ### UseCopyrect Gets or sets a value indicating whether use copyrect encoding. ```csharp public bool UseCopyrect { get; set; } ``` #### Property Value Parameters: - (bool): ### ViewOnly Gets or sets a value indicating whether only view the desktop. ```csharp public bool ViewOnly { get; set; } ``` #### Property Value Parameters: - (bool): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### ReadInfoAsync() Reads the information asynchronous. ```csharp public Task ReadInfoAsync() ``` #### Returns Parameters: - (Task < MediaFileInfo >): Task<MediaFileInfo>. ## See Also --- # Namespace VisioForge.Core.Types.X.Sources Link: api/VisioForge.Core.Types.X.Sources.html # Namespace VisioForge.Core.Types.X.Sources # Namespace VisioForge.Core.Types.X.Sources ### Namespaces Parameters: - (): - (): ### Classes Parameters: - (): Class AlliedVisionCameraInfo. - (): Allied Vision camera source settings. - (): Audio capture device format. - (): Class AudioCaptureDeviceFormatInfo. - (): Audio capture device information. - (): Common audio capture device source settings. - (): Class AudioMixerSourceSettings. Implements the - (): Class BaslerCameraInfo. - (): Basler camera source settings. - (): CDG source settings. Supports both standalone CDG+Audio files and ZIP archives containing CDG+MP3/WAV pairs. Implements the . - (): Demuxer source settings. - (): Main fallback switch configuration container. - (): Base class for fallback switch configuration settings. - (): GenICam camera source settings. - (): HTTP MJPEG source settings. - (): HTTP/HTTPS source settings. Implements the . Implements the . - (): Image sequence source settings for reading image sequences from a folder. - (): Image video source settings. - (): Configuration for media block fallback. - (): NDI source information. - (): NDI source settings. - (): PulseAudio source settings for capturing audio using pulsesrc GStreamer element. PulseAudio is the default sound server on many Linux distributions. Implements the Implements the - (): Push audio source settings. Implements the - (): Push data source settings. Implements the . - (): Push JPEG source settings. Implements the . - (): Push video source settings. Implements the . - (): RTMP source settings for streaming from RTMP servers. - (): RTSP RAW source settings. - (): RTSP source settings. - (): Configuration settings for an SRT connection. - (): Screen capture X Display source settings. - (): Shared memory source settings. - (): GenICam source information. - (): Configuration for static image fallback. - (): Configuration for static text fallback. - (): Stream source settings. Implements the . - (): Subtitle source settings. - (): Class UniversalDemuxSettings. Implements the - (): Universal source settings. - (): Universal source settings (V2). - (): VNC/RFB source settings. Implements the . Implements the . - (): Class VideoCaptureDeviceFormat. - (): Class VideoCaptureDeviceFormatInfo. - (): Video capture device information. - (): Video capture device source settings. - (): Video mixer source settings. - (): Virtual audio source settings. - (): Virtual video source settings. ### Interfaces Parameters: - (): Audio capture device source settings interface. - (): Interface IPushSourceSettings. - (): Screen capture source settings interface. - (): Interface IUniversalDemuxSettings. - (): Video mixer control interface. - (): Interface IVideoMixerSource. - (): Shared video source settings. ### Enums Parameters: - (): Audio capture device API. - (): Enumeration of fallback switch types. - (): Access check policy enumeration - (): Acquisition modes - (): Auto setting modes - (): Buffer part data type enumeration - (): Buffer payload type enumeration - (): Buffer status enumeration - (): GenICam cache mode enumeration - (): Chunk parser error enumeration - (): Device access flags for opening devices - (): Device access status enumeration - (): GenICam display notation enumeration - (): Exposure modes - (): GenICam access mode enumeration - (): GenICam error enumeration - (): GenICam name space enumeration - (): GenTL error codes - (): Information data types for GenTL parameters - (): GenICam linear relationship enumeration - (): Represents various pixel formats available for GenICam cameras. - (): Pixel format namespace identifiers - (): Range check policy enumeration - (): Register cache policy enumeration - (): GenICam representation enumeration - (): GenICam settings mode. - (): GenICam signedness enumeration - (): Stream callback type enumeration - (): GenICam streamable enumeration - (): GenICam USB mode. - (): USB modes for UV cameras - (): GenICam visibility enumeration - (): NDI receive color format options. - (): NDI timestamp mode options. - (): Enum PushSourceFormat. - (): Enum PushSourceStreamType. - (): Push Source type. - (): RTSP buffer mode for jitter buffer control. Controls how the jitter buffer in rtspsrc handles incoming RTP packets. - (): NTP time source for RTSP timestamp synchronization. Determines which clock source to use for NTP timestamp calculations. - (): The RTSP transport. - (): Describes the level of logging output to provide. - (): Defines the SRT connection types. - (): Defines the key lengths used for SRT connections. - (): Screen capture source type. - (): Source type. - (): Video Capture Device API. - (): Video capture device facing (for mobile devices). - (): Video capture device orientation (for mobile devices). - (): Video mixer type. - (): Type of sound wave. - (): Virtual video source pattern. --- # Enum AESCipher Link: api/VisioForge.Core.Types.X.Special.AESCipher.html # Enum AESCipher # Enum AESCipher **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Specifies the Advanced Encryption Standard (AES) cipher configuration. ```csharp public enum AESCipher ``` ## Fields Parameters: - AES_128 (): AES encryption with 128-bit key using CBC (Cipher Block Chaining) mode.

Provides strong encryption suitable for most applications. Uses a 128-bit (16 byte) key and requires a 128-bit initialization vector (IV).

Performance characteristics: Faster than AES-256 while still providing adequate security for most use cases.

- AES_256 (): AES encryption with 256-bit key using CBC (Cipher Block Chaining) mode.

Provides the highest level of security with a 256-bit (32 byte) key. Requires a 128-bit initialization vector (IV) regardless of key size.

Recommended for highly sensitive data or when regulatory compliance requires maximum encryption strength.

## Remarks

AES is a symmetric encryption algorithm widely used for securing data. This enumeration defines the available AES key sizes and cipher modes.

Both options use CBC (Cipher Block Chaining) mode, which provides better security than ECB mode by making each cipher block dependent on all previous blocks.

--- # Class CustomMediaBlockPad Link: api/VisioForge.Core.Types.X.Special.CustomMediaBlockPad.html # Class CustomMediaBlockPad # Class CustomMediaBlockPad **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll CustomMediaBlock pad information. ```csharp public class CustomMediaBlockPad ``` #### Inheritance #### Inherited Members ## Constructors ### CustomMediaBlockPad(MediaBlockPadDirection, MediaBlockPadMediaType) Initializes a new instance of the class. ```csharp public CustomMediaBlockPad(MediaBlockPadDirection direction, MediaBlockPadMediaType mediaType) ``` #### Parameters Parameters: - direction (MediaBlockPadDirection): Direction. - mediaType (MediaBlockPadMediaType): Media type. ## Properties ### CustomCaps Custom caps for output pad. ```csharp public Caps CustomCaps { get; set; } ``` #### Property Value Parameters: - (Caps): ### Direction Gets or sets the direction. ```csharp public MediaBlockPadDirection Direction { get; set; } ``` #### Property Value Parameters: - (MediaBlockPadDirection): ### MediaType Gets or sets the media type. ```csharp public MediaBlockPadMediaType MediaType { get; set; } ``` #### Property Value Parameters: - (MediaBlockPadMediaType): --- # Class CustomMediaBlockSettings Link: api/VisioForge.Core.Types.X.Special.CustomMediaBlockSettings.html # Class CustomMediaBlockSettings # Class CustomMediaBlockSettings **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Custom media block settings. ```csharp public class CustomMediaBlockSettings ``` #### Inheritance #### Inherited Members ## Constructors ### CustomMediaBlockSettings(string) Initializes a new instance of the class. ```csharp public CustomMediaBlockSettings(string elementName) ``` #### Parameters Parameters: - elementName (string): Name of the GStreamer or Media Blocks SDK element. ## Fields ### Pads The pads. ```csharp public List Pads ``` #### Field Value Parameters: - (List < CustomMediaBlockPad >): ## Properties ### ElementName Gets the name of the element. To make a custom GStreamer Bin, add [ ] to the string, like "[ videotestsrc ! videoconvert ]". ```csharp public string ElementName { get; } ``` #### Property Value Parameters: - (string): ### ElementParams Gets the element parameters. ```csharp public Dictionary ElementParams { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### ListProperties True to list properties after creation to Debug window. ```csharp public bool ListProperties { get; set; } ``` #### Property Value Parameters: - (bool): ### UsePadAddedEvent Gets or sets a value indicating whether to use pad added event for dynamically created GStreamer pads. ```csharp public bool UsePadAddedEvent { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class EncryptorDecryptorSettings Link: api/VisioForge.Core.Types.X.Special.EncryptorDecryptorSettings.html # Class EncryptorDecryptorSettings # Class EncryptorDecryptorSettings **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Provides configuration settings for AES encryption and decryption operations. ```csharp public class EncryptorDecryptorSettings ``` #### Inheritance #### Inherited Members ## Examples
// Create settings for AES-128 encryption
var settings = new EncryptorDecryptorSettings(
    "0123456789ABCDEF0123456789ABCDEF", // 32 hex chars = 16 bytes
    "FEDCBA9876543210FEDCBA9876543210"  // 32 hex chars = 16 bytes
);
settings.Cipher = AESCipher.AES_128;
## Remarks

This class encapsulates all necessary parameters for AES encryption/decryption, including the cipher type, encryption key, initialization vector (IV), and IV serialization options.

The settings support both AES-128 and AES-256 encryption modes using CBC (Cipher Block Chaining).

## Constructors ### EncryptorDecryptorSettings(string, string) Initializes a new instance of the class with the specified encryption key and initialization vector. ```csharp public EncryptorDecryptorSettings(string key, string iv) ``` #### Parameters Parameters: - key (string): The encryption key as a hexadecimal string. Length must match the cipher requirements: 32 hex characters for AES-128, or 64 hex characters for AES-256. - iv (string): The initialization vector as a hexadecimal string. Must be exactly 32 hex characters (16 bytes) for all AES cipher modes. #### Examples
// Create settings for AES encryption
var settings = new EncryptorDecryptorSettings(
    "0123456789ABCDEF0123456789ABCDEF",
    "FEDCBA9876543210FEDCBA9876543210"
);

// Optionally change to AES-256
settings.Cipher = AESCipher.AES_256;
settings.Key = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF";
#### Remarks The constructor sets the default cipher to AES-128. Change the property after construction if AES-256 is required. ## Properties ### Cipher Gets or sets the AES cipher configuration to use for encryption/decryption. ```csharp public AESCipher Cipher { get; set; } ``` #### Property Value Parameters: - (AESCipher): #### Remarks Determines the key size and encryption strength. AES-128 provides good security with better performance, while AES-256 offers maximum security. ### IV Gets or sets the initialization vector (IV) as a hexadecimal string. ```csharp public string IV { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks

The IV is required for CBC mode and must be exactly 16 bytes (32 hex characters) regardless of the AES key size. Each encryption operation should use a unique IV for maximum security.

Example: "FEDCBA9876543210FEDCBA9876543210"

### Key Gets or sets the encryption key as a hexadecimal string. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks

The key length must match the selected cipher: - AES-128: 32 hex characters (16 bytes) - AES-256: 64 hex characters (32 bytes)

Example: "0123456789ABCDEF0123456789ABCDEF" for AES-128

### SerializeIV Gets or sets a value indicating whether the initialization vector (IV) should be serialized with the encrypted data. ```csharp public bool SerializeIV { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

When enabled, the IV is stored at the beginning of the encrypted output, allowing the decryption process to extract it automatically. This simplifies IV management but slightly increases the output size.

This is a common practice as the IV does not need to be kept secret, only unique for each encryption operation.

--- # Enum InputSelectorSyncMode Link: api/VisioForge.Core.Types.X.Special.InputSelectorSyncMode.html # Enum InputSelectorSyncMode # Enum InputSelectorSyncMode **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Defines constants for the different ways that input-selector can behave when in sync-streams mode. ```csharp public enum InputSelectorSyncMode ``` ## Fields Parameters: - ActiveSegment (): Sync using the current active segment. - Clock (): Sync using the clock. --- # Class SourceSwitchSettings Link: api/VisioForge.Core.Types.X.Special.SourceSwitchSettings.html # Class SourceSwitchSettings # Class SourceSwitchSettings **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Represents the currently active sink pad. ```csharp public class SourceSwitchSettings ``` #### Inheritance #### Inherited Members ## Constructors ### SourceSwitchSettings(int) Initializes a new instance of the class. ```csharp public SourceSwitchSettings(int padsCount = 2) ``` #### Parameters Parameters: - padsCount (int): The pads count. ## Properties ### CacheBuffers Determines if the active pad caches the buffers still considered valid to avoid missing frames when the pad is reactivated. Default value is false. ```csharp public bool CacheBuffers { get; set; } ``` #### Property Value Parameters: - (bool): ### CustomName Gets or sets the custom name, to see in logs. ```csharp public string CustomName { get; set; } ``` #### Property Value Parameters: - (string): ### DefaultActivePad The currently active sink pad. ```csharp public int DefaultActivePad { get; set; } ``` #### Property Value Parameters: - (int): ### DropBackwards If true, drops buffers that go backwards relative to the last output buffer pre-switch. Default value is false. ```csharp public bool DropBackwards { get; set; } ``` #### Property Value Parameters: - (bool): ### PadsCount Gets or sets the pads count. ```csharp public int PadsCount { get; set; } ``` #### Property Value Parameters: - (int): ### SyncMode Selects how input-selector will sync buffers when in sync-streams mode. Default value is InputSelectorSyncMode.ActiveSegment. ```csharp public InputSelectorSyncMode SyncMode { get; set; } ``` #### Property Value Parameters: - (InputSelectorSyncMode): ### SyncStreams If set to true, all inactive streams will be synced to the running time of the active stream or to the current clock. ```csharp public bool SyncStreams { get; set; } ``` #### Property Value Parameters: - (bool): --- # Enum SRTPAuth Link: api/VisioForge.Core.Types.X.Special.SRTPAuth.html # Enum SRTPAuth # Enum SRTPAuth **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Defines the available SRTP authentication methods. ```csharp public enum SRTPAuth ``` ## Fields Parameters: - NULL (): No authentication. Not recommended for production use. Disables message authentication, providing no integrity or replay protection. Should only be used for testing or in highly controlled environments. - HMAC_SHA1_80 (): HMAC-SHA1 with 80-bit authentication tag. Standard SRTP authentication using HMAC-SHA1 with 10-byte (80-bit) tag. Provides strong message authentication and replay protection. Recommended for most SRTP applications. - HMAC_SHA1_32 (): HMAC-SHA1 with 32-bit authentication tag. Shortened SRTP authentication using HMAC-SHA1 with 4-byte (32-bit) tag. Reduces bandwidth overhead at the cost of slightly lower authentication strength. Suitable for bandwidth-constrained scenarios or when combined with transport-layer security. ## Remarks These authentication methods are defined in RFC 3711 (SRTP). --- # Enum SRTPCipher Link: api/VisioForge.Core.Types.X.Special.SRTPCipher.html # Enum SRTPCipher # Enum SRTPCipher **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Defines the available SRTP cipher suites for encryption. ```csharp public enum SRTPCipher ``` ## Fields Parameters: - NULL (): No encryption. Authentication only mode. Provides message authentication and replay protection without encryption. Suitable for scenarios where confidentiality is not required but integrity is. - AES_128_ICM (): AES-128 in Integer Counter Mode (ICM/CTR). Standard SRTP encryption using 128-bit AES in counter mode. Provides good security with excellent performance. Most widely used SRTP cipher. Requires 16-byte (128-bit) master key. - AES_256_ICM (): AES-256 in Integer Counter Mode (ICM/CTR). Enhanced SRTP encryption using 256-bit AES in counter mode. Provides maximum security at the cost of slightly higher CPU usage. Requires 32-byte (256-bit) master key. ## Remarks These cipher modes are defined in RFC 3711 (SRTP) and RFC 6188 (AES-256). --- # Class SRTPSettings Link: api/VisioForge.Core.Types.X.Special.SRTPSettings.html # Class SRTPSettings # Class SRTPSettings **Namespace**: VisioForge.Core.Types.X.Special **Assembly**: VisioForge.Core.dll Provides configuration settings for SRTP (Secure Real-time Transport Protocol) encryption and decryption operations. SRTP provides confidentiality, message authentication, and replay protection for RTP/RTCP traffic. ```csharp public class SRTPSettings ``` #### Inheritance #### Inherited Members ## Examples
// Create settings for SRTP encryption with AES-128 and 80-bit auth tag
var settings = new SRTPSettings
{
    Key = "000102030405060708090A0B0C0D0E0F", // 16 bytes for AES-128
    Cipher = SRTPCipher.AES_128_ICM,
    Auth = SRTPAuth.HMAC_SHA1_80
};
## Remarks

This class encapsulates all necessary parameters for SRTP encryption/decryption, including the master key, master salt, and cipher/authentication suites.

SRTP uses AES encryption in Counter Mode (AES-CM) combined with HMAC-SHA1 authentication to secure RTP media streams. The settings support multiple key sizes and authentication tag lengths as defined in RFC 3711.

## Constructors ### SRTPSettings() Initializes a new instance of the class with default settings. ```csharp public SRTPSettings() ``` #### Remarks Creates SRTP settings with AES-128-ICM cipher and HMAC-SHA1-80 authentication, which are the most commonly used settings for SRTP as defined in RFC 3711. ### SRTPSettings(string) Initializes a new instance of the class with the specified key. ```csharp public SRTPSettings(string key) ``` #### Parameters Parameters: - key (string): The SRTP master key as a hexadecimal string. Length must match the cipher requirements: 32 hex characters for AES-128-ICM, or 64 hex characters for AES-256-ICM. #### Examples
// Create settings for SRTP encryption
var settings = new SRTPSettings("000102030405060708090A0B0C0D0E0F");

// Optionally change to AES-256
settings.Cipher = SRTPCipher.AES_256_ICM;
settings.Key = "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F";
#### Remarks The constructor sets the default cipher to AES-128-ICM and authentication to HMAC-SHA1-80. Change the and properties after construction if different settings are required. ## Properties ### Auth Gets or sets the SRTP authentication method for message authentication and integrity. ```csharp public SRTPAuth Auth { get; set; } ``` #### Property Value Parameters: - (SRTPAuth): #### Remarks

Determines the authentication algorithm and tag length: - HMAC_SHA1_80: HMAC-SHA1 with 80-bit authentication tag (recommended for RTP) - HMAC_SHA1_32: HMAC-SHA1 with 32-bit authentication tag (lower overhead) - NULL: No authentication (not recommended for production)

The 80-bit tag provides strong authentication suitable for most applications, while the 32-bit tag reduces bandwidth overhead for constrained networks.

### Cipher Gets or sets the SRTP cipher suite to use for encryption. ```csharp public SRTPCipher Cipher { get; set; } ``` #### Property Value Parameters: - (SRTPCipher): #### Remarks

Determines the encryption algorithm and key size: - AES_128_ICM: AES-128 in Counter Mode (most common, good performance) - AES_256_ICM: AES-256 in Counter Mode (maximum security) - NULL: No encryption (authentication only)

Counter Mode (ICM/CTR) provides efficient stream encryption suitable for real-time media.

### Key Gets or sets the SRTP master key as a hexadecimal string. ```csharp public string Key { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks

The key length must match the selected cipher: - AES_128_ICM: 32 hex characters (16 bytes) - AES_256_ICM: 64 hex characters (32 bytes) - NULL: 0 characters (no encryption)

This master key is used to derive the SRTP session encryption key through the SRTP Key Derivation Function (KDF) as specified in RFC 3711.

Example: "000102030405060708090A0B0C0D0E0F" for AES-128

### SSRC Gets or sets the RTP SSRC (Synchronization Source) value for SRTP context. ```csharp public uint SSRC { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks

The SSRC identifies the source of an RTP stream. In SRTP, each SSRC can have its own encryption context. Setting this to 0 allows the element to work with any SSRC value.

For multi-stream scenarios, specific SSRC values can be configured to apply different encryption contexts to different streams.

--- # Namespace VisioForge.Core.Types.X.Special Link: api/VisioForge.Core.Types.X.Special.html # Namespace VisioForge.Core.Types.X.Special # Namespace VisioForge.Core.Types.X.Special ### Classes Parameters: - (): CustomMediaBlock pad information. - (): Custom media block settings. - (): Provides configuration settings for AES encryption and decryption operations. - (): Provides configuration settings for SRTP (Secure Real-time Transport Protocol) encryption and decryption operations. SRTP provides confidentiality, message authentication, and replay protection for RTP/RTCP traffic. - (): Represents the currently active sink pad. ### Enums Parameters: - (): Specifies the Advanced Encryption Standard (AES) cipher configuration. - (): Defines constants for the different ways that input-selector can behave when in sync-streams mode. - (): Defines the available SRTP authentication methods. - (): Defines the available SRTP cipher suites for encryption. --- # Interface IVideoCaptureBaseAudioSourceSettings Link: api/VisioForge.Core.Types.X.VideoCapture.IVideoCaptureBaseAudioSourceSettings.html # Interface IVideoCaptureBaseAudioSourceSettings # Interface IVideoCaptureBaseAudioSourceSettings **Namespace**: VisioForge.Core.Types.X.VideoCapture **Assembly**: VisioForge.Core.dll Video Capture base audio source settings. ```csharp public interface IVideoCaptureBaseAudioSourceSettings : IMediaBlockSettings, IAudioVolumeMute ``` #### Implements --- # Interface IVideoCaptureBaseVideoSourceSettings Link: api/VisioForge.Core.Types.X.VideoCapture.IVideoCaptureBaseVideoSourceSettings.html # Interface IVideoCaptureBaseVideoSourceSettings # Interface IVideoCaptureBaseVideoSourceSettings **Namespace**: VisioForge.Core.Types.X.VideoCapture **Assembly**: VisioForge.Core.dll Video Capture base video source settings. ```csharp public interface IVideoCaptureBaseVideoSourceSettings : IVideoSourceSettings, IMediaBlockSettings ``` #### Implements --- # Interface IVideoCaptureXBaseOutput Link: api/VisioForge.Core.Types.X.VideoCapture.IVideoCaptureXBaseOutput.html # Interface IVideoCaptureXBaseOutput # Interface IVideoCaptureXBaseOutput **Namespace**: VisioForge.Core.Types.X.VideoCapture **Assembly**: VisioForge.Core.dll Interface IVideoCaptureXBaseOutput. ```csharp public interface IVideoCaptureXBaseOutput : IXBaseOutput ``` #### Implements --- # Namespace VisioForge.Core.Types.X.VideoCapture Link: api/VisioForge.Core.Types.X.VideoCapture.html # Namespace VisioForge.Core.Types.X.VideoCapture # Namespace VisioForge.Core.Types.X.VideoCapture ### Interfaces Parameters: - (): Video Capture base audio source settings. - (): Video Capture base video source settings. - (): Interface IVideoCaptureXBaseOutput. --- # Class AMFH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.AMFH264DecoderSettings.html # Class AMFH264DecoderSettings # Class AMFH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll AMD AMF H264 decoder settings. ```csharp public class AMFH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Methods ### CreateBlock() Creates a new H264 decoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for H264 decoding. ### GetDecoderType() Gets the decoder type. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. ### IsAvailable() Checks if the AMD AMF H264 decoder is available on the system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class AMFHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.AMFHEVCDecoderSettings.html # Class AMFHEVCDecoderSettings # Class AMFHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll AMD AMF HEVC decoder settings. ```csharp public class AMFHEVCDecoderSettings : IHEVCDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Class AV1DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.AV1DecoderSettings.html # Class AV1DecoderSettings # Class AV1DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Configuration settings for AV1 video decoder. Supports multiple decoder implementations including software (dav1d, av1dec) and hardware accelerated decoders (NVIDIA, D3D11, VAAPI). ```csharp public class AV1DecoderSettings : IAV1DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### DecoderType Gets or sets the type of decoder to use. Default is Auto which selects the best available decoder. ```csharp public AV1DecoderType DecoderType { get; set; } ``` #### Property Value Parameters: - (AV1DecoderType): ### EnableFilmGrain Gets or sets whether to enable film grain synthesis. Some AV1 streams include film grain parameters that can be applied during decoding. ```csharp public bool EnableFilmGrain { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxFrameSize Gets or sets the maximum frame size to decode. Frames larger than this will be dropped. 0 = no limit. Useful for limiting memory usage with high resolution content. ```csharp public int MaxFrameSize { get; set; } ``` #### Property Value Parameters: - (int): ### Threads Gets or sets the number of threads to use for software decoding. Only applies to software decoders (dav1d, av1dec). 0 = auto-detect based on CPU cores. ```csharp public int Threads { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GetDecoderType() Gets the decoder type. ```csharp public AV1DecoderType GetDecoderType() ``` #### Returns Parameters: - (AV1DecoderType): The configured decoder type. --- # Enum AV1DecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.AV1DecoderType.html # Enum AV1DecoderType # Enum AV1DecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Specifies the type of AV1 decoder to use for decoding AV1 video streams. ```csharp public enum AV1DecoderType ``` ## Fields Parameters: - Auto (): Automatically select the best available decoder based on system capabilities. Priority: Hardware decoders (NVIDIA, Intel QSV, D3D11) > dav1d > av1dec. - Dav1d (): dav1d decoder - Fast and efficient open-source software decoder. Recommended for software decoding due to its performance optimization. GStreamer element: dav1d - AOM (): AOM (Alliance for Open Media) reference decoder. More accurate but slower than dav1d. Good for validation and testing. GStreamer element: av1dec - NVIDIA (): NVIDIA hardware decoder (NVDEC). Requires NVIDIA GPU with AV1 support (RTX 30 series or newer). GStreamer element: nvav1dec - Intel_QSV (): Intel Quick Sync Video (QSV) hardware decoder. Requires Intel GPU with AV1 hardware support (Arc series or newer). GStreamer element: qsvav1dec - D3D11 (): Direct3D 11 hardware decoder (DXVA). Available on Windows with compatible GPU hardware. GStreamer element: d3d11av1dec - VAAPI (): VA-API hardware decoder for Linux. Requires compatible GPU with VA-API support. GStreamer element: vaav1dec --- # Class FFMPEGH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.FFMPEGH264DecoderSettings.html # Class FFMPEGH264DecoderSettings # Class FFMPEGH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll FFMPEG H264 decoder settings. ```csharp public class FFMPEGH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the encoder. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. --- # Class FFMPEGHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.FFMPEGHEVCDecoderSettings.html # Class FFMPEGHEVCDecoderSettings # Class FFMPEGHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll FFMPEG HEVC decoder settings. ```csharp public class FFMPEGHEVCDecoderSettings : IHEVCDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Class FFMPEGVP8DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.FFMPEGVP8DecoderSettings.html # Class FFMPEGVP8DecoderSettings # Class FFMPEGVP8DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll FFMPEG VP8 decoder settings. ```csharp public class FFMPEGVP8DecoderSettings : IVP8DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP8DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP8DecoderType): VP8DecoderType. --- # Class FFMPEGVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.FFMPEGVP9DecoderSettings.html # Class FFMPEGVP9DecoderSettings # Class FFMPEGVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll FFMPEG VP9 decoder settings. ```csharp public class FFMPEGVP9DecoderSettings : IVP9DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Enum H264DecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.H264DecoderType.html # Enum H264DecoderType # Enum H264DecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll H264 decoder type. ```csharp public enum H264DecoderType ``` ## Fields Parameters: - OpenH264 (): The OpenH264 decoder. - GPU_Nvidia_H264 (): The GPU Nvidia H264 decoder. - FFMPEG (): The FFMPEG H264 decoder. - GPU_Intel_QSV_H264 (): The GPU Intel QuickSync H264 decoder. - GPU_AMD_AMF_H264 (): The GPU AMD AMF H264 decoder. - VAAPI_H264 (): The VAAPI H264 decoder. --- # Enum HEVCDecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.HEVCDecoderType.html # Enum HEVCDecoderType # Enum HEVCDecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll HEVC decoder type. ```csharp public enum HEVCDecoderType ``` ## Fields Parameters: - FFMPEG (): The FFMPEG HEVC decoder. - GPU_Nvidia_HEVC (): The GPU Nvidia HEVC decoder. - GPU_Intel_QSV_HEVC (): The GPU Intel QuickSync HEVC decoder. - GPU_AMD_AMF_HEVC (): The GPU AMD AMF HEVC decoder. - VAAPI_HEVC (): The VAAPI HEVC decoder. --- # Interface IAV1DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IAV1DecoderSettings.html # Interface IAV1DecoderSettings # Interface IAV1DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Interface for AV1 decoder settings. ```csharp public interface IAV1DecoderSettings ``` ## Methods ### GetDecoderType() Gets the type of AV1 decoder to use. ```csharp AV1DecoderType GetDecoderType() ``` #### Returns Parameters: - (AV1DecoderType): --- # Interface IH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IH264DecoderSettings.html # Interface IH264DecoderSettings # Interface IH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Basic H264 decoder settings interface. ```csharp public interface IH264DecoderSettings ``` ## Methods ### GetDecoderType() Gets the type of the encoder. ```csharp H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. --- # Interface IHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IHEVCDecoderSettings.html # Interface IHEVCDecoderSettings # Interface IHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Basic HEVC decoder settings interface. ```csharp public interface IHEVCDecoderSettings ``` ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Interface IMJPEGDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IMJPEGDecoderSettings.html # Interface IMJPEGDecoderSettings # Interface IMJPEGDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Interface for MJPEG decoder settings. ```csharp public interface IMJPEGDecoderSettings ``` ## Methods ### GetDecoderType() Gets the decoder type. ```csharp MJPEGDecoderType GetDecoderType() ``` #### Returns Parameters: - (MJPEGDecoderType): MJPEGDecoderType. --- # Interface IMPEG2DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IMPEG2DecoderSettings.html # Interface IMPEG2DecoderSettings # Interface IMPEG2DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Interface for MPEG-2 decoder settings. ```csharp public interface IMPEG2DecoderSettings ``` ## Methods ### GetDecoderType() Gets the decoder type. ```csharp MPEG2DecoderType GetDecoderType() ``` #### Returns Parameters: - (MPEG2DecoderType): MPEG2DecoderType. --- # Interface IVP8DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IVP8DecoderSettings.html # Interface IVP8DecoderSettings # Interface IVP8DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Interface for VP8 decoder settings. ```csharp public interface IVP8DecoderSettings ``` ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp VP8DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP8DecoderType): VP8DecoderType. --- # Interface IVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.IVP9DecoderSettings.html # Interface IVP9DecoderSettings # Interface IVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Interface for VP9 decoder settings. ```csharp public interface IVP9DecoderSettings ``` ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Enum MJPEGDecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.MJPEGDecoderType.html # Enum MJPEGDecoderType # Enum MJPEGDecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll MJPEG decoder type. ```csharp public enum MJPEGDecoderType ``` ## Fields Parameters: - CPU (): Default JPEG decoder (software). - GPU_Intel_QSV_MJPEG (): Intel Quick Sync Video (QSV) MJPEG decoder (hardware). - GPU_Nvidia_MJPEG (): NVIDIA MJPEG decoder (hardware). - VAAPI_MJPEG (): VA-API MJPEG decoder for Linux. --- # Enum MPEG2DecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.MPEG2DecoderType.html # Enum MPEG2DecoderType # Enum MPEG2DecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll MPEG-2 decoder type. ```csharp public enum MPEG2DecoderType ``` ## Fields Parameters: - FFMPEG (): FFmpeg MPEG-2 decoder (software). - GPU_Intel_QSV_MPEG2 (): Intel Quick Sync Video (QSV) MPEG-2 decoder (hardware). - GPU_Nvidia_MPEG2 (): NVIDIA MPEG-2 decoder (hardware). - VAAPI_MPEG2 (): VA-API MPEG-2 decoder for Linux. --- # Class NVH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.NVH264DecoderSettings.html # Class NVH264DecoderSettings # Class NVH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Nvidia decoder settings. ```csharp public class NVH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the encoder. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. --- # Class NVHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.NVHEVCDecoderSettings.html # Class NVHEVCDecoderSettings # Class NVHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA HEVC decoder settings. ```csharp public class NVHEVCDecoderSettings : IHEVCDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Class NVVP8DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.NVVP8DecoderSettings.html # Class NVVP8DecoderSettings # Class NVVP8DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA VP8 decoder settings. ```csharp public class NVVP8DecoderSettings : IVP8DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP8DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP8DecoderType): VP8DecoderType. --- # Class NVVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.NVVP9DecoderSettings.html # Class NVVP9DecoderSettings # Class NVVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll NVIDIA VP9 decoder settings. ```csharp public class NVVP9DecoderSettings : IVP9DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Class OpenH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.OpenH264DecoderSettings.html # Class OpenH264DecoderSettings # Class OpenH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll OpenH264 decoder settings. ```csharp public class OpenH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the encoder. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. --- # Class QSVAV1DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVAV1DecoderSettings.html # Class QSVAV1DecoderSettings # Class QSVAV1DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel Quick Sync Video (QSV) AV1 decoder settings. ```csharp public class QSVAV1DecoderSettings ``` #### Inheritance #### Inherited Members ## Properties ### AdapterLUID Gets or sets the adapter LUID for multi-GPU systems. ```csharp public long AdapterLUID { get; set; } ``` #### Property Value Parameters: - (long): ### HardwareAcceleration Gets or sets whether to enable hardware acceleration. ```csharp public bool HardwareAcceleration { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetDecoderType() Gets the decoder type. ```csharp public AV1DecoderType GetDecoderType() ``` #### Returns Parameters: - (AV1DecoderType): AV1DecoderType. --- # Class QSVH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVH264DecoderSettings.html # Class QSVH264DecoderSettings # Class QSVH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel Quick Sync Video H264 decoder settings. ```csharp public class QSVH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Methods ### CreateBlock() Creates a new H264 decoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for H264 decoding. ### GetDecoderType() Gets the decoder type. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. ### IsAvailable() Checks if the Intel QSV H264 decoder is available on the system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class QSVHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVHEVCDecoderSettings.html # Class QSVHEVCDecoderSettings # Class QSVHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel QuickSync HEVC decoder settings. ```csharp public class QSVHEVCDecoderSettings : IHEVCDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Class QSVMJPEGDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVMJPEGDecoderSettings.html # Class QSVMJPEGDecoderSettings # Class QSVMJPEGDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel Quick Sync Video (QSV) MJPEG decoder settings. ```csharp public class QSVMJPEGDecoderSettings : IMJPEGDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AdapterLUID Gets or sets the adapter LUID for multi-GPU systems. ```csharp public long AdapterLUID { get; set; } ``` #### Property Value Parameters: - (long): ### HardwareAcceleration Gets or sets whether to enable hardware acceleration. ```csharp public bool HardwareAcceleration { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetDecoderType() Gets the decoder type. ```csharp public MJPEGDecoderType GetDecoderType() ``` #### Returns Parameters: - (MJPEGDecoderType): MJPEGDecoderType. --- # Class QSVMPEG2DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVMPEG2DecoderSettings.html # Class QSVMPEG2DecoderSettings # Class QSVMPEG2DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel Quick Sync Video (QSV) MPEG-2 decoder settings. ```csharp public class QSVMPEG2DecoderSettings : IMPEG2DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AdapterLUID Gets or sets the adapter LUID for multi-GPU systems. ```csharp public long AdapterLUID { get; set; } ``` #### Property Value Parameters: - (long): ### HardwareAcceleration Gets or sets whether to enable hardware acceleration. ```csharp public bool HardwareAcceleration { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetDecoderType() Gets the decoder type. ```csharp public MPEG2DecoderType GetDecoderType() ``` #### Returns Parameters: - (MPEG2DecoderType): MPEG2DecoderType. --- # Class QSVVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.QSVVP9DecoderSettings.html # Class QSVVP9DecoderSettings # Class QSVVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll Intel Quick Sync Video (QSV) VP9 decoder settings. ```csharp public class QSVVP9DecoderSettings : IVP9DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### AdapterLUID Gets or sets the adapter LUID for multi-GPU systems. ```csharp public long AdapterLUID { get; set; } ``` #### Property Value Parameters: - (long): ### HardwareAcceleration Gets or sets whether to enable hardware acceleration. ```csharp public bool HardwareAcceleration { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetDecoderType() Gets the decoder type. ```csharp public VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Class VAAPIH264DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VAAPIH264DecoderSettings.html # Class VAAPIH264DecoderSettings # Class VAAPIH264DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VAAPI H264 decoder settings. ```csharp public class VAAPIH264DecoderSettings : IH264DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the encoder. ```csharp public H264DecoderType GetDecoderType() ``` #### Returns Parameters: - (H264DecoderType): H264DecoderType. --- # Class VAAPIHEVCDecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VAAPIHEVCDecoderSettings.html # Class VAAPIHEVCDecoderSettings # Class VAAPIHEVCDecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VAAPI HEVC decoder settings. ```csharp public class VAAPIHEVCDecoderSettings : IHEVCDecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public HEVCDecoderType GetDecoderType() ``` #### Returns Parameters: - (HEVCDecoderType): HEVCDecoderType. --- # Class VAAPIVP8DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VAAPIVP8DecoderSettings.html # Class VAAPIVP8DecoderSettings # Class VAAPIVP8DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VAAPI VP8 decoder settings. ```csharp public class VAAPIVP8DecoderSettings : IVP8DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP8DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP8DecoderType): VP8DecoderType. --- # Class VAAPIVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VAAPIVP9DecoderSettings.html # Class VAAPIVP9DecoderSettings # Class VAAPIVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VAAPI VP9 decoder settings. ```csharp public class VAAPIVP9DecoderSettings : IVP9DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Enum VP8DecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.VP8DecoderType.html # Enum VP8DecoderType # Enum VP8DecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VP8 decoder type. ```csharp public enum VP8DecoderType ``` ## Fields Parameters: - VPX (): The VPX decoder. - GPU_Nvidia_VP8 (): The GPU Nvidia VP8 decoder. - FFMPEG (): The FFMPEG VP8 decoder. - VAAPI_VP8 (): The VAAPI VP8 decoder. --- # Enum VP9DecoderType Link: api/VisioForge.Core.Types.X.VideoDecoders.VP9DecoderType.html # Enum VP9DecoderType # Enum VP9DecoderType **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VP9 decoder type. ```csharp public enum VP9DecoderType ``` ## Fields Parameters: - VPX (): The VPX decoder. - GPU_Nvidia_VP9 (): The GPU Nvidia VP9 decoder. - FFMPEG (): The FFMPEG VP9 decoder. - GPU_Intel_QSV_VP9 (): The GPU Intel QuickSync VP9 decoder. - VAAPI_VP9 (): The VAAPI VP9 decoder. --- # Class VPXVP8DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VPXVP8DecoderSettings.html # Class VPXVP8DecoderSettings # Class VPXVP8DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VPX VP8 decoder settings. ```csharp public class VPXVP8DecoderSettings : IVP8DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP8DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP8DecoderType): VP8DecoderType. --- # Class VPXVP9DecoderSettings Link: api/VisioForge.Core.Types.X.VideoDecoders.VPXVP9DecoderSettings.html # Class VPXVP9DecoderSettings # Class VPXVP9DecoderSettings **Namespace**: VisioForge.Core.Types.X.VideoDecoders **Assembly**: VisioForge.Core.dll VPX VP9 decoder settings. ```csharp public class VPXVP9DecoderSettings : IVP9DecoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### GetDecoderType() Gets the type of the decoder. ```csharp public VP9DecoderType GetDecoderType() ``` #### Returns Parameters: - (VP9DecoderType): VP9DecoderType. --- # Namespace VisioForge.Core.Types.X.VideoDecoders Link: api/VisioForge.Core.Types.X.VideoDecoders.html # Namespace VisioForge.Core.Types.X.VideoDecoders # Namespace VisioForge.Core.Types.X.VideoDecoders ### Classes Parameters: - (): AMD AMF H264 decoder settings. - (): AMD AMF HEVC decoder settings. - (): Configuration settings for AV1 video decoder. Supports multiple decoder implementations including software (dav1d, av1dec) and hardware accelerated decoders (NVIDIA, D3D11, VAAPI). - (): FFMPEG H264 decoder settings. - (): FFMPEG HEVC decoder settings. - (): FFMPEG VP8 decoder settings. - (): FFMPEG VP9 decoder settings. - (): Nvidia decoder settings. - (): NVIDIA HEVC decoder settings. - (): NVIDIA VP8 decoder settings. - (): NVIDIA VP9 decoder settings. - (): OpenH264 decoder settings. - (): Intel Quick Sync Video (QSV) AV1 decoder settings. - (): Intel Quick Sync Video H264 decoder settings. - (): Intel QuickSync HEVC decoder settings. - (): Intel Quick Sync Video (QSV) MJPEG decoder settings. - (): Intel Quick Sync Video (QSV) MPEG-2 decoder settings. - (): Intel Quick Sync Video (QSV) VP9 decoder settings. - (): VAAPI H264 decoder settings. - (): VAAPI HEVC decoder settings. - (): VAAPI VP8 decoder settings. - (): VAAPI VP9 decoder settings. - (): VPX VP8 decoder settings. - (): VPX VP9 decoder settings. ### Interfaces Parameters: - (): Interface for AV1 decoder settings. - (): Basic H264 decoder settings interface. - (): Basic HEVC decoder settings interface. - (): Interface for MJPEG decoder settings. - (): Interface for MPEG-2 decoder settings. - (): Interface for VP8 decoder settings. - (): Interface for VP9 decoder settings. ### Enums Parameters: - (): Specifies the type of AV1 decoder to use for decoding AV1 video streams. - (): H264 decoder type. - (): HEVC decoder type. - (): MJPEG decoder type. - (): MPEG-2 decoder type. - (): VP8 decoder type. - (): VP9 decoder type. --- # Class AudioFileSource Link: api/VisioForge.Core.Types.X.VideoEdit.AudioFileSource.html # Class AudioFileSource # Class AudioFileSource **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Audio file source used in Video Edit SDK. ```csharp public class AudioFileSource ``` #### Inheritance #### Inherited Members ## Constructors ### AudioFileSource(string, TimeSpan?, TimeSpan?, int, double) Initializes a new instance of the class. ```csharp public AudioFileSource(string filename, TimeSpan? startTime = null, TimeSpan? stopTime = null, int streamNumber = 0, double rate = 1) ``` #### Parameters Parameters: - filename (string): File name. - startTime (TimeSpan ?): Start time. Set to -1 start and stop time to add full file. - stopTime (TimeSpan ?): Stop time. Set to -1 start and stop time to add full file. - streamNumber (int): Stream number. - rate (double): Playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. ### AudioFileSource(string, FileSegment[], int, double) Initializes a new instance of the class. ```csharp public AudioFileSource(string filename, FileSegment[] segments, int streamNumber = 0, double rate = 1) ``` #### Parameters Parameters: - filename (string): File name. - segments (FileSegment [ ]): Segments list. - streamNumber (int): Stream number. - rate (double): Playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. . ## Properties ### Effects Gets the audio effects. ```csharp public List Effects { get; } ``` #### Property Value Parameters: - (List < IVideoEditXAudioEffect >): ### Filename Gets or sets audio file name. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Rate Gets or sets playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. ```csharp public double Rate { get; set; } ``` #### Property Value Parameters: - (double): ### Segments Gets or sets segments list for the file. ```csharp public FileSegment[] Segments { get; set; } ``` #### Property Value Parameters: - (FileSegment [ ]): ### StreamNumber Gets or sets stream number. ```csharp public int StreamNumber { get; set; } ``` #### Property Value Parameters: - (int): --- # Class AudioTransition Link: api/VisioForge.Core.Types.X.VideoEdit.AudioTransition.html # Class AudioTransition # Class AudioTransition **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Audio crossfade transition. ```csharp public class AudioTransition ``` #### Inheritance #### Inherited Members ## Constructors ### AudioTransition(TimeSpan, TimeSpan) Initializes a new instance of the class. ```csharp public AudioTransition(TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startTime (TimeSpan): The start time. - stopTime (TimeSpan): The stop time. ## Properties ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class FileSegment Link: api/VisioForge.Core.Types.X.VideoEdit.FileSegment.html # Class FileSegment # Class FileSegment **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll File segment for video or audio stream, contains start and stop time. ```csharp public class FileSegment ``` #### Inheritance #### Inherited Members ## Constructors ### FileSegment(TimeSpan?, TimeSpan?) Initializes a new instance of the class. ```csharp public FileSegment(TimeSpan? startTime, TimeSpan? stopTime) ``` #### Parameters Parameters: - startTime (TimeSpan ?): Start time. Set to null start and stop time to add the full file. - stopTime (TimeSpan ?): Stop time. Set to null start and stop time to add the full file. ## Properties ### Duration Gets duration. ```csharp public TimeSpan? Duration { get; } ``` #### Property Value Parameters: - (TimeSpan ?): ### StartTime Gets or sets start time. Set to null start and stop time to add the full file. ```csharp public TimeSpan? StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ### StopTime Gets or sets stop time. Set to null start and stop time to add the full file. ```csharp public TimeSpan? StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan ?): ## Methods ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class ImageFileSource Link: api/VisioForge.Core.Types.X.VideoEdit.ImageFileSource.html # Class ImageFileSource # Class ImageFileSource **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Image file source used in Video Edit SDK X. ```csharp public class ImageFileSource ``` #### Inheritance #### Inherited Members ## Constructors ### ImageFileSource(string, TimeSpan) Initializes a new instance of the class. ```csharp public ImageFileSource(string filename, TimeSpan duration) ``` #### Parameters Parameters: - filename (string): The filename. - duration (TimeSpan): The duration. ## Properties ### Duration Gets or sets the duration. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Effects Gets the video effects. ```csharp public List Effects { get; } ``` #### Property Value Parameters: - (List < IVideoEditXVideoEffect >): ### Filename Gets or sets image file name. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### LayerID Gets or sets the layer identifier for composition. ```csharp public int LayerID { get; set; } ``` #### Property Value Parameters: - (int): --- # Interface IVideoEditXBaseOutput Link: api/VisioForge.Core.Types.X.VideoEdit.IVideoEditXBaseOutput.html # Interface IVideoEditXBaseOutput # Interface IVideoEditXBaseOutput **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Interface IVideoEditXBaseOutput. ```csharp public interface IVideoEditXBaseOutput : IXBaseOutput ``` #### Implements --- # Class TextOverlay Link: api/VisioForge.Core.Types.X.VideoEdit.TextOverlay.html # Class TextOverlay # Class TextOverlay **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Text overlay for Video Edit Core X. ```csharp public class TextOverlay ``` #### Inheritance #### Inherited Members ## Constructors ### TextOverlay(string) Initializes a new instance of the class. ```csharp public TextOverlay(string text) ``` #### Parameters Parameters: - text (string): The text. ## Fields ### BackgroundColor The background color. ```csharp public SKColor BackgroundColor ``` #### Field Value Parameters: - (SKColor): ### FontSlant The font slant. ```csharp public SKFontStyleSlant FontSlant ``` #### Field Value Parameters: - (SKFontStyleSlant): ### FontWeight The font weight. ```csharp public SKFontStyleWeight FontWeight ``` #### Field Value Parameters: - (SKFontStyleWeight): ### FontWidth The font width. ```csharp public SKFontStyleWidth FontWidth ``` #### Field Value Parameters: - (SKFontStyleWidth): ## Properties ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### CustomFontFile Gets or sets the custom font file to use. ```csharp public string CustomFontFile { get; set; } ``` #### Property Value Parameters: - (string): ### CustomPaint Gets or sets the custom SKPaint for rendering. ```csharp public SKPaint CustomPaint { get; set; } ``` #### Property Value Parameters: - (SKPaint): ### Duration Gets or sets the duration. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FontFamily Gets or sets the font family. ```csharp public string FontFamily { get; set; } ``` #### Property Value Parameters: - (string): ### FontSize Gets or sets the size of the font. ```csharp public int FontSize { get; set; } ``` #### Property Value Parameters: - (int): ### Start Gets or sets the start time. ```csharp public TimeSpan Start { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Text Gets or sets the text. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### X Gets or sets the X in pixels. ```csharp public double X { get; set; } ``` #### Property Value Parameters: - (double): ### Y Gets or sets the Y in pixels. ```csharp public double Y { get; set; } ``` #### Property Value Parameters: - (double): --- # Class VideoFileSource Link: api/VisioForge.Core.Types.X.VideoEdit.VideoFileSource.html # Class VideoFileSource # Class VideoFileSource **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Video file source used in Video Edit SDK. ```csharp public class VideoFileSource ``` #### Inheritance #### Inherited Members ## Constructors ### VideoFileSource(string, TimeSpan?, TimeSpan?, int, double) Initializes a new instance of the class. ```csharp public VideoFileSource(string filename, TimeSpan? startTime = null, TimeSpan? stopTime = null, int streamNumber = 0, double rate = 1) ``` #### Parameters Parameters: - filename (string): File name. - startTime (TimeSpan ?): Start time. - stopTime (TimeSpan ?): Stop time. - streamNumber (int): Stream number. - rate (double): Playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. . ### VideoFileSource(string, FileSegment[], int, double) Initializes a new instance of the class. ```csharp public VideoFileSource(string filename, FileSegment[] segments, int streamNumber = 0, double rate = 1) ``` #### Parameters Parameters: - filename (string): File name. - segments (FileSegment [ ]): Segments list. - streamNumber (int): Stream number. - rate (double): Playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. . ## Properties ### Effects Gets the video effects. ```csharp public List Effects { get; } ``` #### Property Value Parameters: - (List < IVideoEditXVideoEffect >): ### Filename Gets or sets image file name. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### LayerID Gets or sets the layer identifier for composition. ```csharp public int LayerID { get; set; } ``` #### Property Value Parameters: - (int): ### Rate Gets or sets playback rate. 1.0 - 100%, 2.0 - 200%, 0.5 = 50%. ```csharp public double Rate { get; set; } ``` #### Property Value Parameters: - (double): ### ResizeFileToAspectRatio Gets or sets a value indicating whether file will be resized to value provided by aspect ratio tag. Disabled by default. ```csharp public bool ResizeFileToAspectRatio { get; set; } ``` #### Property Value Parameters: - (bool): ### Segments Gets or sets segments list for the file. ```csharp public FileSegment[] Segments { get; set; } ``` #### Property Value Parameters: - (FileSegment [ ]): ### StreamNumber Gets or sets stream number. ```csharp public int StreamNumber { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum VideoTestPattern Link: api/VisioForge.Core.Types.X.VideoEdit.VideoTestPattern.html # Enum VideoTestPattern # Enum VideoTestPattern **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Specifies the type of video test pattern to generate. ```csharp public enum VideoTestPattern ``` ## Fields Parameters: - Smpte (): SMPTE color bars test pattern. The standard SMPTE (Society of Motion Picture and Television Engineers) color bars pattern used for calibrating video equipment. Contains vertical bars of primary and secondary colors. - Snow (): Random noise pattern resembling analog TV static. Generates a random black and white noise pattern, similar to the "snow" seen on analog TVs with no signal. Useful for simulating signal loss or creating noise effects. - Black (): Solid black color fill. Generates a completely black frame. Commonly used for fade-outs, blank segments, or as a neutral background. - White (): Solid white color fill. Generates a completely white frame. Used for maximum brightness testing, fade-ins, or as a high-contrast background. - Red (): Solid red color fill. Generates a pure red frame. Useful for testing red channel response and color accuracy. - Green (): Solid green color fill. Generates a pure green frame. Useful for testing green channel response and color accuracy. - Blue (): Solid blue color fill. Generates a pure blue frame. Useful for testing blue channel response and color accuracy. - Checkers1 (): Checkerboard pattern with 1x1 pixel squares. Finest checkerboard pattern with alternating black and white pixels. Useful for testing display resolution and sharpness. - Checkers2 (): Checkerboard pattern with 2x2 pixel squares. Medium-fine checkerboard pattern. Good for testing scaling algorithms and pixel accuracy. - Checkers4 (): Checkerboard pattern with 4x4 pixel squares. Standard checkerboard pattern. Commonly used for testing video compression and transmission quality. - Checkers8 (): Checkerboard pattern with 8x8 pixel squares. Coarse checkerboard pattern. Useful for basic pattern testing and visual calibration. - Circular (): Circular pattern with concentric rings. Generates concentric circles radiating from the center. Useful for testing aspect ratio, display geometry, and radial distortion. - Blink (): Alternating black and white frames. Rapidly alternates between black and white frames. Useful for testing frame rate, response time, and temporal processing. - Smpte75 (): SMPTE color bars at 75% intensity. Similar to standard SMPTE bars but with colors at 75% intensity. Provides a less saturated version for broadcast compliance and preventing over-modulation. - ZonePlate (): Zone plate pattern for frequency response testing. A circular pattern with increasing spatial frequency toward the edges. Used to test resolution limits, aliasing, and frequency response of video systems. - Gamut (): Color gamut test pattern. Displays a range of colors to test the full color gamut capabilities of the display or video pipeline. Useful for color space verification. - ChromaZonePlate (): Zone plate pattern with chromatic information. Similar to the standard zone plate but includes color information. Used to test color resolution, chromatic aberration, and color subsampling artifacts. - SolidColor (): Solid color fill with configurable color. Generates a frame filled with a single solid color. The specific color is typically configurable through additional parameters. Useful for color accuracy testing and as a background element. ## Remarks

Test patterns are standardized video signals used for calibrating, testing, and troubleshooting video equipment and displays. They help verify proper signal transmission, color accuracy, and display geometry.

These patterns are commonly used in video editing applications as placeholders, for testing video pipelines, or as background elements.

--- # Class VideoTransition Link: api/VisioForge.Core.Types.X.VideoEdit.VideoTransition.html # Class VideoTransition # Class VideoTransition **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Video transition. ```csharp public class VideoTransition ``` #### Inheritance #### Inherited Members ## Constructors ### VideoTransition(VideoTransitionType, TimeSpan, TimeSpan) Initializes a new instance of the class. ```csharp public VideoTransition(VideoTransitionType type, TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - type (VideoTransitionType): The type. - startTime (TimeSpan): The start time. - stopTime (TimeSpan): The stop time. ### VideoTransition(string, TimeSpan, TimeSpan) Initializes a new instance of the class. ```csharp public VideoTransition(string type, TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - type (string): The type, VideoTransitionType as string. - startTime (TimeSpan): The start time. - stopTime (TimeSpan): The stop time. ## Properties ### BorderWidth Gets or sets the border width. ```csharp public uint BorderWidth { get; set; } ``` #### Property Value Parameters: - (uint): ### Invert Gets or sets a value indicating whether the transition is inverted. ```csharp public bool Invert { get; set; } ``` #### Property Value Parameters: - (bool): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Type Gets or sets the type. ```csharp public VideoTransitionType Type { get; set; } ``` #### Property Value Parameters: - (VideoTransitionType): ## Methods ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum VideoTransitionType Link: api/VisioForge.Core.Types.X.VideoEdit.VideoTransitionType.html # Enum VideoTransitionType # Enum VideoTransitionType **Namespace**: VisioForge.Core.Types.X.VideoEdit **Assembly**: VisioForge.Core.dll Specifies the type of visual transition effect between video clips. ```csharp public enum VideoTransitionType ``` ## Fields Parameters: - None (): Transition type has not been set. - BarWipeLr (): A bar moves from left to right. - BarWipeTb (): A bar moves from top to bottom. - BoxWipeTl (): A box expands from the upper-left corner to the lower-right corner. - BoxWipeTr (): A box expands from the upper-right corner to the lower-left corner. - BoxWipeBr (): A box expands from the lower-right corner to the upper-left corner. - BoxWipeBl (): A box expands from the lower-left corner to the upper-right corner. - FourBoxWipeCi (): A box shape expands from each of the four corners toward the center. - FourBoxWipeCo (): A box shape expands from the center of each quadrant toward the corners of each quadrant. - BarndoorV (): A central, vertical line splits and expands toward the left and right edges. - BarndoorH (): A central, horizontal line splits and expands toward the top and bottom edges. - BoxWipeTc (): A box expands from the top edge's midpoint to the bottom corners. - BoxWipeRc (): A box expands from the right edge's midpoint to the left corners. - BoxWipeBc (): A box expands from the bottom edge's midpoint to the top corners. - BoxWipeLc (): A box expands from the left edge's midpoint to the right corners. - DiagonalTl (): A diagonal line moves from the upper-left corner to the lower-right corner. - DiagonalTr (): A diagonal line moves from the upper right corner to the lower-left corner. - BowtieV (): Two wedge shapes slide in from the top and bottom edges toward the center. - BowtieH (): Two wedge shapes slide in from the left and right edges toward the center. - BarndoorDbl (): A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners. - BarndoorDtl (): A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners. - MiscDiagonalDbd (): Four wedge shapes split from the center and retract toward the four edges. - MiscDiagonalDd (): A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges. - VeeD (): A wedge shape moves from top to bottom. - VeeL (): A wedge shape moves from right to left. - VeeU (): A wedge shape moves from bottom to top. - VeeR (): A wedge shape moves from left to right. - BarnveeD (): A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges. - BarnveeL (): A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges. - BarnveeU (): A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges. - BarnveeR (): A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges. - IrisRect (): A rectangle expands from the center. - ClockCw12 (): A radial hand sweeps clockwise from the twelve o'clock position. - ClockCw3 (): A radial hand sweeps clockwise from the three o'clock position. - ClockCw6 (): A radial hand sweeps clockwise from the six o'clock position. - ClockCw9 (): A radial hand sweeps clockwise from the nine o'clock position. - PinwheelTbv (): Two radial hands sweep clockwise from the twelve and six o'clock positions. - PinwheelTbh (): Two radial hands sweep clockwise from the nine and three o'clock positions. - PinwheelFb (): Four radial hands sweep clockwise. - FanCt (): A fan unfolds from the top edge, the fan axis at the center. - FanCr (): A fan unfolds from the right edge, the fan axis at the center. - DoublefanFov (): Two fans, their axes at the center, unfold from the top and bottom. - DoublefanFoh (): Two fans, their axes at the center, unfold from the left and right. - SinglesweepCwt (): A radial hand sweeps clockwise from the top edge's midpoint. - SinglesweepCwr (): A radial hand sweeps clockwise from the right edge's midpoint. - SinglesweepCwb (): A radial hand sweeps clockwise from the bottom edge's midpoint. - SinglesweepCwl (): A radial hand sweeps clockwise from the left edge's midpoint. - DoublesweepPv (): Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints. - DoublesweepPd (): Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints. - DoublesweepOv (): Two radial hands attached at the top and bottom edges' midpoints sweep from right to left. - DoublesweepOh (): Two radial hands attached at the left and right edges' midpoints sweep from top to bottom. - FanT (): A fan unfolds from the bottom, the fan axis at the top edge's midpoint. - FanR (): A fan unfolds from the left, the fan axis at the right edge's midpoint. - FanB (): A fan unfolds from the top, the fan axis at the bottom edge's midpoint. - FanL (): A fan unfolds from the right, the fan axis at the left edge's midpoint. - DoublefanFiv (): Two fans, their axes at the top and bottom, unfold from the center. - DoublefanFih (): Two fans, their axes at the left and right, unfold from the center. - SinglesweepCwtl (): A radial hand sweeps clockwise from the upper-left corner. - SinglesweepCwbl (): A radial hand sweeps counter-clockwise from the lower-left corner. - SinglesweepCwbr (): A radial hand sweeps clockwise from the lower-right corner. - SinglesweepCwtr (): A radial hand sweeps counter-clockwise from the upper-right corner. - DoublesweepPdtl (): Two radial hands attached at the upper-left and lower-right corners sweep down and up. - DoublesweepPdbl (): Two radial hands attached at the lower-left and upper-right corners sweep down and up. - SaloondoorT (): Two radial hands attached at the upper-left and upper-right corners sweep down. - SaloondoorL (): Two radial hands attached at the upper-left and lower-left corners sweep to the right. - SaloondoorB (): Two radial hands attached at the lower-left and lower-right corners sweep up. - SaloondoorR (): Two radial hands attached at the upper-right and lower-right corners sweep to the left. - WindshieldR (): Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left. - WindshieldU (): Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom. - WindshieldV (): Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top. - WindshieldH (): Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left. - Crossfade (): Crossfade. - FadeIn (): Fade-in. - FadeOut (): Fade-out (implemented using inverted FadeIn). ## Remarks

Video transitions provide smooth visual effects when switching between video clips in a timeline. These transitions are commonly used in video editing to create professional-looking scene changes.

The transitions are organized by categories: - Wipe transitions (1-99): Linear movements that reveal the new clip - Iris transitions (100-199): Shape-based reveals from center or corners - Clock/radial transitions (200-299): Circular and rotational effects - Matrix transitions (300-399): Grid and pattern-based effects - Fade transitions (500+): Opacity-based transitions

Transition codes follow the SMPTE 258M-2004 standard where applicable.

--- # Namespace VisioForge.Core.Types.X.VideoEdit Link: api/VisioForge.Core.Types.X.VideoEdit.html # Namespace VisioForge.Core.Types.X.VideoEdit # Namespace VisioForge.Core.Types.X.VideoEdit ### Classes Parameters: - (): Audio file source used in Video Edit SDK. - (): Audio crossfade transition. - (): File segment for video or audio stream, contains start and stop time. - (): Image file source used in Video Edit SDK X. - (): Text overlay for Video Edit Core X. - (): Video file source used in Video Edit SDK. - (): Video transition. ### Interfaces Parameters: - (): Interface IVideoEditXBaseOutput. ### Enums Parameters: - (): Specifies the type of video test pattern to generate. - (): Specifies the type of visual transition effect between video clips. --- # Class AgingVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.AgingVideoEffect.html # Class AgingVideoEffect # Class AgingVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents an aging video effect that simulates old, deteriorated film or video footage. ```csharp public class AgingVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates the visual characteristics of aged film or video, including:

  • Color Aging: Yellowing and color fading typical of old film
  • Scratch Lines: Vertical scratches that appear on film surfaces
  • Dusts: Random dust particles and spots
  • Pits: Small holes and imperfections in the film

The aging effect is ideal for creating vintage looks, retro-style videos, flashback scenes, historical recreations, or artistic projects requiring an authentic old-film aesthetic.

This is a cross-platform effect using agingtv element. For Windows-only applications, consider using GPUVideoEffectOldMovie which provides GPU-accelerated old movie effects with different stylization options.

Performance: Real-time capable on most hardware. The effect adds random artifacts each frame, which has minimal performance impact.

## Constructors ### AgingVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public AgingVideoEffect(string name = "aging") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "aging". ## Fields ### DefaultName The default name for aging effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### ColorAging Gets or sets a value indicating whether to enable color aging (yellowing/fading). ```csharp public bool ColorAging { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Color aging simulates the chemical deterioration of film stock over time, producing the characteristic yellow-brown tint and reduced color saturation seen in vintage footage. ### Dusts Gets or sets a value indicating whether to add dust particles to the video. ```csharp public bool Dusts { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Dust particles simulate the accumulation of dirt and debris on film surfaces, appearing as random white or dark spots that change position each frame. ### Pits Gets or sets a value indicating whether to add pits (small holes) to the video. ```csharp public bool Pits { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Pits simulate physical damage to the film surface, such as small holes, tears, or emulsion loss, appearing as dark spots or missing areas in the image. ### ScratchLines Gets or sets the number of vertical scratch lines to add to the video. ```csharp public uint ScratchLines { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Scratch lines simulate the vertical scratches that appear on film when it passes through projectors or is physically damaged. The lines move horizontally across the frame over time. ### StartTime Gets or sets the start time for the aging effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the aging effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the aging effect. --- # Class AspectRatioCropVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.AspectRatioCropVideoEffect.html # Class AspectRatioCropVideoEffect # Class AspectRatioCropVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents an aspect ratio crop effect that automatically crops video to match a target aspect ratio. ```csharp public class AspectRatioCropVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The aspect ratio crop effect automatically calculates and removes pixels from video edges to achieve a target aspect ratio. Unlike manual cropping, this effect preserves the maximum video area while converting between aspect ratios (e.g., 4:3 to 16:9, 16:9 to 9:16 for vertical video).

Common Aspect Ratios:

  • 16:9: Standard widescreen HD/Full HD (1920x1080)
  • 4:3: Traditional TV and older content
  • 21:9: Ultrawide cinematic format
  • 9:16: Vertical video for mobile and social media
  • 1:1: Square format for Instagram and social media
  • 2.35:1 or 2.39:1: Cinema widescreen formats

Cropping Behavior:

  • Crops from center outward to preserve important content
  • Removes pixels equally from opposite edges when possible
  • Maintains maximum resolution within target aspect ratio
  • Zero-copy operation for efficiency

Common Use Cases:

  • Converting widescreen to vertical for mobile/social media
  • Preparing content for specific display formats
  • Removing letterboxing or pillarboxing
  • Creating square videos for Instagram
  • Standardizing mixed aspect ratio content

For Classic SDK, aspect ratio adjustments are handled through output format settings. For manual edge cropping with pixel-perfect control, see .

Performance Note: Aspect ratio cropping is extremely efficient as it only manipulates frame metadata. Has virtually no CPU impact and is suitable for all platforms including mobile.

## Constructors ### AspectRatioCropVideoEffect(int, int) Initializes a new instance of the class. ```csharp public AspectRatioCropVideoEffect(int x, int y) ``` #### Parameters Parameters: - x (int): The horizontal component of the aspect ratio. - y (int): The vertical component of the aspect ratio. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### AspectRatio Gets the aspect ratio. ```csharp public Tuple AspectRatio { get; } ``` #### Property Value Parameters: - (Tuple < int , int >): ### StartTime Gets or sets the start time. Used only in VideoEditCoreX. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. Used only in VideoEditCoreX. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the aspect ratio crop effect. --- # Class AutoDeinterlaceSettings Link: api/VisioForge.Core.Types.X.VideoEffects.AutoDeinterlaceSettings.html # Class AutoDeinterlaceSettings # Class AutoDeinterlaceSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Auto deinterlace settings. ```csharp public class AutoDeinterlaceSettings ``` #### Inheritance #### Inherited Members ## Properties ### FieldLayout Gets or sets the field layout that selects which field is the first in time. ```csharp public DeinterlaceFieldLayout FieldLayout { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFieldLayout): ### Fields Gets or sets the fields that defines which fields should be output. If "all" is selected the output framerate will be double. ```csharp public DeinterlaceFields Fields { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFields): ### Mode Gets or sets the mode that defines whether the deinterlacing methods should always be applied or if they should only be applied on content that has the "interlaced" flag. ```csharp public DeinterlaceMode Mode { get; set; } ``` #### Property Value Parameters: - (DeinterlaceMode): --- # Class BaseVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.BaseVideoEffect.html # Class BaseVideoEffect # Class BaseVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Base video effect. ```csharp public class BaseVideoEffect : IBaseVideoEffect ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### BaseVideoEffect(VideoEffectID, string) Initializes a new instance of the class. ```csharp public BaseVideoEffect(VideoEffectID id, string name) ``` #### Parameters Parameters: - id (VideoEffectID): The identifier. - name (string): The name. ## Properties ### ID Gets the identifier. ```csharp public VideoEffectID ID { get; } ``` #### Property Value Parameters: - (VideoEffectID): ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### OnUpdateCall() Raises the OnUpdate event to notify subscribers that the effect has been updated. ```csharp public void OnUpdateCall() ``` ### OnUpdate Occurs when [on update]. ```csharp public event EventHandler OnUpdate ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class BoxVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.BoxVideoEffect.html # Class BoxVideoEffect # Class BoxVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a box effect that adds borders/padding or crops video with flexible fill options. ```csharp public class BoxVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The box effect is a versatile tool that can both crop (positive values) and add borders/padding (negative values) to video frames. It supports multiple fill modes for added borders including solid colors, transparency, and pattern fills. The effect can automatically center content when adding borders.

Operation Modes:

  • Positive Values: Crop pixels from edges (same as CropVideoEffect)
  • Negative Values: Add padding/borders around video
  • Mixed Values: Crop some edges while adding padding to others

Fill Modes:

  • Black: Solid black borders (most common)
  • White: Solid white borders
  • Green: Green screen background for compositing
  • Blue: Blue screen background for compositing
  • Red: Red background

Common Use Cases:

  • Adding letterboxing (black bars) to maintain aspect ratio
  • Creating pillarboxing for vertical to horizontal conversion
  • Adding colored borders for artistic effect
  • Preparing video for compositing (green/blue borders)
  • Standardizing video dimensions by adding padding

For Classic SDK, similar functionality available through output format padding settings. For simple cropping without padding, see .

Performance Note: Adding padding is more efficient than cropping as it only extends the frame buffer. Transparent fills are slightly more expensive than solid colors.

## Constructors ### BoxVideoEffect(int, int, int, int) Initializes a new instance of the class. ```csharp public BoxVideoEffect(int left, int top, int right, int bottom) ``` #### Parameters Parameters: - left (int): The pixels to crop at left. Positive values will crop, negative values will pad. - top (int): The pixels to crop at top. Positive values will crop, negative values will pad. - right (int): The pixels to crop at right. Positive values will crop, negative values will pad. - bottom (int): The pixels to crop at bottom. Positive values will crop, negative values will pad. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Alpha Gets or sets the alpha. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### AutoCrop Gets or sets a value indicating whether videobox will automatically crop/pad the input video to be centered in the output. ```csharp public bool AutoCrop { get; set; } ``` #### Property Value Parameters: - (bool): ### BorderAlpha Gets or sets the border alpha. ```csharp public double BorderAlpha { get; set; } ``` #### Property Value Parameters: - (double): ### Bottom Gets the pixels to crop at bottom. Positive values will crop, negative values will pad. ```csharp public int Bottom { get; } ``` #### Property Value Parameters: - (int): ### Fill Gets or sets the fill. ```csharp public VideoBoxFill Fill { get; set; } ``` #### Property Value Parameters: - (VideoBoxFill): ### Left Gets the pixels to crop at left. Positive values will crop, negative values will pad. ```csharp public int Left { get; } ``` #### Property Value Parameters: - (int): ### Right Gets the pixels to crop at right. Positive values will crop, negative values will pad. ```csharp public int Right { get; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time. Used only in VideoEditCoreX. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. Used only in VideoEditCoreX. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Top Gets the pixels to crop at top. Positive values will crop, negative values will pad. ```csharp public int Top { get; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the videobox effect. --- # Enum ChromaKeyColor Link: api/VisioForge.Core.Types.X.VideoEffects.ChromaKeyColor.html # Enum ChromaKeyColor # Enum ChromaKeyColor **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Chroma key color options. ```csharp public enum ChromaKeyColor ``` ## Fields Parameters: - Green (): Green screen chroma keying. - Blue (): Blue screen chroma keying. - Custom (): Custom color chroma keying. --- # Class ChromaKeySettingsX Link: api/VisioForge.Core.Types.X.VideoEffects.ChromaKeySettingsX.html # Class ChromaKeySettingsX # Class ChromaKeySettingsX **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a chroma key (green/blue screen) settings class for removing background colors from video. ```csharp public class ChromaKeySettingsX ``` #### Inheritance #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

Chroma key settings provide professional green/blue screen background removal with fine-tuned control over color tolerance, edge quality, and sensitivity to different lighting conditions. Uses advanced color-space algorithms for clean keying with minimal artifacts.

Key Features:

  • Multiple Key Colors: Green, blue, or custom color keying
  • Sensitivity Control: Adjustable color tolerance (0.0-180.0 degrees)
  • Noise Reduction: Removes noise in keyed areas (0.0-64.0)
  • Black/White Sensitivity: Controls sensitivity to dark and bright areas
  • Alpha Channel: Overall transparency control
  • Performance Optimization: Passthrough mode for better performance

Common Use Cases:

  • Virtual backgrounds for video conferencing
  • Film and video production compositing
  • Live streaming with virtual sets
  • Weather and news broadcast backgrounds
  • Virtual reality and AR applications

For Classic SDK with AI-powered green screen, see MaxineAIGSVideoEffect (Windows only, requires NVIDIA RTX GPU). The AI version provides superior edge quality but is GPU-dependent.

Performance Note: Chroma keying is CPU-intensive. For real-time applications, use lower sensitivity values and enable PreferPassthrough. Test with target hardware to ensure adequate performance.

## Constructors ### ChromaKeySettingsX(Size, ChromaKeyColor, double, double, double, uint, uint, bool) Initializes a new instance of the class. ```csharp public ChromaKeySettingsX(Size sourceVideoResolution, ChromaKeyColor chromaColor = ChromaKeyColor.Green, double alpha = 1, double sensitivity = 20, double noiseLevel = 2, uint blackSensitivity = 100, uint whiteSensitivity = 100, bool preferPassthrough = false) ``` #### Parameters Parameters: - sourceVideoResolution (Size): The source video resolution. - chromaColor (ChromaKeyColor): The chroma color to key out. - alpha (double): The alpha channel value (0.0 to 1.0). - sensitivity (double): The sensitivity value (0.0 to 180.0). - noiseLevel (double): The noise level (0.0 to 64.0). - blackSensitivity (uint): The black sensitivity (0 to 255). - whiteSensitivity (uint): The white sensitivity (0 to 255). - preferPassthrough (bool): Whether to prefer passthrough optimization. ## Properties ### Alpha Gets or sets the alpha channel value (0.0 to 1.0). Controls the overall transparency of the effect. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### BlackSensitivity Gets or sets the black sensitivity for chroma keying (0 to 255). Sensitivity to dark colors - higher values are more sensitive to dark areas. ```csharp public uint BlackSensitivity { get; set; } ``` #### Property Value Parameters: - (uint): ### ChromaColor Gets or sets the chroma color to key out. ```csharp public ChromaKeyColor ChromaColor { get; set; } ``` #### Property Value Parameters: - (ChromaKeyColor): ### CustomColor Gets or sets the custom color for chroma keying (when ChromaColor is set to Custom). ```csharp public SKColor CustomColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### NoiseLevel Gets or sets the noise level for chroma keying (0.0 to 64.0). Size of noise radius - higher values help remove noise in the keyed areas. ```csharp public double NoiseLevel { get; set; } ``` #### Property Value Parameters: - (double): ### PreferPassthrough Gets or sets whether to prefer passthrough optimization. When true, no processing is done for alpha=1.0 if possible, improving performance. ```csharp public bool PreferPassthrough { get; set; } ``` #### Property Value Parameters: - (bool): ### Sensitivity Gets or sets the sensitivity/angle for chroma keying (0.0 to 180.0). Size of the colorcube to change - higher values make the effect more sensitive to color variations. ```csharp public double Sensitivity { get; set; } ``` #### Property Value Parameters: - (double): ### SourceVideoResolution Gets source video resolution. ```csharp public Size SourceVideoResolution { get; } ``` #### Property Value Parameters: - (Size): ### WhiteSensitivity Gets or sets the white sensitivity for chroma keying (0 to 255). Sensitivity to bright colors - higher values are more sensitive to bright areas. ```csharp public uint WhiteSensitivity { get; set; } ``` #### Property Value Parameters: - (uint): --- # Class CircleVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.CircleVideoEffect.html # Class CircleVideoEffect # Class CircleVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a circular arc perspective effect that maps the video onto a circular arc segment creating cylindrical distortion. ```csharp public class CircleVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect creates a perspective transformation that maps the video image onto a circular arc, simulating viewing the content on a curved cylindrical surface. The effect can create partial or complete circular wrapping, panoramic views, or cylindrical distortions.

The circle effect is controlled by three parameters:

  • Angle: Starting angle of the arc in radians (rotation position)
  • Height: Vertical size/radius of the circular arc
  • SpreadAngle: Arc length in radians (how much of circle is used)

The circle effect is commonly used for:

  • Panoramic Views: Simulate wide-angle or 360° panoramas
  • Cylindrical Projection: Map flat video to curved surfaces
  • Fish-eye Simulation: Create circular distortion effects
  • Artistic Effects: Curved, warped perspectives
  • VR Content: Cylindrical video mapping for immersive content

This is a cross-platform effect using the circle element with parametric arc mapping. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on modern hardware. GPU-accelerated geometric transformation with cylindrical projection. Performance scales with arc complexity and resolution.

## Constructors ### CircleVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public CircleVideoEffect(string name = "circle") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "circle". ## Fields ### DefaultName The default name for circle effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Angle Gets or sets the starting angle of the circular arc in radians. ```csharp public double Angle { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Angle defines the rotational starting position of the arc. Use this to orient the circular mapping in different directions. Negative values rotate counter-clockwise. ### Height Gets or sets the height/radius of the circular arc. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Height controls the radius of curvature for the cylindrical projection. Smaller values create tighter curvature (more pronounced cylindrical effect), while larger values create gentler curves approaching flat perspective. ### SpreadAngle Gets or sets the angular length/spread of the arc in radians. ```csharp public double SpreadAngle { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks SpreadAngle determines how much of the circular arc is used for the mapping. Larger values wrap more of the video around the circular path. A full 2π creates a complete cylindrical wrap-around effect. ### StartTime Gets or sets the start time for the circle effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the circle effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the circle effect. --- # Enum ColorEffectsPreset Link: api/VisioForge.Core.Types.X.VideoEffects.ColorEffectsPreset.html # Enum ColorEffectsPreset # Enum ColorEffectsPreset **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Color effects preset. ```csharp public enum ColorEffectsPreset ``` ## Fields Parameters: - None (): None. - Heat (): Heat. - Sepia (): Sepia. - XRay (): X-ray. - XPro (): X-pro. - YellowBlue (): Yellow-blue. --- # Class ColorEffectsVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.ColorEffectsVideoEffect.html # Class ColorEffectsVideoEffect # Class ColorEffectsVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a color effects video effect that applies artistic color transformations using preset filters. ```csharp public class ColorEffectsVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The color effects filter provides quick access to common color transformations through preset filters. Each preset applies a specific combination of color adjustments to achieve popular visual styles.

Available Presets:

  • Heat: Warm orange/red tones for desert or fire scenes
  • Sepia: Classic brown-tinted vintage photograph look
  • Cool (Blue): Cold blue tones for winter or underwater scenes
  • XPro: Cross-processed film look with high contrast
  • XRay: Inverted luminance for X-ray effect
  • Yellowblue: Yellow/blue split toning effect

Common Use Cases:

  • Quick color grading for video projects
  • Artistic stylization and mood setting
  • Vintage or retro video effects
  • Creative color treatments for social media
  • Matching footage from different sources

For Classic SDK equivalents, see individual color adjustment effects like VideoEffectSaturation, VideoEffectContrast, etc. (Windows only). For more control, use or .

Performance Note: Color effects are CPU-based but very efficient. Suitable for real-time processing on all platforms including mobile devices.

## Constructors ### ColorEffectsVideoEffect(ColorEffectsPreset, string) Initializes a new instance of the class. ```csharp public ColorEffectsVideoEffect(ColorEffectsPreset preset, string name = "color-effects") ``` #### Parameters Parameters: - preset (ColorEffectsPreset): The preset. - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Preset Gets or sets the preset. ```csharp public ColorEffectsPreset Preset { get; set; } ``` #### Property Value Parameters: - (ColorEffectsPreset): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the color effects. --- # Class CropVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.CropVideoEffect.html # Class CropVideoEffect # Class CropVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a video crop effect that removes pixels from the edges of video frames. ```csharp public class CropVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The crop effect removes specified numbers of pixels from each edge of the video frame, effectively reducing the frame dimensions. This is useful for removing unwanted borders, changing aspect ratios, or focusing on a specific region of interest.

Key Features:

  • Edge-Based Cropping: Specify pixels to remove from each edge independently
  • Zero-Copy Operation: Efficient implementation without frame buffer copying
  • Time Control: Optional start/stop time for VideoEditCoreX
  • Rectangle Constructor: Convenient initialization from Rect object

Common Use Cases:

  • Removing black bars (letterboxing/pillarboxing)
  • Converting aspect ratios (16:9 to 4:3, etc.)
  • Removing camera artifacts or unwanted edges
  • Extracting regions of interest
  • Preparing video for specific display formats

For Classic SDK, crop functionality is available through VideoEffectPan (Windows only).

Performance Note: Cropping is a very efficient operation as it manipulates frame metadata rather than pixel data. Has minimal CPU impact and can be combined with other effects.

## Constructors ### CropVideoEffect(int, int, int, int) Initializes a new instance of the class. ```csharp public CropVideoEffect(int left, int top, int right, int bottom) ``` #### Parameters Parameters: - left (int): The number of pixels to crop from the left edge. - top (int): The number of pixels to crop from the top edge. - right (int): The number of pixels to crop from the right edge. - bottom (int): The number of pixels to crop from the bottom edge. ### CropVideoEffect(Rect) Initializes a new instance of the class. ```csharp public CropVideoEffect(Rect rect) ``` #### Parameters Parameters: - rect (Rect): The rectangle defining the crop boundaries. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Bottom Gets the pixels to crop at bottom. ```csharp public int Bottom { get; } ``` #### Property Value Parameters: - (int): ### Left Gets the pixels to crop at left. ```csharp public int Left { get; } ``` #### Property Value Parameters: - (int): ### Right Gets the pixels to crop at right. ```csharp public int Right { get; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time. Used only in VideoEditCoreX. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. Used only in VideoEditCoreX. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Top Gets the pixels to crop at top. ```csharp public int Top { get; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the videocrop effect. --- # Class CustomVideoSampleGrabberEffect Link: api/VisioForge.Core.Types.X.VideoEffects.CustomVideoSampleGrabberEffect.html # Class CustomVideoSampleGrabberEffect # Class CustomVideoSampleGrabberEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Custom video sample grabber effect that allows capturing video frames for processing. ```csharp public class CustomVideoSampleGrabberEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CustomVideoSampleGrabberEffect(VideoFormatX, string) Initializes a new instance of the class. ```csharp public CustomVideoSampleGrabberEffect(VideoFormatX format, string name = "custom-video-sg") ``` #### Parameters Parameters: - format (VideoFormatX): The video format for captured frames. - name (string): The name of the effect. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Format Gets or sets the format. ```csharp public VideoFormatX Format { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ### OnVideoFrameBuffer This event occurs whenever each new video frame is received. ```csharp public event EventHandler OnVideoFrameBuffer ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): --- # Enum DeinterlaceFieldLayout Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceFieldLayout.html # Enum DeinterlaceFieldLayout # Enum DeinterlaceFieldLayout **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace field layout. ```csharp public enum DeinterlaceFieldLayout ``` ## Fields Parameters: - Auto (): Automatically detect. - TopFieldsFirst (): Top fields first. - BottomFieldsFirst (): Bottom fields first. --- # Enum DeinterlaceFields Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceFields.html # Enum DeinterlaceFields # Enum DeinterlaceFields **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace fields. ```csharp public enum DeinterlaceFields ``` ## Fields Parameters: - All (): All (missing data is interp.). - TopFields (): Top fields only. - BottomFields (): Bottom fields only. - Auto (): Automatically detect. --- # Enum DeinterlaceLocking Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceLocking.html # Enum DeinterlaceLocking # Enum DeinterlaceLocking **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace locking mode. ```csharp public enum DeinterlaceLocking ``` ## Fields Parameters: - None (): None. - Auto (): Auto. - Active (): Active. - Passive (): Passive. --- # Enum DeinterlaceMethods Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceMethods.html # Enum DeinterlaceMethods # Enum DeinterlaceMethods **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace methods. ```csharp public enum DeinterlaceMethods ``` ## Fields Parameters: - TOMSMOCOMP (): Motion adaptive: motion search. - GreedyH (): Motion adaptive: advanced detection. - GreedyL (): Motion adaptive: simple detection. - VFIR (): Blur vertical. - Linear (): Linear interpolation. - LinearBlend (): Linear interpolation in time domain. Low quality. - ScalerBob (): Double lines. --- # Enum DeinterlaceMode Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceMode.html # Enum DeinterlaceMode # Enum DeinterlaceMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace mode. ```csharp public enum DeinterlaceMode ``` ## Fields Parameters: - Auto (): Auto. - Interlaced (): Interlaced. - Disabled (): Disabled. - AutoStrict (): Auto (strict). --- # Class DeinterlaceSettings Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceSettings.html # Class DeinterlaceSettings # Class DeinterlaceSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Deinterlace settings. ```csharp public class DeinterlaceSettings ``` #### Inheritance #### Inherited Members ## Properties ### DropOrphans Gets or sets a value indicating whether to drop orphans. ```csharp public bool DropOrphans { get; set; } ``` #### Property Value Parameters: - (bool): ### FieldLayout Gets or sets the field layout. ```csharp public DeinterlaceFieldLayout FieldLayout { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFieldLayout): ### Fields Gets or sets the fields. ```csharp public DeinterlaceFields Fields { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFields): ### IgnoreObscure Gets or sets a value indicating whether to ignore obscure. ```csharp public bool IgnoreObscure { get; set; } ``` #### Property Value Parameters: - (bool): ### Locking Gets or sets the locking. ```csharp public DeinterlaceLocking Locking { get; set; } ``` #### Property Value Parameters: - (DeinterlaceLocking): ### Method Gets or sets the method. ```csharp public DeinterlaceMethods Method { get; set; } ``` #### Property Value Parameters: - (DeinterlaceMethods): ### Mode Gets or sets the mode. ```csharp public DeinterlaceMode Mode { get; set; } ``` #### Property Value Parameters: - (DeinterlaceMode): --- # Class DeinterlaceVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.DeinterlaceVideoEffect.html # Class DeinterlaceVideoEffect # Class DeinterlaceVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a cross-platform deinterlacing video effect that converts interlaced video to progressive. ```csharp public sealed class DeinterlaceVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK (Cross-platform)

Platforms: Windows, Linux, macOS, Android, iOS

Deinterlacing is essential for converting interlaced video (where each frame consists of two fields captured at different time points) into progressive video (where each frame is a complete image). This is crucial when displaying interlaced content on progressive displays or when processing video.

Interlaced Sources:

  • Traditional broadcast television (NTSC, PAL, SECAM)
  • Some digital broadcast formats (1080i)
  • Older video cameras and camcorders
  • Archive footage and legacy content

Deinterlacing Methods Available:

  • Linear: Fast but lower quality, blends fields together
  • Greedy: Good balance of speed and quality, edge-directed interpolation
  • VFIR: Vertical Finite Impulse Response, high quality vertical filtering
  • Yadif: Yet Another Deinterlacing Filter, excellent quality with motion compensation

Performance Considerations: Higher quality methods (Yadif, VFIR) require more CPU. For real-time processing on mobile devices, consider Linear or Greedy methods.

See Also: For Windows-only applications, see VideoEffectDeinterlaceBlend, VideoEffectDeinterlaceCAVT, and VideoEffectDeinterlaceTriangle for Classic SDK implementations.

## Constructors ### DeinterlaceVideoEffect(string) Initializes a new instance of the class with recommended defaults. ```csharp public DeinterlaceVideoEffect(string name = "deinterlace") ``` #### Parameters Parameters: - name (string): The unique name identifier for this effect instance. Default value is "deinterlace". #### Remarks Default configuration uses auto-detection mode with linear deinterlacing method, suitable for most scenarios with good performance. ## Fields ### DefaultName The default name for the deinterlace effect. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### DropOrphans Gets or sets whether to drop orphan fields at the beginning of telecine patterns. ```csharp public bool DropOrphans { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Orphan fields can occur at the start of telecine sequences. Dropping them produces cleaner output with better temporal alignment. This is relevant primarily for NTSC 3:2 pulldown content. ### FieldLayout Gets or sets the field layout order. ```csharp public DeinterlaceFieldLayout FieldLayout { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFieldLayout): #### Remarks Field order is important for proper temporal interpolation. NTSC typically uses bottom-field-first, while PAL typically uses top-field-first. Use unless you have specific knowledge of the field order. ### Fields Gets or sets which fields should be output. ```csharp public DeinterlaceFields Fields { get; set; } ``` #### Property Value Parameters: - (DeinterlaceFields): #### Remarks Setting to will double the output framerate as both fields are converted to separate frames. Use for most scenarios. ### IgnoreObscure Gets or sets whether to ignore obscure or rare telecine patterns. ```csharp public bool IgnoreObscure { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks

NTSC 2:3 pulldown (3:2 telecine) is the most common pattern. Setting this to true improves performance by not checking for rare pattern variants.

Only set to false if working with unusual telecine patterns in specialized content.

### Locking Gets or sets the locking defines which approach to pattern locking is used which affects processing latency and accuracy of timestamp adjustment for telecine streams. ```csharp public DeinterlaceLocking Locking { get; set; } ``` #### Property Value Parameters: - (DeinterlaceLocking): ### Method Gets or sets the deinterlacing algorithm method. ```csharp public DeinterlaceMethods Method { get; set; } ``` #### Property Value Parameters: - (DeinterlaceMethods): #### Remarks

Different methods provide different quality vs. CPU usage tradeoffs:

  • Yadif: Recommended for best quality, moderate CPU usage
  • Greedy: Good for real-time on desktop systems
  • Linear: Best for mobile devices or low-power systems
### Mode Gets or sets the deinterlacing application mode. ```csharp public DeinterlaceMode Mode { get; set; } ``` #### Property Value Parameters: - (DeinterlaceMode): #### Remarks Use to automatically detect interlaced content. Use when you know the content is interlaced but may not be properly flagged. ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the deinterlace effect. ## See Also --- # Class DiceVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.DiceVideoEffect.html # Class DiceVideoEffect # Class DiceVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a dice/pixelation effect that divides the video into a grid of square blocks with randomly shuffled positions. ```csharp public class DiceVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect divides the video frame into a grid of square blocks (like dice) and randomly rearranges their positions, creating a chaotic, fragmented appearance. The blocks are shuffled continuously, producing a dynamic, ever-changing mosaic pattern where the original video content is recognizable but scrambled.

The dice effect is controlled by the parameter, which determines block size using a power-of-2 calculation: dice size = 2^SquareBits. For example, SquareBits=4 creates 16×16 pixel blocks.

The dice effect is commonly used for:

  • Privacy/Censorship: Obscure faces or sensitive information (basic scrambling)
  • Glitch Art: Create digital fragmentation effects
  • Music Videos: Chaotic, energetic visual effects
  • Transitions: Fragmented scene transitions
  • Retro Aesthetics: Low-resolution, pixelated looks
  • VJ Performances: Dynamic, randomized visuals

The random shuffling creates an unpredictable, organic effect that changes every frame, making the dice effect ideal for dynamic, attention-grabbing visuals.

This is a cross-platform effect using the dicetv element with random block shuffling. The effect is real-time capable with efficient block-based processing.

Performance: Real-time capable on all hardware. Efficient block-based shuffling algorithm. Performance is independent of block size due to grid-based processing.

## Constructors ### DiceVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public DiceVideoEffect(string name = "dice") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "dice". ## Fields ### DefaultName The default name for dice effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### SquareBits Gets or sets the size of the square blocks as a power of 2 (dice size = 2^SquareBits). ```csharp public int SquareBits { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks

SquareBits determines the block size using exponential calculation. Smaller values create finer fragmentation with many small blocks, while larger values create coarser effects with fewer, larger blocks.

Block Size Reference:

  • SquareBits 1-2: Ultra-fine (4-16 pixels), extreme fragmentation
  • SquareBits 3-4: Fine to moderate (8-16 pixels), balanced effect
  • SquareBits 5-6: Coarse (32-64 pixels), strong blockiness
  • SquareBits 7+: Very coarse (128+ pixels), minimal fragmentation

Very small values (1-2) create thousands of tiny blocks which may be computationally intensive at very high resolutions, though the algorithm is optimized for real-time performance.

### StartTime Gets or sets the start time for the dice effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live scenarios, the effect provides continuous random block shuffling. ### StopTime Gets or sets the stop time for the dice effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live scenarios, the effect provides continuous random block shuffling. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the dice effect. --- # Class EdgeVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.EdgeVideoEffect.html # Class EdgeVideoEffect # Class EdgeVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents an edge detection effect that highlights boundaries and contours in video. ```csharp public class EdgeVideoEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The edge detection effect applies a Sobel edge detection algorithm that identifies and highlights areas of rapid intensity change in the image. This creates a sketch-like or outline effect where edges appear bright against a dark background.

Key Features:

  • Sobel Algorithm: Standard computer vision edge detection using gradient analysis
  • Automatic Threshold: Detects edges based on local intensity gradients
  • Zero Configuration: Simple to use with no parameters to tune
  • Real-Time Capable: Efficient implementation suitable for live video

Common Use Cases:

  • Artistic sketch or cartoon-style video effects
  • Computer vision preprocessing for object detection
  • Motion graphics and creative video treatments
  • Highlighting structural elements in video
  • Creating outline/wireframe effects

For Classic SDK, see GPUVideoEffectContour (Windows only, GPU-accelerated). For other artistic effects, see , .

Performance Note: Edge detection involves gradient calculations which are moderately CPU-intensive. Performance is adequate for real-time processing on most devices including mobile. For GPU acceleration on Windows, use the Classic SDK's GPUVideoEffectContour.

## Constructors ### EdgeVideoEffect(string) Initializes a new instance of the class. ```csharp public EdgeVideoEffect(string name = "edge") ``` #### Parameters Parameters: - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): --- # Class FishEyeVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.FishEyeVideoEffect.html # Class FishEyeVideoEffect # Class FishEyeVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a fish-eye lens distortion effect that simulates wide-angle lens distortion. ```csharp public class FishEyeVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates the spherical distortion characteristic of fish-eye camera lenses, creating a bulging, convex appearance where the center of the image appears to push outward while the edges are compressed inward. This produces a hemispherical or ultra-wide-angle view.

The fish-eye effect is commonly used for:

  • Artistic Expression: Create dramatic, distorted perspectives
  • POV Shots: Simulate action camera or surveillance camera views
  • Creative Transitions: Add visual interest between scenes
  • 360° Video Processing: Simulate spherical camera views
  • VR Content: Pre-distort footage for VR display correction

This effect applies a fixed fish-eye distortion pattern with no adjustable parameters. The distortion strength is automatically calculated based on the video dimensions to provide a natural-looking fish-eye effect.

This is a cross-platform effect using the fisheye element. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on most hardware. GPU-accelerated for efficient geometric transformation. Mobile devices may experience slight performance impact at higher resolutions.

## Constructors ### FishEyeVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public FishEyeVideoEffect(string name = "fish_eye") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "fish_eye". ## Fields ### DefaultName The default name for fish-eye effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### StartTime Gets or sets the start time for the fish-eye effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live processing scenarios, the effect is applied continuously. ### StopTime Gets or sets the stop time for the fish-eye effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live processing scenarios, the effect is applied continuously. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the fisheye effect. --- # Class FlipRotateVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.FlipRotateVideoEffect.html # Class FlipRotateVideoEffect # Class FlipRotateVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a cross-platform video flip and rotation effect for geometric transformations. ```csharp public class FlipRotateVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK (Cross-platform)

Platforms: Windows, Linux, macOS, Android, iOS

This effect provides fast, hardware-accelerated geometric transformations including:

  • Flipping: Horizontal (left-right mirror) and vertical (top-bottom mirror)
  • Rotation: 90°, 180°, and 270° clockwise rotations
  • Combined: Rotation with flipping for complex orientations

Common Use Cases:

  • Correcting video orientation from mobile devices
  • Mirroring webcam feeds for natural "selfie" view
  • Portrait/landscape orientation changes
  • Artistic effects (horizontal/vertical flips)

Performance: Highly optimized operation using hardware acceleration on all platforms. Minimal performance impact even on mobile devices.

See Also: For Windows-only applications with arbitrary angle rotation, see VideoEffectRotate for Classic SDK implementation.

## Constructors ### FlipRotateVideoEffect(VideoFlipRotateMethod, string) Initializes a new instance of the class. ```csharp public FlipRotateVideoEffect(VideoFlipRotateMethod method, string name = "flip-rotate") ``` #### Parameters Parameters: - method (VideoFlipRotateMethod): The flip/rotate transformation method specifying the desired geometric transformation. See for all available options. - name (string): The unique name identifier for this effect instance. Default value is "flip-rotate". ## Fields ### DefaultName The default name for the flip/rotate effect. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Method Gets or sets the geometric transformation method. ```csharp public VideoFlipRotateMethod Method { get; set; } ``` #### Property Value Parameters: - (VideoFlipRotateMethod): #### Remarks Changing this property dynamically updates the transformation in real-time without recreating the effect. ### StartTime Gets or sets the time when the effect should start being applied. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the time when the effect should stop being applied. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the videoflip effect. ## See Also --- # Class FontSettings Link: api/VisioForge.Core.Types.X.VideoEffects.FontSettings.html # Class FontSettings # Class FontSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Font settings. ```csharp public class FontSettings ``` #### Inheritance #### Inherited Members ## Constructors ### FontSettings() Initializes a new instance of the class. ```csharp public FontSettings() ``` ### FontSettings(string, string, int) Initializes a new instance of the class. ```csharp public FontSettings(string name, string face, int size) ``` #### Parameters Parameters: - name (string): The name. - face (string): The face. - size (int): The size. ## Properties ### Face Gets or sets the face. ```csharp public string Face { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets font name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Size Gets or sets font size. ```csharp public int Size { get; set; } ``` #### Property Value Parameters: - (int): ### Style Gets or sets the style. ```csharp public FontStyle Style { get; set; } ``` #### Property Value Parameters: - (FontStyle): ### Underline Gets or sets a value indicating whether the font is underlined. ```csharp public bool Underline { get; set; } ``` #### Property Value Parameters: - (bool): ### Weight Gets or sets the weight. ```csharp public FontWeight Weight { get; set; } ``` #### Property Value Parameters: - (FontWeight): ## Methods ### ParseWeight() Parses the font weight from the face string. ```csharp public void ParseWeight() ``` --- # Enum FontStretch Link: api/VisioForge.Core.Types.X.VideoEffects.FontStretch.html # Enum FontStretch # Enum FontStretch **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll The width of the font relative to other designs within a family. ```csharp public enum FontStretch ``` ## Fields Parameters: - UltraCondensed (): Ultra condensed width. - ExtraCondensed (): Extra condensed width. - Condensed (): Condensed width. - SemiCondensed (): Semi condensed width. - Normal (): The normal width. - SemiExpanded (): Semi expanded width. - Expanded (): Expanded width. - ExtraExpanded (): Extra expanded width. - UltraExpanded (): Ultra expanded width. --- # Enum FontStyle Link: api/VisioForge.Core.Types.X.VideoEffects.FontStyle.html # Enum FontStyle # Enum FontStyle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Font style. ```csharp public enum FontStyle ``` ## Fields Parameters: - Normal (): Normal. - Oblique (): Oblique. - Italic (): Italic. --- # Enum FontWeight Link: api/VisioForge.Core.Types.X.VideoEffects.FontWeight.html # Enum FontWeight # Enum FontWeight **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Font weight constants. ```csharp public enum FontWeight ``` ## Fields Parameters: - Thin (): The thin weight. - UltraLight (): The ultralight weight. - Light (): The light weight. - SemiLight (): The semilight weight. - Book (): The book weight. - Normal (): The default weight. - Medium (): The normal weight. - SemiBold (): The semibold weight. - Bold (): The bold weight. - UltraBold (): The ultrabold weight. - Heavy (): The heavy weight. - UltraHeavy (): The ultraheavy weight. --- # Class GammaVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.GammaVideoEffect.html # Class GammaVideoEffect # Class GammaVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a gamma correction video effect that adjusts the overall brightness/darkness curve of the video. ```csharp public class GammaVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

Gamma correction adjusts the relationship between input and output brightness values using a power law. Unlike linear brightness adjustment, gamma affects mid-tones more than highlights or shadows, providing more natural-looking brightness adjustments.

Gamma Values:

  • <1.0: Darkens image (e.g., 0.5 = much darker, 0.8 = slightly darker)
  • 1.0: No change (neutral)
  • >1.0: Brightens image (e.g., 1.2 = slightly brighter, 2.0 = much brighter)
  • Range: 0.01 to 10.0 (practical range: 0.5 to 2.5)

When to Use Gamma vs. Brightness:

  • Gamma: Adjusts mid-tones while preserving blacks and whites, more natural look
  • Brightness: Shifts all values equally, can crush blacks or clip whites
  • Combined: Use gamma for overall tone, brightness for final tweaking

Common Use Cases:

  • Correcting underexposed or overexposed footage
  • Matching footage from different cameras
  • Compensating for display gamma differences
  • Creating specific moods (darker for dramatic, brighter for cheerful)
  • Adjusting for different viewing environments

For Classic SDK, gamma adjustments are typically handled by VideoEffectDarkness or VideoEffectLightness (Windows only).

Performance Note: Gamma correction is very efficient and suitable for real-time processing on all platforms. Implemented as a lookup table for optimal performance.

## Constructors ### GammaVideoEffect(double, string) Initializes a new instance of the class. ```csharp public GammaVideoEffect(double value, string name = "gamma") ``` #### Parameters Parameters: - value (double): Value. Range is [0.01..10.0], default is 1.0. - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Value Gets or sets the value. Range is [0.01..10.0], default is 1.0. ```csharp public double Value { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the gamma effect. --- # Class GaussianBlurVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.GaussianBlurVideoEffect.html # Class GaussianBlurVideoEffect # Class GaussianBlurVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a cross-platform Gaussian blur video effect with adjustable blur intensity. ```csharp public class GaussianBlurVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK (Cross-platform)

Platforms: Windows, Linux, macOS, Android, iOS

Gaussian blur applies a smooth blur effect using a Gaussian function, which provides natural-looking softening without artifacts. The effect is controlled by a sigma parameter that determines the blur radius.

Unique Feature: This effect supports negative sigma values for sharpening, making it versatile for both blur and sharpen operations in a single effect.

Use Cases:

  • Privacy protection (blur faces, license plates, sensitive information)
  • Depth-of-field simulation
  • Noise reduction
  • Artistic soft-focus effects
  • Sharpening (using negative sigma values)

Performance: Computational cost increases with higher sigma values. Consider using lower values for real-time applications on mobile devices.

See Also: For Windows-only applications, see VideoEffectBlur and GPUVideoEffectBlur for Classic SDK implementations.

## Constructors ### GaussianBlurVideoEffect(double, string) Initializes a new instance of the class. ```csharp public GaussianBlurVideoEffect(double sigma, string name = "gaussian_blur") ``` #### Parameters Parameters: - sigma (double): The sigma value controlling blur intensity and direction.
  • Positive values (0.1 to 20.0): Apply blur effect. Higher values create stronger blur.
  • Zero (0.0): No effect applied.
  • Negative values (-20.0 to -0.1): Apply sharpening effect. More negative values create stronger sharpening.
  • Default: 1.2 (subtle blur)
- name (string): The unique name identifier for this effect instance. Default value is "gaussian_blur". ## Fields ### DefaultName The default name for the Gaussian blur effect. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Sigma Gets or sets the sigma value controlling blur intensity and direction. ```csharp public double Sigma { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The sigma parameter determines the standard deviation of the Gaussian distribution used for blurring. Larger positive values create a wider blur radius, while negative values invert the process to enhance edges. Performance impact increases with the absolute value of sigma. ### StartTime Gets or sets the time when the effect should start being applied. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the time when the effect should stop being applied. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the gaussianblur effect. --- # Class GrayscaleVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.GrayscaleVideoEffect.html # Class GrayscaleVideoEffect # Class GrayscaleVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a cross-platform grayscale (black and white) video effect that converts color video to monochrome. ```csharp public sealed class GrayscaleVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK (Cross-platform)

Platforms: Windows, Linux, macOS, Android, iOS

This effect converts color video to grayscale using perceptual luminance weights, producing a black and white image that accurately represents brightness values. The conversion preserves image detail and contrast while removing all color information.

The effect can be applied for artistic purposes, to simulate black and white film, or to reduce bandwidth requirements by removing color data.

Performance: Lightweight effect suitable for real-time processing on all platforms.

See Also: For Windows-only applications, see VideoEffectGrayscale and GPUVideoEffectGrayscale for Classic SDK implementations.

## Constructors ### GrayscaleVideoEffect(string) Initializes a new instance of the class. ```csharp public GrayscaleVideoEffect(string name = "grayscale") ``` #### Parameters Parameters: - name (string): The unique name identifier for this effect instance. Use this name to reference the effect when updating or removing it. Default value is "grayscale". ## Fields ### DefaultName The default name for the grayscale effect. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### StartTime Gets or sets the time when the effect should start being applied. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use and together to apply the effect only during a specific time range in the video. ### StopTime Gets or sets the time when the effect should stop being applied. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use and together to apply the effect only during a specific time range in the video. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the grayscale effect. --- # Interface IBaseVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.IBaseVideoEffect.html # Interface IBaseVideoEffect # Interface IBaseVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Base video effect interface. ```csharp public interface IBaseVideoEffect ``` ## Properties ### ID Gets the identifier. ```csharp VideoEffectID ID { get; } ``` #### Property Value Parameters: - (VideoEffectID): ### Name Gets the name. ```csharp string Name { get; } ``` #### Property Value Parameters: - (string): ## Methods ### OnUpdateCall() Raises the OnUpdate event to notify subscribers that the effect has been updated. ```csharp void OnUpdateCall() ``` ### OnUpdate Occurs when [on update]. ```csharp event EventHandler OnUpdate ``` #### Event Type Parameters: - (EventHandler < EventArgs >): --- # Class ImageOverlayCairoVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.ImageOverlayCairoVideoEffect.html # Class ImageOverlayCairoVideoEffect # Class ImageOverlayCairoVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Cairo-based image overlay video effect that provides high-quality rendering and cross-platform compatibility. This effect uses the Cairo graphics library for overlaying images onto video streams, offering superior rendering quality and better support across different platforms compared to the standard GdkPixbuf-based implementation. Supports all standard overlay features including positioning, scaling, transparency, and timing control, while providing smoother alpha blending and better performance for complex overlay scenarios. ```csharp public class ImageOverlayCairoVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### ImageOverlayCairoVideoEffect(string, string) Initializes a new instance of the class. Creates a Cairo-based overlay effect with the specified image file. ```csharp public ImageOverlayCairoVideoEffect(string filename, string name = "image-overlay-cairo") ``` #### Parameters Parameters: - filename (string): The path to the image file to overlay (supports PNG, JPEG, BMP, and other common formats). - name (string): The unique name for this effect instance. Defaults to "image-overlay-cairo". ## Fields ### DefaultName The default name for Cairo-based image overlay effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Alpha Gets or sets the alpha transparency value [0.0-1.0]. 0.0 is fully transparent, 1.0 is fully opaque. Cairo provides smooth alpha blending for professional-quality overlays. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### Filename Gets or sets the file name of the image to overlay. Changing this property will immediately update the overlay if the effect is active. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Height Gets or sets the height of the overlay image. Set to 0 to use the original image height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time for the overlay effect. The overlay will not be visible before this time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time for the overlay effect. The overlay will not be visible after this time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Width Gets or sets the width of the overlay image. Set to 0 to use the original image width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X coordinate position of the overlay on the video frame. The coordinate system starts at the top-left corner (0,0). ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y coordinate position of the overlay on the video frame. The coordinate system starts at the top-left corner (0,0). ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the GStreamer element description for the Cairo overlay effect. This method creates a cairooverlay element configuration string with all current settings. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the cairooverlay effect. --- # Class ImageOverlaySettings Link: api/VisioForge.Core.Types.X.VideoEffects.ImageOverlaySettings.html # Class ImageOverlaySettings # Class ImageOverlaySettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Image overlay settings. ```csharp public class ImageOverlaySettings ``` #### Inheritance #### Inherited Members ## Constructors ### ImageOverlaySettings(string) Initializes a new instance of the class. ```csharp public ImageOverlaySettings(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ### ImageOverlaySettings(byte[]) Initializes a new instance of the class. ```csharp public ImageOverlaySettings(byte[] data) ``` #### Parameters Parameters: - data (byte [ ]): The image (PNG, GIF, BMP or JPEG) as data. ### ImageOverlaySettings(nint, int) Initializes a new instance of the class. ```csharp public ImageOverlaySettings(nint data, int dataSize) ``` #### Parameters Parameters: - data (nint): The image (PNG, GIF, BMP or JPEG) as data. - dataSize (int): Data size. ## Properties ### Alpha Gets or sets the alpha transparency value (0.0 to 1.0). ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### Data Gets the data. ```csharp public byte[] Data { get; set; } ``` #### Property Value Parameters: - (byte [ ]): ### Filename Gets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X coordinate position of the image overlay. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y coordinate position of the image overlay. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): --- # Class ImageOverlayVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.ImageOverlayVideoEffect.html # Class ImageOverlayVideoEffect # Class ImageOverlayVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents an image overlay effect that composites static images (watermarks, logos) onto video frames. ```csharp public class ImageOverlayVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The image overlay effect provides simple image compositing capabilities for adding watermarks, logos, or other static graphics to video. Supports common image formats (PNG, JPG, GIF) with alpha channel transparency for PNG images. Position and size can be controlled with pixel precision.

Supported Image Formats:

  • PNG: With alpha channel transparency support
  • JPEG: Opaque images
  • GIF: Static and animated
  • BMP: Basic bitmap format

Key Features:

  • Alpha Blending: Adjustable transparency (0.0-1.0)
  • Positioning: Pixel-perfect X/Y coordinate placement
  • Sizing: Custom width and height (auto-detected from image by default)
  • Time Control: Optional start/stop time for VideoEditCoreX

For Classic SDK equivalent, see VideoEffectImageLogo (Windows only). For more advanced overlay capabilities with animations and multiple layers, consider using the OverlayManager system.

Performance Note: Image decoding happens at initialization. Runtime performance is efficient for static overlays. For multiple overlays or animated effects, use OverlayManager for better performance.

## Constructors ### ImageOverlayVideoEffect(string, string) Initializes a new instance of the class. ```csharp public ImageOverlayVideoEffect(string filename, string name = "image-overlay") ``` #### Parameters Parameters: - filename (string): The filename. - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Alpha Gets or sets the alpha transparency value for the overlay. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks This alpha value is combined with the image's own alpha channel (for PNG images). For example, an Alpha value of 0.5 on a PNG with 50% alpha will result in 25% overall opacity. ### Filename Gets or sets the path to the image file to overlay. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When changing the filename at runtime, the image will be reloaded. For best performance, use PNG format with pre-multiplied alpha channel. ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X coordinate. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y coordinate. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the gdkpixbufoverlay effect. --- # Enum InterlacePattern Link: api/VisioForge.Core.Types.X.VideoEffects.InterlacePattern.html # Enum InterlacePattern # Enum InterlacePattern **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Interlace pattern. ```csharp public enum InterlacePattern ``` ## Fields Parameters: - _1x1 (): 1:1 (e.g. 60p -> 60i). - _2x2 (): 2:2 (e.g. 30p -> 60i). - _2x3 (): 2:3 (e.g. 24p -> 60i telecine). - _2x3x3x2 (): 2:3:3:2 (e.g. 24p -> 60i telecine). - _2x11x3 (): Euro 2-11:3 (e.g. 24p -> 50i telecine). - _3x4x3 (): 3:4-3 (e.g. 16p -> 60i telecine). - _3x7x4 (): 3-7:4 (e.g. 16p -> 50i telecine). - _3x3x4 (): 3:3:4 (e.g. 18p -> 60i telecine). - _3x3 (): 3:3 (e.g. 20p -> 60i telecine). - _3x2x4 (): 3:2-4 (e.g. 27.5p -> 60i telecine). - _1x2x4 (): 1:2-4 (e.g. 27.5p -> 50i telecine). --- # Class InterlaceSettings Link: api/VisioForge.Core.Types.X.VideoEffects.InterlaceSettings.html # Class InterlaceSettings # Class InterlaceSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Interlace settings. ```csharp public class InterlaceSettings ``` #### Inheritance #### Inherited Members ## Properties ### AllowRFF Gets or sets a value indicating whether to allow generation of buffers with RFF flag set. ```csharp public bool AllowRFF { get; set; } ``` #### Property Value Parameters: - (bool): ### FieldPattern Gets or sets the output field pattern. ```csharp public InterlacePattern FieldPattern { get; set; } ``` #### Property Value Parameters: - (InterlacePattern): ### PatternOffset Gets or sets the initial field pattern offset. Counts from 0. ```csharp public uint PatternOffset { get; set; } ``` #### Property Value Parameters: - (uint): ### TopFieldFirst Gets or sets a value indicating whether interlaced stream should be top field first. ```csharp public bool TopFieldFirst { get; set; } ``` #### Property Value Parameters: - (bool): --- # Interface IOverlayManagerBackground Link: api/VisioForge.Core.Types.X.VideoEffects.IOverlayManagerBackground.html # Interface IOverlayManagerBackground # Interface IOverlayManagerBackground **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Marker interface for overlay manager background elements. ```csharp public interface IOverlayManagerBackground ``` --- # Interface IOverlayManagerElement Link: api/VisioForge.Core.Types.X.VideoEffects.IOverlayManagerElement.html # Interface IOverlayManagerElement # Interface IOverlayManagerElement **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Interface for overlay manager elements that can be rendered on video. ```csharp public interface IOverlayManagerElement ``` ## Properties ### Cache Gets or sets the cache. ```csharp object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name. ```csharp string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): --- # Interface IVideoEditXVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.IVideoEditXVideoEffect.html # Interface IVideoEditXVideoEffect # Interface IVideoEditXVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Interface for video effects that can be used in VideoEditX. ```csharp public interface IVideoEditXVideoEffect ``` ## Properties ### StartTime Gets or sets the start time. ```csharp TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the GStreamer element description for the effect. ```csharp string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description. --- # Class KaleidoscopeVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.KaleidoscopeVideoEffect.html # Class KaleidoscopeVideoEffect # Class KaleidoscopeVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a kaleidoscope effect that creates symmetrical, mirrored patterns from video content. ```csharp public class KaleidoscopeVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates a kaleidoscope optical instrument by reflecting and rotating portions of the video to create complex, symmetrical patterns. The effect divides the frame into multiple segments (sides) and mirrors them around rotation axes defined by two angles.

The kaleidoscope effect creates mesmerizing, abstract visuals suitable for:

  • Music Videos: Psychedelic and abstract visual effects
  • VJ Performances: Live video mixing and club visuals
  • Artistic Projects: Abstract video art and installations
  • Transitions: Creative scene transitions
  • Background Elements: Dynamic animated backgrounds

The effect is highly customizable through three main parameters: the number of sides (segments), and two rotation angles that control the mirroring axes. Adjusting these parameters creates vastly different patterns and visual styles.

This is a cross-platform effect using the kaleidoscope element. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on most modern hardware. GPU-accelerated geometric transformations. Performance scales with resolution and number of sides.

## Constructors ### KaleidoscopeVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public KaleidoscopeVideoEffect(string name = "kaleidoscope") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "kaleidoscope". ## Fields ### DefaultName The default name for kaleidoscope effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Angle Gets or sets the primary rotation angle in radians of the kaleidoscope pattern. ```csharp public double Angle { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The primary angle controls the rotation of the mirroring axis. Combine with and to create different symmetrical patterns. Negative values rotate counter-clockwise, positive values rotate clockwise. ### Angle2 Gets or sets the secondary rotation angle in radians of the kaleidoscope pattern. ```csharp public double Angle2 { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The secondary angle adds an additional rotation axis, creating more intricate and complex symmetrical patterns. Experiment with different combinations of and to achieve various visual effects. ### Sides Gets or sets the number of segments (sides) in the kaleidoscope pattern. ```csharp public int Sides { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Higher values create more complex patterns with more segments. Very high values (16+) may impact performance and can create extremely dense patterns. Values below 2 are not valid for kaleidoscope patterns. ### StartTime Gets or sets the start time for the kaleidoscope effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the kaleidoscope effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the kaleidoscope effect. --- # Enum LUTInterpolationMode Link: api/VisioForge.Core.Types.X.VideoEffects.LUTInterpolationMode.html # Enum LUTInterpolationMode # Enum LUTInterpolationMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Specifies the method used for interpolating values between defined points in a 3D space. Each method offers different trade-offs between computational complexity, accuracy, and smoothness. ```csharp public enum LUTInterpolationMode ``` ## Fields Parameters: - Nearest (): Uses values from the nearest defined point without any actual interpolation. Fastest method but produces discontinuous results at boundaries between regions. Best used when computational speed is critical and discontinuities are acceptable. - Trilinear (): Interpolates values using all 8 vertices of the surrounding cube. Performs three linear interpolations along each axis, hence "trilinear". Produces continuous results but may show artifacts at sharp transitions. Computational complexity: O(8) - requires 7 linear interpolations. - Tetrahedral (): Interpolates using 4 points forming a tetrahedron within the cube. Divides the cube into 5-6 tetrahedra and selects the appropriate one. Provides better handling of diagonal gradients compared to trilinear. Computational complexity: O(4) - requires 3 linear interpolations. - Pyramid (): Interpolates using 5 points forming a pyramid within the cube. Combines aspects of tetrahedral and trilinear methods. Good balance between accuracy and computational cost. Computational complexity: O(5) - requires 4 linear interpolations. - Prism (): Interpolates using 6 points forming a triangular prism within the cube. Useful for datasets with strong directional bias. Better preservation of sharp features along one primary axis. Computational complexity: O(6) - requires 5 linear interpolations. --- # Class LUTVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.LUTVideoEffect.html # Class LUTVideoEffect # Class LUTVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a LUT (Look-Up Table) effect for professional color grading and color correction. Supported formats: 3dl (AfterEffects), cube (Iridas), dat (DaVinci), m3d (Pandora), csp (cineSpace). ```csharp public class LUTVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android (not iOS due to platform limitations)

LUT (3D Look-Up Table) effects apply professional color grading by mapping input colors to output colors using pre-computed transformation tables. This is the same technique used in professional color grading software like DaVinci Resolve, Adobe Premiere, and Final Cut Pro.

Supported LUT Formats:

  • .3dl: Adobe AfterEffects format (most common)
  • .cube: Iridas/Resolve cube format (professional standard)
  • .dat: DaVinci Resolve legacy format
  • .m3d: Pandora Pogle/Revolution format
  • .csp: CineSpace LUT format

Interpolation Modes:

  • Tetrahedral: Highest quality, slower (default, recommended)
  • Trilinear: Fast, good quality, real-time friendly
  • NearestNeighbor: Fastest, posterized look

Common Use Cases:

  • Professional color grading and cinematic looks
  • Matching footage from different cameras
  • Applying film emulation (Kodak, Fuji film stocks)
  • Quick color correction workflows
  • Consistent brand color styling across videos

For Classic SDK, see VideoEffectLUT (Windows only). For preset color effects, see . For manual color grading, see and .

Performance Note: LUT application is relatively fast as it's essentially a table lookup. Tetrahedral interpolation is ~30% slower than trilinear but provides better gradient smoothness. Use trilinear for real-time applications, tetrahedral for final output quality.

## Constructors ### LUTVideoEffect(string, string) Initializes a new instance of the class. ```csharp public LUTVideoEffect(string filename, string name = "lut") ``` #### Parameters Parameters: - filename (string): The LUT file path. - name (string): The name of the effect. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### InterpolationMode Gets or sets the interpolation mode. ```csharp public LUTInterpolationMode InterpolationMode { get; set; } ``` #### Property Value Parameters: - (LUTInterpolationMode): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the LUT processor effect. --- # Class MarbleVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.MarbleVideoEffect.html # Class MarbleVideoEffect # Class MarbleVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a marble texture distortion effect that applies procedural marble-like patterns to video. ```csharp public class MarbleVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect applies a procedurally-generated marble texture distortion to the video, creating swirling, organic patterns similar to natural marble stone. The effect uses Perlin noise algorithms to generate smooth, flowing distortions that can range from subtle warping to dramatic liquefaction.

The marble effect is highly customizable through four parameters:

  • Amount: Overall distortion intensity
  • Turbulence: Noise complexity and detail
  • X/Y Scale: Pattern size and frequency

The marble effect is commonly used for:

  • Artistic Videos: Abstract, liquid-like visual effects
  • Music Videos: Psychedelic, flowing visual styling
  • Transitions: Smooth, organic scene transitions
  • Background Elements: Dynamic textured backgrounds
  • VJ Performances: Live video manipulation and mixing

This is a cross-platform effect using the marble element with procedural noise generation. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on modern hardware. GPU-accelerated procedural generation. Performance scales with resolution and turbulence complexity.

## Constructors ### MarbleVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public MarbleVideoEffect(string name = "marble") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "marble". ## Fields ### DefaultName The default name for marble effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Amount Gets or sets the distortion intensity/amount of the marble effect. ```csharp public double Amount { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Higher values create stronger distortion. Very high values (5.0+) can create extreme warping that may make the original video unrecognizable. ### StartTime Gets or sets the start time for the marble effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the marble effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### Turbulence Gets or sets the turbulence/complexity of the noise pattern. ```csharp public double Turbulence { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Turbulence controls the complexity of the Perlin noise used for distortion. Higher values add more octaves of noise, creating finer details and more organic-looking patterns. Higher turbulence may impact performance. ### XScale Gets or sets the horizontal scale/frequency of the marble texture pattern. ```csharp public double XScale { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Lower values create tighter, more frequent patterns horizontally. Higher values create larger, slower-moving patterns. Combine with to control pattern shape. ### YScale Gets or sets the vertical scale/frequency of the marble texture pattern. ```csharp public double YScale { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Lower values create tighter, more frequent patterns vertically. Higher values create larger, slower-moving patterns. Use different X and Y scales to create directional effects (e.g., horizontal streaks: high X, low Y). ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the marble effect. --- # Enum MirrorMode Link: api/VisioForge.Core.Types.X.VideoEffects.MirrorMode.html # Enum MirrorMode # Enum MirrorMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Mirror mode. ```csharp public enum MirrorMode ``` ## Fields Parameters: - Left (): Split horizontally and reflect left into right. - Right (): Split horizontally and reflect right into left. - Top (): Split vertically and reflect top into bottom. - Bottom (): Split vertically and reflect bottom into top. --- # Enum MovingBlurColor Link: api/VisioForge.Core.Types.X.VideoEffects.MovingBlurColor.html # Enum MovingBlurColor # Enum MovingBlurColor **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Moving blur effect color. ```csharp public enum MovingBlurColor ``` ## Fields Parameters: - Red (): Red. - Green (): Green. - Blue (): Blue. - White (): White. --- # Enum MovingBlurMode Link: api/VisioForge.Core.Types.X.VideoEffects.MovingBlurMode.html # Enum MovingBlurMode # Enum MovingBlurMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Moving blur effect mode. ```csharp public enum MovingBlurMode ``` ## Fields Parameters: - Normal (): Normal. - Strobe1 (): Strobe v1. - Strobe2 (): Strobe v2. --- # Class MovingBlurVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.MovingBlurVideoEffect.html # Class MovingBlurVideoEffect # Class MovingBlurVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a motion-sensitive blur effect that creates radioactive or strobe-like visual distortions. ```csharp public class MovingBlurVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

Available in: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

The Moving Blur effect creates dynamic blur patterns triggered by motion in the video, producing a "radioactive" or "glowing" aesthetic. The effect can operate in Normal mode (continuous blur trails) or Strobe mode (periodic snapshots with blur), making it ideal for music videos, artistic content, and psychedelic visual effects.

The effect supports multiple color modes (White, Black, Red, Green, Blue) that determine the color of the blur trails. In Strobe mode, the Interval property controls the snapshot frequency, creating rhythmic pulsing effects that can be synchronized with music or other timing cues.

Common use cases include: music video effects, VJ performances, artistic transitions, retro-style psychedelic content, and motion-emphasized visual storytelling.

## Constructors ### MovingBlurVideoEffect(string) Initializes a new instance of the class. ```csharp public MovingBlurVideoEffect(string name = "moving-blur") ``` #### Parameters Parameters: - name (string): The name of the effect instance. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Color Gets or sets the color of the motion blur trails. ```csharp public MovingBlurColor Color { get; set; } ``` #### Property Value Parameters: - (MovingBlurColor): ### Interval Gets or sets the snapshot interval in Strobe mode. ```csharp public uint Interval { get; set; } ``` #### Property Value Parameters: - (uint): ### Mode Gets or sets the blur rendering mode. ```csharp public MovingBlurMode Mode { get; set; } ``` #### Property Value Parameters: - (MovingBlurMode): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the radioactv effect. --- # Class MovingEchoVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.MovingEchoVideoEffect.html # Class MovingEchoVideoEffect # Class MovingEchoVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a motion echo effect that creates visible trails following moving objects in the video. ```csharp public class MovingEchoVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

Available in: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

The Moving Echo effect creates persistent visual trails that follow motion in the video, producing a streak or comet-tail appearance. This zero-configuration effect automatically detects and responds to motion, making moving objects leave behind fading trails that create a sense of speed and energy.

The effect is particularly effective for action sequences, sports footage, dance performances, and any content where emphasizing motion adds visual interest. Unlike traditional motion blur, this effect creates discrete, visible streaks that persist for multiple frames, making the motion paths clearly visible.

Common applications include: music videos with dancing, sports highlights emphasizing player movement, action scene enhancements, artistic motion visualization, and retro-style video effects reminiscent of analog video feedback loops.

Note: This effect has no configurable parameters beyond start/stop time. The echo behavior is automatic and responds to the motion content in the video.

## Constructors ### MovingEchoVideoEffect(string) Initializes a new instance of the class. ```csharp public MovingEchoVideoEffect(string name = "moving-echo") ``` #### Parameters Parameters: - name (string): The name of the effect instance. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the streaktv effect. --- # Class MovingZoomEchoVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.MovingZoomEchoVideoEffect.html # Class MovingZoomEchoVideoEffect # Class MovingZoomEchoVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a moving zoom echo effect that combines radial motion with zooming for a vertigo-inducing visual distortion. ```csharp public class MovingZoomEchoVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

Available in: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

The Moving Zoom Echo effect creates a hypnotic spiral motion combined with continuous zooming, producing a vertigo or tunnel-like visual distortion. The effect simultaneously applies radial rotation and zoom scaling to create an infinite-tunnel appearance that's particularly effective for psychedelic content, music videos, and artistic transitions.

Two independent parameters control the effect: Speed (radial movement velocity) and ZoomSpeed (zoom rate). The combination creates a spiraling, zooming motion that can be subtle and hypnotic or intense and disorienting depending on the parameter values. The effect continuously builds upon previous frames, creating complex, evolving visual patterns.

Common use cases include: psychedelic music videos, VJ performances, vertigo/disorientation effects in narrative content, abstract visual art, meditation/trance visuals, and retro-style optical effects reminiscent of 1960s-70s experimental film techniques.

## Constructors ### MovingZoomEchoVideoEffect(string) Initializes a new instance of the class. ```csharp public MovingZoomEchoVideoEffect(string name = "moving-zoom-echo") ``` #### Parameters Parameters: - name (string): The name of the effect instance. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Speed Gets or sets the radial movement speed. ```csharp public float Speed { get; set; } ``` #### Property Value Parameters: - (float): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZoomSpeed Gets or sets the zoom speed multiplier. ```csharp public float ZoomSpeed { get; set; } ``` #### Property Value Parameters: - (float): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the vertigotv effect. --- # Enum OpticalAnimationBWMode Link: api/VisioForge.Core.Types.X.VideoEffects.OpticalAnimationBWMode.html # Enum OpticalAnimationBWMode # Enum OpticalAnimationBWMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Optical animation mode. ```csharp public enum OpticalAnimationBWMode ``` ## Fields Parameters: - Maelstrom (): Maelstrom. - Radiation (): Radiation. - HorizontalStripes (): Horizontal stripes. - VerticalStripes (): Vertical stripes. --- # Class OpticalAnimationBWVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.OpticalAnimationBWVideoEffect.html # Class OpticalAnimationBWVideoEffect # Class OpticalAnimationBWVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a black and white optical animation effect that creates dynamic, pulsating monochrome patterns triggered by luminance thresholds. ```csharp public class OpticalAnimationBWVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect creates mesmerizing optical illusions by converting video to high-contrast black and white patterns that shift and animate based on image luminance (brightness). The effect analyzes brightness values and applies threshold-based pattern generation to create psychedelic, op-art style animations.

The optical animation effect operates by:

  • Luminance Analysis: Examines brightness values in the video
  • Threshold Application: Converts pixels to black/white based on luma threshold
  • Pattern Generation: Creates geometric patterns (spirals, maelstroms, ripples, etc.)
  • Speed Control: Animates patterns at configurable rates
  • Motion Response: Patterns react to brightness changes in the video

The effect supports multiple animation modes through :

  • Maelstrom: Swirling vortex patterns (default)
  • Spiral: Rotating spiral patterns radiating from center
  • Horizontal Stripes: Animated horizontal line patterns
  • Vertical Stripes: Animated vertical line patterns

The optical animation effect is commonly used for:

  • Music Videos: Psychedelic visuals synchronized with music
  • VJ Performances: Live visual mixing for clubs and concerts
  • Artistic Projects: Op-art and kinetic art video installations
  • Retro Aesthetics: 1960s/70s psychedelic visual style
  • Trippy Effects: Hypnotic, mind-bending visual effects
  • Motion Graphics: Dynamic background elements and transitions

The parameter controls sensitivity - lower values create patterns from darker areas, higher values require brighter pixels to trigger patterns. The parameter controls animation rate - higher values create faster, more energetic animations.

This is a cross-platform effect using the optv element. The effect converts video to high-contrast black and white with animated patterns overlaid.

Performance: Real-time capable on most hardware. Luminance analysis and pattern generation are computationally efficient. Performance is consistent across different modes and speeds. Suitable for live performance and real-time processing.

## Constructors ### OpticalAnimationBWVideoEffect() Initializes a new instance of the class with default settings. ```csharp public OpticalAnimationBWVideoEffect() ``` ## Fields ### DefaultName The default name for optical animation effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### LumaThreshold Gets or sets the luminance threshold for pattern generation. ```csharp public uint LumaThreshold { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks The luma threshold determines which brightness levels trigger pattern generation. Lower thresholds make the effect more sensitive to dark video content, creating patterns from shadows. Higher thresholds require brighter areas to trigger patterns, affecting highlights and bright regions. Adjust based on the average brightness of your video content - use lower values for dark videos, higher values for bright videos. ### Mode Gets or sets the optical animation pattern mode. ```csharp public OpticalAnimationBWMode Mode { get; set; } ``` #### Property Value Parameters: - (OpticalAnimationBWMode): #### Remarks The mode determines the geometric pattern used for the optical animation. Each mode creates distinctive visual styles - maelstrom creates chaotic swirls, spiral creates orderly rotations, and stripes create linear animations. Experiment with different modes to achieve desired effects. ### Speed Gets or sets the animation speed factor. ```csharp public int Speed { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Higher speed values create faster pattern rotation, movement, or pulsation depending on the selected mode. Very high speeds (40+) can create strobing effects that may be uncomfortable to watch. Adjust speed to match music tempo or desired visual energy level. ### StartTime Gets or sets the start time for the optical animation effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the optical animation effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the optv effect. --- # Class OverlayManagerBackgroundImage Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerBackgroundImage.html # Class OverlayManagerBackgroundImage # Class OverlayManagerBackgroundImage **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a background image for the overlay manager that can be stretched and rendered behind other overlay elements. Implements the ```csharp public class OverlayManagerBackgroundImage : IOverlayManagerBackground, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerBackgroundImage(SKBitmap, double) Initializes a new instance of the class. ```csharp public OverlayManagerBackgroundImage(SKBitmap image, double alpha = 1) ``` #### Parameters Parameters: - image (SKBitmap): The image. - alpha (double): The alpha. ### OverlayManagerBackgroundImage(string, double) Initializes a new instance of the class. ```csharp public OverlayManagerBackgroundImage(string filename, double alpha = 1) ``` #### Parameters Parameters: - filename (string): The filename. - alpha (double): The alpha. ## Properties ### Alpha Gets the alpha. ```csharp public double Alpha { get; } ``` #### Property Value Parameters: - (double): ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### StretchMode Gets or sets the stretch mode. ```csharp public OverlayManagerImageStretchMode StretchMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerImageStretchMode): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~OverlayManagerBackgroundImage() Finalizes an instance of the class. ```csharp protected ~OverlayManagerBackgroundImage() ``` ### GetImage() Gets the image. ```csharp public SKBitmap GetImage() ``` #### Returns Parameters: - (SKBitmap): Bitmap. ### Update(SKBitmap, double) Updates the specified image. ```csharp public void Update(SKBitmap image, double alpha = 1) ``` #### Parameters Parameters: - image (SKBitmap): The image. - alpha (double): The alpha. ### Update(string, double) Updates the specified filename. ```csharp public void Update(string filename, double alpha = 1) ``` #### Parameters Parameters: - filename (string): The filename. - alpha (double): The alpha. ## See Also --- # Class OverlayManagerBackgroundRectangle Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerBackgroundRectangle.html # Class OverlayManagerBackgroundRectangle # Class OverlayManagerBackgroundRectangle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a rectangular background for the overlay manager with configurable color, fill mode, and margins. Implements the ```csharp public class OverlayManagerBackgroundRectangle : IOverlayManagerBackground ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Fill Gets or sets a value indicating whether to fill. ```csharp public bool Fill { get; set; } ``` #### Property Value Parameters: - (bool): ### Margin Gets or sets the margin. ```csharp public Rect Margin { get; set; } ``` #### Property Value Parameters: - (Rect): ## See Also --- # Class OverlayManagerBackgroundSquare Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerBackgroundSquare.html # Class OverlayManagerBackgroundSquare # Class OverlayManagerBackgroundSquare **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a square background for the overlay manager with configurable color, fill mode, and margins. Implements the ```csharp public class OverlayManagerBackgroundSquare : IOverlayManagerBackground ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Fill Gets or sets a value indicating whether to fill. ```csharp public bool Fill { get; set; } ``` #### Property Value Parameters: - (bool): ### Margin Gets or sets the margin. ```csharp public Rect Margin { get; set; } ``` #### Property Value Parameters: - (Rect): ## See Also --- # Class OverlayManagerBackgroundStar Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerBackgroundStar.html # Class OverlayManagerBackgroundStar # Class OverlayManagerBackgroundStar **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a star-shaped background for the overlay manager with configurable stroke color, fill color, and zoom ratio. Implements the ```csharp public class OverlayManagerBackgroundStar : IOverlayManagerBackground ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### FillColor Gets or sets the color of the fill. ```csharp public SKColor FillColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### StrokeColor Gets or sets the color of the stroke. ```csharp public SKColor StrokeColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Zoom Gets or sets the zoom ratio. ```csharp public float Zoom { get; set; } ``` #### Property Value Parameters: - (float): ## See Also --- # Class OverlayManagerBackgroundTriangle Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerBackgroundTriangle.html # Class OverlayManagerBackgroundTriangle # Class OverlayManagerBackgroundTriangle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a triangular background for the overlay manager defined by three points. Implements the ```csharp public class OverlayManagerBackgroundTriangle : IOverlayManagerBackground ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerBackgroundTriangle(SKPoint, SKPoint, SKPoint) Initializes a new instance of the class. ```csharp public OverlayManagerBackgroundTriangle(SKPoint p1, SKPoint p2, SKPoint p3) ``` #### Parameters Parameters: - p1 (SKPoint): The first point of the triangle. - p2 (SKPoint): The second point of the triangle. - p3 (SKPoint): The third point of the triangle. ## Properties ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Points Gets the points. ```csharp public SKPoint[] Points { get; } ``` #### Property Value Parameters: - (SKPoint [ ]): ## See Also --- # Class OverlayManagerCallback Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerCallback.html # Class OverlayManagerCallback # Class OverlayManagerCallback **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager callback element. Provides a way to draw custom overlay using Cairo. Implements the . ```csharp public class OverlayManagerCallback : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerCallback() Initializes a new instance of the class. ```csharp public OverlayManagerCallback() ``` ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ### OnDraw Occurs when draw happens. ```csharp public event EventHandler OnDraw ``` #### Event Type Parameters: - (EventHandler < OverlayManagerCallbackEventArgs >): ## See Also --- # Class OverlayManagerCallbackEventArgs Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerCallbackEventArgs.html # Class OverlayManagerCallbackEventArgs # Class OverlayManagerCallbackEventArgs **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager callback args. Implements the . ```csharp public class OverlayManagerCallbackEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Properties ### Context Gets the context. ```csharp public Context Context { get; } ``` #### Property Value Parameters: - (Context): ### Duration Gets the duration. ```csharp public TimeSpan Duration { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Timestamp Gets the timestamp. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### DrawImage(object, int, int, int?, int?) Draws an image at the specified position. The image will not be disposed by this method. Supported image types: System.Drawing.Bitmap, SKBitmap, Android.Graphics.Bitmap, UIKit.UIImage, AppKit.NSImage. ```csharp public void DrawImage(object image, int x, int y, int? width = null, int? height = null) ``` #### Parameters Parameters: - image (object): The image to draw. Will not be disposed. - x (int): The X coordinate. - y (int): The Y coordinate. - width (int ?): Optional width. If not specified, uses the image's original width. - height (int ?): Optional height. If not specified, uses the image's original height. ## See Also --- # Class OverlayManagerCircle Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerCircle.html # Class OverlayManagerCircle # Class OverlayManagerCircle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager circle element. Implements the . ```csharp public class OverlayManagerCircle : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerCircle() Initializes a new instance of the class. ```csharp public OverlayManagerCircle() ``` ### OverlayManagerCircle(SKPoint, int) Initializes a new instance of the class. ```csharp public OverlayManagerCircle(SKPoint center, int radius) ``` #### Parameters Parameters: - center (SKPoint): The center point of the circle. - radius (int): The radius of the circle in pixels. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Center Gets or sets the center. ```csharp public SKPoint Center { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Fill Gets or sets a value indicating whether this should be filled. ```csharp public bool Fill { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Radius Gets or sets the radius. ```csharp public double Radius { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerDateTime Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerDateTime.html # Class OverlayManagerDateTime # Class OverlayManagerDateTime **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager Date/Time overlay. Set Text to "some text [DATETIME] other text" string to use date/time. Implements the . ```csharp public class OverlayManagerDateTime : OverlayManagerText, IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerDateTime() Initializes a new instance of the class. ```csharp public OverlayManagerDateTime() ``` ### OverlayManagerDateTime(int, int) Initializes a new instance of the class. ```csharp public OverlayManagerDateTime(int x, int y) ``` #### Parameters Parameters: - x (int): The X coordinate position. - y (int): The Y coordinate position. ## Properties ### Format Gets or sets the format. ```csharp public string Format { get; set; } ``` #### Property Value Parameters: - (string): ## See Also --- # Class OverlayManagerDecklinkVideo Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerDecklinkVideo.html # Class OverlayManagerDecklinkVideo # Class OverlayManagerDecklinkVideo **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Decklink video overlay element that captures video from Decklink devices in the overlay manager. ```csharp public class OverlayManagerDecklinkVideo : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerDecklinkVideo(DecklinkVideoSourceSettings, int, int, int, int) Initializes a new instance of the class. ```csharp public OverlayManagerDecklinkVideo(DecklinkVideoSourceSettings settings, int x, int y, int width, int height) ``` #### Parameters Parameters: - settings (DecklinkVideoSourceSettings): The Decklink video source settings. - x (int): The X position. - y (int): The Y position. - width (int): The width. - height (int): The height. ## Properties ### AudioOutput Gets or sets the audio output device for playback. When provided, audio streams from the Decklink device will be played through this device. If null, audio will be discarded. ```csharp public AudioOutputDeviceInfo AudioOutput { get; set; } ``` #### Property Value Parameters: - (AudioOutputDeviceInfo): ### AudioOutput_Mute Gets or sets whether the audio output is muted. Only effective when AudioOutput is configured. ```csharp public bool AudioOutput_Mute { get; set; } ``` #### Property Value Parameters: - (bool): ### AudioOutput_Volume Gets or sets the audio output volume (0.0 to 1.0+, where values above 1.0 provide amplification). Only effective when AudioOutput is configured. ```csharp public double AudioOutput_Volume { get; set; } ``` #### Property Value Parameters: - (double): ### Cache Gets or sets the cached image surface for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### DecklinkSettings Gets or sets the Decklink video source settings. ```csharp public DecklinkVideoSourceSettings DecklinkSettings { get; set; } ``` #### Property Value Parameters: - (DecklinkVideoSourceSettings): ### Enabled Gets or sets whether the overlay is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time for the overlay visibility. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Height Gets or sets the height of the overlay. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Lock Gets the lock object for thread synchronization. ```csharp public object Lock { get; } ``` #### Property Value Parameters: - (object): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity of the overlay (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings for the overlay. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time for the overlay visibility. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StretchMode Gets or sets the stretch mode for the video. ```csharp public OverlayManagerImageStretchMode StretchMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerImageStretchMode): ### VideoRendererSettings Gets or sets the video renderer settings. Used when VideoView is provided. ```csharp public VideoRendererSettingsX VideoRendererSettings { get; set; } ``` #### Property Value Parameters: - (VideoRendererSettingsX): ### VideoView Gets or sets the video view for optional video rendering. If provided, the video will be rendered to this view in addition to being available as an overlay. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): ### Width Gets or sets the width of the overlay. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X position of the overlay. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y position of the overlay. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-index for layering. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### Initialize(bool) Initializes the Decklink video overlay and starts capture. ```csharp public bool Initialize(bool autoStart = true) ``` #### Parameters Parameters: - autoStart (bool): If true, starts playing immediately. If false, only preloads. #### Returns Parameters: - (bool): true if successful; otherwise, false. ### Pause() Pauses video capture. ```csharp public void Pause() ``` ### Play() Starts or resumes video capture. ```csharp public void Play() ``` ### Stop() Stops video capture. ```csharp public void Stop() ``` ## See Also --- # Class OverlayManagerFade Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerFade.html # Class OverlayManagerFade # Class OverlayManagerFade **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Fade effect for overlay manager that fades the video in from black or out to black. Implements the interface. ```csharp public class OverlayManagerFade : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerFade() Initializes a new instance of the class with default values (fade in). ```csharp public OverlayManagerFade() ``` ### OverlayManagerFade(OverlayManagerFadeType, TimeSpan, TimeSpan, bool, string) Initializes a new instance of the class. ```csharp public OverlayManagerFade(OverlayManagerFadeType fadeType, TimeSpan startTime, TimeSpan endTime, bool enabled = true, string name = "Fade") ``` #### Parameters Parameters: - fadeType (OverlayManagerFadeType): The type of fade effect. - startTime (TimeSpan): The fade start time. - endTime (TimeSpan): The fade end time. - enabled (bool): If set to true, the effect is enabled. - name (string): The effect name. ## Properties ### Cache Gets or sets the cache object used internally for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Easing Gets or sets the easing function for the fade animation. ```csharp public OverlayManagerPanEasing Easing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time when the fade animation ends. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FadeColor Gets or sets the fade color. Default is black. ```csharp public (byte R, byte G, byte B) FadeColor { get; set; } ``` #### Property Value Parameters: - (( byte R , byte G , byte B )): ### FadeType Gets or sets the type of fade effect. ```csharp public OverlayManagerFadeType FadeType { get; set; } ``` #### Property Value Parameters: - (OverlayManagerFadeType): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). Note: Opacity is controlled by the fade animation. ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). Note: Rotation is not applicable for fade effects. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. Note: Shadow is not applicable for fade effects and will be ignored. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time when the fade animation begins. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. For fade effects, use a high Z-Index to ensure the fade overlay is on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateFadeIn(TimeSpan, TimeSpan?) Creates a fade-in effect from black. ```csharp public static OverlayManagerFade CreateFadeIn(TimeSpan duration, TimeSpan? startTime = null) ``` #### Parameters Parameters: - duration (TimeSpan): The duration of the fade-in. - startTime (TimeSpan ?): Optional start time (default is TimeSpan.Zero). #### Returns Parameters: - (OverlayManagerFade): A configured fade-in effect. ### CreateFadeOut(TimeSpan, TimeSpan) Creates a fade-out effect to black. ```csharp public static OverlayManagerFade CreateFadeOut(TimeSpan startTime, TimeSpan duration) ``` #### Parameters Parameters: - startTime (TimeSpan): The start time of the fade-out. - duration (TimeSpan): The duration of the fade-out. #### Returns Parameters: - (OverlayManagerFade): A configured fade-out effect. ### GetCurrentOpacity(TimeSpan) Gets the current opacity of the fade overlay based on time. ```csharp public double GetCurrentOpacity(TimeSpan currentTime) ``` #### Parameters Parameters: - currentTime (TimeSpan): The current playback time. #### Returns Parameters: - (double): The opacity (0.0 = transparent, 1.0 = opaque fade color). ### ShouldDraw(TimeSpan) Determines whether the fade effect should be drawn at the specified time. ```csharp public bool ShouldDraw(TimeSpan currentTime) ``` #### Parameters Parameters: - currentTime (TimeSpan): The current playback time. #### Returns Parameters: - (bool): true if the fade should be drawn; otherwise, false. ## See Also --- # Enum OverlayManagerFadeType Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerFadeType.html # Enum OverlayManagerFadeType # Enum OverlayManagerFadeType **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Type of fade effect. ```csharp public enum OverlayManagerFadeType ``` ## Fields Parameters: - FadeIn (): Fade in from color to video (video becomes visible). - FadeOut (): Fade out from video to color (video becomes hidden). --- # Class OverlayManagerGIF Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerGIF.html # Class OverlayManagerGIF # Class OverlayManagerGIF **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager GIF element. Implements the . Implements the . ```csharp public class OverlayManagerGIF : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerGIF(string) Initializes a new instance of the class. ```csharp public OverlayManagerGIF(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ### OverlayManagerGIF(string, SKPoint) Initializes a new instance of the class. ```csharp public OverlayManagerGIF(string filename, SKPoint position) ``` #### Parameters Parameters: - filename (string): The filename. - position (SKPoint): The position. ## Properties ### AnimationLength Gets or sets the animation length. ```csharp public TimeSpan AnimationLength { get; } ``` #### Property Value Parameters: - (TimeSpan): ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Position Gets or sets the position. ```csharp public SKPoint Position { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~OverlayManagerGIF() Finalizes an instance of the class. ```csharp protected ~OverlayManagerGIF() ``` ## See Also --- # Class OverlayManagerGroup Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerGroup.html # Class OverlayManagerGroup # Class OverlayManagerGroup **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll A group of overlay elements that start and stop synchronously. This is particularly useful for video overlays that need to be preloaded and started at the exact same time. Implements the . ```csharp public class OverlayManagerGroup : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerGroup() Initializes a new instance of the class. ```csharp public OverlayManagerGroup() ``` ### OverlayManagerGroup(string) Initializes a new instance of the class. ```csharp public OverlayManagerGroup(string name) ``` #### Parameters Parameters: - name (string): The group name. ## Properties ### Cache Gets or sets the cache. Not used for groups. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets whether the group is enabled. When disabled, all overlays in the group are disabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time for all overlays in the group. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name of the group. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity. Not used for groups. ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Overlays Gets the list of overlays in this group. ```csharp public List Overlays { get; } ``` #### Property Value Parameters: - (List < IOverlayManagerElement >): ### Rotation Gets or sets the rotation. Not used for groups. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. Not used for groups. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time for all overlays in the group. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-index. Not used for groups. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Add(IOverlayManagerElement) Adds an overlay to the group. ```csharp public void Add(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay to add. #### Exceptions Parameters: - (InvalidOperationException): Thrown if the group has already been initialized. ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### GetRenderableOverlays() Gets all overlays in the group that should be rendered. This is used internally by the overlay manager to render individual overlays. ```csharp public IEnumerable GetRenderableOverlays() ``` #### Returns Parameters: - (IEnumerable < IOverlayManagerElement >): List of enabled overlays in the group. ### Initialize() Initializes all video overlays in the group to PAUSED state (preloaded but not playing). This prepares all video overlays to start playing synchronously when Play() is called. ```csharp public bool Initialize() ``` #### Returns Parameters: - (bool): true if all video overlays initialized successfully; otherwise, false. ### Pause() Pauses all video overlays in the group. ```csharp public void Pause() ``` ### Play() Starts playing all video overlays in the group synchronously. For non-video overlays (images, text, shapes), this has no effect as they are drawn based on StartTime/EndTime. ```csharp public void Play() ``` ### Remove(IOverlayManagerElement) Removes an overlay from the group. ```csharp public void Remove(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay to remove. #### Exceptions Parameters: - (InvalidOperationException): Thrown if the group has already been initialized. ### Stop() Stops all video overlays in the group. ```csharp public void Stop() ``` ## See Also --- # Class OverlayManagerImage Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerImage.html # Class OverlayManagerImage # Class OverlayManagerImage **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager image. Implements the . ```csharp public class OverlayManagerImage : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerImage(SKBitmap, int, int, double, OverlayManagerImageStretchMode) Initializes a new instance of the class. ```csharp public OverlayManagerImage(SKBitmap image, int x, int y, double alpha = 1, OverlayManagerImageStretchMode stretchMode = OverlayManagerImageStretchMode.None) ``` #### Parameters Parameters: - image (SKBitmap): The image. - x (int): The x. - y (int): The y. - alpha (double): The alpha. - stretchMode (OverlayManagerImageStretchMode): The stretch mode to apply to the image. ### OverlayManagerImage(string, int, int, double, OverlayManagerImageStretchMode) Initializes a new instance of the class. ```csharp public OverlayManagerImage(string filename, int x, int y, double alpha = 1, OverlayManagerImageStretchMode stretchMode = OverlayManagerImageStretchMode.None) ``` #### Parameters Parameters: - filename (string): The filename. - x (int): The x. - y (int): The y. - alpha (double): The alpha. - stretchMode (OverlayManagerImageStretchMode): The stretch mode to apply to the image. ## Fields ### Lock The lock object used for thread-safe operations. ```csharp public readonly object Lock ``` #### Field Value Parameters: - (object): ## Properties ### Alpha Gets the alpha. ```csharp public double Alpha { get; } ``` #### Property Value Parameters: - (double): ### AnimationEnabled Gets or sets a value indicating whether position/size animation is enabled. When enabled, the image animates from current position to target position. ```csharp public bool AnimationEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### AnimationEndTime Gets or sets the animation end time. ```csharp public TimeSpan AnimationEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### AnimationStartTime Gets or sets the animation start time. ```csharp public TimeSpan AnimationStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Easing Gets or sets the easing function for position/size animation. ```csharp public OverlayManagerPanEasing Easing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FadeEasing Gets or sets the easing function for fade animation. ```csharp public OverlayManagerPanEasing FadeEasing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### FadeEnabled Gets or sets a value indicating whether fade animation is enabled. ```csharp public bool FadeEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### FadeEndTime Gets or sets the fade end time. ```csharp public TimeSpan FadeEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FadeStartTime Gets or sets the fade start time. ```csharp public TimeSpan FadeStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FadeType Gets or sets the fade type (FadeIn or FadeOut). ```csharp public OverlayManagerFadeType FadeType { get; set; } ``` #### Property Value Parameters: - (OverlayManagerFadeType): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StretchMode Gets or sets the stretch mode. ```csharp public OverlayManagerImageStretchMode StretchMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerImageStretchMode): ### TargetHeight Gets or sets the animation target height (0 to keep current). ```csharp public int TargetHeight { get; set; } ``` #### Property Value Parameters: - (int): ### TargetWidth Gets or sets the animation target width (0 to keep current). ```csharp public int TargetWidth { get; set; } ``` #### Property Value Parameters: - (int): ### TargetX Gets or sets the animation target X position. ```csharp public int TargetX { get; set; } ``` #### Property Value Parameters: - (int): ### TargetY Gets or sets the animation target Y position. ```csharp public int TargetY { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X coordinate position of the image. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y coordinate position of the image. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~OverlayManagerImage() Finalizes an instance of the class. ```csharp protected ~OverlayManagerImage() ``` ### GetCurrentOpacity(TimeSpan) Gets the current opacity based on fade animation progress. ```csharp public double GetCurrentOpacity(TimeSpan currentTime) ``` #### Parameters Parameters: - currentTime (TimeSpan): The current playback time. #### Returns Parameters: - (double): The current opacity (0.0 to 1.0). ### GetCurrentRect(TimeSpan) Gets the current rectangle based on animation progress. ```csharp public (int X, int Y, int Width, int Height) GetCurrentRect(TimeSpan currentTime) ``` #### Parameters Parameters: - currentTime (TimeSpan): The current playback time. #### Returns Parameters: - (( int X , int Y , int Width , int Height )): The interpolated rectangle (X, Y, Width, Height). ### GetImage() Gets the image. ```csharp public SKBitmap GetImage() ``` #### Returns Parameters: - (SKBitmap): Bitmap. ### StartAnimation(int, int, int, int, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a position/size animation from current values to target values. ```csharp public void StartAnimation(int targetX, int targetY, int targetWidth, int targetHeight, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - targetX (int): The target X position. - targetY (int): The target Y position. - targetWidth (int): The target width (0 to keep current). - targetHeight (int): The target height (0 to keep current). - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. ### StartFadeIn(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation from the specified time. ```csharp public void StartFadeIn(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### StartFadeOut(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation from the specified time. ```csharp public void StartFadeOut(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### Update(SKBitmap, int, int, double, OverlayManagerImageStretchMode) Updates the specified image. ```csharp public void Update(SKBitmap image, int x, int y, double alpha = 1, OverlayManagerImageStretchMode stretchMode = OverlayManagerImageStretchMode.None) ``` #### Parameters Parameters: - image (SKBitmap): The image. - x (int): The x. - y (int): The y. - alpha (double): The alpha. - stretchMode (OverlayManagerImageStretchMode): The stretch mode to apply to the image. ### Update(string, int, int, double, OverlayManagerImageStretchMode) Updates the specified filename. ```csharp public void Update(string filename, int x, int y, double alpha = 1, OverlayManagerImageStretchMode stretchMode = OverlayManagerImageStretchMode.None) ``` #### Parameters Parameters: - filename (string): The filename. - x (int): The x. - y (int): The y. - alpha (double): The alpha. - stretchMode (OverlayManagerImageStretchMode): The stretch mode to apply to the image. ## See Also --- # Enum OverlayManagerImageStretchMode Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerImageStretchMode.html # Enum OverlayManagerImageStretchMode # Enum OverlayManagerImageStretchMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Defines the stretch modes for overlay manager images. ```csharp public enum OverlayManagerImageStretchMode ``` ## Fields Parameters: - None (): No stretching is applied. The image is displayed at its original size. - Stretch (): The image is stretched to fill the entire target area, which may distort the aspect ratio. - Letterbox (): The image is scaled to fit within the target area while maintaining its aspect ratio. This may result in letterboxing (black bars) on the sides or top/bottom. - CropToFill (): The image is scaled to fill the entire target area while maintaining its aspect ratio. This may result in parts of the image being cropped. --- # Enum OverlayManagerInterpolationMode Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerInterpolationMode.html # Enum OverlayManagerInterpolationMode # Enum OverlayManagerInterpolationMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Interpolation modes for scaling video content in overlay manager effects. These modes determine the quality and performance trade-offs when resizing or transforming video content. ```csharp public enum OverlayManagerInterpolationMode ``` ## Fields Parameters: - None (): No interpolation (nearest neighbor). Fastest but produces blocky results when scaling up. - Bilinear (): Bilinear interpolation. Good balance between quality and performance. Produces smooth results for most use cases. - Bicubic (): Bicubic interpolation. Higher quality than bilinear but slower. Recommended for high-quality output where performance is less critical. - Lanczos (): Lanczos interpolation. Highest quality, especially for downscaling. Slowest option but produces sharp, artifact-free results. --- # Class OverlayManagerLine Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerLine.html # Class OverlayManagerLine # Class OverlayManagerLine **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager line element. Implements the . ```csharp public class OverlayManagerLine : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerLine() Initializes a new instance of the class. ```csharp public OverlayManagerLine() ``` ### OverlayManagerLine(SKPoint, SKPoint) Initializes a new instance of the class. ```csharp public OverlayManagerLine(SKPoint start, SKPoint end) ``` #### Parameters Parameters: - start (SKPoint): The start. - end (SKPoint): The end. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### End Gets or sets the end. ```csharp public SKPoint End { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### Start Gets or sets the start. ```csharp public SKPoint Start { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerNDIVideo Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerNDIVideo.html # Class OverlayManagerNDIVideo # Class OverlayManagerNDIVideo **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll NDI video overlay element that captures video from NDI sources in the overlay manager. ```csharp public class OverlayManagerNDIVideo : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerNDIVideo(NDISourceSettings, int, int, int, int) Initializes a new instance of the class. ```csharp public OverlayManagerNDIVideo(NDISourceSettings settings, int x, int y, int width, int height) ``` #### Parameters Parameters: - settings (NDISourceSettings): The NDI video source settings. - x (int): The X position. - y (int): The Y position. - width (int): The width. - height (int): The height. ## Properties ### Cache Gets or sets the cached image surface for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets whether the overlay is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time for the overlay visibility. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Height Gets or sets the height of the overlay. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Lock Gets the lock object for thread synchronization. ```csharp public object Lock { get; } ``` #### Property Value Parameters: - (object): ### NDISettings Gets or sets the NDI video source settings. ```csharp public NDISourceSettings NDISettings { get; set; } ``` #### Property Value Parameters: - (NDISourceSettings): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity of the overlay (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings for the overlay. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time for the overlay visibility. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StretchMode Gets or sets the stretch mode for the video. ```csharp public OverlayManagerImageStretchMode StretchMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerImageStretchMode): ### VideoRendererSettings Gets or sets the video renderer settings. Used when VideoView is provided. ```csharp public VideoRendererSettingsX VideoRendererSettings { get; set; } ``` #### Property Value Parameters: - (VideoRendererSettingsX): ### VideoView Gets or sets the video view for optional video rendering. If provided, the video will be rendered to this view in addition to being available as an overlay. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): ### Width Gets or sets the width of the overlay. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X position of the overlay. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y position of the overlay. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-index for layering. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### Initialize(bool) Initializes the NDI video overlay and starts capture. ```csharp public bool Initialize(bool autoStart = true) ``` #### Parameters Parameters: - autoStart (bool): If true, starts playing immediately. If false, only preloads. #### Returns Parameters: - (bool): true if successful; otherwise, false. ### Pause() Pauses video capture. ```csharp public void Pause() ``` ### Play() Starts or resumes video capture. ```csharp public void Play() ``` ### Stop() Stops video capture. ```csharp public void Stop() ``` ## See Also --- # Class OverlayManagerPan Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerPan.html # Class OverlayManagerPan # Class OverlayManagerPan **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Pan effect for overlay manager that animates the visible area between a start rectangle and a stop rectangle over time. This creates a smooth panning and zooming effect commonly used in Ken Burns-style video presentations. Implements the interface. ```csharp public class OverlayManagerPan : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerPan() Initializes a new instance of the class with default values. ```csharp public OverlayManagerPan() ``` ### OverlayManagerPan(int, int, int, int, int, int, int, int, TimeSpan, TimeSpan, bool, string) Initializes a new instance of the class with specified start and stop rectangles. ```csharp public OverlayManagerPan(int startX, int startY, int startWidth, int startHeight, int stopX, int stopY, int stopWidth, int stopHeight, TimeSpan startTime, TimeSpan endTime, bool enabled = true, string name = "Pan") ``` #### Parameters Parameters: - startX (int): The start rectangle X position. - startY (int): The start rectangle Y position. - startWidth (int): The start rectangle width. - startHeight (int): The start rectangle height. - stopX (int): The stop rectangle X position. - stopY (int): The stop rectangle Y position. - stopWidth (int): The stop rectangle width. - stopHeight (int): The stop rectangle height. - startTime (TimeSpan): The animation start time. - endTime (TimeSpan): The animation end time. - enabled (bool): If set to true, the effect is enabled. - name (string): The effect name. ## Properties ### Cache Gets or sets the cache object used internally for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Easing Gets or sets the easing function for the pan animation. ```csharp public OverlayManagerPanEasing Easing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time when the pan animation ends. This is REQUIRED for pan effects to determine animation progress. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### InterpolationMode Gets or sets the interpolation mode used when scaling the video during pan. ```csharp public OverlayManagerInterpolationMode InterpolationMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerInterpolationMode): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). Note: Opacity is not directly applicable for pan effects. ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). Note: Rotation is applied after pan transformation. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. Note: Shadow is not applicable for pan effects and will be ignored. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartHeight Gets or sets the height of the start rectangle. Use 0 or -1 for full video height. ```csharp public int StartHeight { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time when the pan animation begins. This is REQUIRED for pan effects to determine animation progress. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StartWidth Gets or sets the width of the start rectangle. Use 0 or -1 for full video width. ```csharp public int StartWidth { get; set; } ``` #### Property Value Parameters: - (int): ### StartX Gets or sets the X position of the start rectangle (top-left corner). ```csharp public int StartX { get; set; } ``` #### Property Value Parameters: - (int): ### StartY Gets or sets the Y position of the start rectangle (top-left corner). ```csharp public int StartY { get; set; } ``` #### Property Value Parameters: - (int): ### StopHeight Gets or sets the height of the stop rectangle. Use 0 or -1 for full video height. ```csharp public int StopHeight { get; set; } ``` #### Property Value Parameters: - (int): ### StopWidth Gets or sets the width of the stop rectangle. Use 0 or -1 for full video width. ```csharp public int StopWidth { get; set; } ``` #### Property Value Parameters: - (int): ### StopX Gets or sets the X position of the stop rectangle (top-left corner). ```csharp public int StopX { get; set; } ``` #### Property Value Parameters: - (int): ### StopY Gets or sets the Y position of the stop rectangle (top-left corner). ```csharp public int StopY { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. For pan effects, this determines the order of transformation application. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### FromRectangles((int X, int Y, int Width, int Height), (int X, int Y, int Width, int Height), TimeSpan, TimeSpan) Creates a pan effect from start rectangle to stop rectangle. ```csharp public static OverlayManagerPan FromRectangles((int X, int Y, int Width, int Height) startRect, (int X, int Y, int Width, int Height) stopRect, TimeSpan startTime, TimeSpan endTime) ``` #### Parameters Parameters: - startRect (( int X , int Y , int Width , int Height )): The start rectangle (X, Y, Width, Height). - stopRect (( int X , int Y , int Width , int Height )): The stop rectangle (X, Y, Width, Height). - startTime (TimeSpan): The animation start time. - endTime (TimeSpan): The animation end time. #### Returns Parameters: - (OverlayManagerPan): A configured OverlayManagerPan instance. ### GetCurrentRectangle(TimeSpan, int, int) Calculates the current rectangle based on the animation progress. ```csharp public (double X, double Y, double Width, double Height) GetCurrentRectangle(TimeSpan currentTime, int videoWidth, int videoHeight) ``` #### Parameters Parameters: - currentTime (TimeSpan): The current playback time. - videoWidth (int): The full video width (for resolving -1 values). - videoHeight (int): The full video height (for resolving -1 values). #### Returns Parameters: - (( double X , double Y , double Width , double Height )): The interpolated rectangle (X, Y, Width, Height) for the current time. ## See Also --- # Enum OverlayManagerPanEasing Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerPanEasing.html # Enum OverlayManagerPanEasing # Enum OverlayManagerPanEasing **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Easing functions for pan animation. ```csharp public enum OverlayManagerPanEasing ``` ## Fields Parameters: - Linear (): Linear interpolation (constant speed). - EaseIn (): Quadratic ease-in (starts slow, accelerates). - EaseOut (): Quadratic ease-out (starts fast, decelerates). - EaseInOut (): Quadratic ease-in-out (slow start and end, fast middle). - EaseInCubic (): Cubic ease-in (starts very slow, accelerates more). - EaseOutCubic (): Cubic ease-out (starts fast, decelerates more). - EaseInOutCubic (): Cubic ease-in-out (very smooth slow start and end). --- # Class OverlayManagerRectangle Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerRectangle.html # Class OverlayManagerRectangle # Class OverlayManagerRectangle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager rectangle element. Implements the . ```csharp public class OverlayManagerRectangle : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerRectangle() Initializes a new instance of the class. ```csharp public OverlayManagerRectangle() ``` ### OverlayManagerRectangle(SKRect, bool) Initializes a new instance of the class. ```csharp public OverlayManagerRectangle(SKRect rect, bool fill = true) ``` #### Parameters Parameters: - rect (SKRect): The rect. - fill (bool): if set to true [fill]. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Fill Gets or sets a value indicating whether this is fill. ```csharp public bool Fill { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rectangle Gets or sets the start. ```csharp public SKRect Rectangle { get; set; } ``` #### Property Value Parameters: - (SKRect): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerScrollingText Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerScrollingText.html # Class OverlayManagerScrollingText # Class OverlayManagerScrollingText **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager Scrolling Text element for displaying scrolling text overlays. Implements the . ```csharp public class OverlayManagerScrollingText : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerScrollingText() Initializes a new instance of the class. ```csharp public OverlayManagerScrollingText() ``` ### OverlayManagerScrollingText(string, int, int, int, ScrollDirection) Initializes a new instance of the class. ```csharp public OverlayManagerScrollingText(string text, int x = 0, int y = 100, int speed = 5, ScrollDirection direction = ScrollDirection.RightToLeft) ``` #### Parameters Parameters: - text (string): The text to scroll. - x (int): The X position. - y (int): The Y position. - speed (int): The scrolling speed in pixels per frame. - direction (ScrollDirection): The scroll direction. ## Properties ### BackgroundColor Gets or sets the background color (used only when BackgroundTransparent is false). ```csharp public SKColor BackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### BackgroundTransparent Gets or sets a value indicating whether the background is transparent. ```csharp public bool BackgroundTransparent { get; set; } ``` #### Property Value Parameters: - (bool): ### Cache Gets or sets the cache object used internally for rendering optimization. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Color Gets or sets the text color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DefaultHeight Gets or sets the default height to use when Height is set to 0 for vertical scrolling. This value should typically match the video height. ```csharp public int DefaultHeight { get; set; } ``` #### Property Value Parameters: - (int): ### DefaultWidth Gets or sets the default width to use when Width is set to 0. This value should typically match the video width. ```csharp public int DefaultWidth { get; set; } ``` #### Property Value Parameters: - (int): ### Direction Gets or sets the scroll direction. ```csharp public ScrollDirection Direction { get; set; } ``` #### Property Value Parameters: - (ScrollDirection): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). When StartTime and EndTime are both set to TimeSpan.Zero, the overlay is always visible. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FirstFrameNumber Gets or sets the first frame number when scrolling started. This is used internally for calculating scroll position. Set to -1 to reset the scroll position. ```csharp public long FirstFrameNumber { get; set; } ``` #### Property Value Parameters: - (long): ### Font Gets or sets the font settings. ```csharp public FontSettings Font { get; set; } ``` #### Property Value Parameters: - (FontSettings): ### Height Gets or sets the height of the scrolling text area. Set to 0 or negative for auto (based on font size). ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Infinite Gets or sets a value indicating whether the scrolling text loops infinitely. When true, the text will restart from the beginning after scrolling off screen. ```csharp public bool Infinite { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name of the overlay element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). Note: Rotation is applied to the entire scrolling text area. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### Speed Gets or sets the scrolling speed in pixels per frame. Higher values result in faster scrolling. ```csharp public int Speed { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time (optional). When StartTime and EndTime are both set to TimeSpan.Zero, the overlay is always visible. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Text Gets or sets the text content to scroll. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### TextRestarted Gets or sets the text restarted delegate. Called when the scrolling text loops back to the beginning (when Infinite is true). ```csharp public EventHandler TextRestarted { get; set; } ``` #### Property Value Parameters: - (EventHandler): ### Width Gets or sets the width of the scrolling text area. Set to 0 or negative for auto (uses DefaultWidth). ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X position of the scrolling text area. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y position of the scrolling text area. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Reset() Resets the scrolling position back to the beginning. ```csharp public void Reset() ``` ### Update() Forces a re-measurement of the text dimensions. Call this after changing the text content or font settings. ```csharp public void Update() ``` ## See Also --- # Class OverlayManagerShadowSettings Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerShadowSettings.html # Class OverlayManagerShadowSettings # Class OverlayManagerShadowSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Shadow settings for overlay manager elements. ```csharp public class OverlayManagerShadowSettings ``` #### Inheritance #### Inherited Members ## Constructors ### OverlayManagerShadowSettings() Initializes a new instance of the class. ```csharp public OverlayManagerShadowSettings() ``` ### OverlayManagerShadowSettings(bool, double, double, double, double, SKColor?) Initializes a new instance of the class. ```csharp public OverlayManagerShadowSettings(bool enabled, double depth = 5, double direction = 45, double opacity = 0.5, double blurRadius = 2, SKColor? color = null) ``` #### Parameters Parameters: - enabled (bool): if set to true shadow is enabled. - depth (double): The shadow depth. - direction (double): The shadow direction. - opacity (double): The shadow opacity. - blurRadius (double): The shadow blur radius. - color (SKColor ?): The shadow color. ## Properties ### BlurRadius Gets or sets the shadow blur radius. Range: 0 to 10. ```csharp public double BlurRadius { get; set; } ``` #### Property Value Parameters: - (double): ### Color Gets or sets the shadow color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Depth Gets or sets the shadow depth (offset distance). Range: 0 to 30. ```csharp public double Depth { get; set; } ``` #### Property Value Parameters: - (double): ### Direction Gets or sets the shadow direction in degrees. Range: 0 to 360 degrees. 0° = right, 90° = down, 180° = left, 270° = up. ```csharp public double Direction { get; set; } ``` #### Property Value Parameters: - (double): ### Enabled Gets or sets a value indicating whether shadow effect is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Opacity Gets or sets the shadow opacity. Range: 0 to 1 (0 = transparent, 1 = opaque). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### CalculateOffset() Calculates the shadow offset based on direction and depth. Direction mapping: - 0° = right (positive X) - 90° = down (positive Y) - 180° = left (negative X) - 270° = up (negative Y) ```csharp public (double OffsetX, double OffsetY) CalculateOffset() ``` #### Returns Parameters: - (( double OffsetX , double OffsetY )): A tuple containing the X and Y offset values. --- # Class OverlayManagerSqueezeback Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerSqueezeback.html # Class OverlayManagerSqueezeback # Class OverlayManagerSqueezeback **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Squeezeback effect element that scales the video to a custom rectangle and draws an image overlay on top with alpha transparency support. The typical use case is a full-frame PNG image with transparent areas where the scaled video shows through. Implements the interface. ```csharp public class OverlayManagerSqueezeback : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerSqueezeback() Initializes a new instance of the class. ```csharp public OverlayManagerSqueezeback() ``` ### OverlayManagerSqueezeback(string, Rect, Rect) Initializes a new instance of the class. ```csharp public OverlayManagerSqueezeback(string backgroundImageFilename, Rect videoRect, Rect backgroundRect = null) ``` #### Parameters Parameters: - backgroundImageFilename (string): The background image filename. - videoRect (Rect): The video rectangle. - backgroundRect (Rect): The background rectangle (null for full frame). ## Properties ### BackgroundAnimationEasing Gets or sets the background animation easing function. ```csharp public OverlayManagerPanEasing BackgroundAnimationEasing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### BackgroundAnimationEnabled Gets or sets whether background animation is enabled. ```csharp public bool BackgroundAnimationEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### BackgroundAnimationEndTime Gets or sets the background animation end time. ```csharp public TimeSpan BackgroundAnimationEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BackgroundAnimationStartRect Gets or sets the background animation start rectangle. ```csharp public Rect BackgroundAnimationStartRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### BackgroundAnimationStartTime Gets or sets the background animation start time. ```csharp public TimeSpan BackgroundAnimationStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BackgroundAnimationTargetRect Gets or sets the background animation target rectangle. ```csharp public Rect BackgroundAnimationTargetRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### BackgroundFadeEasing Gets or sets the background fade easing. ```csharp public OverlayManagerPanEasing BackgroundFadeEasing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### BackgroundFadeEnabled Gets or sets whether background fade is enabled. ```csharp public bool BackgroundFadeEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### BackgroundFadeEndTime Gets or sets the background fade end time. ```csharp public TimeSpan BackgroundFadeEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BackgroundFadeStartTime Gets or sets the background fade start time. ```csharp public TimeSpan BackgroundFadeStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BackgroundFadeType Gets or sets the background fade type. ```csharp public OverlayManagerFadeType BackgroundFadeType { get; set; } ``` #### Property Value Parameters: - (OverlayManagerFadeType): ### BackgroundImageFilename Gets or sets the overlay image filename (PNG with alpha recommended). ```csharp public string BackgroundImageFilename { get; set; } ``` #### Property Value Parameters: - (string): ### BackgroundOpacity Gets or sets the background opacity (0.0 to 1.0). ```csharp public double BackgroundOpacity { get; set; } ``` #### Property Value Parameters: - (double): ### BackgroundRect Gets or sets the overlay image rectangle (position and size). Null means fill the entire frame. ```csharp public Rect BackgroundRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### Cache Gets or sets the cache object used internally for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets whether the element is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time when the effect stops being visible. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). Note: Use VideoOpacity and BackgroundOpacity for individual layer opacity. ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees. Note: Rotation is not applicable for squeezeback effects. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. Note: Shadow is not applicable for squeezeback effects. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time when the effect becomes visible. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### VideoAnimationEasing Gets or sets the video animation easing function. ```csharp public OverlayManagerPanEasing VideoAnimationEasing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### VideoAnimationEnabled Gets or sets whether video animation is enabled. ```csharp public bool VideoAnimationEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoAnimationEndTime Gets or sets the video animation end time. ```csharp public TimeSpan VideoAnimationEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### VideoAnimationStartRect Gets or sets the video animation start rectangle. ```csharp public Rect VideoAnimationStartRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### VideoAnimationStartTime Gets or sets the video animation start time. ```csharp public TimeSpan VideoAnimationStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### VideoAnimationTargetRect Gets or sets the video animation target rectangle. ```csharp public Rect VideoAnimationTargetRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### VideoFadeEasing Gets or sets the video fade easing. ```csharp public OverlayManagerPanEasing VideoFadeEasing { get; set; } ``` #### Property Value Parameters: - (OverlayManagerPanEasing): ### VideoFadeEnabled Gets or sets whether video fade is enabled. ```csharp public bool VideoFadeEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoFadeEndTime Gets or sets the video fade end time. ```csharp public TimeSpan VideoFadeEndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### VideoFadeStartTime Gets or sets the video fade start time. ```csharp public TimeSpan VideoFadeStartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### VideoFadeType Gets or sets the video fade type. ```csharp public OverlayManagerFadeType VideoFadeType { get; set; } ``` #### Property Value Parameters: - (OverlayManagerFadeType): ### VideoOnTop Gets or sets whether the video is drawn on top of the image. Default is false: video is drawn first (below), then image is drawn on top with alpha transparency. Set to true to draw the image first, then video on top. ```csharp public bool VideoOnTop { get; set; } ``` #### Property Value Parameters: - (bool): ### VideoOpacity Gets or sets the video opacity (0.0 to 1.0). ```csharp public double VideoOpacity { get; set; } ``` #### Property Value Parameters: - (double): ### VideoRect Gets or sets the video rectangle (position and size where video is scaled). ```csharp public Rect VideoRect { get; set; } ``` #### Property Value Parameters: - (Rect): ### ZIndex Gets or sets the Z-index (should be very low to render first). ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### AnimateBackground(Rect, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts an animation for the background rectangle. ```csharp public void AnimateBackground(Rect targetRect, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - targetRect (Rect): The target rectangle. - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. ### AnimateVideo(Rect, TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts an animation for the video rectangle. ```csharp public void AnimateVideo(Rect targetRect, TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - targetRect (Rect): The target rectangle. - startTime (TimeSpan): The animation start time. - duration (TimeSpan): The animation duration. - easing (OverlayManagerPanEasing): The easing function. ### GetCurrentBackgroundOpacity(double) Gets the current background opacity based on fade animation progress. ```csharp public double GetCurrentBackgroundOpacity(double currentTime) ``` #### Parameters Parameters: - currentTime (double): The current playback time. #### Returns Parameters: - (double): The current background opacity. ### GetCurrentBackgroundRect(double, int, int) Gets the current background rectangle based on animation progress. ```csharp public Rect GetCurrentBackgroundRect(double currentTime, int frameWidth, int frameHeight) ``` #### Parameters Parameters: - currentTime (double): The current playback time. - frameWidth (int): The frame width (used if BackgroundRect is null). - frameHeight (int): The frame height (used if BackgroundRect is null). #### Returns Parameters: - (Rect): The current background rectangle. ### GetCurrentVideoOpacity(double) Gets the current video opacity based on fade animation progress. ```csharp public double GetCurrentVideoOpacity(double currentTime) ``` #### Parameters Parameters: - currentTime (double): The current playback time. #### Returns Parameters: - (double): The current video opacity. ### GetCurrentVideoRect(double) Gets the current video rectangle based on animation progress. ```csharp public Rect GetCurrentVideoRect(double currentTime) ``` #### Parameters Parameters: - currentTime (double): The current playback time. #### Returns Parameters: - (Rect): The current video rectangle. ### SetBackgroundOnTop() Sets the background image to be on top. ```csharp public void SetBackgroundOnTop() ``` ### SetVideoOnTop() Sets the video to be on top. ```csharp public void SetVideoOnTop() ``` ### StartBackgroundFadeIn(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation for the background. ```csharp public void StartBackgroundFadeIn(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### StartBackgroundFadeOut(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation for the background. ```csharp public void StartBackgroundFadeOut(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### StartVideoFadeIn(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-in animation for the video. ```csharp public void StartVideoFadeIn(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### StartVideoFadeOut(TimeSpan, TimeSpan, OverlayManagerPanEasing) Starts a fade-out animation for the video. ```csharp public void StartVideoFadeOut(TimeSpan startTime, TimeSpan duration, OverlayManagerPanEasing easing = OverlayManagerPanEasing.Linear) ``` #### Parameters Parameters: - startTime (TimeSpan): The fade start time. - duration (TimeSpan): The fade duration. - easing (OverlayManagerPanEasing): The easing function. ### SwapLayers() Swaps the layer order (video on top / background on top). ```csharp public void SwapLayers() ``` ### UpdateBackgroundImage(string, Rect) Updates the background image. ```csharp public void UpdateBackgroundImage(string filename, Rect rect = null) ``` #### Parameters Parameters: - filename (string): The new image filename. - rect (Rect): The new image rectangle (null to keep current). ### UpdateVideoPosition(Rect) Updates the video position. ```csharp public void UpdateVideoPosition(Rect rect) ``` #### Parameters Parameters: - rect (Rect): The new video rectangle. ## See Also --- # Class OverlayManagerStar Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerStar.html # Class OverlayManagerStar # Class OverlayManagerStar **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager star element. Implements the . ```csharp public class OverlayManagerStar : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerStar() Initializes a new instance of the class. ```csharp public OverlayManagerStar() ``` ### OverlayManagerStar(SKPoint) Initializes a new instance of the class. ```csharp public OverlayManagerStar(SKPoint center) ``` #### Parameters Parameters: - center (SKPoint): The center. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Center Gets or sets the center. ```csharp public SKPoint Center { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FillColor Gets or sets the color of the fill. ```csharp public SKColor FillColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### InnerRadius Gets or sets the inner radius. ```csharp public double InnerRadius { get; set; } ``` #### Property Value Parameters: - (double): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### OuterRadius Gets or sets the outer radius. ```csharp public double OuterRadius { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StrokeColor Gets or sets the color of the stroke. ```csharp public SKColor StrokeColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerSVG Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerSVG.html # Class OverlayManagerSVG # Class OverlayManagerSVG **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager SVG image. Implements the . ```csharp public class OverlayManagerSVG : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerSVG(string, int, int) Initializes a new instance of the class. ```csharp public OverlayManagerSVG(string filename, int x = 0, int y = 0) ``` #### Parameters Parameters: - filename (string): The filename. - x (int): The x. - y (int): The y. #### Exceptions Parameters: - (Exception): Failed to load SVG file. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Height Gets the height. ```csharp public int Height { get; } ``` #### Property Value Parameters: - (int): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Width Gets the width. ```csharp public int Width { get; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~OverlayManagerSVG() Finalizes an instance of the class. ```csharp protected ~OverlayManagerSVG() ``` ## See Also --- # Class OverlayManagerText Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerText.html # Class OverlayManagerText # Class OverlayManagerText **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager Text element. Implements the . ```csharp public class OverlayManagerText : IOverlayManagerElement ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Constructors ### OverlayManagerText() Initializes a new instance of the class. ```csharp public OverlayManagerText() ``` ### OverlayManagerText(string, int, int) Initializes a new instance of the class. ```csharp public OverlayManagerText(string text, int x = 100, int y = 100) ``` #### Parameters Parameters: - text (string): The text. - x (int): The x. - y (int): The y. ## Properties ### Background Gets or sets the background. ```csharp public IOverlayManagerBackground Background { get; set; } ``` #### Property Value Parameters: - (IOverlayManagerBackground): ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### CustomHeight Gets or sets the custom height. ```csharp public int CustomHeight { get; set; } ``` #### Property Value Parameters: - (int): ### CustomWidth Gets or sets the custom width. ```csharp public int CustomWidth { get; set; } ``` #### Property Value Parameters: - (int): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Font Gets or sets the font. ```csharp public FontSettings Font { get; set; } ``` #### Property Value Parameters: - (FontSettings): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Text Gets or sets the text. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### X Gets or sets the X. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerTriangle Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerTriangle.html # Class OverlayManagerTriangle # Class OverlayManagerTriangle **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Overlay Manager triangle element. Implements the . ```csharp public class OverlayManagerTriangle : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerTriangle() Initializes a new instance of the class. ```csharp public OverlayManagerTriangle() ``` ### OverlayManagerTriangle(SKPoint, SKPoint, SKPoint) Initializes a new instance of the class. ```csharp public OverlayManagerTriangle(SKPoint point1, SKPoint point2, SKPoint point3) ``` #### Parameters Parameters: - point1 (SKPoint): The point 1. - point2 (SKPoint): The point 2. - point3 (SKPoint): The point 3. ## Properties ### Cache Gets or sets the cache. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time (optional). ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Fill Gets or sets a value indicating whether this is fill. ```csharp public bool Fill { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Point1 Gets or sets the point 1. ```csharp public SKPoint Point1 { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Point2 Gets or sets the point 2. ```csharp public SKPoint Point2 { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Point3 Gets or sets the point 3. ```csharp public SKPoint Point3 { get; set; } ``` #### Property Value Parameters: - (SKPoint): ### Rotation Gets or sets the rotation angle in degrees (0-360). ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### StartTime Gets or sets the start time (optional). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## See Also --- # Class OverlayManagerVideo Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerVideo.html # Class OverlayManagerVideo # Class OverlayManagerVideo **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video overlay element that plays video files in the overlay manager. ```csharp public class OverlayManagerVideo : IOverlayManagerElement, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerVideo(string, int, int, int, int, bool) Initializes a new instance of the class. ```csharp public OverlayManagerVideo(string source, int x, int y, int width, int height, bool loop = true) ``` #### Parameters Parameters: - source (string): The video source file path or URL. - x (int): The X position. - y (int): The Y position. - width (int): The width. - height (int): The height. - loop (bool): Whether to loop the video. ## Properties ### AudioOutput Gets or sets the audio output device for playback. When provided, audio streams from the decoded file will be played through this device. If null, audio will be discarded. ```csharp public AudioOutputDeviceInfo AudioOutput { get; set; } ``` #### Property Value Parameters: - (AudioOutputDeviceInfo): ### AudioOutput_Mute Gets or sets whether the audio output is muted. Only effective when AudioOutput is configured. ```csharp public bool AudioOutput_Mute { get; set; } ``` #### Property Value Parameters: - (bool): ### AudioOutput_Volume Gets or sets the audio output volume (0.0 to 1.0+, where values above 1.0 provide amplification). Only effective when AudioOutput is configured. ```csharp public double AudioOutput_Volume { get; set; } ``` #### Property Value Parameters: - (double): ### Cache Gets or sets the cached image surface for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets whether the overlay is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time for the overlay visibility. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Height Gets or sets the height of the overlay. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Lock Gets the lock object for thread synchronization. ```csharp public object Lock { get; } ``` #### Property Value Parameters: - (object): ### Loop Gets or sets whether the video should loop. ```csharp public bool Loop { get; set; } ``` #### Property Value Parameters: - (bool): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity of the overlay (0.0 to 1.0). ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### PlaybackRate Gets or sets the playback rate (1.0 = normal speed). ```csharp public double PlaybackRate { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings for the overlay. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### Source Gets or sets the source video file path or URL. ```csharp public string Source { get; set; } ``` #### Property Value Parameters: - (string): ### StartTime Gets or sets the start time for the overlay visibility. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StretchMode Gets or sets the stretch mode for the video. ```csharp public OverlayManagerImageStretchMode StretchMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerImageStretchMode): ### VideoRendererSettings Gets or sets the video renderer settings. Used when VideoView is provided. ```csharp public VideoRendererSettingsX VideoRendererSettings { get; set; } ``` #### Property Value Parameters: - (VideoRendererSettingsX): ### VideoView Gets or sets the video view for optional video rendering. If provided, the video will be rendered to this view in addition to being available as an overlay. ```csharp public IVideoView VideoView { get; set; } ``` #### Property Value Parameters: - (IVideoView): ### Width Gets or sets the width of the overlay. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the X position of the overlay. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the Y position of the overlay. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ### ZIndex Gets or sets the Z-index for layering. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### Initialize(bool) Initializes the video overlay and starts playback. ```csharp public bool Initialize(bool autoStart = true) ``` #### Parameters Parameters: - autoStart (bool): If true, starts playing immediately. If false, only preloads. #### Returns Parameters: - (bool): true if successful; otherwise, false. ### Pause() Pauses video playback. ```csharp public void Pause() ``` ### Play() Starts or resumes video playback. ```csharp public void Play() ``` ### Seek(TimeSpan) Seeks to a specific position in the video. ```csharp public void Seek(TimeSpan position) ``` #### Parameters Parameters: - position (TimeSpan): The position to seek to. ### Stop() Stops video playback. ```csharp public void Stop() ``` ### UpdateSource(string) Updates the video source. ```csharp public void UpdateSource(string source) ``` #### Parameters Parameters: - source (string): The new video source. ## See Also --- # Class OverlayManagerZoom Link: api/VisioForge.Core.Types.X.VideoEffects.OverlayManagerZoom.html # Class OverlayManagerZoom # Class OverlayManagerZoom **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Zoom effect for overlay manager that scales and shifts the video content. This effect allows zooming into the video with configurable X/Y scaling ratios and pixel-based shift offsets for positioning the zoomed area. Implements the interface. ```csharp public class OverlayManagerZoom : IOverlayManagerElement ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OverlayManagerZoom() Initializes a new instance of the class with default values (no zoom, no shift). ```csharp public OverlayManagerZoom() ``` ### OverlayManagerZoom(double, double, int, int, bool, string, TimeSpan, TimeSpan) Initializes a new instance of the class with specified zoom and shift values. ```csharp public OverlayManagerZoom(double zoomX, double zoomY, int shiftX = 0, int shiftY = 0, bool enabled = true, string name = "Zoom", TimeSpan startTime = default, TimeSpan endTime = default) ``` #### Parameters Parameters: - zoomX (double): The zoom X ratio (1.0 = 100%). - zoomY (double): The zoom Y ratio (1.0 = 100%). - shiftX (int): The horizontal shift in pixels. - shiftY (int): The vertical shift in pixels. - enabled (bool): If set to true, the effect is enabled. - name (string): The effect name. - startTime (TimeSpan): The start time for the effect. - endTime (TimeSpan): The end time for the effect. ### OverlayManagerZoom(double, int, int, bool) Initializes a new instance of the class with uniform zoom (same X and Y ratio). ```csharp public OverlayManagerZoom(double zoom, int shiftX = 0, int shiftY = 0, bool enabled = true) ``` #### Parameters Parameters: - zoom (double): The uniform zoom ratio for both axes (1.0 = 100%). - shiftX (int): The horizontal shift in pixels. - shiftY (int): The vertical shift in pixels. - enabled (bool): If set to true, the effect is enabled. ## Properties ### Cache Gets or sets the cache object used internally for rendering. ```csharp public object Cache { get; set; } ``` #### Property Value Parameters: - (object): ### Enabled Gets or sets a value indicating whether this is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### EndTime Gets or sets the end time when the effect stops being visible. Use TimeSpan.Zero to show the effect until the end. ```csharp public TimeSpan EndTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### InterpolationMode Gets or sets the interpolation mode used when scaling the video. ```csharp public OverlayManagerInterpolationMode InterpolationMode { get; set; } ``` #### Property Value Parameters: - (OverlayManagerInterpolationMode): ### Name Gets or sets the name of the element. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ### Opacity Gets or sets the opacity (0.0 to 1.0). Note: Opacity is not directly applicable for zoom effects. ```csharp public double Opacity { get; set; } ``` #### Property Value Parameters: - (double): ### Rotation Gets or sets the rotation angle in degrees (0-360). Note: Rotation is applied after zoom transformation. ```csharp public double Rotation { get; set; } ``` #### Property Value Parameters: - (double): ### Shadow Gets or sets the shadow settings. Note: Shadow is not applicable for zoom effects and will be ignored. ```csharp public OverlayManagerShadowSettings Shadow { get; set; } ``` #### Property Value Parameters: - (OverlayManagerShadowSettings): ### ShiftX Gets or sets the horizontal shift in pixels. Positive values shift the view to the right (showing content from the left), negative values shift to the left (showing content from the right). ```csharp public int ShiftX { get; set; } ``` #### Property Value Parameters: - (int): ### ShiftY Gets or sets the vertical shift in pixels. Positive values shift the view down (showing content from the top), negative values shift up (showing content from the bottom). ```csharp public int ShiftY { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time when the effect becomes visible. Use TimeSpan.Zero to show the effect from the beginning. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ZIndex Gets or sets the Z-Index (drawing order). Higher values are drawn on top. For zoom effects, this determines the order of transformation application. ```csharp public int ZIndex { get; set; } ``` #### Property Value Parameters: - (int): ### ZoomX Gets or sets the zoom ratio for the X axis. 1.0 = 100% (no zoom), 2.0 = 200% (2x zoom), 0.5 = 50% (zoom out). ```csharp public double ZoomX { get; set; } ``` #### Property Value Parameters: - (double): ### ZoomY Gets or sets the zoom ratio for the Y axis. 1.0 = 100% (no zoom), 2.0 = 200% (2x zoom), 0.5 = 50% (zoom out). ```csharp public double ZoomY { get; set; } ``` #### Property Value Parameters: - (double): ## See Also --- # Class Pseudo3DVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.Pseudo3DVideoEffect.html # Class Pseudo3DVideoEffect # Class Pseudo3DVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a pseudo-3D depth effect that creates a TV scanline-style appearance with motion-triggered updates. ```csharp public class Pseudo3DVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

Available in: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

The Pseudo3D effect simulates a vintage TV or retro video game aesthetic by creating horizontal scanlines that update based on motion detection in the video. The effect creates a "ghost" or "trailing" appearance similar to phosphor burn-in on CRT displays. The visual result depends on the amount of motion in the video content, making it ideal for dynamic, action-oriented footage.

Key features include configurable line spacing for scanline density, adjustable gain for effect intensity, and delay control for update frequency. This effect is particularly effective for music videos, VJ performances, retro-style content, and artistic visualizations where a vintage electronic aesthetic is desired.

## Constructors ### Pseudo3DVideoEffect(string) Initializes a new instance of the class. ```csharp public Pseudo3DVideoEffect(string name = "pseudo3d") ``` #### Parameters Parameters: - name (string): The name of the effect instance. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Delay Gets or sets the delay in frames between scanline updates. ```csharp public int Delay { get; set; } ``` #### Property Value Parameters: - (int): ### Gain Gets or sets the effect intensity gain factor. ```csharp public int Gain { get; set; } ``` #### Property Value Parameters: - (int): ### Linespace Gets or sets the vertical spacing between scanlines in pixels. ```csharp public int Linespace { get; set; } ``` #### Property Value Parameters: - (int): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Class QuarkVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.QuarkVideoEffect.html # Class QuarkVideoEffect # Class QuarkVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a quark effect that divides the video into multiple moving color planes creating a segmented, layered appearance. ```csharp public class QuarkVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect creates a unique visual style by dividing the video into multiple independent color planes (similar to color separation in printing or RGB channels). These planes move and shift relative to each other, creating a fragmented, glitchy, or psychedelic appearance.

The quark effect simulates the visual aesthetic of analog video signal disruption or deliberate color channel manipulation. The number of planes determines how finely the image is segmented - more planes create finer fragmentation and more complex motion patterns.

The quark effect is commonly used for:

  • Glitch Art: Create intentional digital artifacts and distortions
  • Music Videos: Energetic, chaotic visual effects synchronized with beats
  • Retro Aesthetics: Simulate analog video errors and VHS artifacts
  • VJ Performances: Dynamic, rapidly-changing visual effects
  • Transitions: Fragmented, energetic scene transitions

This is a cross-platform effect using the quarktv element. The effect applies random motion to color planes each frame, creating dynamic, unpredictable patterns.

Performance: Real-time capable on most hardware. The effect performs plane manipulation which is computationally efficient. Performance scales with the number of planes.

## Constructors ### QuarkVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public QuarkVideoEffect(string name = "quark") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "quark". ## Fields ### DefaultName The default name for quark effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Planes Gets or sets the number of color planes into which the video is divided. ```csharp public int Planes { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Higher values create more color planes and finer fragmentation, resulting in more chaotic and complex visual effects. Lower values produce simpler, more controlled plane shifting. Very high values (40+) may reduce performance on lower-end hardware. ### StartTime Gets or sets the start time for the quark effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live scenarios, the effect provides continuous, random plane motion. ### StopTime Gets or sets the stop time for the quark effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live scenarios, the effect provides continuous, random plane motion. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Class ResizeVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.ResizeVideoEffect.html # Class ResizeVideoEffect # Class ResizeVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a video resize effect that scales video to a target resolution with high-quality scaling algorithms. ```csharp public class ResizeVideoEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The resize effect provides high-quality video scaling with multiple interpolation algorithms optimized for different use cases. Supports aspect ratio preservation with letterboxing, sharpening controls, and multi-threaded processing for performance.

Scaling Methods:

  • BilinearMultitap: Fast, good quality, recommended default
  • Bilinear: Simple linear interpolation, fast but lower quality
  • Bicubic: Higher quality, slower, good for upscaling
  • Lanczos: Highest quality, slowest, best for critical upscaling
  • NearestNeighbor: No interpolation, pixelated look, fastest

Key Features:

  • Aspect Ratio Preservation: Optional letterboxing to maintain aspect ratio
  • Sharpening: Adjustable sharpening (0.0-1.0) to compensate for scaling softness
  • Gamma-Aware Scaling: Decode gamma before scaling for color accuracy
  • Multi-Threading: Configurable thread count for performance
  • Dithering: Optional dithering for Lanczos method

Use Cases:

  • Video resolution conversion (SD to HD, HD to 4K)
  • Downscaling for streaming or mobile playback
  • Upscaling low-resolution content
  • Standardizing video dimensions for editing

For Classic SDK, rotation/resize is handled through format conversion settings, not as a separate effect.

Performance Note: Lanczos provides the highest quality but is CPU-intensive. Use BilinearMultitap for real-time applications. Consider multi-threading for large resolutions (4K+).

## Constructors ### ResizeVideoEffect(int, int, string) Initializes a new instance of the class. ```csharp public ResizeVideoEffect(int width, int height, string name = "resize") ``` #### Parameters Parameters: - width (int): New width. - height (int): New height. - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Dither Gets or sets a value indicating whether dither will be added (only used for Lanczos method). ```csharp public bool Dither { get; set; } ``` #### Property Value Parameters: - (bool): ### Envelope Gets or sets the envelope. Range is [1.0..5.0]. ```csharp public double Envelope { get; set; } ``` #### Property Value Parameters: - (double): ### GammaDecode Gets or sets a value indicating whether decode gamma before scaling enabled. ```csharp public bool GammaDecode { get; set; } ``` #### Property Value Parameters: - (bool): ### Height Gets or sets height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Letterbox Gets or sets a value indicating whether to add black borders if necessary to keep the display aspect ratio. ```csharp public bool Letterbox { get; set; } ``` #### Property Value Parameters: - (bool): ### Method Gets or sets the resize method. ```csharp public VideoScaleMethod Method { get; set; } ``` #### Property Value Parameters: - (VideoScaleMethod): ### Sharpen Gets or sets the sharpen. Range is [0.0..1.0]. ```csharp public double Sharpen { get; set; } ``` #### Property Value Parameters: - (double): ### Sharpness Gets or sets the sharpness. Range is [0.5..1.5]. ```csharp public double Sharpness { get; set; } ``` #### Property Value Parameters: - (double): ### ThreadsNumber Gets or sets the threads number to use. ```csharp public int ThreadsNumber { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum RippleMode Link: api/VisioForge.Core.Types.X.VideoEffects.RippleMode.html # Enum RippleMode # Enum RippleMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Ripple mode. ```csharp public enum RippleMode ``` ## Fields Parameters: - MotionDetection (): Motion detection. - Rain (): Rain drops. --- # Class RippleVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.RippleVideoEffect.html # Class RippleVideoEffect # Class RippleVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a ripple effect that creates water-like distortions triggered by motion detection or simulated rain drops. ```csharp public class RippleVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates ripple distortions on the video surface, similar to dropping objects into water or waves propagating across a liquid surface. The effect can operate in two modes:

  • Motion Detection Mode: Ripples are created dynamically where motion is detected in the video, creating interactive distortions that respond to movement in the scene.
  • Rain Mode: Ripples are generated randomly across the frame to simulate rain drops hitting a water surface, creating continuous wave patterns.

The ripple effect is commonly used for:

  • Artistic Expression: Create surreal, dream-like visuals
  • Interactive Video: Ripples respond to on-screen movement
  • Transitions: Add liquid-like transition effects between scenes
  • Music Videos: Create dynamic, fluid visual effects synchronized with music
  • Reflections: Simulate water surface reflections

This is a cross-platform effect using the rippletv element. The effect automatically generates and propagates ripple patterns based on the selected mode.

Performance: Real-time capable on most modern hardware. Motion detection mode requires additional CPU for motion analysis. GPU-accelerated for distortion rendering. Mobile devices may experience slight performance impact depending on resolution and motion complexity.

## Constructors ### RippleVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public RippleVideoEffect(string name = "ripple") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "ripple". ## Fields ### DefaultName The default name for ripple effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Mode Gets or sets the ripple generation mode. ```csharp public RippleMode Mode { get; set; } ``` #### Property Value Parameters: - (RippleMode): #### Remarks

Motion Detection Mode: Analyzes frame-to-frame differences to detect movement. Ripples appear at locations where motion occurs, creating an interactive effect. More CPU-intensive due to motion analysis.

Rain Mode: Generates ripples at random locations across the frame continuously, simulating rain drops hitting a water surface. Less CPU-intensive as it doesn't require motion analysis.

### StartTime Gets or sets the start time for the ripple effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the ripple effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. --- # Enum ScrollDirection Link: api/VisioForge.Core.Types.X.VideoEffects.ScrollDirection.html # Enum ScrollDirection # Enum ScrollDirection **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Specifies the direction of scrolling for scrolling text overlays. ```csharp public enum ScrollDirection ``` ## Fields Parameters: - LeftToRight (): Text scrolls from left to right. - RightToLeft (): Text scrolls from right to left. - BottomToTop (): Text scrolls from bottom to top. - TopToBottom (): Text scrolls from top to bottom. --- # Class SmoothVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.SmoothVideoEffect.html # Class SmoothVideoEffect # Class SmoothVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a smooth/median filter effect that reduces noise and softens video while preserving edges. ```csharp public class SmoothVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS, Android, iOS

The smooth effect applies a median filter that reduces noise and artifacts while attempting to preserve edges. Unlike Gaussian blur which smooths uniformly, the median filter is edge-preserving and particularly effective at removing salt-and-pepper noise and compression artifacts.

Key Features:

  • Edge-Preserving: Maintains sharp edges while smoothing flat areas
  • Noise Reduction: Excellent for reducing random noise and artifacts
  • Luma-Only Mode: Option to smooth only brightness, preserving color detail
  • Adjustable Tolerance: Controls how aggressively to smooth based on contrast
  • Variable Filter Size: Larger filters = more smoothing

Parameters:

  • FilterSize: Median filter kernel size (3, 5, 7, etc. - larger = more smoothing)
  • Tolerance: Contrast threshold (0-255) - higher = more aggressive smoothing
  • LumaOnly: When true, only smooth brightness (preserves color)

Common Use Cases:

  • Reducing compression artifacts from heavily compressed video
  • Cleaning up noisy low-light footage
  • Smoothing skin tones for beauty filter effects
  • Removing salt-and-pepper noise from old footage
  • Softening video while maintaining edge sharpness

For Classic SDK, see VideoEffectSmooth (Windows only). For Gaussian blur, see . For AI-based noise reduction, see MaxineDenoiseVideoEffect (Windows, RTX GPU).

Performance Note: Median filtering is CPU-intensive, especially with large filter sizes. Use smaller filter sizes (3-5) for real-time applications. LumaOnly=true improves performance by ~40%.

## Constructors ### SmoothVideoEffect(string) Initializes a new instance of the class. ```csharp public SmoothVideoEffect(string name = "smooth") ``` #### Parameters Parameters: - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Active Gets or sets a value indicating whether filter is active. ```csharp public bool Active { get; set; } ``` #### Property Value Parameters: - (bool): ### FilterSize Gets or sets the size of media filter. ```csharp public int FilterSize { get; set; } ``` #### Property Value Parameters: - (int): ### LumaOnly Gets or sets a value indicating whether only filter luma part. ```csharp public bool LumaOnly { get; set; } ``` #### Property Value Parameters: - (bool): ### StartTime Gets or sets the start time. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the stop time. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Tolerance Gets or sets the contrast tolerance for smoothing. ```csharp public int Tolerance { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): --- # Class SMPTEAlphaVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.SMPTEAlphaVideoEffect.html # Class SMPTEAlphaVideoEffect # Class SMPTEAlphaVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a SMPTE alpha transition effect that creates wipe transitions with full alpha channel support for transparency control. ```csharp public class SMPTEAlphaVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect implements SMPTE transition patterns with alpha channel output, making it ideal for creating transitions with transparency. Unlike which blends two video sources directly, SMPTEAlpha generates an alpha mask based on the transition pattern, allowing for compositing workflows where the alpha channel controls transparency.

The SMPTE Alpha effect is particularly useful when:

  • Compositing: Creating transition masks for multi-layer video composition
  • Green Screen: Combining SMPTE patterns with keyed footage
  • Graphics Overlays: Revealing or concealing overlay graphics
  • Alpha-Based Effects: Using transition patterns as alpha mattes
  • Layer Blending: Controlling layer visibility with geometric patterns

The key difference from :

  • : Blends two video inputs directly (uses depth parameter)
  • : Generates alpha mask output (uses position parameter)

The effect is controlled by the parameter which determines how much of the alpha mask is revealed (0.0 = fully transparent, 1.0 = fully opaque). The parameter selects from 256+ standard SMPTE patterns, identical to .

This is a cross-platform effect using the smptealpha element. The output video maintains its color channels while the alpha channel is modulated by the transition pattern.

Performance: Real-time capable on all platforms. GPU-accelerated where available. Alpha channel processing has minimal performance overhead compared to standard SMPTE transitions.

## Constructors ### SMPTEAlphaVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public SMPTEAlphaVideoEffect(string name = "smptealpha") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "smptealpha". ## Fields ### DefaultName The default name for SMPTE alpha transition effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Border Gets or sets the border width in pixels for the transition edge. ```csharp public int Border { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks A non-zero border value creates a semi-transparent transition zone between fully transparent and fully opaque areas of the alpha mask. This creates a softer, anti-aliased edge for the transition pattern. Larger values create broader, more gradual transition zones. ### Invert Gets or sets whether to invert the alpha mask direction. ```csharp public bool Invert { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When inverted, the areas that would become transparent become opaque and vice versa. This effectively reverses the reveal direction of the alpha mask without requiring a different transition pattern. ### Position Gets or sets the transition position controlling the progress of the alpha mask. ```csharp public double Position { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The position parameter animates the alpha mask transition. As position increases from 0.0 to 1.0, the alpha channel changes according to the selected SMPTE pattern. This differs from which blends video sources directly - position controls transparency instead of cross-fading. ### StartTime Gets or sets the start time for the SMPTE alpha effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the SMPTE alpha effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### Type Gets or sets the SMPTE transition pattern type for the alpha mask. ```csharp public SMPTETransitionType Type { get; set; } ``` #### Property Value Parameters: - (SMPTETransitionType): #### Remarks The transition type defines the geometric pattern used for the alpha mask. The pattern controls which areas become transparent vs opaque as the value changes. See for the complete list of available patterns. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the SMPTE alpha effect. --- # Enum SMPTETransitionType Link: api/VisioForge.Core.Types.X.VideoEffects.SMPTETransitionType.html # Enum SMPTETransitionType # Enum SMPTETransitionType **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll SMPTE transition types for professional video wipe effects. These values correspond exactly to the GStreamer SMPTE transition types. Values and descriptions are from the official GStreamer documentation. ```csharp public enum SMPTETransitionType ``` ## Fields Parameters: - BarWipeLeftToRight (): A bar moves from left to right. - BarWipeTopToBottom (): A bar moves from top to bottom. - BoxWipeTopLeft (): A box expands from the upper-left corner to the lower-right corner. - BoxWipeTopRight (): A box expands from the upper-right corner to the lower-left corner. - BoxWipeBottomRight (): A box expands from the lower-right corner to the upper-left corner. - BoxWipeBottomLeft (): A box expands from the lower-left corner to the upper-right corner. - FourBoxWipeCornerIn (): A box shape expands from each of the four corners toward the center. - FourBoxWipeCornerOut (): A box shape expands from the center of each quadrant toward the corners of each quadrant. - BarnDoorVertical (): A central, vertical line splits and expands toward the left and right edges. - BarnDoorHorizontal (): A central, horizontal line splits and expands toward the top and bottom edges. - BoxWipeTopCenter (): A box expands from the top edge's midpoint to the bottom corners. - BoxWipeRightCenter (): A box expands from the right edge's midpoint to the left corners. - BoxWipeBottomCenter (): A box expands from the bottom edge's midpoint to the top corners. - BoxWipeLeftCenter (): A box expands from the left edge's midpoint to the right corners. - DiagonalTopLeft (): A diagonal line moves from the upper-left corner to the lower-right corner. - DiagonalTopRight (): A diagonal line moves from the upper right corner to the lower-left corner. - BowtieVertical (): Two wedge shapes slide in from the top and bottom edges toward the center. - BowtieHorizontal (): Two wedge shapes slide in from the left and right edges toward the center. - BarnDoorDiagonalBottomLeft (): Diagonal barn door from bottom-left. - BarnDoorDiagonalTopLeft (): Diagonal barn door from top-left. - MiscDiagonalDoubleBarnDoor (): Miscellaneous diagonal double barn door. - MiscDiagonalDiamond (): Miscellaneous diagonal diamond. - VeeDown (): V-shaped wipe pointing down. - VeeLeft (): V-shaped wipe pointing left. - VeeUp (): V-shaped wipe pointing up. - VeeRight (): V-shaped wipe pointing right. - BarnVeeDown (): Barn door V-shaped wipe pointing down. - BarnVeeLeft (): Barn door V-shaped wipe pointing left. - BarnVeeUp (): Barn door V-shaped wipe pointing up. - BarnVeeRight (): Barn door V-shaped wipe pointing right. - IrisRectangular (): Iris rectangular transition. - ClockwiseFrom12 (): A radial hand sweeps clockwise from the twelve o'clock position. - ClockwiseFrom3 (): A radial hand sweeps clockwise from the three o'clock position. - ClockwiseFrom6 (): A radial hand sweeps clockwise from the six o'clock position. - ClockwiseFrom9 (): A radial hand sweeps clockwise from the nine o'clock position. - PinwheelTopBottomVertical (): Two radial hands sweep clockwise from the twelve and six o'clock positions. - PinwheelTopBottomHorizontal (): Two radial hands sweep clockwise from the nine and three o'clock positions. - PinwheelFourBlade (): Four radial hands sweep clockwise. - FanCenterTop (): A fan unfolds from the top edge, the fan axis at the center. - FanCenterRight (): A fan unfolds from the right edge, the fan axis at the center. - DoubleFanFoldOutVertical (): Two fans, their axes at the center, unfold from the top and bottom. - DoubleFanFoldOutHorizontal (): Two fans, their axes at the center, unfold from the left and right. - SingleSweepClockwiseTop (): A radial hand sweeps clockwise from the top edge's midpoint. - SingleSweepClockwiseRight (): A radial hand sweeps clockwise from the right edge's midpoint. - SingleSweepClockwiseBottom (): A radial hand sweeps clockwise from the bottom edge's midpoint. - SingleSweepClockwiseLeft (): A radial hand sweeps clockwise from the left edge's midpoint. - DoubleSweepParallelVertical (): Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints. - DoubleSweepParallelDiagonal (): Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints. - DoubleSweepOppositeVertical (): Two radial hands attached at the top and bottom edges' midpoints sweep from right to left. - DoubleSweepOppositeHorizontal (): Two radial hands attached at the left and right edges' midpoints sweep from top to bottom. - FanTop (): A fan unfolds from the bottom, the fan axis at the top edge's midpoint. - FanRight (): A fan unfolds from the left, the fan axis at the right edge's midpoint. - FanBottom (): A fan unfolds from the top, the fan axis at the bottom edge's midpoint. - FanLeft (): A fan unfolds from the right, the fan axis at the left edge's midpoint. - DoubleFanFoldInVertical (): Two fans, their axes at the top and bottom, unfold from the center. - DoubleFanFoldInHorizontal (): Two fans, their axes at the left and right, unfold from the center. - SingleSweepClockwiseTopLeft (): A radial hand sweeps clockwise from the upper-left corner. - SingleSweepCounterClockwiseBottomLeft (): A radial hand sweeps counter-clockwise from the lower-left corner. - SingleSweepClockwiseBottomRight (): A radial hand sweeps clockwise from the lower-right corner. - SingleSweepCounterClockwiseTopRight (): A radial hand sweeps counter-clockwise from the upper-right corner. --- # Class SMPTEVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.SMPTEVideoEffect.html # Class SMPTEVideoEffect # Class SMPTEVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a SMPTE (Society of Motion Picture and Television Engineers) transition effect that creates professional wipe transitions between two video sources. ```csharp public class SMPTEVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect implements standard SMPTE transition patterns used in professional video editing, providing a wide variety of wipe transitions between two video sources. SMPTE transitions are industry-standard effects that create geometric patterns to reveal one video while concealing another.

The SMPTE effect supports numerous transition patterns including:

  • Linear Wipes: Horizontal, vertical, and diagonal wipes in all directions
  • Box Wipes: Rectangular and square patterns expanding or contracting
  • Iris Effects: Circular and shaped iris opens and closes
  • Clock Wipes: Radial sweeps like a clock hand
  • Diagonal Wipes: Multi-directional diagonal patterns
  • Special Patterns: Hearts, diamonds, and other shapes

The SMPTE effect is commonly used for:

  • Scene Transitions: Professional transitions between video clips
  • Picture-in-Picture: Revealing secondary video sources
  • Broadcast Graphics: News and sports transition effects
  • Video Editing: Standard editing transitions in professional workflows
  • Live Production: Real-time switching between camera sources

The effect is controlled by the parameter which animates from 0.0 (showing first input) to 1.0 (showing second input). The parameter selects from 256+ standard SMPTE patterns defined by . Optional border highlighting and direction inversion provide additional customization.

This is a cross-platform effect using the smpte element. The effect requires two video inputs (typically configured in a video mixer or compositor).

Performance: Real-time capable on all platforms. GPU-accelerated where available. Minimal CPU overhead. Suitable for live production and editing workflows.

## Constructors ### SMPTEVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public SMPTEVideoEffect(string name = "smpte") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "smpte". ## Fields ### DefaultName The default name for SMPTE transition effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Border Gets or sets the border width in pixels for the transition edge. ```csharp public int Border { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks A non-zero border value creates a visible border line around the transition edge, making the wipe more prominent. The border appears between the two video sources during the transition. Larger values create thicker, more visible borders. ### Depth Gets or sets the transition depth controlling the progress of the wipe. ```csharp public double Depth { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks The depth parameter animates the transition. Gradually increasing depth from 0.0 to 1.0 creates a smooth wipe from the first video to the second. The rate of change determines the transition speed. For a 1-second transition at 30fps, increment depth by ~0.033 per frame. ### Invert Gets or sets whether to invert the transition direction. ```csharp public bool Invert { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When inverted, the transition reveals the second video from the opposite direction. For example, a left-to-right wipe becomes a right-to-left wipe. This provides additional variation without requiring separate transition types. ### StartTime Gets or sets the start time for the SMPTE effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the SMPTE effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### Type Gets or sets the SMPTE transition pattern type. ```csharp public SMPTETransitionType Type { get; set; } ``` #### Property Value Parameters: - (SMPTETransitionType): #### Remarks The transition type defines the geometric pattern used for the wipe. Each pattern is defined by SMPTE standards and numbered for consistency across video editing platforms. See the documentation for the complete list of available patterns. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): A string containing the GStreamer element description for the SMPTE effect. --- # Class SquareVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.SquareVideoEffect.html # Class SquareVideoEffect # Class SquareVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a square perspective mapping effect that creates a zoom-in distortion within a centered rectangular region. ```csharp public class SquareVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect creates a perspective distortion where a centered rectangular region is zoomed in while the surrounding areas are compressed towards the edges. The result is a "tunnel vision" or "magnifying glass" effect where the center is enlarged and the periphery is squeezed, creating a square-shaped focal point.

The square effect is controlled by three parameters:

  • Width & Height: Define the size of the zoomed region (0.0-1.0 relative to frame)
  • Zoom: Controls the magnification level in the center region

The square effect is commonly used for:

  • Focus Effects: Draw attention to center content
  • Tunnel Vision: Simulate focused or stressed perspective
  • Artistic Perspective: Create geometric distortion patterns
  • Transitions: Zoom-based scene transitions
  • Video Games: Simulate focus or targeting effects

This is a cross-platform effect using the square element with parametric perspective mapping. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on modern hardware. GPU-accelerated geometric transformation. Performance scales with resolution and zoom level.

## Constructors ### SquareVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public SquareVideoEffect(string name = "square") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "square". ## Fields ### DefaultName The default name for square effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Height Gets or sets the height of the zoomed square region, relative to the frame height. ```csharp public double Height { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Height defines the vertical size of the region that receives the zoom magnification. Use different width and height values to create rectangular (non-square) focal regions. Matching width and height creates a perfectly square focus area. ### StartTime Gets or sets the start time for the square effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the square effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### Width Gets or sets the width of the zoomed square region, relative to the frame width. ```csharp public double Width { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Width defines the horizontal size of the region that receives the zoom magnification. Smaller values create tighter focal points with more edge compression. Larger values create broader zoom areas with less edge distortion. Values above 0.9 reduce the effect's visibility. ### Zoom Gets or sets the zoom/magnification level applied to the center region. ```csharp public double Zoom { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Zoom controls how much the center region is magnified relative to the edges. Higher zoom values create more dramatic perspective distortion and stronger edge compression. Very high values (5.0+) can create extreme, possibly disorienting effects. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): --- # Class StretchVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.StretchVideoEffect.html # Class StretchVideoEffect # Class StretchVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a stretch distortion effect that creates non-linear scaling and warping of the video image. ```csharp public class StretchVideoEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect applies non-uniform stretching and squeezing distortions to the video, creating elastic, deformable visuals. Unlike simple scaling which maintains aspect ratio or scales uniformly, the stretch effect creates dynamic, organic distortions that can range from subtle warping to extreme deformation.

The stretch effect is controlled by a single parameter that determines the strength of the distortion. The effect creates smooth, flowing deformations that give the impression of the video being pulled, stretched, or squeezed like a rubber surface.

The stretch effect is commonly used for:

  • Artistic Expression: Create surreal, elastic visual effects
  • Music Videos: Dynamic, rhythm-synchronized distortions
  • Transitions: Smooth, organic scene transitions
  • Comedy/Cartoon Effects: Exaggerated stretching for comedic impact
  • Abstract Visuals: Non-realistic, dream-like imagery

The property can be updated dynamically during playback to create animated stretch effects. The effect automatically triggers updates when the intensity changes.

This is a cross-platform effect with real-time distortion rendering. The effect is GPU-accelerated where available for smooth, performant stretching even at high resolutions.

Performance: Real-time capable on modern hardware. GPU-accelerated elastic distortion. The effect uses dynamic property updates for smooth animation.

## Constructors ### StretchVideoEffect(double, string) Initializes a new instance of the class with specified intensity and name. ```csharp public StretchVideoEffect(double intensity = 0.5, string name = "stretch") ``` #### Parameters Parameters: - intensity (double): The distortion intensity. Default is 0.5. Common values:
  • 0.0-0.3: Subtle, gentle stretching
  • 0.4-0.6: Moderate distortion (default range)
  • 0.7-0.9: Strong, dramatic stretching
  • 0.9-1.0: Extreme deformation
- name (string): The unique name for this effect instance. Defaults to "stretch". #### Remarks The intensity parameter controls the strength of the elastic distortion. Higher values create more pronounced stretching and warping. The effect is designed for real-time animation, so the intensity can be changed during playback. ## Fields ### DefaultName The default name for stretch effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Intensity Gets or sets the intensity of the stretch distortion. ```csharp public double Intensity { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Setting this property automatically triggers an update notification via , allowing for smooth animated transitions between different intensity levels during playback. The effect responds immediately to intensity changes. ## Methods ### ToString() Returns a string representation of this stretch effect instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string containing the current intensity value. --- # Class SubtitleOverlaySettings Link: api/VisioForge.Core.Types.X.VideoEffects.SubtitleOverlaySettings.html # Class SubtitleOverlaySettings # Class SubtitleOverlaySettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Subtitle overlay settings. ```csharp public class SubtitleOverlaySettings ``` #### Inheritance #### Inherited Members ## Constructors ### SubtitleOverlaySettings() Initializes a new instance of the class. ```csharp public SubtitleOverlaySettings() ``` ## Properties ### Encoding Gets or sets the encoding. ```csharp public string Encoding { get; set; } ``` #### Property Value Parameters: - (string): ### Font Gets or sets the font. ```csharp public FontSettings Font { get; set; } ``` #### Property Value Parameters: - (FontSettings): ### Offset Gets or sets the offset. ```csharp public TimeSpan Offset { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Visible Gets or sets a value indicating whether this is visible. ```csharp public bool Visible { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class SVGOverlayVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.SVGOverlayVideoEffect.html # Class SVGOverlayVideoEffect # Class SVGOverlayVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents an SVG overlay effect that renders scalable vector graphics on top of video content. ```csharp public class SVGOverlayVideoEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect renders Scalable Vector Graphics (SVG) content as an overlay on video, providing crisp, resolution-independent graphics that scale without quality loss. SVG overlays are perfect for logos, icons, diagrams, and animated graphics that need to maintain quality at any size.

The SVG overlay effect supports:

  • File-Based SVG: Load SVG graphics from external files
  • Inline SVG Data: Embed SVG markup directly in code
  • Absolute Sizing: Specify overlay dimensions in pixels
  • Relative Sizing: Size overlay as percentage of video dimensions
  • Absolute Positioning: Position overlay using pixel coordinates
  • Relative Positioning: Position overlay as percentage of video dimensions
  • Fit-to-Frame: Automatically scale SVG to fill entire video frame
  • Transparency: Full alpha channel support from SVG content

The SVG overlay effect is commonly used for:

  • Branding: Company logos and watermarks with perfect clarity
  • Lower Thirds: Name plates and title graphics for broadcasts
  • Diagrams: Technical illustrations and infographics
  • Icons: Status indicators and UI elements
  • Animated Graphics: SVG animations with SMIL or CSS
  • Multi-Resolution: Content that needs to look sharp at any resolution

SVG graphics provide several advantages over raster images:

  • Scale to any size without quality loss
  • Small file sizes compared to high-resolution raster images
  • Can include animations and interactivity
  • Easy to edit and modify in vector graphics editors
  • Precise control over colors, gradients, and effects

Position and size can be specified using either absolute pixel values or relative percentages. Relative sizing is recommended for responsive layouts that adapt to different video resolutions. Use to automatically scale the SVG to fill the entire video frame, useful for full-frame graphics and backgrounds.

This is a cross-platform effect using the rsvgoverlay element. The effect leverages the librsvg library for SVG rendering.

Performance: Real-time capable for most SVG graphics. Complex SVGs with many paths, gradients, or filters may impact performance. Static SVGs are cached after initial rendering. Animated SVGs require per-frame rendering. Consider SVG complexity for real-time applications.

SVG Feature Support: Supports SVG 1.1 specification. Advanced features like filters, gradients, patterns, and animations are supported. JavaScript in SVG is not executed for security reasons. External references in SVG (xlink:href) may have platform-specific behavior.

## Constructors ### SVGOverlayVideoEffect(string, string) Initializes a new instance of the class. ```csharp public SVGOverlayVideoEffect(string filename, string name = "svg-overlay") ``` #### Parameters Parameters: - filename (string): The path to the SVG file to render as an overlay. - name (string): The unique name for this effect instance. Defaults to "svg-overlay". ## Fields ### DefaultName The default name for SVG overlay effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Data Gets or sets the inline SVG data as a string. ```csharp public string Data { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Use this property to embed SVG content directly in code instead of loading from a file. This is useful for simple graphics, dynamically generated SVG, or when you want to avoid external file dependencies. The string should contain valid SVG XML markup starting with an <svg> root element. ### Filename Gets or sets the path to the SVG file. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Specifies the location of the SVG file to render. The file should contain valid SVG 1.1 content. If is also specified, the inline data takes precedence. Ensure the file path is accessible and the file exists before applying the effect. ### FitToFrame Gets or sets a value indicating whether to fit the SVG to fill the entire video frame. ```csharp public bool FitToFrame { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the SVG is automatically scaled to cover the entire video frame while maintaining its aspect ratio. This is useful for full-frame backgrounds, watermarks, or decorative elements. Position properties are ignored when fit-to-frame is enabled. ### Height Gets or sets the height of the SVG overlay in pixels. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Specifies the absolute height of the rendered SVG in pixels. If both and are 0, the SVG's natural dimensions are used. If only one dimension is specified, the aspect ratio is maintained. Use for resolution-independent sizing. ### HeightRelative Gets or sets the height relative to the video frame height (0.0-1.0). ```csharp public float HeightRelative { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Specifies the height as a percentage of the video frame height, making the overlay scale proportionally with different video resolutions. A value of 0.5 means 50% of the frame height. When specified, this takes precedence over . Useful for responsive overlays that adapt to various video sizes. ### Width Gets or sets the width of the SVG overlay in pixels. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Specifies the absolute width of the rendered SVG in pixels. If both and are 0, the SVG's natural dimensions are used. If only one dimension is specified, the aspect ratio is maintained. Use for resolution-independent sizing. ### WidthRelative Gets or sets the width relative to the video frame width (0.0-1.0). ```csharp public float WidthRelative { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Specifies the width as a percentage of the video frame width, making the overlay scale proportionally with different video resolutions. A value of 0.25 means 25% of the frame width. When specified, this takes precedence over . Ideal for responsive layouts across different video sizes. ### X Gets or sets the horizontal position of the SVG overlay in pixels from the left edge. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Specifies the absolute horizontal position in pixels. Positive values move the overlay right; negative values move it left (potentially off-screen). Use for resolution-independent positioning. ### XRelative Gets or sets the horizontal position relative to the video frame width (0.0-1.0). ```csharp public float XRelative { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Specifies the horizontal position as a percentage of the video frame width. A value of 0.5 centers the overlay horizontally. When specified, this takes precedence over . Enables resolution-independent positioning that adapts to different video sizes. ### Y Gets or sets the vertical position of the SVG overlay in pixels from the top edge. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Specifies the absolute vertical position in pixels. Positive values move the overlay down; negative values move it up (potentially off-screen). Use for resolution-independent positioning. Note: "offsetruh nnn" appears to be a typo in the original. ### YRelative Gets or sets the vertical position relative to the video frame height (0.0-1.0). ```csharp public float YRelative { get; set; } ``` #### Property Value Parameters: - (float): #### Remarks Specifies the vertical position as a percentage of the video frame height. A value of 0.5 centers the overlay vertically. When specified, this takes precedence over . Provides resolution-independent positioning for responsive overlays. --- # Enum TextOverlayHAlign Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayHAlign.html # Enum TextOverlayHAlign # Enum TextOverlayHAlign **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Horizontal alignment of the text. ```csharp public enum TextOverlayHAlign ``` ## Fields Parameters: - Left (): Align text left. - Center (): Align text center. - Right (): Align text right. - Custom (): Position text according to the X property. - Absolute (): Absolute. --- # Enum TextOverlayLineAlign Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayLineAlign.html # Enum TextOverlayLineAlign # Enum TextOverlayLineAlign **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Alignment of text lines relative to each other. ```csharp public enum TextOverlayLineAlign ``` ## Fields Parameters: - Left (): Lines are left-aligned. - Center (): Lines are center-aligned. - Right (): Lines are right-aligned. --- # Enum TextOverlayMode Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayMode.html # Enum TextOverlayMode # Enum TextOverlayMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Text overlay mode. ```csharp public enum TextOverlayMode ``` ## Fields Parameters: - Text (): Custom text. - Timestamp (): Timestamp. - SystemTime (): System time. --- # Class TextOverlaySettings Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlaySettings.html # Class TextOverlaySettings # Class TextOverlaySettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Text overlay settings. ```csharp public class TextOverlaySettings ``` #### Inheritance #### Inherited Members ## Constructors ### TextOverlaySettings(string) Initializes a new instance of the class. ```csharp public TextOverlaySettings(string text) ``` #### Parameters Parameters: - text (string): The text. ## Properties ### AutoAdjustSize Gets or sets a value indicating whether [automatic adjust size]. ```csharp public bool AutoAdjustSize { get; set; } ``` #### Property Value Parameters: - (bool): ### Color Gets or sets the color. ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DeltaX Gets or sets the delta X. ```csharp public int DeltaX { get; set; } ``` #### Property Value Parameters: - (int): ### DeltaY Gets or sets the delta Y. ```csharp public int DeltaY { get; set; } ``` #### Property Value Parameters: - (int): ### Font Gets or sets the font. ```csharp public FontSettings Font { get; set; } ``` #### Property Value Parameters: - (FontSettings): ### HorizontalAlignment Gets or sets the horizontal alignment. ```csharp public TextOverlayHAlign HorizontalAlignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayHAlign): ### LineAlignment Gets or sets the line alignment. ```csharp public TextOverlayLineAlign LineAlignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayLineAlign): ### Mode Gets or sets the mode. ```csharp public TextOverlayMode Mode { get; set; } ``` #### Property Value Parameters: - (TextOverlayMode): ### OutlineColor Gets or sets the color of the outline. ```csharp public SKColor OutlineColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Shading Gets or sets a value indicating whether this is shading. ```csharp public bool Shading { get; set; } ``` #### Property Value Parameters: - (bool): ### Silent Gets or sets a value indicating whether this is silent. ```csharp public bool Silent { get; set; } ``` #### Property Value Parameters: - (bool): ### Text Gets or sets the text. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): ### TimeFormat Gets or sets the time format. ```csharp public string TimeFormat { get; set; } ``` #### Property Value Parameters: - (string): ### VerticalAlignment Gets or sets the vertical alignment. ```csharp public TextOverlayVAlign VerticalAlignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayVAlign): ### VerticalRender Gets or sets a value indicating whether [vertical render]. ```csharp public bool VerticalRender { get; set; } ``` #### Property Value Parameters: - (bool): ### WaitText Gets or sets a value indicating whether [wait text]. ```csharp public bool WaitText { get; set; } ``` #### Property Value Parameters: - (bool): ### WrapMode Gets or sets the wrap mode. ```csharp public TextOverlayWrapMode WrapMode { get; set; } ``` #### Property Value Parameters: - (TextOverlayWrapMode): ### XPad Gets or sets the x pad. ```csharp public int XPad { get; set; } ``` #### Property Value Parameters: - (int): ### XPos Gets or sets the X position. Range is 0.0 - 1.0. ```csharp public double XPos { get; set; } ``` #### Property Value Parameters: - (double): ### YPad Gets or sets the Y pad. ```csharp public int YPad { get; set; } ``` #### Property Value Parameters: - (int): ### YPos Gets or sets the Y position. Range is 0.0 - 1.0. ```csharp public double YPos { get; set; } ``` #### Property Value Parameters: - (double): --- # Enum TextOverlayVAlign Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayVAlign.html # Enum TextOverlayVAlign # Enum TextOverlayVAlign **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Vertical alignment of the text. ```csharp public enum TextOverlayVAlign ``` ## Fields Parameters: - Baseline (): Draw text on the baseline. - Bottom (): Draw text on the bottom. - Top (): Draw text on top. - Custom (): Draw text according to the Y property. - Center (): Draw text vertically centered. - Absolute (): Absolute. --- # Class TextOverlayVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayVideoEffect.html # Class TextOverlayVideoEffect # Class TextOverlayVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a text overlay effect that renders text, timestamps, or system time on video frames. ```csharp public class TextOverlayVideoEffect : BaseVideoEffect, IBaseVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platform Support: Windows, Linux, macOS (not available on Android/iOS)

The text overlay effect provides comprehensive text rendering capabilities with support for multiple modes (static text, system time, timestamps), extensive formatting options, and flexible positioning. Uses SkiaSharp for high-quality text rendering with anti-aliasing and font support.

Key Features:

  • Multiple Modes: Static text, system time display, timestamp overlay
  • Flexible Positioning: Alignment-based (top/bottom/left/right/center) or absolute positioning
  • Rich Formatting: Font family, size, weight, style, color, outline
  • Text Wrapping: Word, character, or combined wrapping modes
  • Background Shading: Optional semi-transparent background for readability
  • Auto-Sizing: Automatic font size adjustment based on video resolution

Common Use Cases:

  • Video watermarks and branding
  • Timestamp overlays for surveillance and logging
  • Real-time system time display
  • Subtitles and captions
  • Debug information overlays

For Classic SDK equivalents, see VideoEffectTextLogo and VideoEffectScrollingTextLogo (Windows only).

Performance Note: Text rendering is performed on CPU. For overlay-intensive applications, consider using the OverlayManager system for better performance with multiple overlays.

## Constructors ### TextOverlayVideoEffect(string) Initializes a new instance of the class. ```csharp public TextOverlayVideoEffect(string name = "text_overlay") ``` #### Parameters Parameters: - name (string): The name. ## Fields ### DefaultName The default name. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### AutoAjustSize Gets or sets a value indicating whether automatically adjust font size to screen-size. ```csharp public bool AutoAjustSize { get; set; } ``` #### Property Value Parameters: - (bool): ### Color Gets or sets color to use for text (big-endian ARGB). ```csharp public SKColor Color { get; set; } ``` #### Property Value Parameters: - (SKColor): ### DeltaX Gets or sets shift X position to the left or to the right. Unit is pixels. ```csharp public int DeltaX { get; set; } ``` #### Property Value Parameters: - (int): ### DeltaY Gets or sets shift Y position up or down. Unit is pixels. ```csharp public int DeltaY { get; set; } ``` #### Property Value Parameters: - (int): ### Font Gets or sets font to be used for rendering. ```csharp public FontSettings Font { get; set; } ``` #### Property Value Parameters: - (FontSettings): ### HorizontalAlignment Gets or sets horizontal alignment of the text. ```csharp public TextOverlayHAlign HorizontalAlignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayHAlign): ### LineAignment Gets or sets alignment of text lines relative to each other (for multi-line text). ```csharp public TextOverlayLineAlign LineAignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayLineAlign): ### Mode Gets or sets the overlay mode determining what text content to display. ```csharp public TextOverlayMode Mode { get; set; } ``` #### Property Value Parameters: - (TextOverlayMode): ### OutlineColor Gets or sets color to use for outline the text (big-endian ARGB). ```csharp public SKColor OutlineColor { get; set; } ``` #### Property Value Parameters: - (SKColor): ### Shading Gets or sets a value indicating whether to shade the background under the text area. ```csharp public bool Shading { get; set; } ``` #### Property Value Parameters: - (bool): ### Text Gets or sets the text content to display. ```csharp public string Text { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks Text can include line breaks for multi-line display. Use to control alignment of multiple lines relative to each other. ### TimeFormat Gets or sets the time format string for system time display. ```csharp public string TimeFormat { get; set; } ``` #### Property Value Parameters: - (string): ### TurnOff Gets or sets a value indicating whether text rendering disabled. ```csharp public bool TurnOff { get; set; } ``` #### Property Value Parameters: - (bool): ### VerticalAlignment Gets or sets vertical alignment of the text. ```csharp public TextOverlayVAlign VerticalAlignment { get; set; } ``` #### Property Value Parameters: - (TextOverlayVAlign): ### VerticalRender Gets or sets a value indicating whether vertical render enabled. ```csharp public bool VerticalRender { get; set; } ``` #### Property Value Parameters: - (bool): ### WrapMode Gets or sets whether to wrap the text and if so how. ```csharp public TextOverlayWrapMode WrapMode { get; set; } ``` #### Property Value Parameters: - (TextOverlayWrapMode): ### XPad Gets or sets horizontal paddding when using left/right alignment. ```csharp public int XPad { get; set; } ``` #### Property Value Parameters: - (int): ### XPos Gets or sets horizontal position when using position alignment. ```csharp public double XPos { get; set; } ``` #### Property Value Parameters: - (double): ### YPad Gets or sets vertical padding when using top/bottom alignment. ```csharp public int YPad { get; set; } ``` #### Property Value Parameters: - (int): ### YPos Gets or sets vertical position when using position alignment. ```csharp public double YPos { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### ToSettings() Converts to settings. ```csharp public TextOverlaySettings ToSettings() ``` #### Returns Parameters: - (TextOverlaySettings): TextOverlaySettings. --- # Enum TextOverlayWrapMode Link: api/VisioForge.Core.Types.X.VideoEffects.TextOverlayWrapMode.html # Enum TextOverlayWrapMode # Enum TextOverlayWrapMode **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Whether to wrap the text and if so how. ```csharp public enum TextOverlayWrapMode ``` ## Fields Parameters: - None (): No wrapping. - Word (): Do word wrapping. - Char (): Do char wrapping. - WordAndChar (): Do word and char wrapping. --- # Class VideoBalanceVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.VideoBalanceVideoEffect.html # Class VideoBalanceVideoEffect # Class VideoBalanceVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a comprehensive cross-platform video balance effect that controls brightness, contrast, saturation, and hue. ```csharp public sealed class VideoBalanceVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK (Cross-platform)

Platforms: Windows, Linux, macOS, Android, iOS

The VideoBalanceVideoEffect provides unified control over multiple color and brightness adjustments in a single effect, making it an efficient choice for comprehensive color correction.

Properties:

  • Brightness: Adjusts overall lightness/darkness (Range: -1.0 to 1.0, Default: 0.0)
  • Contrast: Adjusts difference between light and dark areas (Range: 0.0 to 2.0, Default: 1.0)
  • Saturation: Controls color intensity (Range: 0.0 to 2.0, Default: 1.0)
  • Hue: Shifts colors around the color wheel (Range: -1.0 to 1.0, Default: 0.0)

Performance: Efficient single-pass effect suitable for real-time processing on all platforms.

See Also: For Windows-only applications, see individual Classic effects: VideoEffectDarkness, VideoEffectContrast, VideoEffectSaturation.

## Constructors ### VideoBalanceVideoEffect(string) Initializes a new instance of the class with default balanced values. ```csharp public VideoBalanceVideoEffect(string name = "video-balance") ``` #### Parameters Parameters: - name (string): The unique name identifier for this effect instance. Default value is "video-balance". ## Fields ### DefaultName The default name for the video balance effect. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Brightness Gets or sets the brightness adjustment. ```csharp public double Brightness { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Brightness adjusts the overall lightness or darkness of the image. Negative values darken, positive values lighten. This is a linear adjustment applied uniformly to all pixels. ### Contrast Gets or sets the contrast adjustment. ```csharp public double Contrast { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Contrast adjusts the difference between light and dark areas. Higher values increase the separation between bright and dark tones, making the image appear more dramatic. Lower values reduce the difference, creating a flatter, washed-out appearance. ### Hue Gets or sets the hue shift. ```csharp public double Hue { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Hue shift rotates all colors around the color wheel. For example, positive values shift reds towards yellows, yellows towards greens, etc. This creates artistic color effects while preserving brightness and saturation. ### Saturation Gets or sets the color saturation. ```csharp public double Saturation { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Saturation controls the intensity of colors. A value of 0.0 removes all color, creating a grayscale image. Values above 1.0 make colors more vivid and intense. ### StartTime Gets or sets the time when the effect should start being applied. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopTime Gets or sets the time when the effect should stop being applied. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): --- # Enum VideoBoxFill Link: api/VisioForge.Core.Types.X.VideoEffects.VideoBoxFill.html # Enum VideoBoxFill # Enum VideoBoxFill **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Enum VideoBoxFill. ```csharp public enum VideoBoxFill ``` ## Fields Parameters: - Black (): The black. - Green (): The green. - Blue (): The blue. - Red (): The red. - Yellow (): The yellow. - White (): The white. --- # Class VideoCompositionElement Link: api/VisioForge.Core.Types.X.VideoEffects.VideoCompositionElement.html # Class VideoCompositionElement # Class VideoCompositionElement **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Class VideoCompositionElement. Implements the . ```csharp public class VideoCompositionElement : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoCompositionElement(IBitmap, int, int) Initializes a new instance of the class. ```csharp public VideoCompositionElement(IBitmap image, int x, int y) ``` #### Parameters Parameters: - image (IBitmap): The image. - x (int): The x. - y (int): The y. ## Properties ### Alpha Gets or sets the alpha. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ### X Gets or sets the x. ```csharp public int X { get; set; } ``` #### Property Value Parameters: - (int): ### Y Gets or sets the y. ```csharp public int Y { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### GetGstBuffer() Gets the GST buffer. ```csharp public object GetGstBuffer() ``` #### Returns Parameters: - (object): System.Object. ### GetImage() Gets the image. ```csharp public IBitmap GetImage() ``` #### Returns Parameters: - (IBitmap): Bitmap. ### SetGstBuffer(object) Sets the GST buffer. ```csharp public void SetGstBuffer(object buffer) ``` #### Parameters Parameters: - buffer (object): The buffer. ## See Also --- # Enum VideoEffectID Link: api/VisioForge.Core.Types.X.VideoEffects.VideoEffectID.html # Enum VideoEffectID # Enum VideoEffectID **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video effect ID. ```csharp public enum VideoEffectID ``` ## Fields Parameters: - Resize (): Resize. - Crop (): Crop. - AspectRatioCrop (): The aspect ratio crop. - Balance (): Balance. - FlipRotate (): Flip / rotate. - Gamma (): Gamma. - Deinterlace (): Deinterlace. - AutoDeinterlace (): Auto deinterlace. - ColorEffects (): Color effects. - GaussianBlur (): Gaussian blur. - FishEye (): Fish-eye. - TextOverlay (): Text overlay. - ImageOverlay (): Image overlay. - SVGOverlay (): SVG overlay. - Interlace (): Interlace. - QRCodeOverlay (): The QR code overlay. - Bulge (): Bugle adds a protuberance in the center point. - Circle (): Circle warps the picture into an arc shaped form. - Diffuse (): Diffuse effect diffuses the image by moving its pixels in random directions. - Kaleidoscope (): The kaleidscope element applies 'kaleidoscope' geometric transform to the image. - Marble (): The marble effect applies a marbling effect to the image. - Mirror (): The mirror effect splits the image into two halves and reflects one over each other. - Perspective (): The perspective effect applies a perspective transform to the image. - Pinch (): The pinch effect applies a pinch transform to the image. - Smooth (): The pinch effect applies a smooth effect to the image. - Rotate (): The rotate effect applies a rotation transform to the image. - Sphere (): The sphere effect applies a sphere transform to the image. - Square (): The square effect distorts the center part of the image into a square. - Stretch (): The stretch effect stretches the image in a circle around the center point. - Tunnel (): The tunnel effect is a geometric image transform. It applies a light tunnel effect. - Twirl (): The twirl effect twists the image from the center out. - WaterRipple (): The water ripple effect applies a water ripple effect to the image. - Aging (): Aging video effect ages a video stream, adds scratches, dust, and change colors. - Dice (): The effect dices the screen up into many small squares. Each square is rotated randomly in one of four directions: 0, 90, 180 or 270 degrees. - Edge (): Edge detects edges and display it using low resolution. - Quark (): Quark effect disolves moving objects. - OpticalAnimationBW (): Black and white optical animation effect. - MovingBlur (): Moving blur effect detects a difference from the previous frame and blurs it. - Pseudo3D (): Pseudo3D video effect. - MovingEcho (): Moving echo effect makes echo images of moving objects. - MovingZoomEcho (): Moving-zoom echo effect makes echo images with scaling, rotating and moving. - Warp (): Warp effect. - Ripple (): The ripple effect does ripple mark effect on the video input. - Grayscale (): The grayscale. - OverlayManager (): The image(s) overlay filter. - Box (): The box. - CustomVideoSampleGrabber (): The custom video sample grabber. - LUTProcessor (): The LUT processor. - VideoScale (): Video scale element that resizes video frames. - SimpleVideoMark (): Simple video mark filter that embeds invisible watermarks into video streams. - SimpleVideoMarkDetect (): Simple video mark detect filter that detects watermarks embedded by SimpleVideoMark. - SMPTE (): SMPTE transition effect that creates wipe transitions between two video sources. - SMPTEAlpha (): SMPTE alpha transition effect that creates wipe transitions with alpha channel support. - RoundedCorners (): Rounded corners video effect that adds rounded corners to video frames. - PanZoom (): Pan and zoom video effect that applies zoom and pan transformations to video frames. --- # Enum VideoFlipRotateMethod Link: api/VisioForge.Core.Types.X.VideoEffects.VideoFlipRotateMethod.html # Enum VideoFlipRotateMethod # Enum VideoFlipRotateMethod **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video flip/rotate method. ```csharp [Flags] public enum VideoFlipRotateMethod ``` ## Fields Parameters: - None (): None. - Method90R (): 90 degree right. - Method180 (): 180 degree. - Method90L (): 90 left degree. - MethodHorizontal (): Horizontal. - MethodVertical (): Vertical. --- # Enum VideoMixerBackground Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerBackground.html # Enum VideoMixerBackground # Enum VideoMixerBackground **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video mixer background mode. ```csharp public enum VideoMixerBackground ``` ## Fields Parameters: - Checker (): The checker pattern. - Black (): The black color. - White (): The white color. - Transparent (): The transparent background. --- # Class VideoMixerBaseSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerBaseSettings.html # Class VideoMixerBaseSettings # Class VideoMixerBaseSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video Mixer base settings. ```csharp public class VideoMixerBaseSettings ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### VideoMixerBaseSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public VideoMixerBaseSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ### VideoMixerBaseSettings(int, int, VideoFrameRate, List) Initializes a new instance of the class. ```csharp public VideoMixerBaseSettings(int width, int height, VideoFrameRate frameRate, List streams) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. - streams (List < VideoMixerStream >): The streams. ## Properties ### Background Gets or sets the background. ```csharp public VideoMixerBackground Background { get; set; } ``` #### Property Value Parameters: - (VideoMixerBackground): ### FrameRate Gets or sets the frame rate. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Streams Gets the streams. ```csharp public List Streams { get; } ``` #### Property Value Parameters: - (List < VideoMixerStream >): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### AddStream(VideoMixerStream) Adds the stream. ```csharp public void AddStream(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The stream. ### AddStream(Rect, uint) Adds the stream. ```csharp public void AddStream(Rect rect, uint zorder) ``` #### Parameters Parameters: - rect (Rect): The rectangle. - zorder (uint): Z-order. ### ClearStreams() Clears the streams. ```csharp public void ClearStreams() ``` ### GetStream(int) Gets the stream. ```csharp public VideoMixerStream GetStream(int index) ``` #### Parameters Parameters: - index (int): The index. #### Returns Parameters: - (VideoMixerStream): VideoMixerSettingsStream. ### GetStreamCount() Gets the stream count. ```csharp public int GetStreamCount() ``` #### Returns Parameters: - (int): System.Int32. ### RemoveStream(VideoMixerStream) Removes the stream. ```csharp public void RemoveStream(VideoMixerStream stream) ``` #### Parameters Parameters: - stream (VideoMixerStream): The stream. ### RemoveStream(int) Removes the stream. ```csharp public void RemoveStream(int index) ``` #### Parameters Parameters: - index (int): The stream index. ### SetStream(int, VideoMixerStream) Sets the stream. ```csharp public void SetStream(int index, VideoMixerStream stream) ``` #### Parameters Parameters: - index (int): The index. - stream (VideoMixerStream): The stream. ### SetStreams(List) Sets the streams. ```csharp public void SetStreams(List streams) ``` #### Parameters Parameters: - streams (List < VideoMixerStream >): The streams. --- # Class VideoMixerSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerSettings.html # Class VideoMixerSettings # Class VideoMixerSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video mixer settings. ```csharp public class VideoMixerSettings : VideoMixerBaseSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoMixerSettings(int, int, VideoFrameRate) Initializes a new instance of the class. ```csharp public VideoMixerSettings(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. ### VideoMixerSettings(int, int, VideoFrameRate, List) Initializes a new instance of the class. ```csharp public VideoMixerSettings(int width, int height, VideoFrameRate frameRate, List streams) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. - frameRate (VideoFrameRate): The frame rate. - streams (List < VideoMixerStream >): The streams. --- # Class VideoMixerStream Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerStream.html # Class VideoMixerStream # Class VideoMixerStream **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video mixer stream settings. ```csharp public class VideoMixerStream ``` #### Inheritance #### Derived #### Inherited Members ## Constructors ### VideoMixerStream(Rect, uint, double) Initializes a new instance of the class. ```csharp public VideoMixerStream(Rect rectangle, uint zorder, double alpha = 1) ``` #### Parameters Parameters: - rectangle (Rect): The rectangle. - zorder (uint): The Z-order. - alpha (double): The alpha. ## Properties ### Alpha Gets or sets the transparency value. Range is [0.0..1.0]. Fully-transparent is 0.0 and fully-opaque is 1.0. ```csharp public double Alpha { get; set; } ``` #### Property Value Parameters: - (double): ### ID Gets the unique identifier for this stream. ```csharp public Guid ID { get; } ``` #### Property Value Parameters: - (Guid): ### KeepAspectRatio Gets or sets a value indicating whether to keep aspect ratio. ```csharp public bool KeepAspectRatio { get; set; } ``` #### Property Value Parameters: - (bool): ### Rectangle Gets or sets the rectangle. ```csharp public Rect Rectangle { get; set; } ``` #### Property Value Parameters: - (Rect): ### SourceInfo Gets or sets the source information. ```csharp public VideoFrameInfoX SourceInfo { get; set; } ``` #### Property Value Parameters: - (VideoFrameInfoX): ### ZOrder Gets or sets the z-order of the picture in the composition. ```csharp public uint ZOrder { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. --- # Class VideoMixerStreamChromaKey Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerStreamChromaKey.html # Class VideoMixerStreamChromaKey # Class VideoMixerStreamChromaKey **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video mixer stream with chroma key support. Implements the . ```csharp public class VideoMixerStreamChromaKey : VideoMixerStream ``` #### Inheritance #### Inherited Members ## Constructors ### VideoMixerStreamChromaKey(Rect, uint, ChromaKeySettingsX, double, bool) Initializes a new instance of the class. ```csharp public VideoMixerStreamChromaKey(Rect rectangle, uint zorder, ChromaKeySettingsX chromaKeySettings, double alpha = 1, bool chromaKeyEnabled = true) ``` #### Parameters Parameters: - rectangle (Rect): The rectangle. - zorder (uint): The Z-order. - chromaKeySettings (ChromaKeySettingsX): The chroma key settings. - alpha (double): The alpha. - chromaKeyEnabled (bool): if set to true chroma key is enabled. ## Properties ### ChromaKeyEnabled Gets or sets a value indicating whether chroma key effect is enabled. ```csharp public bool ChromaKeyEnabled { get; set; } ``` #### Property Value Parameters: - (bool): ### ChromaKeySettings Gets or sets the chroma key settings. ```csharp public ChromaKeySettingsX ChromaKeySettings { get; set; } ``` #### Property Value Parameters: - (ChromaKeySettingsX): ## Methods ### ToString() Returns a string that represents the current object. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A string that represents the current object. ### UpdateChromaKeySettings(ChromaKeySettingsX) Updates the chroma key settings. ```csharp public void UpdateChromaKeySettings(ChromaKeySettingsX settings) ``` #### Parameters Parameters: - settings (ChromaKeySettingsX): The new chroma key settings. ## See Also --- # Class VideoMixerStreamPNGSource Link: api/VisioForge.Core.Types.X.VideoEffects.VideoMixerStreamPNGSource.html # Class VideoMixerStreamPNGSource # Class VideoMixerStreamPNGSource **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Video mixer stream image PNG source. Implements the . ```csharp public class VideoMixerStreamPNGSource : VideoMixerStream ``` #### Inheritance #### Inherited Members ## Constructors ### VideoMixerStreamPNGSource(Rect, uint, string) Initializes a new instance of the class. ```csharp public VideoMixerStreamPNGSource(Rect rectangle, uint zorder, string filename) ``` #### Parameters Parameters: - rectangle (Rect): The rectangle. - zorder (uint): The zorder. - filename (string): The filename. ### VideoMixerStreamPNGSource(string, Rect, uint, double) Initializes a new instance of the class with alpha. ```csharp public VideoMixerStreamPNGSource(string filename, Rect rectangle, uint zorder, double alpha) ``` #### Parameters Parameters: - filename (string): The filename. - rectangle (Rect): The rectangle. - zorder (uint): The zorder. - alpha (double): The alpha transparency value (0.0 to 1.0). ## Properties ### Filename Gets or sets the image filename. ```csharp public string Filename { get; } ``` #### Property Value Parameters: - (string): ## Methods ### GetPrevFilename() Gets the previous filename. ```csharp public string GetPrevFilename() ``` #### Returns Parameters: - (string): System.String. ### UpdateFilename(string) Updates the filename. ```csharp public void UpdateFilename(string filename) ``` #### Parameters Parameters: - filename (string): The filename. ## See Also --- # Class VideoPaddingChangerSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoPaddingChangerSettings.html # Class VideoPaddingChangerSettings # Class VideoPaddingChangerSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Class VideoPaddingChangerSettings. ```csharp public class VideoPaddingChangerSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoPaddingChangerSettings(int, int, int, int) Initializes a new instance of the class. ```csharp public VideoPaddingChangerSettings(int left, int top, int width, int height) ``` #### Parameters Parameters: - left (int): The left. - top (int): The top. - width (int): The width. - height (int): The height. ## Properties ### Height Gets or sets the height. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Left Gets or sets the left. ```csharp public int Left { get; set; } ``` #### Property Value Parameters: - (int): ### Top Gets or sets the top. ```csharp public int Top { get; set; } ``` #### Property Value Parameters: - (int): ### Width Gets or sets the width. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum VideoScaleMethod Link: api/VisioForge.Core.Types.X.VideoEffects.VideoScaleMethod.html # Enum VideoScaleMethod # Enum VideoScaleMethod **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll The video scale method. ```csharp public enum VideoScaleMethod ``` ## Fields Parameters: - NearestNeighbour (): Nearest neighbour scaling (fast and low quality). - Bilinear (): 2-tap bilinear scaling (slow, middle quality). - R4TAP (): 4-tap sinc filter for scaling (slow). - Lanczos (): Multitap Lanczos filter for scaling (slow, high quality). - BilinearMultitap (): Multitap bilinear filter - Sinc (): Multitap sinc filter. - Hermite (): Multitap bicubic Hermite filter. - Spline (): Multitap bicubic spline filter. - Catrom (): Multitap bicubic Catmull-Rom filter. - Mitchell (): Multitap bicubic Mitchell filter. --- # Class VideoStreamDynamicPanSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoStreamDynamicPanSettings.html # Class VideoStreamDynamicPanSettings # Class VideoStreamDynamicPanSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Settings for dynamic pan (translation) transformation of the original video stream. The pan values are interpolated between start and stop values based on the timestamp. This is applied before any overlays are drawn. ```csharp public class VideoStreamDynamicPanSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoStreamDynamicPanSettings() Initializes a new instance of the class. ```csharp public VideoStreamDynamicPanSettings() ``` ### VideoStreamDynamicPanSettings(double, double, double, double, TimeSpan, TimeSpan) Initializes a new instance of the class with specified parameters. ```csharp public VideoStreamDynamicPanSettings(double startPanX, double startPanY, double stopPanX, double stopPanY, TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startPanX (double): The starting horizontal pan offset in pixels. - startPanY (double): The starting vertical pan offset in pixels. - stopPanX (double): The ending horizontal pan offset in pixels. - stopPanY (double): The ending vertical pan offset in pixels. - startTime (TimeSpan): The start time. - stopTime (TimeSpan): The stop time. ## Properties ### Enabled Gets or sets a value indicating whether the dynamic pan is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### StartPanX Gets or sets the starting horizontal pan offset in pixels. ```csharp public double StartPanX { get; set; } ``` #### Property Value Parameters: - (double): ### StartPanY Gets or sets the starting vertical pan offset in pixels. ```csharp public double StartPanY { get; set; } ``` #### Property Value Parameters: - (double): ### StartTime Gets or sets the start time when the dynamic pan effect begins. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopPanX Gets or sets the ending horizontal pan offset in pixels. ```csharp public double StopPanX { get; set; } ``` #### Property Value Parameters: - (double): ### StopPanY Gets or sets the ending vertical pan offset in pixels. ```csharp public double StopPanY { get; set; } ``` #### Property Value Parameters: - (double): ### StopTime Gets or sets the stop time when the dynamic pan effect ends. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### GetInterpolatedValues(TimeSpan, out double, out double) Calculates the interpolated pan values at the specified timestamp. ```csharp public void GetInterpolatedValues(TimeSpan timestamp, out double panX, out double panY) ``` #### Parameters Parameters: - timestamp (TimeSpan): The current timestamp. - panX (double): The interpolated horizontal pan offset. - panY (double): The interpolated vertical pan offset. --- # Class VideoStreamDynamicZoomSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoStreamDynamicZoomSettings.html # Class VideoStreamDynamicZoomSettings # Class VideoStreamDynamicZoomSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Settings for dynamic zoom transformation of the original video stream. The zoom values are interpolated between start and stop values based on the timestamp. This is applied before any overlays are drawn. ```csharp public class VideoStreamDynamicZoomSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoStreamDynamicZoomSettings() Initializes a new instance of the class. ```csharp public VideoStreamDynamicZoomSettings() ``` ### VideoStreamDynamicZoomSettings(double, double, double, double, TimeSpan, TimeSpan) Initializes a new instance of the class with specified parameters. ```csharp public VideoStreamDynamicZoomSettings(double startZoomX, double startZoomY, double stopZoomX, double stopZoomY, TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startZoomX (double): The starting horizontal zoom factor. - startZoomY (double): The starting vertical zoom factor. - stopZoomX (double): The ending horizontal zoom factor. - stopZoomY (double): The ending vertical zoom factor. - startTime (TimeSpan): The start time. - stopTime (TimeSpan): The stop time. ## Properties ### Enabled Gets or sets a value indicating whether the dynamic zoom is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### StartCenterX Gets or sets the starting horizontal center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double StartCenterX { get; set; } ``` #### Property Value Parameters: - (double): ### StartCenterY Gets or sets the starting vertical center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double StartCenterY { get; set; } ``` #### Property Value Parameters: - (double): ### StartTime Gets or sets the start time when the dynamic zoom effect begins. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StartZoomX Gets or sets the starting horizontal zoom factor. A value of 1.0 means no zoom. ```csharp public double StartZoomX { get; set; } ``` #### Property Value Parameters: - (double): ### StartZoomY Gets or sets the starting vertical zoom factor. A value of 1.0 means no zoom. ```csharp public double StartZoomY { get; set; } ``` #### Property Value Parameters: - (double): ### StopCenterX Gets or sets the ending horizontal center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double StopCenterX { get; set; } ``` #### Property Value Parameters: - (double): ### StopCenterY Gets or sets the ending vertical center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double StopCenterY { get; set; } ``` #### Property Value Parameters: - (double): ### StopTime Gets or sets the stop time when the dynamic zoom effect ends. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### StopZoomX Gets or sets the ending horizontal zoom factor. A value of 1.0 means no zoom. ```csharp public double StopZoomX { get; set; } ``` #### Property Value Parameters: - (double): ### StopZoomY Gets or sets the ending vertical zoom factor. A value of 1.0 means no zoom. ```csharp public double StopZoomY { get; set; } ``` #### Property Value Parameters: - (double): ## Methods ### GetInterpolatedValues(TimeSpan, out double, out double, out double, out double) Calculates the interpolated zoom values at the specified timestamp. ```csharp public void GetInterpolatedValues(TimeSpan timestamp, out double zoomX, out double zoomY, out double centerX, out double centerY) ``` #### Parameters Parameters: - timestamp (TimeSpan): The current timestamp. - zoomX (double): The interpolated horizontal zoom factor. - zoomY (double): The interpolated vertical zoom factor. - centerX (double): The interpolated horizontal center point. - centerY (double): The interpolated vertical center point. --- # Class VideoStreamPanSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoStreamPanSettings.html # Class VideoStreamPanSettings # Class VideoStreamPanSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Settings for static pan (translation) transformation of the original video stream. This is applied before any overlays are drawn. ```csharp public class VideoStreamPanSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoStreamPanSettings() Initializes a new instance of the class. ```csharp public VideoStreamPanSettings() ``` ### VideoStreamPanSettings(double, double) Initializes a new instance of the class with specified pan values. ```csharp public VideoStreamPanSettings(double panX, double panY) ``` #### Parameters Parameters: - panX (double): The horizontal pan offset in pixels. - panY (double): The vertical pan offset in pixels. ## Properties ### Enabled Gets or sets a value indicating whether the pan is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### PanX Gets or sets the horizontal pan offset in pixels. Positive values move the video to the right, negative values move it to the left. ```csharp public double PanX { get; set; } ``` #### Property Value Parameters: - (double): ### PanY Gets or sets the vertical pan offset in pixels. Positive values move the video down, negative values move it up. ```csharp public double PanY { get; set; } ``` #### Property Value Parameters: - (double): --- # Class VideoStreamRectSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoStreamRectSettings.html # Class VideoStreamRectSettings # Class VideoStreamRectSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Settings for drawing the video stream into a target rectangle. The video is resized and positioned to fit within the specified rectangle. ```csharp public class VideoStreamRectSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoStreamRectSettings() Initializes a new instance of the class. ```csharp public VideoStreamRectSettings() ``` ### VideoStreamRectSettings(Rect) Initializes a new instance of the class with specified rectangle. ```csharp public VideoStreamRectSettings(Rect targetRect) ``` #### Parameters Parameters: - targetRect (Rect): The target rectangle where the video will be drawn. ### VideoStreamRectSettings(int, int, int, int) Initializes a new instance of the class with specified coordinates. ```csharp public VideoStreamRectSettings(int left, int top, int right, int bottom) ``` #### Parameters Parameters: - left (int): The left coordinate of the target rectangle. - top (int): The top coordinate of the target rectangle. - right (int): The right coordinate of the target rectangle. - bottom (int): The bottom coordinate of the target rectangle. ## Properties ### Enabled Gets or sets a value indicating whether the rect transformation is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### TargetRect Gets or sets the target rectangle where the video will be drawn. The video will be scaled and positioned to fit within this rectangle. ```csharp public Rect TargetRect { get; set; } ``` #### Property Value Parameters: - (Rect): ## Methods ### FromPositionAndSize(int, int, int, int) Initializes a new instance of the class with specified position and size. ```csharp public static VideoStreamRectSettings FromPositionAndSize(int x, int y, int width, int height) ``` #### Parameters Parameters: - x (int): The x-coordinate of the top-left corner. - y (int): The y-coordinate of the top-left corner. - width (int): The width of the target rectangle. - height (int): The height of the target rectangle. #### Returns Parameters: - (VideoStreamRectSettings): --- # Class VideoStreamZoomSettings Link: api/VisioForge.Core.Types.X.VideoEffects.VideoStreamZoomSettings.html # Class VideoStreamZoomSettings # Class VideoStreamZoomSettings **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Settings for static zoom transformation of the original video stream. This is applied before any overlays are drawn. ```csharp public class VideoStreamZoomSettings ``` #### Inheritance #### Inherited Members ## Constructors ### VideoStreamZoomSettings() Initializes a new instance of the class. ```csharp public VideoStreamZoomSettings() ``` ### VideoStreamZoomSettings(double, double) Initializes a new instance of the class with specified zoom values. ```csharp public VideoStreamZoomSettings(double zoomX, double zoomY) ``` #### Parameters Parameters: - zoomX (double): The horizontal zoom factor. - zoomY (double): The vertical zoom factor. ### VideoStreamZoomSettings(double, double, double, double) Initializes a new instance of the class with specified zoom and center values. ```csharp public VideoStreamZoomSettings(double zoomX, double zoomY, double centerX, double centerY) ``` #### Parameters Parameters: - zoomX (double): The horizontal zoom factor. - zoomY (double): The vertical zoom factor. - centerX (double): The horizontal center point (0.0 to 1.0). - centerY (double): The vertical center point (0.0 to 1.0). ## Properties ### CenterX Gets or sets the horizontal center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double CenterX { get; set; } ``` #### Property Value Parameters: - (double): ### CenterY Gets or sets the vertical center point for the zoom (0.0 to 1.0). A value of 0.5 means the center of the video. ```csharp public double CenterY { get; set; } ``` #### Property Value Parameters: - (double): ### Enabled Gets or sets a value indicating whether the zoom is enabled. ```csharp public bool Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### ZoomX Gets or sets the horizontal zoom factor. A value of 1.0 means no zoom, values greater than 1.0 zoom in, values less than 1.0 zoom out. ```csharp public double ZoomX { get; set; } ``` #### Property Value Parameters: - (double): ### ZoomY Gets or sets the vertical zoom factor. A value of 1.0 means no zoom, values greater than 1.0 zoom in, values less than 1.0 zoom out. ```csharp public double ZoomY { get; set; } ``` #### Property Value Parameters: - (double): --- # Class WarpVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.WarpVideoEffect.html # Class WarpVideoEffect # Class WarpVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a warp effect that creates dynamic, random spatial distortions simulating analog video signal degradation. ```csharp public class WarpVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates the visual distortions characteristic of corrupted or degraded analog video signals, such as VHS tapes, damaged video equipment, or signal interference. The warp effect applies random spatial deformations to the video image, creating waves, ripples, and irregular distortions that change over time.

The warp effect creates an unpredictable, chaotic visual style that evokes:

  • VHS Degradation: Damaged or worn videotape artifacts
  • Signal Interference: Broadcast or transmission errors
  • Glitch Aesthetics: Intentional digital corruption effects
  • Retro Video: 1980s/1990s analog video equipment issues
  • Psychedelic Effects: Trippy, reality-bending visuals

The warp effect is commonly used for:

  • Retro Aesthetics: VHS, lo-fi, or vintage video looks
  • Glitch Art: Intentional video corruption for artistic effect
  • Horror/Thriller: Unsettling, distorted reality effects
  • Music Videos: Energetic, unpredictable visual dynamics
  • Transitions: Warped, chaotic scene transitions

This effect applies fixed warping patterns with no adjustable parameters. The distortion is generated procedurally and changes randomly over time, creating organic, unpredictable results.

This is a cross-platform effect using the warptv element. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on most hardware. GPU-accelerated geometric transformation. The random nature of the effect ensures unique distortions each time.

## Constructors ### WarpVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public WarpVideoEffect(string name = "warp") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "warp". ## Fields ### DefaultName The default name for warp effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### StartTime Gets or sets the start time for the warp effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live processing scenarios, the effect applies continuous random warping. ### StopTime Gets or sets the stop time for the warp effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. In live processing scenarios, the effect applies continuous random warping. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): --- # Class WaterRippleVideoEffect Link: api/VisioForge.Core.Types.X.VideoEffects.WaterRippleVideoEffect.html # Class WaterRippleVideoEffect # Class WaterRippleVideoEffect **Namespace**: VisioForge.Core.Types.X.VideoEffects **Assembly**: VisioForge.Core.dll Represents a water ripple effect that simulates light refraction through water waves with precise control over wave properties. ```csharp public class WaterRippleVideoEffect : BaseVideoEffect, IBaseVideoEffect, IVideoEditXVideoEffect ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

SDK Availability: VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX, Media Blocks SDK

Platforms: Windows, Linux, macOS, Android, iOS

This effect simulates the visual distortions seen when viewing objects through water with wave motion on the surface. Unlike which creates dynamic ripples from motion or rain, this effect generates continuous, configurable sine-wave-based water distortions across the entire frame.

The water ripple effect provides precise control over three wave parameters:

  • Amplitude: Height/strength of the water waves (distortion intensity)
  • Wavelength: Distance between wave peaks (pattern size)
  • Phase: Wave offset/position (creates motion when animated)

The water ripple effect is commonly used for:

  • Underwater Scenes: Simulate viewing through water surface
  • Reflections: Create water reflection effects
  • Dream Sequences: Surreal, fluid visual effects
  • Transitions: Liquid-like scene transitions
  • Music Videos: Flowing, wave-like visual dynamics
  • Artistic Effects: Abstract, water-themed visuals

To create animated water motion, adjust the parameter over time. The phase controls where in the wave cycle the distortion begins, so incrementing phase creates the appearance of waves moving across the frame.

This is a cross-platform effect using the waterripple element. The effect is GPU-accelerated where available for real-time performance.

Performance: Real-time capable on most modern hardware. GPU-accelerated sinusoidal distortion rendering. Performance is consistent regardless of parameter values.

## Constructors ### WaterRippleVideoEffect(string) Initializes a new instance of the class with specified name. ```csharp public WaterRippleVideoEffect(string name = "water-ripple") ``` #### Parameters Parameters: - name (string): The unique name for this effect instance. Defaults to "water-ripple". ## Fields ### DefaultName The default name for water ripple effects. ```csharp public static string DefaultName ``` #### Field Value Parameters: - (string): ## Properties ### Amplitude Gets or sets the amplitude (height/strength) of the water waves. ```csharp public double Amplitude { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Amplitude controls how far pixels are displaced by the water wave effect. Higher values create stronger distortion. Very high values (40+) can create extreme warping that may be disorienting. ### Phase Gets or sets the phase offset of the water waves in radians. ```csharp public double Phase { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Phase controls the starting position within the wave cycle. Incrementing phase over time creates the appearance of waves moving across the frame. For example, increasing phase by 0.1 per frame creates smooth wave animation. Use modulo 2π to keep values in a reasonable range. ### StartTime Gets or sets the start time for the water ripple effect (VideoEditCoreX only). ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### StopTime Gets or sets the stop time for the water ripple effect (VideoEditCoreX only). ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This property is only used in VideoEditCoreX for time-based effect control. ### WaveLength Gets or sets the wavelength (distance between wave peaks) of the water ripples. ```csharp public double WaveLength { get; set; } ``` #### Property Value Parameters: - (double): #### Remarks Wavelength determines the spatial frequency of the water waves. Smaller values create tighter, more frequent ripples. Larger values create broader, slower-moving wave patterns. Very small wavelengths (below 8.0) may create aliasing artifacts. ## Methods ### GenerateDescription() Generates the description. ```csharp public string GenerateDescription() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): --- # Namespace VisioForge.Core.Types.X.VideoEffects Link: api/VisioForge.Core.Types.X.VideoEffects.html # Namespace VisioForge.Core.Types.X.VideoEffects # Namespace VisioForge.Core.Types.X.VideoEffects ### Classes Parameters: - (): Represents an aging video effect that simulates old, deteriorated film or video footage. - (): Represents an aspect ratio crop effect that automatically crops video to match a target aspect ratio. - (): Auto deinterlace settings. - (): Base video effect. - (): Represents a box effect that adds borders/padding or crops video with flexible fill options. - (): Represents a chroma key (green/blue screen) settings class for removing background colors from video. - (): Represents a circular arc perspective effect that maps the video onto a circular arc segment creating cylindrical distortion. - (): Represents a color effects video effect that applies artistic color transformations using preset filters. - (): Represents a video crop effect that removes pixels from the edges of video frames. - (): Custom video sample grabber effect that allows capturing video frames for processing. - (): Deinterlace settings. - (): Represents a cross-platform deinterlacing video effect that converts interlaced video to progressive. - (): Represents a dice/pixelation effect that divides the video into a grid of square blocks with randomly shuffled positions. - (): Represents an edge detection effect that highlights boundaries and contours in video. - (): Represents a fish-eye lens distortion effect that simulates wide-angle lens distortion. - (): Represents a cross-platform video flip and rotation effect for geometric transformations. - (): Font settings. - (): Represents a gamma correction video effect that adjusts the overall brightness/darkness curve of the video. - (): Represents a cross-platform Gaussian blur video effect with adjustable blur intensity. - (): Represents a cross-platform grayscale (black and white) video effect that converts color video to monochrome. - (): Cairo-based image overlay video effect that provides high-quality rendering and cross-platform compatibility. This effect uses the Cairo graphics library for overlaying images onto video streams, offering superior rendering quality and better support across different platforms compared to the standard GdkPixbuf-based implementation. Supports all standard overlay features including positioning, scaling, transparency, and timing control, while providing smoother alpha blending and better performance for complex overlay scenarios. - (): Image overlay settings. - (): Represents an image overlay effect that composites static images (watermarks, logos) onto video frames. - (): Interlace settings. - (): Represents a kaleidoscope effect that creates symmetrical, mirrored patterns from video content. - (): Represents a LUT (Look-Up Table) effect for professional color grading and color correction. Supported formats: 3dl (AfterEffects), cube (Iridas), dat (DaVinci), m3d (Pandora), csp (cineSpace). - (): Represents a marble texture distortion effect that applies procedural marble-like patterns to video. - (): Represents a motion-sensitive blur effect that creates radioactive or strobe-like visual distortions. - (): Represents a motion echo effect that creates visible trails following moving objects in the video. - (): Represents a moving zoom echo effect that combines radial motion with zooming for a vertigo-inducing visual distortion. - (): Represents a black and white optical animation effect that creates dynamic, pulsating monochrome patterns triggered by luminance thresholds. - (): Represents a background image for the overlay manager that can be stretched and rendered behind other overlay elements. Implements the - (): Represents a rectangular background for the overlay manager with configurable color, fill mode, and margins. Implements the - (): Represents a square background for the overlay manager with configurable color, fill mode, and margins. Implements the - (): Represents a star-shaped background for the overlay manager with configurable stroke color, fill color, and zoom ratio. Implements the - (): Represents a triangular background for the overlay manager defined by three points. Implements the - (): Overlay Manager callback element. Provides a way to draw custom overlay using Cairo. Implements the . - (): Overlay Manager callback args. Implements the . - (): Overlay Manager circle element. Implements the . - (): Overlay Manager Date/Time overlay. Set Text to "some text [DATETIME] other text" string to use date/time. Implements the . - (): Decklink video overlay element that captures video from Decklink devices in the overlay manager. - (): Fade effect for overlay manager that fades the video in from black or out to black. Implements the interface. - (): Overlay Manager GIF element. Implements the . Implements the . - (): A group of overlay elements that start and stop synchronously. This is particularly useful for video overlays that need to be preloaded and started at the exact same time. Implements the . - (): Overlay Manager image. Implements the . - (): Overlay Manager line element. Implements the . - (): NDI video overlay element that captures video from NDI sources in the overlay manager. - (): Pan effect for overlay manager that animates the visible area between a start rectangle and a stop rectangle over time. This creates a smooth panning and zooming effect commonly used in Ken Burns-style video presentations. Implements the interface. - (): Overlay Manager rectangle element. Implements the . - (): Overlay Manager SVG image. Implements the . - (): Overlay Manager Scrolling Text element for displaying scrolling text overlays. Implements the . - (): Shadow settings for overlay manager elements. - (): Squeezeback effect element that scales the video to a custom rectangle and draws an image overlay on top with alpha transparency support. The typical use case is a full-frame PNG image with transparent areas where the scaled video shows through. Implements the interface. - (): Overlay Manager star element. Implements the . - (): Overlay Manager Text element. Implements the . - (): Overlay Manager triangle element. Implements the . - (): Video overlay element that plays video files in the overlay manager. - (): Zoom effect for overlay manager that scales and shifts the video content. This effect allows zooming into the video with configurable X/Y scaling ratios and pixel-based shift offsets for positioning the zoomed area. Implements the interface. - (): Represents a pseudo-3D depth effect that creates a TV scanline-style appearance with motion-triggered updates. - (): Represents a quark effect that divides the video into multiple moving color planes creating a segmented, layered appearance. - (): Represents a video resize effect that scales video to a target resolution with high-quality scaling algorithms. - (): Represents a ripple effect that creates water-like distortions triggered by motion detection or simulated rain drops. - (): Represents a SMPTE alpha transition effect that creates wipe transitions with full alpha channel support for transparency control. - (): Represents a SMPTE (Society of Motion Picture and Television Engineers) transition effect that creates professional wipe transitions between two video sources. - (): Represents an SVG overlay effect that renders scalable vector graphics on top of video content. - (): Represents a smooth/median filter effect that reduces noise and softens video while preserving edges. - (): Represents a square perspective mapping effect that creates a zoom-in distortion within a centered rectangular region. - (): Represents a stretch distortion effect that creates non-linear scaling and warping of the video image. - (): Subtitle overlay settings. - (): Text overlay settings. - (): Represents a text overlay effect that renders text, timestamps, or system time on video frames. - (): Represents a comprehensive cross-platform video balance effect that controls brightness, contrast, saturation, and hue. - (): Class VideoCompositionElement. Implements the . - (): Video Mixer base settings. - (): Video mixer settings. - (): Video mixer stream settings. - (): Video mixer stream with chroma key support. Implements the . - (): Video mixer stream image PNG source. Implements the . - (): Class VideoPaddingChangerSettings. - (): Settings for dynamic pan (translation) transformation of the original video stream. The pan values are interpolated between start and stop values based on the timestamp. This is applied before any overlays are drawn. - (): Settings for dynamic zoom transformation of the original video stream. The zoom values are interpolated between start and stop values based on the timestamp. This is applied before any overlays are drawn. - (): Settings for static pan (translation) transformation of the original video stream. This is applied before any overlays are drawn. - (): Settings for drawing the video stream into a target rectangle. The video is resized and positioned to fit within the specified rectangle. - (): Settings for static zoom transformation of the original video stream. This is applied before any overlays are drawn. - (): Represents a warp effect that creates dynamic, random spatial distortions simulating analog video signal degradation. - (): Represents a water ripple effect that simulates light refraction through water waves with precise control over wave properties. ### Interfaces Parameters: - (): Base video effect interface. - (): Marker interface for overlay manager background elements. - (): Interface for overlay manager elements that can be rendered on video. - (): Interface for video effects that can be used in VideoEditX. ### Enums Parameters: - (): Chroma key color options. - (): Color effects preset. - (): Deinterlace field layout. - (): Deinterlace fields. - (): Deinterlace locking mode. - (): Deinterlace methods. - (): Deinterlace mode. - (): The width of the font relative to other designs within a family. - (): Font style. - (): Font weight constants. - (): Interlace pattern. - (): Specifies the method used for interpolating values between defined points in a 3D space. Each method offers different trade-offs between computational complexity, accuracy, and smoothness. - (): Mirror mode. - (): Moving blur effect color. - (): Moving blur effect mode. - (): Optical animation mode. - (): Type of fade effect. - (): Defines the stretch modes for overlay manager images. - (): Interpolation modes for scaling video content in overlay manager effects. These modes determine the quality and performance trade-offs when resizing or transforming video content. - (): Easing functions for pan animation. - (): Ripple mode. - (): SMPTE transition types for professional video wipe effects. These values correspond exactly to the GStreamer SMPTE transition types. Values and descriptions are from the official GStreamer documentation. - (): Specifies the direction of scrolling for scrolling text overlays. - (): Horizontal alignment of the text. - (): Alignment of text lines relative to each other. - (): Text overlay mode. - (): Vertical alignment of the text. - (): Whether to wrap the text and if so how. - (): Enum VideoBoxFill. - (): Video effect ID. - (): Video flip/rotate method. - (): Video mixer background mode. - (): The video scale method. --- # Class CustomVideoEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoder.CustomVideoEncoderSettings.html # Class CustomVideoEncoderSettings # Class CustomVideoEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoder **Assembly**: VisioForge.Core.dll Custom video encoder settings. Implements the ```csharp public class CustomVideoEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CustomVideoEncoderSettings(string) Initializes a new instance of the class. ```csharp public CustomVideoEncoderSettings(string name) ``` #### Parameters Parameters: - name (string): The name. ## Properties ### Name Gets the name. ```csharp public string Name { get; } ``` #### Property Value Parameters: - (string): ### Properties Gets the properties. ```csharp public Dictionary Properties { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### Enumerate(CustomVideoEncoderType) Enumerates the specified type. ```csharp public static ElementX[] Enumerate(CustomVideoEncoderType type_) ``` #### Parameters Parameters: - type_ (CustomVideoEncoderType): The type. #### Returns Parameters: - (ElementX [ ]): ElementX[]. #### Exceptions Parameters: - (ArgumentOutOfRangeException): type_ - null ## See Also --- # Enum CustomVideoEncoderType Link: api/VisioForge.Core.Types.X.VideoEncoder.CustomVideoEncoderType.html # Enum CustomVideoEncoderType # Enum CustomVideoEncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoder **Assembly**: VisioForge.Core.dll Custom video encoder type. ```csharp public enum CustomVideoEncoderType ``` ## Fields Parameters: - H264 (): The H264. - HEVC (): The HEVC. - VP8 (): The VP8. - VP9 (): The VP9. --- # Namespace VisioForge.Core.Types.X.VideoEncoder Link: api/VisioForge.Core.Types.X.VideoEncoder.html # Namespace VisioForge.Core.Types.X.VideoEncoder # Namespace VisioForge.Core.Types.X.VideoEncoder ### Classes Parameters: - (): Custom video encoder settings. Implements the ### Enums Parameters: - (): Custom video encoder type. --- # Enum AMFAV1EncoderPreset Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFAV1EncoderPreset.html # Enum AMFAV1EncoderPreset # Enum AMFAV1EncoderPreset **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Encoding quality presets for AMD AMF AV1 encoder. ```csharp public enum AMFAV1EncoderPreset ``` ## Fields Parameters: - Default (): Default, depends on USAGE - HighQuality (): High quality - Quality (): Quality - Balanced (): Balanced - Speed (): Speed --- # Class AMFAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFAV1EncoderSettings.html # Class AMFAV1EncoderSettings # Class AMFAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for AMD AMF AV1 encoder. Implements the ```csharp public class AMFAV1EncoderSettings : IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bitrate Gets or sets the target bitrate in kbit/sec. ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks 0 uses the default value based on the Usage setting. ### GOPSize Gets or sets the Group of Pictures (GOP) size. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Specifies the number of pictures within a GOP. Default is 30. ### MaxBitrate Gets or sets the maximum bitrate in kbit/sec. ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks 0 uses the default value based on the Usage setting. ### MaxQpI Gets or sets the maximum allowed QP (Quantization Parameter) value for I frames. ```csharp public int MaxQpI { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks -1 uses the default value based on the Usage setting. Default is -1. ### MaxQpP Gets or sets the maximum allowed QP (Quantization Parameter) value for P frames. ```csharp public int MaxQpP { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks -1 uses the default value based on the Usage setting. Default is -1. ### MinQpI Gets or sets the minimum allowed QP (Quantization Parameter) value for I frames. ```csharp public int MinQpI { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks -1 uses the default value based on the Usage setting. Default is -1. ### MinQpP Gets or sets the minimum allowed QP (Quantization Parameter) value for P frames. ```csharp public int MinQpP { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks -1 uses the default value based on the Usage setting. Default is -1. ### Preset Gets or sets the encoding quality preset. ```csharp public AMFAV1EncoderPreset Preset { get; set; } ``` #### Property Value Parameters: - (AMFAV1EncoderPreset): #### Remarks Default is AMFAV1EncoderPreset.Default. ### QpI Gets or sets the constant QP (Quantization Parameter) for I frames. ```csharp public uint QpI { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used when rate control is set to CQP. Default is 26. ### QpP Gets or sets the constant QP (Quantization Parameter) for P frames. ```csharp public uint QpP { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used when rate control is set to CQP. Default is 26. ### RateControl Gets or sets the rate control method. ```csharp public AMFAV1RateControlMode RateControl { get; set; } ``` #### Property Value Parameters: - (AMFAV1RateControlMode): #### Remarks Default is AMFAV1RateControlMode.Default. ### RefFrames Gets or sets the number of reference frames. ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Default is 1. ### SmartAccessVideo Gets or sets a value indicating whether AMF SmartAccess Video feature is enabled. ```csharp public bool SmartAccessVideo { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks SmartAccess Video enables GPU-to-GPU direct memory access for improved performance. ### Usage Gets or sets the target usage scenario. ```csharp public AMFAV1EncoderUsage Usage { get; set; } ``` #### Property Value Parameters: - (AMFAV1EncoderUsage): #### Remarks Default is AMFAV1EncoderUsage.Transcoding. ## Methods ### CreateBlock() Creates a new AV1 encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for AV1 encoding. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): The indicating this is an AMF encoder. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ## See Also --- # Enum AMFAV1EncoderUsage Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFAV1EncoderUsage.html # Enum AMFAV1EncoderUsage # Enum AMFAV1EncoderUsage **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines the usage scenarios for AMD AMF AV1 encoder. ```csharp public enum AMFAV1EncoderUsage ``` ## Fields Parameters: - Transcoding (): Optimized for transcoding scenarios with balanced quality and performance. - LowLatency (): Optimized for low latency applications such as streaming or real-time communication. --- # Enum AMFAV1RateControlMode Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFAV1RateControlMode.html # Enum AMFAV1RateControlMode # Enum AMFAV1RateControlMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines rate control methods for AMD AMF AV1 encoder. ```csharp public enum AMFAV1RateControlMode ``` ## Fields Parameters: - Default (): Default rate control mode, automatically selected based on the Usage setting. - CQP (): Constant Quantization Parameter mode for consistent quality. - LCVBR (): Latency Constrained Variable Bitrate mode for low-latency scenarios. - VBR (): Peak Constrained Variable Bitrate mode for better quality with bitrate constraints. - CBR (): Constant Bitrate mode for fixed bandwidth requirements. --- # Enum AMFH264EncoderLevel Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderLevel.html # Enum AMFH264EncoderLevel # Enum AMFH264EncoderLevel **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines H.264/AVC encoding levels for AMD AMF H264 encoder. ```csharp public enum AMFH264EncoderLevel ``` ## Fields Parameters: - Level1_0 (): Level 1.0 - Supports up to 128x96 resolution at 15 fps. - Level1_1 (): Level 1.1 - Supports up to 176x144 resolution at 30 fps. - Level1_2 (): Level 1.2 - Supports up to 320x240 resolution at 20 fps. - Level1_3 (): Level 1.3 - Supports up to 352x288 resolution at 30 fps. - Level2_0 (): Level 2.0 - Supports up to 352x288 resolution at 30 fps. - Level2_1 (): Level 2.1 - Supports up to 640x480 resolution at 30 fps. - Level2_2 (): Level 2.2 - Supports up to 720x480 resolution at 30 fps. - Level3_0 (): Level 3.0 - Supports up to 720x576 resolution at 25 fps. - Level3_1 (): Level 3.1 - Supports up to 1280x720 resolution at 30 fps. - Level3_2 (): Level 3.2 - Supports up to 1280x720 resolution at 60 fps. - Level4_0 (): Level 4.0 - Supports up to 1920x1080 resolution at 30 fps. - Level4_1 (): Level 4.1 - Supports up to 1920x1080 resolution at 30 fps or 1280x720 at 60 fps. - Level4_2 (): Level 4.2 - Supports up to 1920x1080 resolution at 60 fps. - Level5_0 (): Level 5.0 - Supports up to 2560x1920 resolution at 30 fps. - Level5_1 (): Level 5.1 - Supports up to 4096x2304 resolution at 24 fps. --- # Enum AMFH264EncoderPreset Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderPreset.html # Enum AMFH264EncoderPreset # Enum AMFH264EncoderPreset **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines encoding quality presets for AMD AMF H264 encoder. ```csharp public enum AMFH264EncoderPreset ``` ## Fields Parameters: - Default (): Default preset, automatically selected based on the usage scenario. - Balanced (): Balanced preset providing a good compromise between quality and encoding speed. - Speed (): Speed preset optimized for fast encoding at the expense of quality. - Quality (): Quality preset optimized for best visual quality at the expense of encoding speed. --- # Enum AMFH264EncoderProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderProfile.html # Enum AMFH264EncoderProfile # Enum AMFH264EncoderProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines H.264/AVC encoding profiles for AMD AMF H264 encoder. ```csharp public enum AMFH264EncoderProfile ``` ## Fields Parameters: - ConstrainedBaseline (): Constrained Baseline Profile - Supports I and P slices, suitable for low-complexity devices. - Baseline (): Baseline Profile - Supports I and P slices, intended for low-delay applications. - Main (): Main Profile - Supports I, P and B slices, CABAC, and interlaced video. - High (): High Profile - Supports 8x8 transform and quantization scaling matrices. --- # Enum AMFH264EncoderRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderRateControl.html # Enum AMFH264EncoderRateControl # Enum AMFH264EncoderRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines rate control methods for AMD AMF H264 encoder. ```csharp public enum AMFH264EncoderRateControl ``` ## Fields Parameters: - Default (): Default rate control mode, automatically selected based on the usage scenario. - CQP (): Constant Quantization Parameter mode for consistent quality throughout the video. - CBR (): Constant Bitrate mode for maintaining a fixed target bitrate. - VBR (): Peak Constrained Variable Bitrate mode allowing bitrate variation within limits. - LCVBR (): Latency Constrained Variable Bitrate mode optimized for low-latency streaming. --- # Class AMFH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderSettings.html # Class AMFH264EncoderSettings # Class AMFH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for AMD AMF H264 encoder. ```csharp public class AMFH264EncoderSettings : IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AMFH264EncoderSettings(VideoQuality) Initializes a new instance of the class with a specified quality level. ```csharp public AMFH264EncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The video quality level that determines bitrate settings. ### AMFH264EncoderSettings() Initializes a new instance of the class. ```csharp public AMFH264EncoderSettings() ``` ## Fields ### Name Gets the display name of this encoder. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AUD Gets or sets a value indicating whether to use Access Unit delimiter. ```csharp public bool AUD { get; set; } ``` #### Property Value Parameters: - (bool): ### Bitrate Gets or sets the target bitrate in Kbps. ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CABAC Gets or sets a value indicating whether CABAC entropy coding enabled. ```csharp public bool CABAC { get; set; } ``` #### Property Value Parameters: - (bool): ### GOPSize Gets or sets the number of pictures within a GOP. -1 to use default value. ```csharp public int GOPSize { get; set; } ``` #### Property Value Parameters: - (int): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### Level Gets or sets the level. ```csharp public AMFH264EncoderLevel Level { get; set; } ``` #### Property Value Parameters: - (AMFH264EncoderLevel): ### MaxBitrate Gets or sets the maximum bitrate in kbit/sec. ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQP Gets or sets the maximum allowed QP value. -1 to use default value. ```csharp public int MaxQP { get; set; } ``` #### Property Value Parameters: - (int): ### MinQP Gets or sets the minimum allowed QP value. -1 to use default value. ```csharp public int MinQP { get; set; } ``` #### Property Value Parameters: - (int): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Preset Gets or sets the preset. ```csharp public AMFH264EncoderPreset Preset { get; set; } ``` #### Property Value Parameters: - (AMFH264EncoderPreset): ### Profile Gets or sets the profile. ```csharp public AMFH264EncoderProfile Profile { get; set; } ``` #### Property Value Parameters: - (AMFH264EncoderProfile): ### QP_I Gets or sets the constant QP for I frames. ```csharp public uint QP_I { get; set; } ``` #### Property Value Parameters: - (uint): ### QP_P Gets or sets the constant QP for P frames. ```csharp public uint QP_P { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public AMFH264EncoderRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (AMFH264EncoderRateControl): ### RefFrames Gets or sets the number of reference frames. ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### Usage Gets or sets the target usage. ```csharp public AMFH264EncoderUsage Usage { get; set; } ``` #### Property Value Parameters: - (AMFH264EncoderUsage): ## Methods ### CreateBlock() Creates a new H264 encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for H264 encoding. ### GetCaps() Gets the GStreamer capabilities string for this encoder configuration. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): A capabilities string specifying profile and level. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): The indicating this is an AMD GPU H264 encoder. ### GetLevelList() Gets a list of available H.264 level names. ```csharp public static IEnumerable GetLevelList() ``` #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of level names formatted as strings (e.g., "4.2"). ### GetParameters() Gets the GStreamer pipeline parameters string for this encoder configuration. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A formatted string containing all encoder parameters. ### GetPresetList() Gets a list of available preset names. ```csharp public static IEnumerable GetPresetList() ``` #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of preset names as strings. ### GetProfileList() Gets a list of available H.264 profile names. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of profile names as strings. ### GetRateControlList() Gets a list of available rate control mode names. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of rate control mode names as strings. ### GetUsageList() Gets a list of available usage scenario names. ```csharp public static IEnumerable GetUsageList() ``` #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of usage scenario names as strings. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum AMFH264EncoderUsage Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFH264EncoderUsage.html # Enum AMFH264EncoderUsage # Enum AMFH264EncoderUsage **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines usage scenarios for AMD AMF H264 encoder to optimize encoding parameters. ```csharp public enum AMFH264EncoderUsage ``` ## Fields Parameters: - Transcoding (): Optimized for transcoding scenarios with balanced quality and performance. - UltraLowLatency (): Optimized for ultra-low latency applications like gaming or real-time streaming. - LowLatency (): Optimized for low latency applications like video conferencing. - WebCamera (): Optimized for webcam capture and streaming scenarios. --- # Enum AMFHEVCEncoderPreset Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFHEVCEncoderPreset.html # Enum AMFHEVCEncoderPreset # Enum AMFHEVCEncoderPreset **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines encoding quality presets for AMD AMF HEVC encoder. ```csharp public enum AMFHEVCEncoderPreset ``` ## Fields Parameters: - Default (): Default preset, automatically selected based on the usage scenario. - Quality (): Quality preset optimized for best visual quality at the expense of encoding speed. - Balanced (): Balanced preset providing a good compromise between quality and encoding speed. - Speed (): Speed preset optimized for fast encoding at the expense of quality. --- # Enum AMFHEVCEncoderRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFHEVCEncoderRateControl.html # Enum AMFHEVCEncoderRateControl # Enum AMFHEVCEncoderRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines rate control methods for AMD AMF HEVC encoder. ```csharp public enum AMFHEVCEncoderRateControl ``` ## Fields Parameters: - Default (): Default rate control mode, automatically selected based on the usage scenario. - CQP (): Constant Quantization Parameter mode for consistent quality throughout the video. - LCVBR (): Latency Constrained Variable Bitrate mode optimized for low-latency streaming. - VBR (): Peak Constrained Variable Bitrate mode allowing bitrate variation within limits. - CBR (): Constant Bitrate mode for maintaining a fixed target bitrate. --- # Class AMFHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFHEVCEncoderSettings.html # Class AMFHEVCEncoderSettings # Class AMFHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for AMD AMF HEVC encoder. ```csharp public class AMFHEVCEncoderSettings : IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### AMFHEVCEncoderSettings() Initializes a new instance of the class. ```csharp public AMFHEVCEncoderSettings() ``` ### AMFHEVCEncoderSettings(VideoQuality) Initializes a new instance of the class with a specified quality level. ```csharp public AMFHEVCEncoderSettings(VideoQuality quality = VideoQuality.Normal) ``` #### Parameters Parameters: - quality (VideoQuality): The video quality level that determines bitrate settings. Default is Normal. ## Fields ### Name Gets the display name of this encoder. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AUD Gets or sets a value indicating whether to use Access Unit delimiter. ```csharp public bool AUD { get; set; } ``` #### Property Value Parameters: - (bool): ### Bitrate Gets or sets the target bitrate in Kbps. ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### GOPSize Gets or sets the number of pictures within a GOP. -1 to use default value. ```csharp public int GOPSize { get; set; } ``` #### Property Value Parameters: - (int): ### MaxBitrate Gets or sets the maximum bitrate in kbit/sec. ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQP_I Gets or sets the maximum allowed QP value for I frames. -1 to use default value. ```csharp public int MaxQP_I { get; set; } ``` #### Property Value Parameters: - (int): ### MaxQP_P Gets or sets the maximum allowed QP value for P frames. -1 to use default value. ```csharp public int MaxQP_P { get; set; } ``` #### Property Value Parameters: - (int): ### MinQP_I Gets or sets the minimum allowed QP value for I frames. -1 to use default value. ```csharp public int MinQP_I { get; set; } ``` #### Property Value Parameters: - (int): ### MinQP_P Gets or sets the minimum allowed QP value for P frames. -1 to use default value. ```csharp public int MinQP_P { get; set; } ``` #### Property Value Parameters: - (int): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Preset Gets or sets the preset. ```csharp public AMFHEVCEncoderPreset Preset { get; set; } ``` #### Property Value Parameters: - (AMFHEVCEncoderPreset): ### QP_I Gets or sets the constant QP for I frames. ```csharp public uint QP_I { get; set; } ``` #### Property Value Parameters: - (uint): ### QP_P Gets or sets the constant QP for P frames. ```csharp public uint QP_P { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public AMFHEVCEncoderRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (AMFHEVCEncoderRateControl): ### RefFrames Gets or sets the number of reference frames. ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### Usage Gets or sets the target usage. ```csharp public AMFHEVCEncoderUsage Usage { get; set; } ``` #### Property Value Parameters: - (AMFHEVCEncoderUsage): ## Methods ### CreateBlock() Creates a new HEVC encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for HEVC encoding. ### GetCaps() Gets the GStreamer capabilities string for this encoder configuration. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): A capabilities string for video/x-h265. ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): The indicating this is an AMD GPU HEVC encoder. ### GetParameters() Gets the GStreamer pipeline parameters string for this encoder configuration. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A formatted string containing all encoder parameters. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum AMFHEVCEncoderUsage Link: api/VisioForge.Core.Types.X.VideoEncoders.AMFHEVCEncoderUsage.html # Enum AMFHEVCEncoderUsage # Enum AMFHEVCEncoderUsage **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines usage scenarios for AMD AMF HEVC encoder to optimize encoding parameters. ```csharp public enum AMFHEVCEncoderUsage ``` ## Fields Parameters: - Transcoding (): Optimized for transcoding scenarios with balanced quality and performance. - UltraLowLatency (): Optimized for ultra-low latency applications like gaming or real-time streaming. - LowLatency (): Optimized for low latency applications like video conferencing. - WebCamera (): Optimized for webcam capture and streaming scenarios. --- # Enum AOMAV1EncoderEndUsageMode Link: api/VisioForge.Core.Types.X.VideoEncoders.AOMAV1EncoderEndUsageMode.html # Enum AOMAV1EncoderEndUsageMode # Enum AOMAV1EncoderEndUsageMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines rate control modes for AOM AV1 encoder end usage. ```csharp public enum AOMAV1EncoderEndUsageMode ``` ## Fields Parameters: - VBR (): Variable Bit Rate mode allowing bitrate to vary based on content complexity. - CBR (): Constant Bit Rate mode maintaining a fixed target bitrate. - CQ (): Constrained Quality mode balancing quality and bitrate constraints. - Q (): Constant Quality mode maintaining consistent quality throughout the video. --- # Enum AOMAV1EncoderResizeMode Link: api/VisioForge.Core.Types.X.VideoEncoders.AOMAV1EncoderResizeMode.html # Enum AOMAV1EncoderResizeMode # Enum AOMAV1EncoderResizeMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines frame resize modes for AOM AV1 encoder. ```csharp public enum AOMAV1EncoderResizeMode ``` ## Fields Parameters: - None (): No frame resizing allowed, frames are encoded at original resolution. - Fixed (): All frames are coded at a fixed scale specified by resize parameters. - Random (): All frames are coded at random scales for testing purposes. --- # Class AOMAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.AOMAV1EncoderSettings.html # Class AOMAV1EncoderSettings # Class AOMAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for AOM (Alliance for Open Media) AV1 encoder. ```csharp public class AOMAV1EncoderSettings : IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name Gets the display name of this encoder. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### BufferInitialSize Gets or sets the initial buffer size for rate control. ```csharp public TimeSpan BufferInitialSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Default is 4000 milliseconds. ### BufferOptimalSize Gets or sets the optimal buffer size for rate control. ```csharp public TimeSpan BufferOptimalSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Default is 5000 milliseconds. ### BufferSize Gets or sets the maximum buffer size for rate control. ```csharp public TimeSpan BufferSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Default is 6000 milliseconds. ### CPUUsed Gets or sets the CPU usage level for encoding speed/quality trade-off. ```csharp public int CPUUsed { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks A value greater than 0 will increase encoder speed at the expense of quality. ### DropFrame Gets or sets the temporal resampling configuration for frame dropping. ```csharp public uint DropFrame { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Drops frames as a strategy to meet target data rate. Set to 0 (default) to disable. ### MaxQuantizer Gets or sets the maximum quantizer value (worst quality). ```csharp public uint MaxQuantizer { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Higher values result in lower quality. ### MinQuantizer Gets or sets the minimum quantizer value (best quality). ```csharp public uint MinQuantizer { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Lower values result in higher quality. ### OvershootPCT Gets or sets the rate control adaptation overshoot percentage. ```csharp public uint OvershootPCT { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Controls how much the bitrate can exceed target. Default is 25%. ### RateControl Gets or sets the rate control algorithm indicating the end usage of this stream. ```csharp public AOMAV1EncoderEndUsageMode RateControl { get; set; } ``` #### Property Value Parameters: - (AOMAV1EncoderEndUsageMode): #### Remarks Default is Variable Bit Rate (VBR). ### ResizeDenominator Gets or sets the frame resize denominator. ```csharp public uint ResizeDenominator { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used with numerator of 8 to determine resize ratio. Default is 8 (no resize). ### ResizeKeyFrameDenominator Gets or sets the keyframe resize denominator. ```csharp public uint ResizeKeyFrameDenominator { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used with numerator of 8 to determine keyframe resize ratio. Default is 8 (no resize). ### ResizeMode Gets or sets the frame resize mode. ```csharp public AOMAV1EncoderResizeMode ResizeMode { get; set; } ``` #### Property Value Parameters: - (AOMAV1EncoderResizeMode): #### Remarks Default is None (no resizing). ### SuperResDenominator Gets or sets the frame super-resolution denominator. ```csharp public uint SuperResDenominator { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used only by SUPERRES_FIXED mode. Default is 8 (no super-resolution). ### SuperResKeyFrameDenominator Gets or sets the keyframe super-resolution denominator. ```csharp public uint SuperResKeyFrameDenominator { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Default is 8 (no super-resolution). ### SuperResKeyFrameQThreshold Gets or sets the keyframe super-resolution quantizer index threshold. ```csharp public uint SuperResKeyFrameQThreshold { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used only by SUPERRES_QTHRESH mode. Default is 63. ### SuperResMode Gets or sets the super-resolution mode. ```csharp public AOMAV1SuperResolutionMode SuperResMode { get; set; } ``` #### Property Value Parameters: - (AOMAV1SuperResolutionMode): #### Remarks Default is None (super-resolution disabled). ### SuperResQThreshold Gets or sets the frame super-resolution quantizer index threshold. ```csharp public uint SuperResQThreshold { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Used only by SUPERRES_QTHRESH mode. Default is 63. ### TargetBitrate Gets or sets the target bitrate in kilobits per second. ```csharp public uint TargetBitrate { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Default is 256 Kbps. ### Threads Gets or sets the maximum number of threads to use for encoding. ```csharp public uint Threads { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Set to 0 to let the system determine the optimal number of threads. Default is 0. ### TileColumns Gets or sets the number of vertical tile columns for parallel encoding. ```csharp public uint TileColumns { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Partitions the frame into columns that can be encoded in parallel. Default is 0. ### TileRows Gets or sets the number of horizontal tile rows for parallel encoding. ```csharp public uint TileRows { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Partitions the frame into rows that can be encoded in parallel. Default is 0. ### UndershootPCT Gets or sets the rate control adaptation undershoot percentage. ```csharp public uint UndershootPCT { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Controls how much the bitrate can fall below target. Default is 25%. ### UseRowMT Gets or sets a value indicating whether row-based multi-threading is enabled. ```csharp public bool UseRowMT { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Improves encoding performance on multi-core systems. Default is true. ## Methods ### CreateBlock() Creates a new AV1 encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for AV1 encoding. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): The indicating this is an AOM encoder. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum AOMAV1SuperResolutionMode Link: api/VisioForge.Core.Types.X.VideoEncoders.AOMAV1SuperResolutionMode.html # Enum AOMAV1SuperResolutionMode # Enum AOMAV1SuperResolutionMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines frame super-resolution modes for AOM AV1 encoder. ```csharp public enum AOMAV1SuperResolutionMode ``` ## Fields Parameters: - None (): No frame super-resolution allowed, frames are encoded at original resolution. - Fixed (): All frames are coded at a fixed scale and then super-resolved to original resolution. - Random (): All frames are coded at random scales and super-resolved for testing purposes. - QThreshold (): Super-resolution scale for a frame is determined dynamically based on quantizer index. --- # Enum AV1EncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.AV1EncoderType.html # Enum AV1EncoderType # Enum AV1EncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Defines the available AV1 encoder implementations. ```csharp public enum AV1EncoderType ``` ## Fields Parameters: - QSV (): Intel Quick Sync Video (QSV) hardware-accelerated AV1 encoder. - AOM (): Alliance for Open Media (AOM) reference software AV1 encoder. - RAV1E (): Rust AV1 Encoder (rav1e) - fast and safe AV1 encoder implementation. - NVENC (): NVIDIA NVENC hardware-accelerated AV1 encoder. - AMF (): AMD Advanced Media Framework (AMF) hardware-accelerated AV1 encoder. - SVTAV1 (): Scalable Video Technology for AV1 (SVT-AV1) encoder - high-performance software AV1 encoder. --- # Class CustomH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.CustomH264EncoderSettings.html # Class CustomH264EncoderSettings # Class CustomH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for a custom H264 encoder implementation. Implements the ```csharp public class CustomH264EncoderSettings : IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CustomH264EncoderSettings(string) Initializes a new instance of the class. ```csharp public CustomH264EncoderSettings(string elementName) ``` #### Parameters Parameters: - elementName (string): The name of the GStreamer element to use for encoding. ## Properties ### ElementName Gets the GStreamer element name for this custom encoder. ```csharp public string ElementName { get; } ``` #### Property Value Parameters: - (string): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Properties Gets the collection of properties used to configure the encoder. ```csharp public Dictionary Properties { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): #### Remarks Add key-value pairs to configure encoder-specific parameters. ### VideoFormat Gets or sets the video format required by the encoder. ```csharp public VideoFormatX VideoFormat { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): #### Remarks Default is NV12. ## Methods ### CreateBlock() Creates a new H264 encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for H264 encoding. ### GetCaps() Gets the GStreamer capabilities string. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): Not implemented for custom encoders. #### Exceptions Parameters: - (NotImplementedException): Always thrown as custom encoders define caps differently. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): The indicating this is a custom encoder. ### GetParameters() Gets the GStreamer pipeline parameters string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): Not implemented for custom encoders. #### Exceptions Parameters: - (NotImplementedException): Always thrown as custom encoders use Properties collection instead. ## See Also --- # Class CustomHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.CustomHEVCEncoderSettings.html # Class CustomHEVCEncoderSettings # Class CustomHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Custom HEVC encoder settings. Implements the ```csharp public class CustomHEVCEncoderSettings : IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CustomHEVCEncoderSettings(string) Initializes a new instance of the class. ```csharp public CustomHEVCEncoderSettings(string elementName) ``` #### Parameters Parameters: - elementName (string): Name of the element. ## Properties ### ElementName Gets the name of the element. ```csharp public string ElementName { get; } ``` #### Property Value Parameters: - (string): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Properties Gets the properties. Use them co configure encoder. ```csharp public Dictionary Properties { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### VideoFormat Gets or sets the video format, required by encoder. ```csharp public VideoFormatX VideoFormat { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): HEVCEncoderType. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ## See Also --- # Class CustomVPXEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.CustomVPXEncoderSettings.html # Class CustomVPXEncoderSettings # Class CustomVPXEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Custom VPx encoder settings. Implements the ```csharp public class CustomVPXEncoderSettings : IVPXEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### CustomVPXEncoderSettings(string) Initializes a new instance of the class. ```csharp public CustomVPXEncoderSettings(string elementName) ``` #### Parameters Parameters: - elementName (string): Name of the element. ## Properties ### ElementName Gets the name of the element. ```csharp public string ElementName { get; } ``` #### Property Value Parameters: - (string): ### Properties Gets the properties. Use them co configure encoder. ```csharp public Dictionary Properties { get; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### VideoFormat Gets or sets the video format, required by encoder. ```csharp public VideoFormatX VideoFormat { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ### GetEncoderType() Gets the type of the encoder. ```csharp public VPXEncoderType GetEncoderType() ``` #### Returns Parameters: - (VPXEncoderType): VPXEncoderType. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. #### Exceptions Parameters: - (NotImplementedException): ## See Also --- # Class DVVideoEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.DVVideoEncoderSettings.html # Class DVVideoEncoderSettings # Class DVVideoEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll DV video encoder settings. ```csharp public class DVVideoEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class GIFEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.GIFEncoderSettings.html # Class GIFEncoderSettings # Class GIFEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll GIF encoder settings. ```csharp public class GIFEncoderSettings ``` #### Inheritance #### Inherited Members ## Properties ### Repeat Gets or sets the repeat (-1 to loop forever, 0..n-finite repetitions). ```csharp public uint Repeat { get; set; } ``` #### Property Value Parameters: - (uint): ### Speed Gets or sets the speed. Range is [1..30]. Higher value yields faster encoding. ```csharp public int Speed { get; set; } ``` #### Property Value Parameters: - (int): --- # Enum H264EncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.H264EncoderType.html # Enum H264EncoderType # Enum H264EncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll H264 encoder type. ```csharp public enum H264EncoderType ``` ## Fields Parameters: - OpenH264 (): The OpenH264 encoder. - GPU_Intel_QSV_H264 (): The GPU Intel QuickSync H264 encoder. - GPU_Nvidia_H264 (): The GPU Nvidia H264 encoder. - GPU_AMD_H264 (): The GPU AMD/ATI H264 encoder. - VAAPI_H264 (): The VAAPI H264 encoder. - CustomEncoder (): The custom encoder, specified by element name. --- # Enum HEVCEncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.HEVCEncoderType.html # Enum HEVCEncoderType # Enum HEVCEncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll HEVC encoder type. ```csharp public enum HEVCEncoderType ``` ## Fields Parameters: - GPU_Intel_QSV_HEVC (): The GPU Intel QuickSync HEVC encoder. - GPU_Nvidia_HEVC (): The GPU Nvidia HEVC encoder. - GPU_AMD_HEVC (): The GPU AMD/ATI HEVC encoder. - VAAPI_HEVC (): The VAAPI HEVC encoder. - CustomEncoder (): The custom encoder specified by element name. - SVTHEVC (): Scalable Video Technology for HEVC (SVT-HEVC) encoder - high-performance software HEVC encoder. --- # Interface IAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IAV1EncoderSettings.html # Interface IAV1EncoderSettings # Interface IAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Basic AV1 encoder settings interface. ```csharp public interface IAV1EncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Implements ## Methods ### GetEncoderType() Gets the type of the encoder. ```csharp AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): AV1EncoderType. --- # Interface IH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IH264EncoderSettings.html # Interface IH264EncoderSettings # Interface IH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Basic H264 encoder settings interface. ```csharp public interface IH264EncoderSettings : IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Implements ## Properties ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetEncoderType() Gets the type of the encoder. ```csharp H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): H264EncoderType. --- # Interface IHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IHEVCEncoderSettings.html # Interface IHEVCEncoderSettings # Interface IHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Basic HEVC encoder settings interface. ```csharp public interface IHEVCEncoderSettings : IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Implements ## Properties ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetEncoderType() Gets the type of the encoder. ```csharp HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): HEVCEncoderType. --- # Interface IMJPEGEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IMJPEGEncoderSettings.html # Interface IMJPEGEncoderSettings # Interface IMJPEGEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Basic MJPEG encoder settings interface. ```csharp public interface IMJPEGEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Implements ## Methods ### GetEncoderType() Gets the type of the encoder. ```csharp MJPEGEncoderType GetEncoderType() ``` #### Returns Parameters: - (MJPEGEncoderType): MJPEGEncoderType. --- # Interface IMPEG2EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IMPEG2EncoderSettings.html # Interface IMPEG2EncoderSettings # Interface IMPEG2EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Interface for MPEG-2 encoder settings. ```csharp public interface IMPEG2EncoderSettings ``` ## Methods ### GeneratePipeline() Generates the GStreamer pipeline string for this encoder. ```csharp string GeneratePipeline() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the encoder type. ```csharp MPEG2EncoderType GetEncoderType() ``` #### Returns Parameters: - (MPEG2EncoderType): MPEG2EncoderType. --- # Interface IVPXEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.IVPXEncoderSettings.html # Interface IVPXEncoderSettings # Interface IVPXEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Interface IVPXEncoderSettings. ```csharp public interface IVPXEncoderSettings : IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Implements ## Methods ### GetEncoderType() Gets the type of the encoder. ```csharp VPXEncoderType GetEncoderType() ``` #### Returns Parameters: - (VPXEncoderType): VPXEncoderType. --- # Delegate KeyFrameDetectedDelegate Link: api/VisioForge.Core.Types.X.VideoEncoders.KeyFrameDetectedDelegate.html # Delegate KeyFrameDetectedDelegate # Delegate KeyFrameDetectedDelegate **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Delegate OnKeyFrameDetected. ```csharp public delegate void KeyFrameDetectedDelegate(ulong timestamp) ``` #### Parameters Parameters: - timestamp (ulong): The timestamp in nanoseconds. --- # Class MJPEGEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.MJPEGEncoderSettings.html # Class MJPEGEncoderSettings # Class MJPEGEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MJPEG video encoder settings. ```csharp public class MJPEGEncoderSettings : IMJPEGEncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Quality Gets or sets the quality [10-100]. ```csharp public int Quality { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetEncoderType() Gets the type of the encoder. ```csharp public MJPEGEncoderType GetEncoderType() ``` #### Returns Parameters: - (MJPEGEncoderType): MJPEGEncoderType. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum MJPEGEncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.MJPEGEncoderType.html # Enum MJPEGEncoderType # Enum MJPEGEncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MJPEG encoder type. ```csharp public enum MJPEGEncoderType ``` ## Fields Parameters: - CPU (): Default encoder. - GPU_Intel_QSV_MJPEG (): The GPU Intel QuickSync MJPEG encoder. - GPU_Nvidia_MJPEG (): The GPU NVIDIA MJPEG encoder. --- # Enum MPEG2EncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2EncoderType.html # Enum MPEG2EncoderType # Enum MPEG2EncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 encoder type. ```csharp public enum MPEG2EncoderType ``` ## Fields Parameters: - FFMPEG (): FFmpeg MPEG-2 encoder (software). - GPU_Intel_MSDK_MPEG2_Linux (): Intel Media SDK MPEG-2 encoder (hardware, Linux only). --- # Enum MPEG2VideoEncoderCompareFunc Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderCompareFunc.html # Enum MPEG2VideoEncoderCompareFunc # Enum MPEG2VideoEncoderCompareFunc **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 macroblock compare functions. ```csharp public enum MPEG2VideoEncoderCompareFunc ``` ## Fields Parameters: - Sad (): Sum of absolute differences, fast. - Sse (): Sum of squared errors. - Satd (): Sum of absolute Hadamard transformed differences. - Dct (): Sum of absolute DCT transformed differences. - Psnr (): Sum of squared quantization errors, low quality. - Bit (): Number of bits needed for the block. - Rd (): Rate distortion optimal, slow. - Zero (): Zero. - Vsad (): Sum of absolute vertical differences. - Vsse (): Sum of squared vertical differences. - Nsse (): Noise preserving sum of squared differences. - DCTMax (): dctmax. - Dct264 (): dct264. - Msad (): Sum of absolute differences, median predicted. - Chroma (): Chroma. --- # Enum MPEG2VideoEncoderMotionEstimation Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderMotionEstimation.html # Enum MPEG2VideoEncoderMotionEstimation # Enum MPEG2VideoEncoderMotionEstimation **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 motion estimation algorithms. ```csharp public enum MPEG2VideoEncoderMotionEstimation ``` ## Fields Parameters: - Zero (): Zero motion estimation. - Epzs (): EPZS motion estimation. - Xone (): XONE motion estimation. --- # Enum MPEG2VideoEncoderMPVFlags Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderMPVFlags.html # Enum MPEG2VideoEncoderMPVFlags # Enum MPEG2VideoEncoderMPVFlags **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Flags common for all MPEG video-based encoders. ```csharp [Flags] public enum MPEG2VideoEncoderMPVFlags ``` ## Fields Parameters: - SkipRd (): RD optimal MB level residual skipping. - StrictGop (): Strictly enforce GOP size. - QpRd (): Use rate distortion optimization for QP selection. - CbpRd (): Use rate distortion optimization for CBP. - Naq (): Normalize adaptive quantization. - Mv0 (): Always try a macroblock with MV=0. --- # Enum MPEG2VideoEncoderProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderProfile.html # Enum MPEG2VideoEncoderProfile # Enum MPEG2VideoEncoderProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG2 profiles for encoding. ```csharp public enum MPEG2VideoEncoderProfile ``` ## Fields Parameters: - YUV_422 (): 4:2:2 profile. - High (): High profile. - SpatiallyScalable (): Spatially Scalable profile. - SNRScalable (): SNR Scalable profile. - Main (): Main profile. - Simple (): Simple profile. --- # Enum MPEG2VideoEncoderSequenceDisplayExt Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderSequenceDisplayExt.html # Enum MPEG2VideoEncoderSequenceDisplayExt # Enum MPEG2VideoEncoderSequenceDisplayExt **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 sequence display extension options. ```csharp public enum MPEG2VideoEncoderSequenceDisplayExt ``` ## Fields Parameters: - Auto (): Automatically determine if sequence_display_extension should be written. - Never (): Never write sequence_display_extension. - Always (): Always write sequence_display_extension. --- # Class MPEG2VideoEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderSettings.html # Class MPEG2VideoEncoderSettings # Class MPEG2VideoEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPEG-2 video encoder settings. ```csharp public class MPEG2VideoEncoderSettings : IVideoEncoder, IMediaBlockSettings, IMPEG2EncoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MPEG2VideoEncoderSettings() Initializes a new instance of the class. ```csharp public MPEG2VideoEncoderSettings() ``` ### MPEG2VideoEncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public MPEG2VideoEncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Properties ### A53CC Use A53 Closed Captions (if available). ```csharp public bool A53CC { get; set; } ``` #### Property Value Parameters: - (bool): ### AlternateScan Enable alternate scantable. ```csharp public bool AlternateScan { get; set; } ``` #### Property Value Parameters: - (bool): ### BSensitivity Adjust sensitivity of B frame strategy 1. ```csharp public int BSensitivity { get; set; } ``` #### Property Value Parameters: - (int): ### BStrategy Strategy to choose between I/P/B-frames. ```csharp public int BStrategy { get; set; } ``` #### Property Value Parameters: - (int): ### Bitrate Bitrate (in Kbits/s). ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### BorderMask Increase the quantizer for macroblocks close to borders. ```csharp public float BorderMask { get; set; } ``` #### Property Value Parameters: - (float): ### BrdScale Downscale frames for dynamic B-frame decision. ```csharp public int BrdScale { get; set; } ``` #### Property Value Parameters: - (int): ### ChromaElimThreshold Single coefficient elimination threshold for chrominance (negative values also consider dc coefficient). ```csharp public int ChromaElimThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### DropFrameTimecode Timecode is in drop frame format. ```csharp public bool DropFrameTimecode { get; set; } ``` #### Property Value Parameters: - (bool): ### EncoderType Gets or sets the encoder type. ```csharp public MPEG2EncoderType EncoderType { get; set; } ``` #### Property Value Parameters: - (MPEG2EncoderType): ### ErrorRate Simulate errors in the bitstream to test error concealment. ```csharp public int ErrorRate { get; set; } ``` #### Property Value Parameters: - (int): ### ForceDuplicatedMatrix Always write luma and chroma matrix for mjpeg, useful for rtp streaming. ```csharp public bool ForceDuplicatedMatrix { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameSkipCompare Frame skip compare function. ```csharp public MPEG2VideoEncoderCompareFunc FrameSkipCompare { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderCompareFunc): ### FrameSkipExponent Frame skip exponent. ```csharp public int FrameSkipExponent { get; set; } ``` #### Property Value Parameters: - (int): ### FrameSkipFactor Frame skip factor. ```csharp public int FrameSkipFactor { get; set; } ``` #### Property Value Parameters: - (int): ### FrameSkipThreshold Frame skip threshold. ```csharp public int FrameSkipThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### GOPSize Set the group of picture (GOP) size. ```csharp public int GOPSize { get; set; } ``` #### Property Value Parameters: - (int): ### InterQuantBias Inter quant bias. ```csharp public int InterQuantBias { get; set; } ``` #### Property Value Parameters: - (int): ### IntraPenalty Penalty for intra blocks in block decision. ```csharp public int IntraPenalty { get; set; } ``` #### Property Value Parameters: - (int): ### IntraQuantBias Intra quant bias. ```csharp public int IntraQuantBias { get; set; } ``` #### Property Value Parameters: - (int): ### IntraVLC Use MPEG-2 intra VLC table. ```csharp public bool IntraVLC { get; set; } ``` #### Property Value Parameters: - (bool): ### LagrangeMax Maximum Lagrange factor (VBR). ```csharp public int LagrangeMax { get; set; } ``` #### Property Value Parameters: - (int): ### LagrangeMin Minimum Lagrange factor (VBR). ```csharp public int LagrangeMin { get; set; } ``` #### Property Value Parameters: - (int): ### MEPC Motion estimation bitrate penalty compensation (1.0 = 256). ```csharp public int MEPC { get; set; } ``` #### Property Value Parameters: - (int): ### MEPRE Pre motion estimation. ```csharp public int MEPRE { get; set; } ``` #### Property Value Parameters: - (int): ### MPEGQuant Use MPEG quantizers instead of H.263. ```csharp public int MPEGQuant { get; set; } ``` #### Property Value Parameters: - (int): ### MPVFlags Flags common for all mpegvideo-based encoders. ```csharp public MPEG2VideoEncoderMPVFlags MPVFlags { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderMPVFlags): ### MotionEst Motion estimation algorithm. ```csharp public MPEG2VideoEncoderMotionEstimation MotionEst { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderMotionEstimation): ### MultipassCacheFile Filename for multipass cache file. ```csharp public string MultipassCacheFile { get; set; } ``` #### Property Value Parameters: - (string): ### NoiseReduction Noise reduction. ```csharp public int NoiseReduction { get; set; } ``` #### Property Value Parameters: - (int): ### NonLinearQuant Use nonlinear quantizer. ```csharp public bool NonLinearQuant { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public MPEG2VideoEncoderProfile Profile { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderProfile): ### QSquish How to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) ```csharp public float QSquish { get; set; } ``` #### Property Value Parameters: - (float): ### Quantizer Constant Quantizer. ```csharp public float Quantizer { get; set; } ``` #### Property Value Parameters: - (float): ### QuantizerNoiseShaping Quantizer noise shaping. ```csharp public int QuantizerNoiseShaping { get; set; } ``` #### Property Value Parameters: - (int): ### RCEquation Set rate control equation. ```csharp public string RCEquation { get; set; } ``` #### Property Value Parameters: - (string): ### RCInitCplx Initial complexity for 1-pass encoding. ```csharp public float RCInitCplx { get; set; } ``` #### Property Value Parameters: - (float): ### RCQModAmp Experimental quantizer modulation. ```csharp public float RCQModAmp { get; set; } ``` #### Property Value Parameters: - (float): ### RCQModFreq Experimental quantizer modulation. ```csharp public int RCQModFreq { get; set; } ``` #### Property Value Parameters: - (int): ### RTPPayloadSize RTP payload size in bytes. ```csharp public int RTPPayloadSize { get; set; } ``` #### Property Value Parameters: - (int): ### ScanOffset Reserve space for SVCD scan offset user data Flags: Read / Write Default value: false ```csharp public bool ScanOffset { get; set; } ``` #### Property Value Parameters: - (bool): ### SceneChangeThreshold Scene change threshold. ```csharp public int SceneChangeThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### SeqDispExt Write sequence_display_extension blocks. ```csharp public MPEG2VideoEncoderSequenceDisplayExt SeqDispExt { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderSequenceDisplayExt): ### TimecodeFrameStart GOP timecode frame start number, in non-drop-frame format ```csharp public ulong TimecodeFrameStart { get; set; } ``` #### Property Value Parameters: - (ulong): ### VideoFormat Video_format in the sequence_display_extension indicating the source of the video. ```csharp public MPEG2VideoEncoderVideoFormat VideoFormat { get; set; } ``` #### Property Value Parameters: - (MPEG2VideoEncoderVideoFormat): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GeneratePipeline() Generates the GStreamer pipeline string for this encoder. ```csharp public string GeneratePipeline() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the encoder type. ```csharp public MPEG2EncoderType GetEncoderType() ``` #### Returns Parameters: - (MPEG2EncoderType): MPEG2EncoderType. --- # Enum MPEG2VideoEncoderVideoFormat Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG2VideoEncoderVideoFormat.html # Enum MPEG2VideoEncoderVideoFormat # Enum MPEG2VideoEncoderVideoFormat **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Video format specification for sequence display extension. ```csharp public enum MPEG2VideoEncoderVideoFormat ``` ## Fields Parameters: - Component (): Component video format. - Pal (): PAL video format. - Ntsc (): NTSC video format. - Secam (): SECAM video format. - Mac (): MAC video format. - Unspecified (): Unspecified video format. --- # Enum MPEG4EncoderComparisonFunc Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG4EncoderComparisonFunc.html # Enum MPEG4EncoderComparisonFunc # Enum MPEG4EncoderComparisonFunc **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enumeration for MPEG-4 encoder comparison functions. ```csharp public enum MPEG4EncoderComparisonFunc ``` ## Fields Parameters: - Sad (): Sum of absolute differences, fast. - Sse (): Sum of squared errors. - Satd (): Sum of absolute Hadamard transformed differences. - Dct (): Sum of absolute DCT transformed differences. - Psnr (): Sum of squared quantization errors, low quality. - Bit (): Number of bits needed for the block. - Rd (): Rate distortion optimal, slow. - Zero (): Zero. - Vsad (): Sum of absolute vertical differences. - Vsse (): Sum of squared vertical differences. - Nsse (): Noise preserving sum of squared differences. - DctMax (): DCT maximum. - Dct264 (): DCT 264. - Msad (): Sum of absolute differences, median predicted. - Chroma (): Chroma. --- # Enum MPEG4EncoderMotionEstimation Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG4EncoderMotionEstimation.html # Enum MPEG4EncoderMotionEstimation # Enum MPEG4EncoderMotionEstimation **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enumeration for MPEG-4 encoder motion estimation. ```csharp public enum MPEG4EncoderMotionEstimation ``` ## Fields Parameters: - Zero (): Zero. - Epzs (): EPZS. - Xone (): Xone. --- # Enum MPEG4EncoderMPVFlags Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG4EncoderMPVFlags.html # Enum MPEG4EncoderMPVFlags # Enum MPEG4EncoderMPVFlags **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MPV flags for MPEG-4 H263 encoder. ```csharp [Flags] public enum MPEG4EncoderMPVFlags ``` ## Fields Parameters: - None (): None. - SkipRd (): RD optimal MB level residual skipping. - StrictGop (): Strictly enforce GOP size. - QpRd (): Use rate distortion optimization for QP selection. - CbpRd (): Use rate distortion optimization for CBP. - Naq (): Normalize adaptive quantization. - Mv0 (): Always try a MB with MV = <0,0>. --- # Class MPEG4VideoEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.MPEG4VideoEncoderSettings.html # Class MPEG4VideoEncoderSettings # Class MPEG4VideoEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Represents the settings for a video codec configuration. ```csharp public class MPEG4VideoEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### MPEG4VideoEncoderSettings() Initializes a new instance of the class. ```csharp public MPEG4VideoEncoderSettings() ``` ### MPEG4VideoEncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public MPEG4VideoEncoderSettings(VideoQuality quality = VideoQuality.Normal) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Properties ### A53CC Gets or sets a value indicating whether to use A53 Closed Captions (if available). ```csharp public bool A53CC { get; set; } ``` #### Property Value Parameters: - (bool): ### AlternateScan Gets or sets a value indicating whether to enable the alternate scan table. ```csharp public bool AlternateScan { get; set; } ``` #### Property Value Parameters: - (bool): ### BSensitivity Gets or sets the sensitivity of the B-frame strategy. ```csharp public int BSensitivity { get; set; } ``` #### Property Value Parameters: - (int): ### BStrategy Gets or sets the strategy to choose between I/P/B-frames. ```csharp public int BStrategy { get; set; } ``` #### Property Value Parameters: - (int): ### Bitrate Gets or sets the bitrate (Kbps). ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### BorderMask Gets or sets the border mask quantizer increase for macroblocks close to borders. ```csharp public float BorderMask { get; set; } ``` #### Property Value Parameters: - (float): ### BrdScale Gets or sets the scale for downscaling frames for dynamic B-frame decision. ```csharp public int BrdScale { get; set; } ``` #### Property Value Parameters: - (int): ### ChromaEliminationThreshold Gets or sets the single coefficient elimination threshold for chrominance. ```csharp public int ChromaEliminationThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### DataPartitioning Gets or sets a value indicating whether to use data partitioning. ```csharp public bool DataPartitioning { get; set; } ``` #### Property Value Parameters: - (bool): ### ForceDuplicatedMatrix Gets or sets a value indicating whether to always write luma and chroma matrix for MJPEG, useful for RTP streaming. ```csharp public bool ForceDuplicatedMatrix { get; set; } ``` #### Property Value Parameters: - (bool): ### FrameSkipCompare Frame skip compare function. Default value: "dctmax". ```csharp public MPEG4EncoderComparisonFunc FrameSkipCompare { get; set; } ``` #### Property Value Parameters: - (MPEG4EncoderComparisonFunc): ### FrameSkipExponent Frame skip exponent. Default value: 0. ```csharp public int FrameSkipExponent { get; set; } ``` #### Property Value Parameters: - (int): ### FrameSkipFactor Frame skip factor. Default value: 0. ```csharp public int FrameSkipFactor { get; set; } ``` #### Property Value Parameters: - (int): ### FrameSkipThreshold Frame skip threshold. Default value: 0. ```csharp public int FrameSkipThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### InterQuantBias Inter quant bias. Default value: 999999. ```csharp public int InterQuantBias { get; set; } ``` #### Property Value Parameters: - (int): ### IntraPenalty Penalty for intra blocks in block decision. Flags: Read / Write. Default value: 0. ```csharp public int IntraPenalty { get; set; } ``` #### Property Value Parameters: - (int): ### IntraQuantBias Intra quant bias. Flags: Read / Write. Default value: 999999. ```csharp public int IntraQuantBias { get; set; } ``` #### Property Value Parameters: - (int): ### LagrangeMax Maximum Lagrange factor (VBR). Flags: Read / Write. Default value: 3658. ```csharp public int LagrangeMax { get; set; } ``` #### Property Value Parameters: - (int): ### LagrangeMin Minimum Lagrange factor (VBR). Flags: Read / Write. Default value: 236. ```csharp public int LagrangeMin { get; set; } ``` #### Property Value Parameters: - (int): ### LumaEliminationThreshold Single coefficient elimination threshold for luminance (negative values also consider dc coefficient). Flags: Read / Write. Default value: 0. ```csharp public int LumaEliminationThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### MEPC Motion estimation bitrate penalty compensation (1.0 = 256). Flags: Read / Write. Default value: 256. ```csharp public int MEPC { get; set; } ``` #### Property Value Parameters: - (int): ### MEPRE Pre motion estimation. Flags: Read / Write. Default value: 0. ```csharp public int MEPRE { get; set; } ``` #### Property Value Parameters: - (int): ### MPEGQuant Use MPEG quantizers instead of H.263. Flags: Read / Write. Default value: 0. ```csharp public int MPEGQuant { get; set; } ``` #### Property Value Parameters: - (int): ### MPVFlags Flags common for all mpegvideo-based encoders. Flags: Read / Write. Default value: (none). ```csharp public MPEG4EncoderMPVFlags MPVFlags { get; set; } ``` #### Property Value Parameters: - (MPEG4EncoderMPVFlags): ### MotionEstimation Motion estimation algorithm. Flags: Read / Write. Default value: epzs (1). ```csharp public MPEG4EncoderMotionEstimation MotionEstimation { get; set; } ``` #### Property Value Parameters: - (MPEG4EncoderMotionEstimation): ### NoiseReduction Noise reduction. Default value: 0. ```csharp public int NoiseReduction { get; set; } ``` #### Property Value Parameters: - (int): ### QSquish How to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function). Default value: 0. ```csharp public float QSquish { get; set; } ``` #### Property Value Parameters: - (float): ### Quantizer Constant Quantizer. Default value: 0.01. ```csharp public float Quantizer { get; set; } ``` #### Property Value Parameters: - (float): ### QuantizerNoiseShaping (null). Default value: 0. ```csharp public int QuantizerNoiseShaping { get; set; } ``` #### Property Value Parameters: - (int): ### RCBufAggressivity Currently useless. Default value: 1. ```csharp public float RCBufAggressivity { get; set; } ``` #### Property Value Parameters: - (float): ### RCInitComplexity Initial complexity for 1-pass encoding. Default value: 0. ```csharp public float RCInitComplexity { get; set; } ``` #### Property Value Parameters: - (float): ### RCQModAmp Experimental quantizer modulation. Default value: 0. ```csharp public float RCQModAmp { get; set; } ``` #### Property Value Parameters: - (float): ### RCQModFreq Experimental quantizer modulation. Default value: 0. ```csharp public int RCQModFreq { get; set; } ``` #### Property Value Parameters: - (int): ### RTPPayloadSize RTP payload size in bytes. Default value: 0. ```csharp public int RTPPayloadSize { get; set; } ``` #### Property Value Parameters: - (int): ### SceneChangeThreshold Scene change threshold. Default value: 0. ```csharp public int SceneChangeThreshold { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. --- # Class MSDKLinuxMPEG2EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.MSDKLinuxMPEG2EncoderSettings.html # Class MSDKLinuxMPEG2EncoderSettings # Class MSDKLinuxMPEG2EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Intel Media SDK MPEG-2 encoder settings (Linux only). ```csharp public class MSDKLinuxMPEG2EncoderSettings : IMPEG2EncoderSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### BFrames Gets or sets the number of B-frames. ```csharp public int BFrames { get; set; } ``` #### Property Value Parameters: - (int): ### Bitrate Gets or sets the target bitrate in bits per second. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### CustomProperties Gets or sets additional custom properties for the encoder. ```csharp public Dictionary CustomProperties { get; set; } ``` #### Property Value Parameters: - (Dictionary < string , object >): ### GOPSize Gets or sets the GOP (Group of Pictures) size. ```csharp public int GOPSize { get; set; } ``` #### Property Value Parameters: - (int): ### MaxBitrate Gets or sets the maximum bitrate in bits per second. ```csharp public int MaxBitrate { get; set; } ``` #### Property Value Parameters: - (int): ### MaxQP Gets or sets the maximum quantizer scale. ```csharp public int MaxQP { get; set; } ``` #### Property Value Parameters: - (int): ### MinQP Gets or sets the minimum quantizer scale. ```csharp public int MinQP { get; set; } ``` #### Property Value Parameters: - (int): ### QP Gets or sets the quantizer scale for constant QP mode. ```csharp public int QP { get; set; } ``` #### Property Value Parameters: - (int): ### RateControl Gets or sets the rate control mode. ```csharp public MSDKRateControlMode RateControl { get; set; } ``` #### Property Value Parameters: - (MSDKRateControlMode): ## Methods ### GeneratePipeline() Generates the GStreamer pipeline string for this encoder. ```csharp public string GeneratePipeline() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the encoder type. ```csharp public MPEG2EncoderType GetEncoderType() ``` #### Returns Parameters: - (MPEG2EncoderType): MPEG2EncoderType. --- # Enum MSDKRateControlMode Link: api/VisioForge.Core.Types.X.VideoEncoders.MSDKRateControlMode.html # Enum MSDKRateControlMode # Enum MSDKRateControlMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll MSDK rate control modes for MPEG-2 encoding. ```csharp public enum MSDKRateControlMode ``` ## Fields Parameters: - CBR (): Constant Bitrate. - VBR (): Variable Bitrate. - CQP (): Constant QP. --- # Class NVENCAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCAV1EncoderSettings.html # Class NVENCAV1EncoderSettings # Class NVENCAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Class NVENCAV1EncoderSettings. Implements the Implements the ```csharp public class NVENCAV1EncoderSettings : NVENCBaseEncoderSettings, IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### BFrames Number of B-frames between I and P. ```csharp public uint BFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### EnableAdaptiveBFrame Enable adaptive B-frame insert when lookahead is enabled. ```csharp public bool EnableAdaptiveBFrame { get; set; } ``` #### Property Value Parameters: - (bool): ### RCLookahead Number of frames for frame type lookahead. ```csharp public uint RCLookahead { get; set; } ``` #### Property Value Parameters: - (uint): ### TemporalAQ Temporal Adaptive Quantization. ```csharp public bool TemporalAQ { get; set; } ``` #### Property Value Parameters: - (bool): ### Tune Encoding tune. ```csharp public NVENCTune Tune { get; set; } ``` #### Property Value Parameters: - (NVENCTune): ### VBVBufferSize VBV(HRD) Buffer Size in kbits (0 = NVENC default). ```csharp public uint VBVBufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): AV1EncoderType. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ## See Also --- # Class NVENCBaseEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCBaseEncoderSettings.html # Class NVENCBaseEncoderSettings # Class NVENCBaseEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC base encoder settings. Do not use it directly. ```csharp public class NVENCBaseEncoderSettings ``` #### Inheritance #### Derived #### Inherited Members ## Properties ### AQStrength Gets or sets the Adaptive Quantization Strength when spatial-aq is enabled from 1 (low) to 15 (aggressive), (0 = autoselect). ```csharp public uint AQStrength { get; set; } ``` #### Property Value Parameters: - (uint): ### Bitrate Gets or sets the bitrate (kbit/s) (0 = from NVENC preset). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### ConstQuality Gets or sets the target constant quality level for VBR mode (0 = automatic). ```csharp public double ConstQuality { get; set; } ``` #### Property Value Parameters: - (double): ### GOPSize Gets or sets the number of frames between intra frames (-1 = infinite). ```csharp public int GOPSize { get; set; } ``` #### Property Value Parameters: - (int): ### IAdaptive Gets or sets a value indicating whether adaptive I-frame insert when lookahead is enabled. ```csharp public bool IAdaptive { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxBitrate Gets or sets the maximum bitrate (Kbit/s). Ignored for CBR mode. ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### NonRefP Gets or sets a value indicating whether automatic insertion of non-reference P-frames is enabled. ```csharp public bool NonRefP { get; set; } ``` #### Property Value Parameters: - (bool): ### Preset Gets or sets the preset. ```csharp public NVENCPreset Preset { get; set; } ``` #### Property Value Parameters: - (NVENCPreset): ### QPConst Gets or sets the constant quantizer (-1 = from NVENC preset). ```csharp public int QPConst { get; set; } ``` #### Property Value Parameters: - (int): ### QPConstB Gets or sets the constant QP value for B frame, When >= 0, "QPConstI" and "QPConstP" should be also >= 0. Overwritten by "QPConst" (-1 = from NVENC preset). ```csharp public int QPConstB { get; set; } ``` #### Property Value Parameters: - (int): ### QPConstI Gets or sets the constant QP value for I frame, When >= 0, "QPConstP" and "QPConstB" should be also >= 0. Overwritten by "QPConst" (-1 = from NVENC preset). ```csharp public int QPConstI { get; set; } ``` #### Property Value Parameters: - (int): ### QPConstP Gets or sets the constant QP value for P frame, When >= 0, "QPConstI" and "QPConstB" should be also >= 0. Overwritten by "QPConst" (-1 = from NVENC preset). ```csharp public int QPConstP { get; set; } ``` #### Property Value Parameters: - (int): ### QPMax Gets or sets the maximum quantizer (-1 = from NVENC preset). ```csharp public int QPMax { get; set; } ``` #### Property Value Parameters: - (int): ### QPMaxB Gets or sets the Maximum QP value for B frame, When >= 0, "QPMaxI" and "QPMaxP" should be also >= 0. Overwritten by "QPMax" (-1 = from NVENC preset). ```csharp public int QPMaxB { get; set; } ``` #### Property Value Parameters: - (int): ### QPMaxI Gets or sets the maximum QP value for I frame, When >= 0, "QPMaxP" and "QPMaxB" should be also >= 0. Overwritten by "QPMax" (-1 = from NVENC preset). ```csharp public int QPMaxI { get; set; } ``` #### Property Value Parameters: - (int): ### QPMaxP Gets or sets the maximum QP value for P frame, When >= 0, "QPMaxI" and "QPMaxB" should be also >= 0. Overwritten by "QPMax" (-1 = from NVENC preset). ```csharp public int QPMaxP { get; set; } ``` #### Property Value Parameters: - (int): ### QPMin Gets or sets the minimum quantizer (-1 = from NVENC preset). ```csharp public int QPMin { get; set; } ``` #### Property Value Parameters: - (int): ### QPMinB Gets or sets the minimum QP value for B frame, When >= 0, "QPMinI" and "QPMinP" should be also >= 0. Overwritten by "QPMin" (-1 = from NVENC preset). ```csharp public int QPMinB { get; set; } ``` #### Property Value Parameters: - (int): ### QPMinI Gets or sets the minimum QP value for I frame, When >= 0, "QPMinP" and "QPMinB" should be also >= 0. Overwritten by "QPMin" (-1 = from NVENC preset). ```csharp public int QPMinI { get; set; } ``` #### Property Value Parameters: - (int): ### QPMinP Gets or sets the minimum QP value for P frame, When >= 0, "QPMinI" and "QPMinB" should be also >= 0. Overwritten by "QPMin" (-1 = from NVENC preset). ```csharp public int QPMinP { get; set; } ``` #### Property Value Parameters: - (int): ### RateControl Gets or sets the rate control. ```csharp public NVENCRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (NVENCRateControl): ### SpatialAQ Gets or sets a value indicating whether Spatial Adaptive Quantization is enabled. ```csharp public bool SpatialAQ { get; set; } ``` #### Property Value Parameters: - (bool): ### StrictGOP Gets or sets a value indicating whether strict GOP is enabled. If true - minimize GOP-to-GOP rate fluctuations. ```csharp public bool StrictGOP { get; set; } ``` #### Property Value Parameters: - (bool): ### ZeroLatency Gets or sets a value indicating whether zero latency mode is enabled. ```csharp public bool ZeroLatency { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### GetPresetList() Gets the preset list. ```csharp public static IEnumerable GetPresetList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. --- # Class NVENCH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCH264EncoderSettings.html # Class NVENCH264EncoderSettings # Class NVENCH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Nvidia NVENC H264 encoder settings. Implements the . Implements the . ```csharp public class NVENCH264EncoderSettings : NVENCBaseEncoderSettings, IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NVENCH264EncoderSettings() Initializes a new instance of the class. ```csharp public NVENCH264EncoderSettings() ``` ### NVENCH264EncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public NVENCH264EncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### BAdaptive Gets or sets a value indicating whether adaptive B-frame insert when lookahead is enabled. ```csharp public bool BAdaptive { get; set; } ``` #### Property Value Parameters: - (bool): ### BFrames Gets or sets the number of B-frames between I and P. ```csharp public uint BFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### Level Gets or sets the level. ```csharp public NVENCH264Level Level { get; set; } ``` #### Property Value Parameters: - (NVENCH264Level): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public NVENCH264Profile Profile { get; set; } ``` #### Property Value Parameters: - (NVENCH264Profile): ### RCLookahead Gets or sets the number of frames for frame type lookahead. ```csharp public uint RCLookahead { get; set; } ``` #### Property Value Parameters: - (uint): ### TemporalAQ Gets or sets a value indicating whether Temporal Adaptive Quantization is enabled. ```csharp public bool TemporalAQ { get; set; } ``` #### Property Value Parameters: - (bool): ### UseAUD Gets or sets a value indicating whether AU(Access Unit) delimiter will be used. ```csharp public bool UseAUD { get; set; } ``` #### Property Value Parameters: - (bool): ### VBVBufferSize Gets or sets the VBV(HRD) buffer size in Kbits (0 = NVENC default). ```csharp public uint VBVBufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ### WeightedPrediction Gets or sets a value indicating whether weighted prediction is enabled. ```csharp public bool WeightedPrediction { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CanCreateSession(out string) Validates that the NVENC encoder can create a hardware session. This checks if the encoder can actually initialize with the current NVIDIA driver. Use this to detect driver/SDK version mismatches (NV_ENC_ERR_INVALID_VERSION) before starting a pipeline. ```csharp public static bool CanCreateSession(out string errorMessage) ``` #### Parameters Parameters: - errorMessage (string): Output parameter containing error details if validation fails. #### Returns Parameters: - (bool): true if NVENC can create a session; otherwise, false. ### CanCreateSession() Validates that the NVENC encoder can create a hardware session. ```csharp public static bool CanCreateSession() ``` #### Returns Parameters: - (bool): true if NVENC can create a session; otherwise, false. ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): H264EncoderType. ### GetLevelList() Gets the level list. ```csharp public static IEnumerable GetLevelList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the parameters string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetProfileList() Gets the profile list. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum NVENCH264Level Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCH264Level.html # Enum NVENCH264Level # Enum NVENCH264Level **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC H264 encoder level. ```csharp public enum NVENCH264Level ``` ## Fields Parameters: - Level1_0 (): 1.0. - Level1_1 (): 1.1. - Level1_2 (): 1.2. - Level1_3 (): 1.3. - Level2_0 (): 2.0. - Level2_1 (): 2.1. - Level2_2 (): 2.2. - Level3_0 (): 3.0. - Level3_1 (): 3.1. - Level3_2 (): 3.2. - Level4_0 (): 4.0. - Level4_1 (): 4.1. - Level4_2 (): 4.2. - Level5_0 (): 5.0. - Level5_1 (): 5.1. --- # Enum NVENCH264Profile Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCH264Profile.html # Enum NVENCH264Profile # Enum NVENCH264Profile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC H264 profile. ```csharp public enum NVENCH264Profile ``` ## Fields Parameters: - ConstrainedBaseline (): The constrained baseline. - Baseline (): The baseline. - Main (): The main. - High (): The high. - High444 (): The high (4:4:4). --- # Class NVENCHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCHEVCEncoderSettings.html # Class NVENCHEVCEncoderSettings # Class NVENCHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Nvidia NVENC HEVC encoder settings. Implements the . Implements the . ```csharp public class NVENCHEVCEncoderSettings : NVENCBaseEncoderSettings, IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### NVENCHEVCEncoderSettings() Initializes a new instance of the class. ```csharp public NVENCHEVCEncoderSettings() ``` ### NVENCHEVCEncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public NVENCHEVCEncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### BAdaptive Gets or sets a value indicating whether adaptive B-frame insert when lookahead is enabled. ```csharp public bool BAdaptive { get; set; } ``` #### Property Value Parameters: - (bool): ### BFrames Gets or sets the number of B-frames between I and P. ```csharp public uint BFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### Level Gets or sets the level. ```csharp public NVENCHEVCLevel Level { get; set; } ``` #### Property Value Parameters: - (NVENCHEVCLevel): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public NVENCHEVCProfile Profile { get; set; } ``` #### Property Value Parameters: - (NVENCHEVCProfile): ### RCLookahead Gets or sets the number of frames for frame type lookahead. ```csharp public uint RCLookahead { get; set; } ``` #### Property Value Parameters: - (uint): ### TemporalAQ Gets or sets a value indicating whether Temporal Adaptive Quantization is enabled. ```csharp public bool TemporalAQ { get; set; } ``` #### Property Value Parameters: - (bool): ### UseAUD Gets or sets a value indicating whether AU(Access Unit) delimiter will be used. ```csharp public bool UseAUD { get; set; } ``` #### Property Value Parameters: - (bool): ### VBVBufferSize Gets or sets the VBV(HRD) buffer size in Kbits (0 = NVENC default). ```csharp public uint VBVBufferSize { get; set; } ``` #### Property Value Parameters: - (uint): ### WeightedPrediction Gets or sets a value indicating whether weighted prediction is enabled. ```csharp public bool WeightedPrediction { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): H264EncoderType. ### GetLevelList() Gets the level list. ```csharp public static IEnumerable GetLevelList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the encoder parameters as a string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): String containing all encoder parameters. ### GetProfileList() Gets the profile list. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum NVENCHEVCLevel Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCHEVCLevel.html # Enum NVENCHEVCLevel # Enum NVENCHEVCLevel **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC HEVC encoder level. ```csharp public enum NVENCHEVCLevel ``` ## Fields Parameters: - Level1_0 (): 1.0. - Level2_0 (): 2.0. - Level2_1 (): 2.1. - Level3_0 (): 3.0. - Level3_1 (): 3.1. - Level4_0 (): 4.0. - Level4_1 (): 4.1. - Level5_0 (): 5.0. - Level5_1 (): 5.1. - Level5_2 (): 5.2. - Level6_0 (): 6.0. - Level6_1 (): 6.1. - Level6_2 (): 6.2. --- # Enum NVENCHEVCProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCHEVCProfile.html # Enum NVENCHEVCProfile # Enum NVENCHEVCProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC HEVC profile. ```csharp public enum NVENCHEVCProfile ``` ## Fields Parameters: - Main (): The main. - Main10 (): The main (10 bit). - Main12 (): The main (12 bit). - Main444 (): The main (4:4:4). - Main444x10 (): The main (4:4:4, 10 bit). - Main444x12 (): The main (4:4:4, 12 bit). --- # Enum NVENCPreset Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCPreset.html # Enum NVENCPreset # Enum NVENCPreset **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC preset. ```csharp public enum NVENCPreset ``` ## Fields Parameters: - Default (): Default. - HighPerformance (): The high performance. - HighQuality (): The high quality. - LowLatency (): The low latency. - LowLatencyHQ (): The low latency, high quality. - LowLatencyHP (): The low latency, high performance. - Lossless (): The lossless. - LosslessHP (): The lossless, high performance. --- # Enum NVENCRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCRateControl.html # Enum NVENCRateControl # Enum NVENCRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll NVENC rate control. ```csharp public enum NVENCRateControl ``` ## Fields Parameters: - Default (): The default. - ConstQP (): The constant quantization. - CBR (): The constant bit rate. - VBR (): The variable bit rate. - VBR_MinQP (): The variable bit rate with minimum quantization parameter (DEPRECATED). - CBR_LD_HQ (): The low-delay CBR, high quality. - CBR_HQ (): The CBR, high quality (slower). - VBR_HQ (): The VBR, high quality (slower). --- # Enum NVENCTune Link: api/VisioForge.Core.Types.X.VideoEncoders.NVENCTune.html # Enum NVENCTune # Enum NVENCTune **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Represents NVENC encoder tuning options. ```csharp public enum NVENCTune ``` ## Fields Parameters: - Default (): High quality when p1~7 preset is used. Otherwise encoder will select it based on preset - HighQuality (): High quality - LowLatency (): Low latency - UltraLowLatency (): Ultra low latency - Lossless (): Lossless --- # Class NVMJPEGEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.NVMJPEGEncoderSettings.html # Class NVMJPEGEncoderSettings # Class NVMJPEGEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for NVIDIA JPEG encoder (nvjpegenc). ```csharp public class NVMJPEGEncoderSettings : IMJPEGEncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### CudaDeviceId Gets or sets the CUDA device ID of associated GPU. ```csharp public uint CudaDeviceId { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Default is 0. This is read-only in the GStreamer element. ### Quality Gets or sets the quality of encoding. ```csharp public uint Quality { get; set; } ``` #### Property Value Parameters: - (uint): #### Remarks Valid range is 0-100. Default is 85. ## Methods ### CreateBlock() Creates a new MJPEG encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for MJPEG encoding. ### GetEncoderType() Gets the type of the encoder. ```csharp public MJPEGEncoderType GetEncoderType() ``` #### Returns Parameters: - (MJPEGEncoderType): MJPEGEncoderType. ### IsAvailable() Checks if the NVIDIA MJPEG encoder is available on the system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum OpenH264Complexity Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264Complexity.html # Enum OpenH264Complexity # Enum OpenH264Complexity **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 complexity. ```csharp public enum OpenH264Complexity ``` ## Fields Parameters: - Low (): Low complexity / high speed encoding. - Medium (): Medium complexity / medium speed encoding. - High (): High complexity / low speed encoding. --- # Enum OpenH264DeblockingMode Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264DeblockingMode.html # Enum OpenH264DeblockingMode # Enum OpenH264DeblockingMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 deblocking mode. ```csharp public enum OpenH264DeblockingMode ``` ## Fields Parameters: - True (): Deblocking on. - False (): Deblocking off. - On_NotSliceBoundaries (): Deblocking on, except for slice boundaries. --- # Class OpenH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264EncoderSettings.html # Class OpenH264EncoderSettings # Class OpenH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 encoder settings. ```csharp public class OpenH264EncoderSettings : IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### OpenH264EncoderSettings() Initializes a new instance of the class. ```csharp public OpenH264EncoderSettings() ``` ### OpenH264EncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public OpenH264EncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AdaptiveQuantization Gets or sets a value indicating whether adaptive quantization is enabled. ```csharp public bool AdaptiveQuantization { get; set; } ``` #### Property Value Parameters: - (bool): ### BackgroundDetection Gets or sets a value indicating whether background detection is enabled. ```csharp public bool BackgroundDetection { get; set; } ``` #### Property Value Parameters: - (bool): ### Bitrate Gets or sets the bitrate (Kbit/s). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### Complexity Gets or sets the complexity. ```csharp public OpenH264Complexity Complexity { get; set; } ``` #### Property Value Parameters: - (OpenH264Complexity): ### DeblockingMode Gets or sets the deblocking mode. ```csharp public OpenH264DeblockingMode DeblockingMode { get; set; } ``` #### Property Value Parameters: - (OpenH264DeblockingMode): ### EnableDenoise Gets or sets a value indicating whether denoise is enabled. ```csharp public bool EnableDenoise { get; set; } ``` #### Property Value Parameters: - (bool): ### EnableFrameSkip Gets or sets a value indicating whether an encoder can skip frames to reach the target bitrate. ```csharp public bool EnableFrameSkip { get; set; } ``` #### Property Value Parameters: - (bool): ### GOPSize Gets or sets the number of frames between intra frames. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### Level Gets or sets the level. ```csharp public OpenH264Level Level { get; set; } ``` #### Property Value Parameters: - (OpenH264Level): ### MaxBitrate Gets or sets the maximum bitrate (Kbit/s). ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxSliceSize Gets or sets the maximum size of the slice (in bytes). ```csharp public uint MaxSliceSize { get; set; } ``` #### Property Value Parameters: - (uint): ### NumSlices Gets or sets the number of slices (needs SliceMode set to NSlices). ```csharp public uint NumSlices { get; set; } ``` #### Property Value Parameters: - (uint): ### NumThreads Gets or sets the number of threads. ```csharp public uint NumThreads { get; set; } ``` #### Property Value Parameters: - (uint): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public OpenH264Profile Profile { get; set; } ``` #### Property Value Parameters: - (OpenH264Profile): ### QPMax Gets or sets the maximum quantizer. [1..51], 1 - best quality, 51 - worst quality. ```csharp public uint QPMax { get; set; } ``` #### Property Value Parameters: - (uint): ### QPMin Gets or sets the minimum quantizer. [1..51], 1 - best quality, 51 - worst quality. ```csharp public uint QPMin { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public OpenH264RCMode RateControl { get; set; } ``` #### Property Value Parameters: - (OpenH264RCMode): ### SceneChangeDetection Gets or sets a value indicating whether the scene change detection is enabled. ```csharp public bool SceneChangeDetection { get; set; } ``` #### Property Value Parameters: - (bool): ### SliceMode Gets or sets the slice mode. ```csharp public OpenH264SliceMode SliceMode { get; set; } ``` #### Property Value Parameters: - (OpenH264SliceMode): ### UsageType Gets or sets the type of the usage. ```csharp public OpenH264UsageType UsageType { get; set; } ``` #### Property Value Parameters: - (OpenH264UsageType): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): H264EncoderType. ### GetLevelList() Gets the level list. ```csharp public static IEnumerable GetLevelList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the parameters string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetProfileList() Gets the profile list. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum OpenH264Level Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264Level.html # Enum OpenH264Level # Enum OpenH264Level **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 encoder level. ```csharp public enum OpenH264Level ``` ## Fields Parameters: - Level1_0 (): 1.0. - Level1_1 (): 1.1. - Level1_2 (): 1.2. - Level1_3 (): 1.3. - Level2_0 (): 2.0. - Level2_1 (): 2.1. - Level2_2 (): 2.2. - Level3_0 (): 3.0. - Level3_1 (): 3.1. - Level3_2 (): 3.2. - Level4_0 (): 4.0. - Level4_1 (): 4.1. - Level4_2 (): 4.2. - Level5_0 (): 5.0. - Level5_1 (): 5.1. --- # Enum OpenH264Profile Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264Profile.html # Enum OpenH264Profile # Enum OpenH264Profile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 profile. ```csharp public enum OpenH264Profile ``` ## Fields Parameters: - ConstrainedBaseline (): The constrained baseline. - Baseline (): The baseline. - Main (): The main. - ConstrainedHigh (): The constrained high. - High (): The high. --- # Enum OpenH264RCMode Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264RCMode.html # Enum OpenH264RCMode # Enum OpenH264RCMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 rate control mode. ```csharp public enum OpenH264RCMode ``` ## Fields Parameters: - Quality (): The quality mode. - Bitrate (): The bitrate mode. - Buffer (): No bitrate control, just using buffer status. - False (): Rate control off mode. --- # Enum OpenH264SliceMode Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264SliceMode.html # Enum OpenH264SliceMode # Enum OpenH264SliceMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 slice mode. ```csharp public enum OpenH264SliceMode ``` ## Fields Parameters: - NSlices (): Fixed number of slices. - Auto (): Number of slices equal to number of threads. --- # Enum OpenH264UsageType Link: api/VisioForge.Core.Types.X.VideoEncoders.OpenH264UsageType.html # Enum OpenH264UsageType # Enum OpenH264UsageType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll OpenH264 usage type. ```csharp public enum OpenH264UsageType ``` ## Fields Parameters: - Camera (): Video from camera. - Screen (): The screen content. --- # Enum PNGEncoderCompressionLevel Link: api/VisioForge.Core.Types.X.VideoEncoders.PNGEncoderCompressionLevel.html # Enum PNGEncoderCompressionLevel # Enum PNGEncoderCompressionLevel **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll PNG encoder compression levels for the rspngenc GStreamer element. Compression levels range from 0 (no compression) to 9 (maximum compression). ```csharp public enum PNGEncoderCompressionLevel ``` ## Fields Parameters: - None (): No compression - fastest encoding, largest file size. - Minimal (): Minimal compression - very fast encoding, large file size. - Low (): Low compression - fast encoding, moderately large file size. - Light (): Light compression - good encoding speed, moderate file size. - MediumLow (): Medium-low compression - balanced encoding speed and file size. - Medium (): Medium compression - balanced encoding speed and file size. - MediumHigh (): Medium-high compression - slower encoding, smaller file size (default). - High (): High compression - slow encoding, small file size. - VeryHigh (): Very high compression - very slow encoding, very small file size. - Maximum (): Maximum compression - slowest encoding, smallest file size. --- # Enum PNGEncoderFilterType Link: api/VisioForge.Core.Types.X.VideoEncoders.PNGEncoderFilterType.html # Enum PNGEncoderFilterType # Enum PNGEncoderFilterType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll PNG encoder filter types for the rspngenc GStreamer element. Filter types are used to preprocess the image data before compression to improve compression efficiency for different types of image content. ```csharp public enum PNGEncoderFilterType ``` ## Fields Parameters: - None (): No filtering - fastest processing, good for simple images (default). - Sub (): Sub filter - transmits the difference between each byte and the value of the corresponding byte of the prior pixel. - Up (): Up filter - transmits the difference between each byte and the value of the corresponding byte in the previous scanline. - Average (): Average filter - uses the average of the two neighboring pixels (left and above) to predict the value of a pixel. - Paeth (): Paeth filter - computes a simple linear function of the three neighboring pixels (left, above, upper left), then chooses as predictor the neighboring pixel closest to the computed value. --- # Class PNGEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.PNGEncoderSettings.html # Class PNGEncoderSettings # Class PNGEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll PNG encoder settings for the rspngenc GStreamer element. This encoder is based on the Rust PNG encoder implementation for high-quality PNG image compression. ```csharp public class PNGEncoderSettings ``` #### Inheritance #### Inherited Members ## Properties ### CompressionLevel Gets or sets the compression level for PNG encoding. Higher values provide better compression but slower encoding. Default: MediumHigh (6) ```csharp public PNGEncoderCompressionLevel CompressionLevel { get; set; } ``` #### Property Value Parameters: - (PNGEncoderCompressionLevel): ### Filter Gets or sets the filter type for PNG encoding. Filter types are used to preprocess the image data before compression to improve compression efficiency for different types of image content. Default: None ```csharp public PNGEncoderFilterType Filter { get; set; } ``` #### Property Value Parameters: - (PNGEncoderFilterType): ### WriteInfo Gets or sets whether to write info chunks to the PNG file. Default: true ```csharp public bool WriteInfo { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class QSVAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVAV1EncoderSettings.html # Class QSVAV1EncoderSettings # Class QSVAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Intel QSV AV1 encoder settings. ```csharp public class QSVAV1EncoderSettings : IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the Target bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP" and "ICQ"). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### GOPSize Gets or sets the number of frames between intra frames. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): ### LowLatency Gets or sets a value indicating whether low-latency encoding is enabled. ```csharp public bool LowLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxBitrate Gets or sets the maximum bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP" and "ICQ"). ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### QPI Gets or sets the constant quantizer for I frames (0: default). ```csharp public uint QPI { get; set; } ``` #### Property Value Parameters: - (uint): ### QPP Gets or sets the constant quantizer for P frames (0: default). ```csharp public uint QPP { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public QSVAV1EncRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (QSVAV1EncRateControl): ### RefFrames Gets or sets the number of reference frames (0: unspecified). ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetUsage Gets or sets the target usage. 1: Best quality, 4: Balanced, 7: Best speed. ```csharp public uint TargetUsage { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): AV1EncoderType. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum QSVAV1EncRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVAV1EncRateControl.html # Enum QSVAV1EncRateControl # Enum QSVAV1EncRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV AV1 encoder rate control. ```csharp public enum QSVAV1EncRateControl ``` ## Fields Parameters: - CBR (): Constant Bitrate. - VBR (): Variable Bitrate. - CQP (): Constant Quantizer. --- # Enum QSVCodingOption Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVCodingOption.html # Enum QSVCodingOption # Enum QSVCodingOption **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV coding option. ```csharp public enum QSVCodingOption ``` ## Fields Parameters: - Unknown (): The unknown. - True (): On. - False (): Off. --- # Enum QSVH264EncLevel Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncLevel.html # Enum QSVH264EncLevel # Enum QSVH264EncLevel **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV H264 encoder level. ```csharp public enum QSVH264EncLevel ``` ## Fields Parameters: - Level1_0 (): 1.0. - Level1_1 (): 1.1. - Level1_2 (): 1.2. - Level1_3 (): 1.3. - Level2_0 (): 2.0. - Level2_1 (): 2.1. - Level2_2 (): 2.2. - Level3_0 (): 3.0. - Level3_1 (): 3.1. - Level3_2 (): 3.2. - Level4_0 (): 4.0. - Level4_1 (): 4.1. - Level4_2 (): 4.2. - Level5_0 (): 5.0. - Level5_1 (): 5.1. --- # Class QSVH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncoderSettings.html # Class QSVH264EncoderSettings # Class QSVH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Intel QSV H264 encoder settings. ```csharp public class QSVH264EncoderSettings : IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### QSVH264EncoderSettings() Initializes a new instance of the class. ```csharp public QSVH264EncoderSettings() ``` ### QSVH264EncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public QSVH264EncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AVBRAccuracy Gets or sets the AVBR accuracy in the unit of tenth of percent. ```csharp public uint AVBRAccuracy { get; set; } ``` #### Property Value Parameters: - (uint): ### AVBRConvergence Gets or sets the AVBR convergence in the unit of 100 frames. ```csharp public uint AVBRConvergence { get; set; } ``` #### Property Value Parameters: - (uint): ### BFrames Gets or sets the number of B frames between I and P frames. ```csharp public uint BFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### Bitrate Gets or sets the target bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP", "ICQ", and "LA_ICQ"). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CABAC Gets or sets the CABAC entropy coding. ```csharp public QSVCodingOption CABAC { get; set; } ``` #### Property Value Parameters: - (QSVCodingOption): ### CCInsertMode Gets or sets the Closed Caption Insert mode. ```csharp public QSVH264EncSEIInsertMode CCInsertMode { get; set; } ``` #### Property Value Parameters: - (QSVH264EncSEIInsertMode): ### DisableHRDConformance Gets or sets a value indicating whether to allow NAL HRD non-conformant stream. ```csharp public bool DisableHRDConformance { get; set; } ``` #### Property Value Parameters: - (bool): ### GOPSize Gets or sets the number of frames between intra frames. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): ### ICQQuality Gets or sets the Intelligent Constant Quality for "icq" rate-control (0: default). ```csharp public uint ICQQuality { get; set; } ``` #### Property Value Parameters: - (uint): ### IDRInterval Gets or sets the IDR-frame interval in terms of I-frames. 0: every I-frame is an IDR frame, N: "N" I-frames are inserted between IDR-frames. ```csharp public uint IDRInterval { get; set; } ``` #### Property Value Parameters: - (uint): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### Level Gets or sets the level. ```csharp public QSVH264EncLevel Level { get; set; } ``` #### Property Value Parameters: - (QSVH264EncLevel): ### LowLatency Gets or sets a value indicating whether low-latency encoding is enabled. ```csharp public bool LowLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxBitrate Gets or sets the maximum bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP", "ICQ", and "LA_ICQ"). ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPB Gets or sets the maximum allowed QP value for B-frame types (0: default). ```csharp public uint MaxQPB { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPI Gets or sets the maximum allowed QP value for I-frame types (0: default). ```csharp public uint MaxQPI { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPP Gets or sets the maximum allowed QP value for P-frame types (0: default). ```csharp public uint MaxQPP { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPB Gets or sets the minimum allowed QP value for B-frame types (0: default). ```csharp public uint MinQPB { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPI Gets or sets the minimum allowed QP value for I-frame types (0: default). ```csharp public uint MinQPI { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPP Gets or sets the minimum allowed QP value for P-frame types (0: default). ```csharp public uint MinQPP { get; set; } ``` #### Property Value Parameters: - (uint): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public QSVH264EncProfile Profile { get; set; } ``` #### Property Value Parameters: - (QSVH264EncProfile): ### QPB Gets or sets the constant quantizer for B frames (0: default). ```csharp public uint QPB { get; set; } ``` #### Property Value Parameters: - (uint): ### QPI Gets or sets the constant quantizer for I frames (0: default). ```csharp public uint QPI { get; set; } ``` #### Property Value Parameters: - (uint): ### QPP Gets or sets the constant quantizer for P frames (0: default). ```csharp public uint QPP { get; set; } ``` #### Property Value Parameters: - (uint): ### QVBRQuality Gets or sets the quality level used for "QVBR" rate-control mode (0: default). ```csharp public uint QVBRQuality { get; set; } ``` #### Property Value Parameters: - (uint): ### RCLookAhead Gets or sets the number of frames to look ahead for Rate Control, used for "LA_VBR", "LA_ICQ", and "LA_HRD" rate-control modes. ```csharp public uint RCLookAhead { get; set; } ``` #### Property Value Parameters: - (uint): ### RCLookAheadDS Gets or sets the downsampling method in look-ahead rate control. ```csharp public QSVH264EncRCLookAheadDS RCLookAheadDS { get; set; } ``` #### Property Value Parameters: - (QSVH264EncRCLookAheadDS): ### RateControl Gets or sets the rate control. ```csharp public QSVH264EncRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (QSVH264EncRateControl): ### RefFrames Gets or sets the number of reference frames (0: unspecified). ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetUsage Gets or sets the target usage. 1: Best quality, 4: Balanced, 7: Best speed. ```csharp public uint TargetUsage { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCCInsertModeList() Gets the CC insert mode list. ```csharp public static IEnumerable GetCCInsertModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): H264EncoderType. ### GetLevelList() Gets the level list. ```csharp public static IEnumerable GetLevelList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the parameters string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetProfileList() Gets the profile list. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum QSVH264EncProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncProfile.html # Enum QSVH264EncProfile # Enum QSVH264EncProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV H264 encoder profile. ```csharp public enum QSVH264EncProfile ``` ## Fields Parameters: - ConstrainedBaseline (): The constrained baseline. - Baseline (): The baseline. - Main (): The main. - ConstrainedHigh (): The constrained high. - High (): The high. - ProgressiveHigh (): The progressive high. --- # Enum QSVH264EncRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncRateControl.html # Enum QSVH264EncRateControl # Enum QSVH264EncRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV H264 encoder rate control. ```csharp public enum QSVH264EncRateControl ``` ## Fields Parameters: - CBR (): Constant Bitrate. - VBR (): Variable Bitrate. - CQP (): Constant Quantizer. - AVBR (): Average Variable Bitrate. - LA_VBR (): VBR with look ahead (Non HRD compliant). - ICQ (): Intelligent CQP. - VCM (): Video Conferencing Mode (Non HRD compliant). - LA_ICQ (): Intelligent CQP with LA (Non HRD compliant). - LA_HRD (): HRD compliant LA. - QVBR (): VBR with CQP. --- # Enum QSVH264EncRCLookAheadDS Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncRCLookAheadDS.html # Enum QSVH264EncRCLookAheadDS # Enum QSVH264EncRCLookAheadDS **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV H264 encoder rate control look ahead downsampling. ```csharp public enum QSVH264EncRCLookAheadDS ``` ## Fields Parameters: - Unknown (): Unknown. - False (): Do not use down sampling. - DS2x (): Down sample frames two times before estimation. - DS4x (): Down sample frames four times before estimation. --- # Enum QSVH264EncSEIInsertMode Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVH264EncSEIInsertMode.html # Enum QSVH264EncSEIInsertMode # Enum QSVH264EncSEIInsertMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV H264 encoder SEI insert mode. ```csharp public enum QSVH264EncSEIInsertMode ``` ## Fields Parameters: - Insert (): Insert SEI. - InsertAndDrop (): Insert SEI and remove corresponding meta from output buffer. - Disabled (): Disable SEI insertion. --- # Class QSVHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVHEVCEncoderSettings.html # Class QSVHEVCEncoderSettings # Class QSVHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Intel QSV HEVC encoder settings. ```csharp public class QSVHEVCEncoderSettings : IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### QSVHEVCEncoderSettings() Initializes a new instance of the class. ```csharp public QSVHEVCEncoderSettings() ``` ### QSVHEVCEncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public QSVHEVCEncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### BFrames Gets or sets the number of B frames between I and P frames. ```csharp public uint BFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### Bitrate Gets or sets the target bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP" and "ICQ"). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CCInsertMode Gets or sets the Closed Caption Insert mode. ```csharp public QSVHEVCEncSEIInsertMode CCInsertMode { get; set; } ``` #### Property Value Parameters: - (QSVHEVCEncSEIInsertMode): ### DisableHRDConformance Gets or sets a value indicating whether to allow NAL HRD non-conformant stream. ```csharp public bool DisableHRDConformance { get; set; } ``` #### Property Value Parameters: - (bool): ### GOPSize Gets or sets the number of frames between intra frames. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): ### ICQQuality Gets or sets the Intelligent Constant Quality for "icq" rate-control (0: default). ```csharp public uint ICQQuality { get; set; } ``` #### Property Value Parameters: - (uint): ### IDRInterval Gets or sets the IDR-frame interval in terms of I-frames. 0: every I-frame is an IDR frame, N: "N" I-frames are inserted between IDR-frames. ```csharp public uint IDRInterval { get; set; } ``` #### Property Value Parameters: - (uint): ### LowLatency Gets or sets a value indicating whether low-latency encoding is enabled. ```csharp public bool LowLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxBitrate Gets or sets the maximum bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP", "ICQ", and "LA_ICQ"). ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPB Gets or sets the maximum allowed QP value for B-frame types (0: default). ```csharp public uint MaxQPB { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPI Gets or sets the maximum allowed QP value for I-frame types (0: default). ```csharp public uint MaxQPI { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQPP Gets or sets the maximum allowed QP value for P-frame types (0: default). ```csharp public uint MaxQPP { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPB Gets or sets the minimum allowed QP value for B-frame types (0: default). ```csharp public uint MinQPB { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPI Gets or sets the minimum allowed QP value for I-frame types (0: default). ```csharp public uint MinQPI { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQPP Gets or sets the minimum allowed QP value for P-frame types (0: default). ```csharp public uint MinQPP { get; set; } ``` #### Property Value Parameters: - (uint): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public QSVHEVCEncProfile Profile { get; set; } ``` #### Property Value Parameters: - (QSVHEVCEncProfile): ### QPB Gets or sets the constant quantizer for B frames (0: default). ```csharp public uint QPB { get; set; } ``` #### Property Value Parameters: - (uint): ### QPI Gets or sets the constant quantizer for I frames (0: default). ```csharp public uint QPI { get; set; } ``` #### Property Value Parameters: - (uint): ### QPP Gets or sets the constant quantizer for P frames (0: default). ```csharp public uint QPP { get; set; } ``` #### Property Value Parameters: - (uint): ### QVBRQuality Gets or sets the quality level used for "QVBR" rate-control mode (0: default). ```csharp public uint QVBRQuality { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public QSVHEVCEncRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (QSVHEVCEncRateControl): ### RefFrames Gets or sets the number of reference frames (0: unspecified). ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetUsage Gets or sets the target usage. 1: Best quality, 4: Balanced, 7: Best speed. ```csharp public uint TargetUsage { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): HEVCEncoderType. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetProfileList() Gets the profile list. ```csharp public static IEnumerable GetProfileList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum QSVHEVCEncProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVHEVCEncProfile.html # Enum QSVHEVCEncProfile # Enum QSVHEVCEncProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV HEVC encoder profile. ```csharp public enum QSVHEVCEncProfile ``` ## Fields Parameters: - Main (): The main. - Main10 (): The main (10 bit). --- # Enum QSVHEVCEncRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVHEVCEncRateControl.html # Enum QSVHEVCEncRateControl # Enum QSVHEVCEncRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV HEVC encoder rate control. ```csharp public enum QSVHEVCEncRateControl ``` ## Fields Parameters: - CBR (): Constant Bitrate. - VBR (): Variable Bitrate. - CQP (): Constant Quantizer. - ICQ (): Intelligent CQP. - VCM (): Video Conferencing Mode (Non HRD compliant). - QVBR (): VBR with CQP. --- # Enum QSVHEVCEncSEIInsertMode Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVHEVCEncSEIInsertMode.html # Enum QSVHEVCEncSEIInsertMode # Enum QSVHEVCEncSEIInsertMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV HEVC encoder SEI insert mode. ```csharp public enum QSVHEVCEncSEIInsertMode ``` ## Fields Parameters: - Insert (): Insert SEI. - InsertAndDrop (): Insert SEI and remove corresponding meta from output buffer. - Disabled (): Disable SEI insertion. --- # Class QSVMJPEGEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVMJPEGEncoderSettings.html # Class QSVMJPEGEncoderSettings # Class QSVMJPEGEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Intel QSV MJPEG video encoder settings. ```csharp public class QSVMJPEGEncoderSettings : IMJPEGEncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### QSVMJPEGEncoderSettings() Initializes a new instance of the class. ```csharp public QSVMJPEGEncoderSettings() ``` ### QSVMJPEGEncoderSettings(VideoQuality) Initializes a new instance of the class. ```csharp public QSVMJPEGEncoderSettings(VideoQuality quality) ``` #### Parameters Parameters: - quality (VideoQuality): The quality. ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Quality Gets or sets the quality [10-100]. ```csharp public uint Quality { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetEncoderType() Gets the type of the encoder. ```csharp public MJPEGEncoderType GetEncoderType() ``` #### Returns Parameters: - (MJPEGEncoderType): MJPEGEncoderType. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class QSVVP9EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVVP9EncoderSettings.html # Class QSVVP9EncoderSettings # Class QSVVP9EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV VP9 encoder settings. Implements the . ```csharp public class QSVVP9EncoderSettings : IVPXEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the target bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP" and "ICQ"). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### GOPSize Gets or sets the number of frames between intra frames. ```csharp public uint GOPSize { get; set; } ``` #### Property Value Parameters: - (uint): ### ICQQuality Gets or sets the Intelligent Constant Quality for "icq" rate-control (0: default). ```csharp public uint ICQQuality { get; set; } ``` #### Property Value Parameters: - (uint): ### LowLatency Gets or sets a value indicating whether low-latency encoding is enabled. ```csharp public bool LowLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxBitrate Gets or sets the maximum bitrate in Kbit/sec. Ignored when selected rate-control mode is constant QP variants (i.e., "CQP" and "ICQ"). ```csharp public uint MaxBitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### Profile Gets or sets the profile. Range 0 - 3. ```csharp public int Profile { get; set; } ``` #### Property Value Parameters: - (int): ### QPI Gets or sets the constant quantizer for I frames (0: default). ```csharp public uint QPI { get; set; } ``` #### Property Value Parameters: - (uint): ### QPP Gets or sets the constant quantizer for P frames (0: default). ```csharp public uint QPP { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Gets or sets the rate control. ```csharp public QSVVP9EncRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (QSVVP9EncRateControl): ### RefFrames Gets or sets the number of reference frames (0: unspecified). ```csharp public uint RefFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetUsage Gets or sets the target usage. 1: Best quality, 4: Balanced, 7: Best speed. ```csharp public uint TargetUsage { get; set; } ``` #### Property Value Parameters: - (uint): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public VPXEncoderType GetEncoderType() ``` #### Returns Parameters: - (VPXEncoderType): VPXEncoderType. ### GetParameters() Gets the parameters as string. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum QSVVP9EncRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.QSVVP9EncRateControl.html # Enum QSVVP9EncRateControl # Enum QSVVP9EncRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll QSV VP9 encoder rate control. ```csharp public enum QSVVP9EncRateControl ``` ## Fields Parameters: - CBR (): Constant Bitrate. - VBR (): Variable Bitrate. - CQP (): Constant Quantizer. - ICQ (): Intelligent CQP. --- # Class RAV1EEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.RAV1EEncoderSettings.html # Class RAV1EEncoderSettings # Class RAV1EEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll RAV1E AV1 encoder settings. ```csharp public class RAV1EEncoderSettings : IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### LowLatency Gets or sets a value indicating whether low latency is enabled. ```csharp public bool LowLatency { get; set; } ``` #### Property Value Parameters: - (bool): ### MaxKeyFrameInterval Gets or sets the maximum key frame interval. ```csharp public ulong MaxKeyFrameInterval { get; set; } ``` #### Property Value Parameters: - (ulong): ### MinKeyFrameInterval Gets or sets the minimum key frame interval. ```csharp public ulong MinKeyFrameInterval { get; set; } ``` #### Property Value Parameters: - (ulong): ### MinQuantizer Gets or sets the minimum quantizer. Range is [0..255]. ```csharp public uint MinQuantizer { get; set; } ``` #### Property Value Parameters: - (uint): ### Quantizer Gets or sets the quantizer. ```csharp public uint Quantizer { get; set; } ``` #### Property Value Parameters: - (uint): ### SpeedPreset Gets or sets the speed preset (10 fastest, 0 slowest). ```csharp public int SpeedPreset { get; set; } ``` #### Property Value Parameters: - (int): ### Tune Gets or sets the tune mode. ```csharp public RAV1EEncoderTune Tune { get; set; } ``` #### Property Value Parameters: - (RAV1EEncoderTune): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): AV1EncoderType. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum RAV1EEncoderTune Link: api/VisioForge.Core.Types.X.VideoEncoders.RAV1EEncoderTune.html # Enum RAV1EEncoderTune # Enum RAV1EEncoderTune **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll AV1 encoder tune. ```csharp public enum RAV1EEncoderTune ``` ## Fields Parameters: - PSNR (): The PSNR. - Psychovisual (): The psychovisual. --- # Class SVTAV1EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.SVTAV1EncoderSettings.html # Class SVTAV1EncoderSettings # Class SVTAV1EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for SVT-AV1 (Scalable Video Technology for AV1) encoder. ```csharp public class SVTAV1EncoderSettings : IAV1EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bitrate ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): ### CQP Gets or sets the Constant Quantization Parameter mode value. ```csharp public int? CQP { get; set; } ``` #### Property Value Parameters: - (int ?): #### Remarks When set, enables CQP mode. Valid range is 1-63. ### CRF Gets or sets the Constant Rate Factor mode value. ```csharp public int CRF { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Default is 35. Valid range is 1-63. Lower values result in higher quality. ### IntraPeriodLength Gets or sets the intra period length (GOP size). ```csharp public int IntraPeriodLength { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Controls how often intra frames are inserted. -1 for automatic, 0 for intra-only. ### MaxBitrate Gets or sets the maximum bitrate in bits per second. ```csharp public int? MaxBitrate { get; set; } ``` #### Property Value Parameters: - (int ?): #### Remarks Used for VBR mode when combined with TargetBitrate. ### Preset Gets or sets the encoding preset for quality/speed tradeoff. ```csharp public int Preset { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Valid range is 0-13. Lower values provide better quality but slower encoding. Default is 10. ### TargetBitrate Gets or sets the target bitrate in bits per second. ```csharp public int? TargetBitrate { get; set; } ``` #### Property Value Parameters: - (int ?): #### Remarks When set, enables CBR or VBR encoding modes. ### Threads Gets or sets the number of threads to use for encoding. ```csharp public int Threads { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic thread count based on CPU cores. ### Tier Gets or sets the tier level for the encoded stream. ```csharp public int Tier { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for main tier, 1 for high tier. ### TileColumns Gets or sets the number of tile columns to use. ```csharp public int TileColumns { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic. ### TileRows Gets or sets the number of tile rows to use. ```csharp public int TileRows { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic. ## Methods ### CreateBlock() Creates a new AV1 encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for AV1 encoding. ### GetCaps() Retrieves a string representation of the encoder's capabilities (GStreamer caps). This string describes the media formats and properties that the encoder can handle. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): A containing the encoder's capabilities. ### GetEncoderType() Gets the type of the encoder. ```csharp public AV1EncoderType GetEncoderType() ``` #### Returns Parameters: - (AV1EncoderType): AV1EncoderType. ### GetParameters() Retrieves a string representation of the encoder's current parameters. This string typically includes settings like bitrate, resolution, frame rate, and other configured options. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A containing the encoder parameters. ### IsAvailable() Checks if the SVT-AV1 encoder is available on the system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. --- # Class SVTHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.SVTHEVCEncoderSettings.html # Class SVTHEVCEncoderSettings # Class SVTHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Configuration settings for SVT-HEVC (Scalable Video Technology for HEVC) encoder. ```csharp public class SVTHEVCEncoderSettings : IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bitrate Gets or sets the target bitrate in kilobits per second. ```csharp public int Bitrate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Default is 7000 kbps. ### ConstantQP Gets or sets the constant QP mode value. ```csharp public int? ConstantQP { get; set; } ``` #### Property Value Parameters: - (int ?): #### Remarks When set, enables constant QP mode. Valid range is 0-51. ### EncodingSpeed Gets or sets the encoding speed preset. ```csharp public int EncodingSpeed { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Valid range is 0-11. Lower values provide better quality but slower encoding. Default is 7. ### HierarchicalLevels Gets or sets the hierarchical levels for B-frames. ```csharp public int HierarchicalLevels { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0-3, where 3 is the default value. ### LogicalProcessors Gets or sets the logical processors count. ```csharp public int LogicalProcessors { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic. ### OpenGOP Gets or sets whether to use open GOP structure. ```csharp public bool OpenGOP { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Default is true. ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### SceneChangeDetection Gets or sets whether to enable scene change detection. ```csharp public bool SceneChangeDetection { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Default is true. ### TargetSocket Gets or sets the target socket count for thread allocation. ```csharp public int TargetSocket { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks -1 for automatic. ### Threads Gets or sets the number of threads to use for encoding. ```csharp public int Threads { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic thread count based on CPU cores. ### TileColumns Gets or sets the number of tile columns. ```csharp public int TileColumns { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic. ### TileRows Gets or sets the number of tile rows. ```csharp public int TileRows { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 for automatic. ### TuneForQuality Gets or sets the quality tuning mode. ```csharp public int TuneForQuality { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks 0 = "vq" (visual quality), 1 = "oq" (PSNR/SSIM optimized). Default is 1. ## Methods ### CreateBlock() Creates a new HEVC encoder block with these settings. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): A configured instance for HEVC encoding. ### GetCaps() Retrieves a string representation of the encoder's capabilities (GStreamer caps). This string describes the media formats and properties that the encoder can handle. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): A containing the encoder's capabilities. ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): HEVCEncoderType. ### GetParameters() Retrieves a string representation of the encoder's current parameters. This string typically includes settings like bitrate, resolution, frame rate, and other configured options. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A containing the encoder parameters. ### IsAvailable() Checks if the SVT-HEVC encoder is available on the system. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if available; otherwise, false. --- # Class TheoraEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.TheoraEncoderSettings.html # Class TheoraEncoderSettings # Class TheoraEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Theora encoder settings. Implements the . Implements the . ```csharp public class TheoraEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### Bitrate Gets or sets the bitrate (kbps). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CapOverflow Gets or sets a value indicating whether to enable capping of bit reservoir overflows. ```csharp public bool CapOverflow { get; set; } ``` #### Property Value Parameters: - (bool): ### CapUnderflow Gets or sets a value indicating whether to enable capping of bit reservoir underflows. ```csharp public bool CapUnderflow { get; set; } ``` #### Property Value Parameters: - (bool): ### DropFrames Gets or sets a value indicating whether to allow or disallow frame dropping. ```csharp public bool DropFrames { get; set; } ``` #### Property Value Parameters: - (bool): ### KeyFrameAuto Gets or sets a value indicating whether to use automatic keyframe detection. ```csharp public bool KeyFrameAuto { get; set; } ``` #### Property Value Parameters: - (bool): ### KeyFrameForce Gets or sets the interval force keyframe every N frames. ```csharp public int KeyFrameForce { get; set; } ``` #### Property Value Parameters: - (int): ### KeyFrameFrequency Gets or sets the key frame frequency. ```csharp public int KeyFrameFrequency { get; set; } ``` #### Property Value Parameters: - (int): ### MultipassCacheFile Gets or sets the multipass cache file. ```csharp public string MultipassCacheFile { get; set; } ``` #### Property Value Parameters: - (string): ### MultipassMode Gets or sets the multipass mode. ```csharp public TheoraMultipassMode MultipassMode { get; set; } ``` #### Property Value Parameters: - (TheoraMultipassMode): ### Quality Gets or sets the quality. ```csharp public int Quality { get; set; } ``` #### Property Value Parameters: - (int): ### RateBuffer Gets or sets the size of the rate control buffer, in units of frames. 0 = auto. ```csharp public int RateBuffer { get; set; } ``` #### Property Value Parameters: - (int): ### SpeedLevel Gets or sets the amount of motion vector searching done while encoding. ```csharp public int SpeedLevel { get; set; } ``` #### Property Value Parameters: - (int): ### VP3Compatible Gets or sets a value indicating whether to enable VP3 compatibility. ```csharp public bool VP3Compatible { get; set; } ``` #### Property Value Parameters: - (bool): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Enum TheoraMultipassMode Link: api/VisioForge.Core.Types.X.VideoEncoders.TheoraMultipassMode.html # Enum TheoraMultipassMode # Enum TheoraMultipassMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Theora multipass mode. ```csharp public enum TheoraMultipassMode ``` ## Fields Parameters: - SinglePass (): Single pass - FirstPass (): First pass - SecondPass (): Second pass --- # Enum VAAPIEncoderMacroblockBitrateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIEncoderMacroblockBitrateControl.html # Enum VAAPIEncoderMacroblockBitrateControl # Enum VAAPIEncoderMacroblockBitrateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enum for Macroblock level Bitrate Control. ```csharp public enum VAAPIEncoderMacroblockBitrateControl ``` ## Fields Parameters: - Auto (): Auto mode. - Enabled (): Enabled. - Disabled (): Disabled. --- # Enum VAAPIH264EncoderComplianceMode Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264EncoderComplianceMode.html # Enum VAAPIH264EncoderComplianceMode # Enum VAAPIH264EncoderComplianceMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enum for VAAPI H264 Compliance Modes. ```csharp public enum VAAPIH264EncoderComplianceMode ``` ## Fields Parameters: - Strict (): Strict compliance to the H264 Specification. - RestrictBufAlloc (): Restrict the allocation size of coded-buffer. --- # Enum VAAPIH264EncoderPredictionType Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264EncoderPredictionType.html # Enum VAAPIH264EncoderPredictionType # Enum VAAPIH264EncoderPredictionType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enum for VAAPI H264 Reference Picture Selection Modes. ```csharp public enum VAAPIH264EncoderPredictionType ``` ## Fields Parameters: - Default (): Default encode, previous/next frame as reference. - HierarchicalP (): Hierarchical P frame encode. - HierarchicalB (): Hierarchical B frame encode. --- # Enum VAAPIH264EncoderProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264EncoderProfile.html # Enum VAAPIH264EncoderProfile # Enum VAAPIH264EncoderProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VAAPI H264 profile. ```csharp public enum VAAPIH264EncoderProfile ``` ## Fields Parameters: - ConstrainedBaseline (): The constrained baseline. - Baseline (): The baseline. - Main (): The main. - High (): The high. - MultiviewHigh (): The multiview high. - StereoHigh (): The stereo high. --- # Class VAAPIH264EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264EncoderSettings.html # Class VAAPIH264EncoderSettings # Class VAAPIH264EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Class representing the H264 Encoder settings. ```csharp public class VAAPIH264EncoderSettings : IH264EncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bitrate The desired bitrate expressed in kbps (0: auto-calculate). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CABAC Enable CABAC entropy coding mode. ```csharp public bool CABAC { get; set; } ``` #### Property Value Parameters: - (bool): ### CPBLength Length of the CPB buffer in milliseconds. ```csharp public TimeSpan CPBLength { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### ComplianceMode Tune encode quality/performance by relaxing specification compliance restrictions. ```csharp public VAAPIH264EncoderComplianceMode ComplianceMode { get; set; } ``` #### Property Value Parameters: - (VAAPIH264EncoderComplianceMode): ### DCT8x8 Enable adaptive use of 8x8 transforms in I-frames. ```csharp public bool DCT8x8 { get; set; } ``` #### Property Value Parameters: - (bool): ### DefaultROIDeltaQp The default delta-QP to apply to each Region of Interest (lower value means higher quality, higher value means lower quality). ```csharp public int DefaultROIDeltaQp { get; set; } ``` #### Property Value Parameters: - (int): ### InitQp Initial quantizer value. ```csharp public uint InitQp { get; set; } ``` #### Property Value Parameters: - (uint): ### KeyFrameDetected Occurs when on key frame detected. Timestamp is in nanoseconds. ```csharp public KeyFrameDetectedDelegate KeyFrameDetected { get; set; } ``` #### Property Value Parameters: - (KeyFrameDetectedDelegate): ### KeyframePeriod Maximal distance between two keyframes (0: auto-calculate). ```csharp public uint KeyframePeriod { get; set; } ``` #### Property Value Parameters: - (uint): ### MBBRC Macroblock level Bitrate Control. ```csharp public VAAPIEncoderMacroblockBitrateControl MBBRC { get; set; } ``` #### Property Value Parameters: - (VAAPIEncoderMacroblockBitrateControl): ### MaxBFrames Number of B-frames between I and P. ```csharp public uint MaxBFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQp Maximum quantizer value. ```csharp public uint MaxQp { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQp Minimum quantizer value. ```csharp public uint MinQp { get; set; } ``` #### Property Value Parameters: - (uint): ### NumSlices Number of slices per frame. ```csharp public uint NumSlices { get; set; } ``` #### Property Value Parameters: - (uint): ### NumViews Number of Views for MVC encoding. ```csharp public uint NumViews { get; set; } ``` #### Property Value Parameters: - (uint): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### PredictionType Reference Picture Selection Modes. ```csharp public VAAPIH264EncoderPredictionType PredictionType { get; set; } ``` #### Property Value Parameters: - (VAAPIH264EncoderPredictionType): ### Profile Gets or sets the profile. ```csharp public VAAPIH264EncoderProfile Profile { get; set; } ``` #### Property Value Parameters: - (VAAPIH264EncoderProfile): ### QpIb Difference of QP between I and B frame (available only on CQP). ```csharp public int QpIb { get; set; } ``` #### Property Value Parameters: - (int): ### QpIp Difference of QP between I and P frame (available only on CQP). ```csharp public int QpIp { get; set; } ``` #### Property Value Parameters: - (int): ### QualityFactor Quality factor for ICQ/QVBR bitrate control mode (low value means higher quality, higher value means lower quality). ```csharp public uint QualityFactor { get; set; } ``` #### Property Value Parameters: - (uint): ### QualityLevel Encoding Quality Level (lower value means higher quality/slow encode, higher value means lower quality/fast encode). ```csharp public uint QualityLevel { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Rate control mode. ```csharp public VAAPIH264RateControl RateControl { get; set; } ``` #### Property Value Parameters: - (VAAPIH264RateControl): ### Refs Number of reference frames. ```csharp public uint Refs { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetPercentage The desired target percentage of bitrate for variable rate controls. ```csharp public uint TargetPercentage { get; set; } ``` #### Property Value Parameters: - (uint): ### TemporalLevels Number of temporal levels in the encoded stream. ```csharp public uint TemporalLevels { get; set; } ``` #### Property Value Parameters: - (uint): ### Trellis The Trellis Quantization Method of Encoder. ```csharp public bool Trellis { get; set; } ``` #### Property Value Parameters: - (bool): ### Tune Encoder tuning option. ```csharp public VAAPIH264EncoderTune Tune { get; set; } ``` #### Property Value Parameters: - (VAAPIH264EncoderTune): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): Gst.Caps. ### GetEncoderType() Gets the type of the encoder. ```csharp public H264EncoderType GetEncoderType() ``` #### Returns Parameters: - (H264EncoderType): H264EncoderType. ### GetParameters() Gets the parameters. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): string. --- # Enum VAAPIH264EncoderTune Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264EncoderTune.html # Enum VAAPIH264EncoderTune # Enum VAAPIH264EncoderTune **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enum for VAAPI H264 Encoder tuning options. ```csharp public enum VAAPIH264EncoderTune ``` ## Fields Parameters: - None (): None. - HighCompression (): High compression. - LowPower (): Low power mode. --- # Enum VAAPIH264RateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIH264RateControl.html # Enum VAAPIH264RateControl # Enum VAAPIH264RateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Enum for Rate control modes. ```csharp public enum VAAPIH264RateControl ``` ## Fields Parameters: - CQP (): Constant QP. - CBR (): Constant bitrate. - VBR (): Variable bitrate. - VBRConstrained (): Variable bitrate - Constrained. - ICQ (): Constant QP - Intelligent. - QVBR (): Variable bitrate - Quality defined. --- # Enum VAAPIHEVCEncoderProfile Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIHEVCEncoderProfile.html # Enum VAAPIHEVCEncoderProfile # Enum VAAPIHEVCEncoderProfile **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VAAPI HEVC profile. ```csharp public enum VAAPIHEVCEncoderProfile ``` ## Fields Parameters: - Main (): The main. - Main10 (): The main 10-bit. - Main444 (): The main 4:4:4. - Main44410 (): The main 4:4:4 10 bit. --- # Class VAAPIHEVCEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIHEVCEncoderSettings.html # Class VAAPIHEVCEncoderSettings # Class VAAPIHEVCEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll ```csharp public class VAAPIHEVCEncoderSettings : IHEVCEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Bitrate The desired bitrate expressed in kbps (0: auto-calculate). ```csharp public uint Bitrate { get; set; } ``` #### Property Value Parameters: - (uint): ### CPBLength Length of the CPB buffer in milliseconds. ```csharp public uint CPBLength { get; set; } ``` #### Property Value Parameters: - (uint): ### DefaultROIDeltaQp The default delta-qp to apply to each Region of Interest (lower value means higher-quality, higher value means lower-quality). ```csharp public int DefaultROIDeltaQp { get; set; } ``` #### Property Value Parameters: - (int): ### InitQp Initial quantizer value. ```csharp public uint InitQp { get; set; } ``` #### Property Value Parameters: - (uint): ### KeyframePeriod Maximal distance between two keyframes (0: auto-calculate). ```csharp public uint KeyframePeriod { get; set; } ``` #### Property Value Parameters: - (uint): ### LowDelayB Transforms P frames into predictive B frames. Enable it when P frames are not supported. ```csharp public bool LowDelayB { get; set; } ``` #### Property Value Parameters: - (bool): ### MBBRC Macroblock level Bitrate Control. ```csharp public VAAPIEncoderMacroblockBitrateControl MBBRC { get; set; } ``` #### Property Value Parameters: - (VAAPIEncoderMacroblockBitrateControl): ### MaxBFrames Number of B-frames between I and P. ```csharp public uint MaxBFrames { get; set; } ``` #### Property Value Parameters: - (uint): ### MaxQp Maximum quantizer value. ```csharp public uint MaxQp { get; set; } ``` #### Property Value Parameters: - (uint): ### MinQp Minimum quantizer value. ```csharp public uint MinQp { get; set; } ``` #### Property Value Parameters: - (uint): ### NumSlices Number of slices per frame. ```csharp public uint NumSlices { get; set; } ``` #### Property Value Parameters: - (uint): ### NumTileCols The number of columns for tile encoding. ```csharp public uint NumTileCols { get; set; } ``` #### Property Value Parameters: - (uint): ### NumTileRows The number of rows for tile encoding. ```csharp public uint NumTileRows { get; set; } ``` #### Property Value Parameters: - (uint): ### ParseStream Gets or sets a value indicating whether to parse the video stream. True by default. Disable it for SRT streaming. ```csharp public bool ParseStream { get; set; } ``` #### Property Value Parameters: - (bool): ### Profile Gets or sets the profile. ```csharp public VAAPIHEVCEncoderProfile Profile { get; set; } ``` #### Property Value Parameters: - (VAAPIHEVCEncoderProfile): ### QpIb Difference of QP between I and B frame (available only on CQP). ```csharp public int QpIb { get; set; } ``` #### Property Value Parameters: - (int): ### QpIp Difference of QP between I and P frame (available only on CQP). ```csharp public int QpIp { get; set; } ``` #### Property Value Parameters: - (int): ### QualityFactor Quality factor for ICQ/QBVR bitrate control mode (lower value means higher quality, higher value means lower quality). ```csharp public uint QualityFactor { get; set; } ``` #### Property Value Parameters: - (uint): ### QualityLevel Encoding Quality Level (lower value means higher-quality/slow-encode, higher value means lower-quality/fast-encode). ```csharp public uint QualityLevel { get; set; } ``` #### Property Value Parameters: - (uint): ### RateControl Rate control mode. ```csharp public VAAPIHEVCRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (VAAPIHEVCRateControl): ### Refs Number of reference frames. ```csharp public uint Refs { get; set; } ``` #### Property Value Parameters: - (uint): ### TargetPercentage The desired target percentage of bitrate for variable rate controls. ```csharp public uint TargetPercentage { get; set; } ``` #### Property Value Parameters: - (uint): ### Trellis The Trellis Quantization Method of Encoder. ```csharp public bool Trellis { get; set; } ``` #### Property Value Parameters: - (bool): ### Tune Encoder tuning option. ```csharp public VAAPIHEVCEncoderTune Tune { get; set; } ``` #### Property Value Parameters: - (VAAPIHEVCEncoderTune): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public HEVCEncoderType GetEncoderType() ``` #### Returns Parameters: - (HEVCEncoderType): HEVCEncoderType. ### GetParameters() Retrieves a string representation of the encoder's current parameters. This string typically includes settings like bitrate, resolution, frame rate, and other configured options. ```csharp public string GetParameters() ``` #### Returns Parameters: - (string): A containing the encoder parameters. --- # Enum VAAPIHEVCEncoderTune Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIHEVCEncoderTune.html # Enum VAAPIHEVCEncoderTune # Enum VAAPIHEVCEncoderTune **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Encoder tuning option ```csharp public enum VAAPIHEVCEncoderTune ``` ## Fields Parameters: - None (): None - LowPower (): Low power mode --- # Enum VAAPIHEVCRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.VAAPIHEVCRateControl.html # Enum VAAPIHEVCRateControl # Enum VAAPIHEVCRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Rate control mode ```csharp public enum VAAPIHEVCRateControl ``` ## Fields Parameters: - CQP (): Constant QP - CBR (): Constant bitrate - VBR (): Variable bitrate - ICQ (): Constant QP - Intelligent - QVBR (): Variable bitrate - Quality defined --- # Class VideoEncoderShared Link: api/VisioForge.Core.Types.X.VideoEncoders.VideoEncoderShared.html # Class VideoEncoderShared # Class VideoEncoderShared **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Video encoder shared data. ```csharp public class VideoEncoderShared ``` #### Inheritance #### Inherited Members ## Properties ### Type Gets or sets the type. ```csharp public VideoEncoderType Type { get; set; } ``` #### Property Value Parameters: - (VideoEncoderType): --- # Enum VideoEncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.VideoEncoderType.html # Enum VideoEncoderType # Enum VideoEncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Video encoder type. ```csharp public enum VideoEncoderType ``` ## Fields Parameters: - None (): None. - H264 (): The H264. --- # Enum VideoQuality Link: api/VisioForge.Core.Types.X.VideoEncoders.VideoQuality.html # Enum VideoQuality # Enum VideoQuality **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll Video quality. ```csharp public enum VideoQuality ``` ## Fields Parameters: - Low (): Low quality. - Normal (): Normal quality. - High (): High quality. - VeryHigh (): Very high quality. --- # Class VP8EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.VP8EncoderSettings.html # Class VP8EncoderSettings # Class VP8EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8 encoder settings. ```csharp public class VP8EncoderSettings : VPXEncoderSettings, IVPXEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public VPXEncoderType GetEncoderType() ``` #### Returns Parameters: - (VPXEncoderType): VPXEncoderType. ### GetParameters() Gets the parameters. ```csharp public override string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class VP9EncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.VP9EncoderSettings.html # Class VP9EncoderSettings # Class VP9EncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP9 encoder settings. ```csharp public class VP9EncoderSettings : VPXEncoderSettings, IVPXEncoderSettings, IVideoEncoder, IMediaBlockSettings, IEncoderTextInfo ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Properties ### AQMode Gets or sets the Adaptive Quantization mode. ```csharp public VPXAdaptiveQuantizationMode AQMode { get; set; } ``` #### Property Value Parameters: - (VPXAdaptiveQuantizationMode): ### FrameParallelDecoding Gets or sets a value indicating whether encoded bitstream should allow parallel processing of video frames in the decoder. ```csharp public bool FrameParallelDecoding { get; set; } ``` #### Property Value Parameters: - (bool): ### RowMultithread Gets or sets a value indicating whether each row should be encoded using multiple threads. ```csharp public bool RowMultithread { get; set; } ``` #### Property Value Parameters: - (bool): ### TileColumns Gets or sets the number of tile columns, log2. ```csharp public int TileColumns { get; set; } ``` #### Property Value Parameters: - (int): ### TileRows Gets or sets the number of tile rows, log2. ```csharp public int TileRows { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### GetCaps() Gets the caps. ```csharp public string GetCaps() ``` #### Returns Parameters: - (string): System.String. ### GetEncoderType() Gets the type of the encoder. ```csharp public VPXEncoderType GetEncoderType() ``` #### Returns Parameters: - (VPXEncoderType): VPXEncoderType. ### GetParameters() Gets the parameters. ```csharp public override string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Enum VPXAdaptiveQuantizationMode Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXAdaptiveQuantizationMode.html # Enum VPXAdaptiveQuantizationMode # Enum VPXAdaptiveQuantizationMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VPX Adaptive Quantization modes. ```csharp [Flags] public enum VPXAdaptiveQuantizationMode ``` ## Fields Parameters: - False (): Off. - Variance (): The variance. - Complexity (): The complexity. - CyclicRefresh (): The cyclic refresh. - Equator360 (): The equator 360. - Perceptual (): The perceptual. - PSNR (): The PSNR. - Lookahead (): The lookahead. --- # Class VPXEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXEncoderSettings.html # Class VPXEncoderSettings # Class VPXEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 shared encoder settings. ```csharp public class VPXEncoderSettings ``` #### Inheritance #### Derived #### Inherited Members ## Properties ### ARNRMaxFrames Gets or sets the AltRef maximum number of frames. ```csharp public int ARNRMaxFrames { get; set; } ``` #### Property Value Parameters: - (int): ### ARNRStrength Gets or sets the AltRef strength. ```csharp public int ARNRStrength { get; set; } ``` #### Property Value Parameters: - (int): ### ARNRType Gets or sets the AltRef type. ```csharp public int ARNRType { get; set; } ``` #### Property Value Parameters: - (int): ### AutoAltRef Gets or sets a value indicating whether encoder should automatically generate AltRef frames. ```csharp public bool AutoAltRef { get; set; } ``` #### Property Value Parameters: - (bool): ### BitsPerPixel Gets or sets the factor to convert number of pixels to bitrate value (only has an effect if TargetBitrate = 0). ```csharp public float BitsPerPixel { get; set; } ``` #### Property Value Parameters: - (float): ### BufferInitialSize Gets or sets the Initial client buffer size. ```csharp public TimeSpan BufferInitialSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BufferOptimalSize Gets or sets the optimal client buffer size. ```csharp public TimeSpan BufferOptimalSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### BufferSize Gets or sets the client buffer size. ```csharp public TimeSpan BufferSize { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### CPUUsed Gets or sets the CPU used. ```csharp public int CPUUsed { get; set; } ``` #### Property Value Parameters: - (int): ### CQLevel Gets or sets the constrained quality level. ```csharp public int CQLevel { get; set; } ``` #### Property Value Parameters: - (int): ### Deadline Gets or sets the deadline per frame (usec, 0 = best, 1 = realtime). ```csharp public long Deadline { get; set; } ``` #### Property Value Parameters: - (long): ### DropframeThreshold Gets or sets the temporal resampling threshold (buf %%). ```csharp public int DropframeThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### ErrorResilient Gets or sets the error resilient flags. ```csharp public VPXErrorResilientFlags ErrorResilient { get; set; } ``` #### Property Value Parameters: - (VPXErrorResilientFlags): ### HorizontalScalingMode Gets or sets the horizontal scaling mode. ```csharp public VPXScalingMode HorizontalScalingMode { get; set; } ``` #### Property Value Parameters: - (VPXScalingMode): ### KeyFrameMaxDistance Gets or sets the Maximum distance between keyframes (number of frames). ```csharp public int KeyFrameMaxDistance { get; set; } ``` #### Property Value Parameters: - (int): ### KeyFrameMode Gets or sets the key frame mode. ```csharp public VPXKeyFrameMode KeyFrameMode { get; set; } ``` #### Property Value Parameters: - (VPXKeyFrameMode): ### LagInFrames Gets or sets the maximum number of frames to lag. ```csharp public int LagInFrames { get; set; } ``` #### Property Value Parameters: - (int): ### MaxIntraBitrate Gets or sets the maximum intra bitrate. ```csharp public int MaxIntraBitrate { get; set; } ``` #### Property Value Parameters: - (int): ### MaxQuantizer Gets or sets the maximum quantizer (worst). [0..63]. ```csharp public int MaxQuantizer { get; set; } ``` #### Property Value Parameters: - (int): ### MinQuantizer Gets or sets the minimum quantizer (best). [0..63]. ```csharp public int MinQuantizer { get; set; } ``` #### Property Value Parameters: - (int): ### MultipassCacheFile Gets or sets the multipass cache file. If stream caps are reinited, multiple files will be created: file, file.1, file.2, ... and so on. ```csharp public string MultipassCacheFile { get; set; } ``` #### Property Value Parameters: - (string): ### MultipassMode Gets or sets the multipass mode. ```csharp public VPXMultipassMode MultipassMode { get; set; } ``` #### Property Value Parameters: - (VPXMultipassMode): ### NoiseSensitivity Gets or sets the noise sensitivity (frames to blur). ```csharp public int NoiseSensitivity { get; set; } ``` #### Property Value Parameters: - (int): ### NumOfThreads Gets or sets the number of threads to use. ```csharp public int NumOfThreads { get; set; } ``` #### Property Value Parameters: - (int): ### Overshoot Gets or sets the datarate overshoot (max) target(%%). ```csharp public int Overshoot { get; set; } ``` #### Property Value Parameters: - (int): ### Profile Gets or sets the profile. Range 0 - 3. ```csharp public int Profile { get; set; } ``` #### Property Value Parameters: - (int): ### RateControl Gets or sets the rate control. ```csharp public VPXRateControl RateControl { get; set; } ``` #### Property Value Parameters: - (VPXRateControl): ### ResizeAllowed Gets or sets a value indicating whether spatial resampling is allowed. ```csharp public bool ResizeAllowed { get; set; } ``` #### Property Value Parameters: - (bool): ### ResizeDownThreshold Gets or sets the downscale threshold (buf %%). ```csharp public int ResizeDownThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### ResizeUpThreshold Gets or sets the upscale threshold (buf %%). ```csharp public int ResizeUpThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### Sharpness Gets or sets the sharpness. ```csharp public int Sharpness { get; set; } ``` #### Property Value Parameters: - (int): ### StaticThreshold Gets or sets the motion detection threshold. Recommendation is to set 100 for screen/window sharing. ```csharp public int StaticThreshold { get; set; } ``` #### Property Value Parameters: - (int): ### TargetBitrate Gets or sets the target bitrate (in Kbits/s). 0: auto - bitrate depends on resolution, see "BitsPerPixel" property for more info. ```csharp public int TargetBitrate { get; set; } ``` #### Property Value Parameters: - (int): ### TokenPartitions Gets or sets the number of token partitions. ```csharp public VPXTokenPartitions TokenPartitions { get; set; } ``` #### Property Value Parameters: - (VPXTokenPartitions): ### Tuning Gets or sets the tuning mode. ```csharp public VPXTuning Tuning { get; set; } ``` #### Property Value Parameters: - (VPXTuning): ### TwoPassVBRBias Gets or sets the CBR/VBR bias (0=CBR, 100=VBR). ```csharp public int TwoPassVBRBias { get; set; } ``` #### Property Value Parameters: - (int): ### TwoPassVBRMaxSection Gets or sets the GOP maximum bitrate (%% target). ```csharp public int TwoPassVBRMaxSection { get; set; } ``` #### Property Value Parameters: - (int): ### TwoPassVBRMinSection Gets or sets the GOP minimum bitrate (%% target). ```csharp public int TwoPassVBRMinSection { get; set; } ``` #### Property Value Parameters: - (int): ### Undershoot Gets or sets the datarate undershoot (min) target (%%). ```csharp public int Undershoot { get; set; } ``` #### Property Value Parameters: - (int): ### VerticalScalingMode Gets or sets the vertical scaling mode. ```csharp public VPXScalingMode VerticalScalingMode { get; set; } ``` #### Property Value Parameters: - (VPXScalingMode): ## Methods ### GetErrorResilientList() Gets the error resilient flag list. ```csharp public static IEnumerable GetErrorResilientList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetHorizontalScalingModeList() Gets the horizontal scaling mode list. ```csharp public static IEnumerable GetHorizontalScalingModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetKeyFrameModeList() Gets the key frame mode list. ```csharp public static IEnumerable GetKeyFrameModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetMultipassModeList() Gets the multipass mode list. ```csharp public static IEnumerable GetMultipassModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetParameters() Gets the parameters. ```csharp public virtual string GetParameters() ``` #### Returns Parameters: - (string): System.String. ### GetRateControlList() Gets the rate control list. ```csharp public static IEnumerable GetRateControlList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetScalingModeList() Gets the scaling mode list. ```csharp public static IEnumerable GetScalingModeList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetTuningList() Gets the tuning list. ```csharp public static IEnumerable GetTuningList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. ### GetVPXTokenPartitionsList() Gets the token partition list. ```csharp public static IEnumerable GetVPXTokenPartitionsList() ``` #### Returns Parameters: - (IEnumerable < string >): IEnumerable<System.String>. --- # Enum VPXEncoderType Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXEncoderType.html # Enum VPXEncoderType # Enum VPXEncoderType **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 encoder type. ```csharp public enum VPXEncoderType ``` ## Fields Parameters: - VP8 (): The VP8. - VP9 (): The VP9. - QSV_VP9 (): The Intel QSV VP9. - CustomEncoder (): The custom encoder specified by element name. --- # Enum VPXErrorResilientFlags Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXErrorResilientFlags.html # Enum VPXErrorResilientFlags # Enum VPXErrorResilientFlags **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 error resilient flags. ```csharp [Flags] public enum VPXErrorResilientFlags ``` ## Fields Parameters: - None (): None. - Default (): Default error resilience. - Partitions (): Allow partitions to be decoded independently. --- # Enum VPXKeyFrameMode Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXKeyFrameMode.html # Enum VPXKeyFrameMode # Enum VPXKeyFrameMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 keyframe mode. ```csharp public enum VPXKeyFrameMode ``` ## Fields Parameters: - Auto (): Determine optimal placement automatically. - Disabled (): Don't automatically place keyframes. --- # Enum VPXMultipassMode Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXMultipassMode.html # Enum VPXMultipassMode # Enum VPXMultipassMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 multipass mode. ```csharp public enum VPXMultipassMode ``` ## Fields Parameters: - OnePass (): One pass encoding (default). - FirstPass (): First pass of multipass encoding. - LastPass (): Last pass of multipass encoding. --- # Enum VPXRateControl Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXRateControl.html # Enum VPXRateControl # Enum VPXRateControl **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 end usage mode. ```csharp public enum VPXRateControl ``` ## Fields Parameters: - VBR (): The Variable Bit Rate (VBR) mode. - CBR (): The Constant Bit Rate (CBR) mode. - CQ (): The Constant Quality Mode(CQ) mode. --- # Enum VPXScalingMode Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXScalingMode.html # Enum VPXScalingMode # Enum VPXScalingMode **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VPX scaling mode. ```csharp public enum VPXScalingMode ``` ## Fields Parameters: - Normal (): Normal. - _4_5 (): 4:5. - _3_5 (): 3:5. - _1_2 (): 1:2. --- # Enum VPXTokenPartitions Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXTokenPartitions.html # Enum VPXTokenPartitions # Enum VPXTokenPartitions **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 token partitions. ```csharp public enum VPXTokenPartitions ``` ## Fields Parameters: - One (): One token partition. - Two (): Two token partitions. - Four (): Four token partitions. - Eight (): Eight token partitions. --- # Enum VPXTuning Link: api/VisioForge.Core.Types.X.VideoEncoders.VPXTuning.html # Enum VPXTuning # Enum VPXTuning **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll VP8/VP9 tuning. ```csharp public enum VPXTuning ``` ## Fields Parameters: - PSNR (): Tune for PSNR. - SSIM (): Tune for SSIM. --- # Class WMVEncoderSettings Link: api/VisioForge.Core.Types.X.VideoEncoders.WMVEncoderSettings.html # Class WMVEncoderSettings # Class WMVEncoderSettings **Namespace**: VisioForge.Core.Types.X.VideoEncoders **Assembly**: VisioForge.Core.dll WMV encoder settings. Implements the . Implements the . ```csharp public class WMVEncoderSettings : IVideoEncoder, IMediaBlockSettings ``` #### Inheritance #### Implements #### Inherited Members ## Fields ### Name The name. ```csharp public static string Name ``` #### Field Value Parameters: - (string): ## Methods ### CreateBlock() Creates the block. ```csharp public MediaBlock CreateBlock() ``` #### Returns Parameters: - (MediaBlock): MediaBlock. ### IsAvailable() Determines whether this encoder is available. ```csharp public static bool IsAvailable() ``` #### Returns Parameters: - (bool): true if this encoder is available; otherwise, false. ### ToString() Returns a that represents this instance. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. ## See Also --- # Namespace VisioForge.Core.Types.X.VideoEncoders Link: api/VisioForge.Core.Types.X.VideoEncoders.html # Namespace VisioForge.Core.Types.X.VideoEncoders # Namespace VisioForge.Core.Types.X.VideoEncoders ### Classes Parameters: - (): Configuration settings for AMD AMF AV1 encoder. Implements the - (): Configuration settings for AMD AMF H264 encoder. - (): Configuration settings for AMD AMF HEVC encoder. - (): Configuration settings for AOM (Alliance for Open Media) AV1 encoder. - (): Configuration settings for a custom H264 encoder implementation. Implements the - (): Custom HEVC encoder settings. Implements the - (): Custom VPx encoder settings. Implements the - (): DV video encoder settings. - (): GIF encoder settings. - (): MJPEG video encoder settings. - (): MPEG-2 video encoder settings. - (): Represents the settings for a video codec configuration. - (): Intel Media SDK MPEG-2 encoder settings (Linux only). - (): Class NVENCAV1EncoderSettings. Implements the Implements the - (): NVENC base encoder settings. Do not use it directly. - (): Nvidia NVENC H264 encoder settings. Implements the . Implements the . - (): Nvidia NVENC HEVC encoder settings. Implements the . Implements the . - (): Configuration settings for NVIDIA JPEG encoder (nvjpegenc). - (): OpenH264 encoder settings. - (): PNG encoder settings for the rspngenc GStreamer element. This encoder is based on the Rust PNG encoder implementation for high-quality PNG image compression. - (): Intel QSV AV1 encoder settings. - (): Intel QSV H264 encoder settings. - (): Intel QSV HEVC encoder settings. - (): Intel QSV MJPEG video encoder settings. - (): QSV VP9 encoder settings. Implements the . - (): RAV1E AV1 encoder settings. - (): Configuration settings for SVT-AV1 (Scalable Video Technology for AV1) encoder. - (): Configuration settings for SVT-HEVC (Scalable Video Technology for HEVC) encoder. - (): Theora encoder settings. Implements the . Implements the . - (): Class representing the H264 Encoder settings. - (): - (): VP8 encoder settings. - (): VP9 encoder settings. - (): VP8/VP9 shared encoder settings. - (): Video encoder shared data. - (): WMV encoder settings. Implements the . Implements the . ### Interfaces Parameters: - (): Basic AV1 encoder settings interface. - (): Basic H264 encoder settings interface. - (): Basic HEVC encoder settings interface. - (): Basic MJPEG encoder settings interface. - (): Interface for MPEG-2 encoder settings. - (): Interface IVPXEncoderSettings. ### Enums Parameters: - (): Encoding quality presets for AMD AMF AV1 encoder. - (): Defines the usage scenarios for AMD AMF AV1 encoder. - (): Defines rate control methods for AMD AMF AV1 encoder. - (): Defines H.264/AVC encoding levels for AMD AMF H264 encoder. - (): Defines encoding quality presets for AMD AMF H264 encoder. - (): Defines H.264/AVC encoding profiles for AMD AMF H264 encoder. - (): Defines rate control methods for AMD AMF H264 encoder. - (): Defines usage scenarios for AMD AMF H264 encoder to optimize encoding parameters. - (): Defines encoding quality presets for AMD AMF HEVC encoder. - (): Defines rate control methods for AMD AMF HEVC encoder. - (): Defines usage scenarios for AMD AMF HEVC encoder to optimize encoding parameters. - (): Defines rate control modes for AOM AV1 encoder end usage. - (): Defines frame resize modes for AOM AV1 encoder. - (): Defines frame super-resolution modes for AOM AV1 encoder. - (): Defines the available AV1 encoder implementations. - (): H264 encoder type. - (): HEVC encoder type. - (): MJPEG encoder type. - (): MPEG-2 encoder type. - (): MPEG-2 macroblock compare functions. - (): Flags common for all MPEG video-based encoders. - (): MPEG-2 motion estimation algorithms. - (): MPEG2 profiles for encoding. - (): MPEG-2 sequence display extension options. - (): Video format specification for sequence display extension. - (): Enumeration for MPEG-4 encoder comparison functions. - (): MPV flags for MPEG-4 H263 encoder. - (): Enumeration for MPEG-4 encoder motion estimation. - (): MSDK rate control modes for MPEG-2 encoding. - (): NVENC H264 encoder level. - (): NVENC H264 profile. - (): NVENC HEVC encoder level. - (): NVENC HEVC profile. - (): NVENC preset. - (): NVENC rate control. - (): Represents NVENC encoder tuning options. - (): OpenH264 complexity. - (): OpenH264 deblocking mode. - (): OpenH264 encoder level. - (): OpenH264 profile. - (): OpenH264 rate control mode. - (): OpenH264 slice mode. - (): OpenH264 usage type. - (): PNG encoder compression levels for the rspngenc GStreamer element. Compression levels range from 0 (no compression) to 9 (maximum compression). - (): PNG encoder filter types for the rspngenc GStreamer element. Filter types are used to preprocess the image data before compression to improve compression efficiency for different types of image content. - (): QSV AV1 encoder rate control. - (): QSV coding option. - (): QSV H264 encoder level. - (): QSV H264 encoder profile. - (): QSV H264 encoder rate control look ahead downsampling. - (): QSV H264 encoder rate control. - (): QSV H264 encoder SEI insert mode. - (): QSV HEVC encoder profile. - (): QSV HEVC encoder rate control. - (): QSV HEVC encoder SEI insert mode. - (): QSV VP9 encoder rate control. - (): AV1 encoder tune. - (): Theora multipass mode. - (): Enum for Macroblock level Bitrate Control. - (): Enum for VAAPI H264 Compliance Modes. - (): Enum for VAAPI H264 Reference Picture Selection Modes. - (): VAAPI H264 profile. - (): Enum for VAAPI H264 Encoder tuning options. - (): Enum for Rate control modes. - (): VAAPI HEVC profile. - (): Encoder tuning option - (): Rate control mode - (): VPX Adaptive Quantization modes. - (): VP8/VP9 encoder type. - (): VP8/VP9 error resilient flags. - (): VP8/VP9 keyframe mode. - (): VP8/VP9 multipass mode. - (): VP8/VP9 end usage mode. - (): VPX scaling mode. - (): VP8/VP9 token partitions. - (): VP8/VP9 tuning. - (): Video encoder type. - (): Video quality. ### Delegates Parameters: - (): Delegate OnKeyFrameDetected. --- # Enum VideoFormatX Link: api/VisioForge.Core.Types.X.VideoFormatX.html # Enum VideoFormatX # Enum VideoFormatX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Specifies various video pixel formats used within the VisioForge X engine. This enumeration defines how color data is stored and arranged for each pixel in a video frame. ```csharp public enum VideoFormatX ``` ## Fields Parameters: - Unknown (): The video format is unknown or not specified. - Encoded (): The video data is in a compressed or encoded format, not raw pixel data. - I420 (): I420 YUV 4:2:0 planar format. Y plane first, followed by U and V planes. - YV12 (): YV12 YUV 4:2:0 planar format. Y plane first, followed by V and U planes. - YUY2 (): YUY2 YUV 4:2:2 packed format. Y, U, Y, V samples are interleaved. - UYVY (): UYVY YUV 4:2:2 packed format. U, Y, V, Y samples are interleaved. - AYUV (): AYUV YUV 4:4:4 packed format with alpha channel. - RGBX (): RGBX 32-bit packed RGB format with an unused X (alpha) byte. - BGRX (): BGRX 32-bit packed BGR format with an unused X (alpha) byte. - XRGB (): XRGB 32-bit packed XRGB format. - XBGR (): XBGR 32-bit packed XBGR format. - RGBA (): RGBA 32-bit packed RGB format with alpha channel. - BGRA (): BGRA 32-bit packed BGR format with alpha channel. - ARGB (): ARGB 32-bit packed ARGB format. - ABGR (): ABGR 32-bit packed ABGR format. - RGB (): RGB 24-bit packed RGB format. - BGR (): BGR 24-bit packed BGR format. - Y41B (): Y41B YUV 4:1:1 packed format. - Y42B (): Y42B YUV 4:2:2 packed format. - YVYU (): YVYU YUV 4:2:2 packed format. - Y444 (): Y444 YUV 4:4:4 packed format. - V210 (): V210 10-bit YUV 4:2:2 packed format. - V216 (): V216 16-bit YUV 4:2:2 packed format. - NV12 (): NV12 YUV 4:2:0 planar format. Y plane first, followed by interleaved U/V plane. - NV21 (): NV21 YUV 4:2:0 planar format. Y plane first, followed by interleaved V/U plane. - Gray8 (): 8-bit grayscale format. - Gray16BE (): 16-bit grayscale format, Big-Endian. - Gray16LE (): 16-bit grayscale format, Little-Endian. - V308 (): V308 YUV 4:4:4 packed format. - RGB16 (): RGB 16-bit packed RGB format (5-6-5). - BGR16 (): BGR 16-bit packed BGR format (5-6-5). - RGB15 (): RGB 15-bit packed RGB format (5-5-5). - BGR15 (): BGR 15-bit packed BGR format (5-5-5). - UYVP (): UYVP YUV 4:2:2 packed format with alpha. - A420 (): A420 YUV 4:2:0 planar format with alpha. - RGB8P (): RGB 8-bit paletted format. - YUV9 (): YUV9 YUV 4:1:0 planar format. - YVU9 (): YVU9 YUV 4:1:0 planar format (V and U planes swapped). - IYU1 (): IYU1 YUV 4:1:1 packed format. - ARGB64 (): ARGB 64-bit packed ARGB format (16 bits per channel). - AYUV64 (): AYUV 64-bit packed AYUV format (16 bits per channel). - R210 (): R210 10-bit RGB packed format. - I42010BE (): I420 10-bit planar YUV 4:2:0, Big-Endian. - I42010LE (): I420 10-bit planar YUV 4:2:0, Little-Endian. - I42210BE (): I422 10-bit planar YUV 4:2:2, Big-Endian. - I42210LE (): I422 10-bit planar YUV 4:2:2, Little-Endian. - Y44410BE (): Y444 10-bit planar YUV 4:4:4, Big-Endian. - Y44410LE (): Y444 10-bit planar YUV 4:4:4, Little-Endian. - GBR (): GBR (Green, Blue, Red) planar format. - GBR10BE (): GBR 10-bit planar, Big-Endian. - GBR10LE (): GBR 10-bit planar, Little-Endian. - NV16 (): NV16 YUV 4:2:2 planar format. Y plane first, followed by interleaved U/V plane. - NV24 (): NV24 YUV 4:4:4 planar format. Y plane first, followed by interleaved U/V plane. - NV1264Z32 (): NV12 64-bit Z32 format. - A42010BE (): A420 10-bit planar YUV 4:2:0 with alpha, Big-Endian. - A42010LE (): A420 10-bit planar YUV 4:2:0 with alpha, Little-Endian. - A42210BE (): A422 10-bit planar YUV 4:2:2 with alpha, Big-Endian. - A42210LE (): A422 10-bit planar YUV 4:2:2 with alpha, Little-Endian. - A44410BE (): A444 10-bit planar YUV 4:4:4 with alpha, Big-Endian. - A44410LE (): A444 10-bit planar YUV 4:4:4 with alpha, Little-Endian. - NV61 (): NV61 YUV 4:2:2 planar format (V and U planes swapped). - P01010BE (): P010 10-bit YUV 4:2:0 packed format, Big-Endian. - P01010LE (): P010 10-bit YUV 4:2:0 packed format, Little-Endian. - IYU2 (): IYU2 YUV 4:2:2 packed format. - VYUY (): VYUY YUV 4:2:2 packed format (V, Y, U, Y). - GBRA (): GBRA (Green, Blue, Red, Alpha) planar format. - GBRA10BE (): GBRA 10-bit planar with alpha, Big-Endian. - GBRA10LE (): GBRA 10-bit planar with alpha, Little-Endian. - GBR12BE (): GBR 12-bit planar, Big-Endian. - GBR12LE (): GBR 12-bit planar, Little-Endian. - GBRA12BE (): GBRA 12-bit planar with alpha, Big-Endian. - GBRa12LE (): GBRA 12-bit planar with alpha, Little-Endian. - I42012BE (): I420 12-bit planar YUV 4:2:0, Big-Endian. - I42012LE (): I420 12-bit planar YUV 4:2:0, Little-Endian. - I42212BE (): I422 12-bit planar YUV 4:2:2, Big-Endian. - I42212LE (): I422 12-bit planar YUV 4:2:2, Little-Endian. - Y44412BE (): Y444 12-bit planar YUV 4:4:4, Big-Endian. - Y44412LE (): Y444 12-bit planar YUV 4:4:4, Little-Endian. - Gray10LE32 (): Gray 10-bit Little-Endian packed into 32-bit. - NV1210LE32 (): NV12 10-bit Little-Endian packed into 32-bit. - NV1610LE32 (): NV16 10-bit Little-Endian packed into 32-bit. - NV1210LE40 (): NV12 10-bit Little-Endian packed into 40-bit. - Y210 (): Y210 10-bit YUV 4:2:2 packed format. - Y410 (): Y410 10-bit YUV 4:4:4 packed format. - VUYA (): VUYA 32-bit packed VUYA format. - BGR10A2LE (): BGR 10-bit A2 Little-Endian packed format. - RGB10A2LE (): RGB 10-bit A2 Little-Endian packed format. - Y44416BE (): Y444 16-bit planar YUV 4:4:4, Big-Endian. - Y44416LE (): Y444 16-bit planar YUV 4:4:4, Little-Endian. - P016BE (): P016 16-bit YUV 4:2:0 packed format, Big-Endian. - P016LE (): P016 16-bit YUV 4:2:0 packed format, Little-Endian. - P012BE (): P012 12-bit YUV 4:2:0 packed format, Big-Endian. - P012LE (): P012 12-bit YUV 4:2:0 packed format, Little-Endian. - Y212BE (): Y212 12-bit YUV 4:2:2 packed format, Big-Endian. - Y212LE (): Y212 12-bit YUV 4:2:2 packed format, Little-Endian. - Y412BE (): Y412 12-bit YUV 4:4:4 packed format, Big-Endian. - Y412LE (): Y412 12-bit YUV 4:4:4 packed format, Little-Endian. - NV124L4 (): NV12 4-plane 4-bit format. - NV1232L32 (): NV12 32-bit L32 format. ## Examples
// Example of specifying a video format for a MediaBlocks element.
// videoSource.OutputFormat = VideoFormatX.NV12;

// When processing raw video data, you would use this information to correctly interpret the pixel buffer.
// if (videoFrame.Format == VideoFormatX.RGB)
// {
//     // Process 3 bytes per pixel (Red, Green, Blue)
// }
## Remarks These formats are crucial for ensuring compatibility and correct rendering across different video sources, processors, and displays. They include various YUV (planar and packed) and RGB formats, with different bit depths and channel arrangements. --- # Class VideoFrameInfoX Link: api/VisioForge.Core.Types.X.VideoFrameInfoX.html # Class VideoFrameInfoX # Class VideoFrameInfoX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents detailed information about a video frame, including its dimensions, pixel format, stride, and frame rate. This class is used within the MediaBlocks framework to describe the characteristics of video data. ```csharp public class VideoFrameInfoX ``` #### Inheritance #### Derived #### Inherited Members ## Examples
// Create a VideoFrameInfoX instance for a Full HD, NV12 video at 30 FPS.
var videoInfo = new VideoFrameInfoX(1920, 1080, VideoFormatX.NV12, new VideoFrameRate(30, 1));

Console.WriteLine($"Video Format: {videoInfo.Format}");
Console.WriteLine($"Resolution: {videoInfo.Width}x{videoInfo.Height}");
Console.WriteLine($"Frame Rate: {videoInfo.FrameRate.Value:F2} FPS");
Console.WriteLine($"Calculated Stride: {videoInfo.Stride}");

// This videoInfo object can then be used to configure a video encoder or renderer.
// videoEncoder.SetVideoInfo(videoInfo);
## Remarks This information is crucial for configuring video processing blocks, encoders, and renderers, ensuring that video data is handled correctly throughout the pipeline. The property is automatically calculated for common RGB/RGBA formats if not explicitly set. ## Constructors ### VideoFrameInfoX() Initializes a new instance of the class with default values. ```csharp public VideoFrameInfoX() ``` ### VideoFrameInfoX(int, int, VideoFormatX, VideoFrameRate, int) Initializes a new instance of the class with specified dimensions, format, frame rate, and an optional stride. ```csharp public VideoFrameInfoX(int width, int height, VideoFormatX format, VideoFrameRate frameRate, int stride = 0) ``` #### Parameters Parameters: - width (int): The width of the video frame. - height (int): The height of the video frame. - format (VideoFormatX): The of the video frame. - frameRate (VideoFrameRate): The of the video stream. - stride (int): The stride of the video frame. If 0, it will be calculated automatically for common formats. ### VideoFrameInfoX(int, int, VideoFrameRate) Initializes a new instance of the class with specified dimensions and frame rate. The format defaults to . ```csharp public VideoFrameInfoX(int width, int height, VideoFrameRate frameRate) ``` #### Parameters Parameters: - width (int): The width of the video frame. - height (int): The height of the video frame. - frameRate (VideoFrameRate): The of the video stream. ## Properties ### Format Gets or sets the pixel format of the video frame. ```csharp public VideoFormatX Format { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ### FrameRate Gets or sets the frame rate of the video stream. ```csharp public VideoFrameRate FrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): ### Height Gets or sets the height of the video frame in pixels. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### Offsets Gets or sets an array of offsets for each plane in a planar video format. Optional. ```csharp public ulong[] Offsets { get; set; } ``` #### Property Value Parameters: - (ulong [ ]): ### PlaneCount Gets or sets the number of planes in the video format. Optional. For planar formats (e.g., I420, NV12), this would be 2 or 3. For packed formats (e.g., RGB, YUY2), it's typically 1. ```csharp public int PlaneCount { get; set; } ``` #### Property Value Parameters: - (int): ### Stride Gets or sets the stride (or pitch) of the video frame in bytes. This is the number of bytes required to store one row of pixels. If not explicitly set, it will be calculated automatically for common RGB/RGBA formats based on and . ```csharp public int Stride { get; set; } ``` #### Property Value Parameters: - (int): ### Strides Gets or sets an array of strides for each plane in a planar video format. Optional. ```csharp public int[] Strides { get; set; } ``` #### Property Value Parameters: - (int [ ]): ### Width Gets or sets the width of the video frame in pixels. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ToString() Returns a string that represents the current instance. The string includes the video format, resolution (widthxheight), and frame rate. ```csharp public override string ToString() ``` #### Returns Parameters: - (string): A that represents this instance. --- # Class VideoFrameX Link: api/VisioForge.Core.Types.X.VideoFrameX.html # Class VideoFrameX # Class VideoFrameX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents a single video frame within the VisioForge MediaBlocks framework. This class extends to include the actual pixel data, timestamp, and duration. ```csharp public class VideoFrameX : VideoFrameInfoX ``` #### Inheritance #### Inherited Members #### Extension Methods ## Examples
// Create a new VideoFrameX instance and allocate memory for a 1280x720 RGB frame.
var frame = VideoFrameX.Alloc(1280, 720, 1280 * 3, VideoFormatX.RGB);
try
{
    // Set timestamp and duration
    frame.Timestamp = TimeSpan.FromSeconds(10);
    frame.Duration = TimeSpan.FromMilliseconds(40);

    // Fill the frame with some data (e.g., a solid color)
    byte[] pixelData = new byte[frame.DataSize];
    // ... populate pixelData ...
    System.Runtime.InteropServices.Marshal.Copy(pixelData, 0, frame.Data, frame.DataSize);

    Console.WriteLine($"Created VideoFrameX: {frame.Width}x{frame.Height} {frame.Format} at {frame.Timestamp}");

    // Convert to a legacy VideoFrame type
    VideoFrame legacyFrame = frame.ToVideoFrame();

    // Create a clone of the frame
    VideoFrameX clonedFrame = frame.Clone();
}
finally
{
    frame.Free(); // Always free allocated unmanaged memory
}
## Remarks VideoFrameX is designed for efficient handling of video frames in a pipeline, supporting direct memory access for performance. It provides methods for memory allocation, deallocation, data copying, and conversion to other frame types. Proper memory management using and is crucial to prevent memory leaks. ## Constructors ### VideoFrameX(byte[], int, int, int, VideoFormatX) Initializes a new instance of the class with a byte array of data. Memory is allocated and data is copied from the provided byte array. ```csharp public VideoFrameX(byte[] data, int width, int height, int stride, VideoFormatX format) ``` #### Parameters Parameters: - data (byte [ ]): The byte array containing the video data. - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. - format (VideoFormatX): The of the video frame. ### VideoFrameX(int[], int, int, int, VideoFormatX) Initializes a new instance of the class with an integer array of data. Memory is allocated and data is copied from the provided integer array. ```csharp public VideoFrameX(int[] data, int width, int height, int stride, VideoFormatX format) ``` #### Parameters Parameters: - data (int [ ]): The integer array containing the video data. - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. - format (VideoFormatX): The of the video frame. ### VideoFrameX(nint, int, int, int, int, VideoFormatX) Initializes a new instance of the class with an existing unmanaged data pointer. This constructor does not allocate new memory; it uses the provided pointer directly. ```csharp public VideoFrameX(nint data, int dataSize, int width, int height, int stride, VideoFormatX format) ``` #### Parameters Parameters: - data (nint): A pointer to the raw video data buffer. - dataSize (int): The size of the data buffer in bytes. - width (int): The width of the video frame. - height (int): The height of the video frame. - stride (int): The stride (bytes per row) of the video frame. - format (VideoFormatX): The of the video frame. ### VideoFrameX() Initializes a new instance of the class with default values. No memory is allocated by this constructor. ```csharp public VideoFrameX() ``` ## Properties ### Caps Gets or sets the GStreamer caps string that describes the media format of this frame. ```csharp public string Caps { get; set; } ``` #### Property Value Parameters: - (string): ### Data Gets or sets a pointer to the unmanaged memory buffer containing the raw video data. ```csharp public nint Data { get; set; } ``` #### Property Value Parameters: - (nint): ### DataSize Gets or sets the total size of the video data buffer in bytes. ```csharp public int DataSize { get; set; } ``` #### Property Value Parameters: - (int): ### Duration Gets or sets the duration of the video frame. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### Timestamp Gets or sets the presentation timestamp of the video frame. ```csharp public TimeSpan Timestamp { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ## Methods ### Alloc() Allocates unmanaged memory for the video data buffer based on the and . The field is updated accordingly. ```csharp public void Alloc() ``` #### Remarks This method should be called before writing pixel data to the pointer. It is crucial to call when the allocated memory is no longer needed. ### Alloc(int, int, int, VideoFormatX) Allocates unmanaged memory for the video data buffer with a specified size. ```csharp public static VideoFrameX Alloc(int width, int height, int stride, VideoFormatX format) ``` #### Parameters Parameters: - width (int): - height (int): - stride (int): - format (VideoFormatX): #### Returns Parameters: - (VideoFrameX): ### Alloc(int) ```csharp public void Alloc(int size) ``` #### Parameters Parameters: - size (int): The number of bytes to allocate for the video data. #### Remarks This overload allows for direct control over the allocated buffer size, which can be useful for custom formats. ### ClearPixels() Clears the pixel data of the video frame by setting all bytes in the data buffer to zero. ```csharp public void ClearPixels() ``` ### Clone() Creates a deep copy of the current instance. This involves allocating new memory for the data and copying all frame properties and pixel data. ```csharp public VideoFrameX Clone() ``` #### Returns Parameters: - (VideoFrameX): A new instance that is a clone of the current one. ### CopyFrom(VideoFrameX) Copies all information and pixel data from a source to the current instance. If the data buffer size differs, the current instance's buffer will be reallocated. ```csharp public void CopyFrom(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The source to copy from. ### CopyInfoFrom(VideoFrameX) Copies the metadata (dimensions, format, timing, caps) from another instance to the current instance. This method does not copy the actual pixel data. ```csharp public void CopyInfoFrom(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The source instance to copy information from. ### CopyInfoTo(ref VideoFrameX) Copies the metadata (dimensions, format, timing, caps) from the current instance to another instance. This method does not copy the actual pixel data. ```csharp public void CopyInfoTo(ref VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The target instance to copy information to. ### Free() Frees the unmanaged memory previously allocated for the video data buffer. ```csharp public void Free() ``` #### Remarks This method should always be called to prevent memory leaks when the VideoFrameX instance is no longer needed, especially if or was used. ### IsEmpty() Determines whether this instance is empty (i.e., its pointer is ). ```csharp public bool IsEmpty() ``` #### Returns Parameters: - (bool): true if this instance is empty; otherwise, false. ### ToArray() Converts the raw video data from the unmanaged buffer into a new managed byte array. ```csharp public byte[] ToArray() ``` #### Returns Parameters: - (byte [ ]): A new byte array containing the frame's video data. ### ToVideoFrame() Converts the current instance into a legacy object. This conversion is useful for compatibility with older parts of the framework or external components. ```csharp public VideoFrame ToVideoFrame() ``` #### Returns Parameters: - (VideoFrame): A new instance populated with data from the current frame. --- # Class VideoRendererSettingsX Link: api/VisioForge.Core.Types.X.VideoRendererSettingsX.html # Class VideoRendererSettingsX # Class VideoRendererSettingsX **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents settings for configuring the behavior of a video renderer within the VisioForge X engine. These settings control aspects like aspect ratio preservation and video conversion. ```csharp public class VideoRendererSettingsX ``` #### Inheritance #### Inherited Members ## Examples
// Create new video renderer settings.
var rendererSettings = new VideoRendererSettingsX
{
    Letterbox = true, // Enable letterboxing to preserve aspect ratio
    DisableVideoConverter = false // Allow the internal video converter to operate
};

// Apply these settings to a video renderer (conceptual).
// videoRenderer.Settings = rendererSettings;

// You can also modify settings dynamically.
// videoRenderer.Settings.Letterbox = false; // Disable letterboxing to stretch video
## Remarks Proper configuration of these settings is important for optimizing video display quality and performance. ## Properties ### DisableVideoConverter Gets or sets a value indicating whether the internal video converter should be disabled. Setting this to true can prevent automatic format conversions, which might be useful for specific scenarios or debugging, but could lead to compatibility issues if the source format is not directly supported by the renderer. The default value is false. ```csharp public bool DisableVideoConverter { get; set; } ``` #### Property Value Parameters: - (bool): ### Letterbox Gets or sets a value indicating whether letterbox mode is enabled. When true, the video's aspect ratio is preserved by adding black bars if necessary. When false, the video may be stretched to fill the display area. The default value is true. ```csharp public bool Letterbox { get; set; } ``` #### Property Value Parameters: - (bool): --- # Class VUMeterXData Link: api/VisioForge.Core.Types.X.VUMeterXData.html # Class VUMeterXData # Class VUMeterXData **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Represents a snapshot of VU (Volume Unit) meter data for multiple audio channels. This class provides information about peak, decay, and RMS (Root Mean Square) levels. ```csharp public class VUMeterXData ``` #### Inheritance #### Inherited Members ## Examples
// Assume 'vuData' is an instance of VUMeterXData obtained from an audio processing component.
// VUMeterXData vuData = audioProcessor.GetVUMeterData();

if (vuData != null)
{
    Console.WriteLine($"VU Meter Data for {vuData.ChannelsCount} channels:");
    for (int i = 0; i < vuData.ChannelsCount; i++)
    {
        Console.WriteLine($"  Channel {i + 1}: Peak={vuData.Peak[i]:F2}, Decay={vuData.Decay[i]:F2}, RMS={vuData.RMS[i]:F2}");
    }

    // You can use this data to draw a custom VU meter UI.
}
## Remarks VU meter data is typically used for visualizing audio levels in real-time, helping users monitor audio input or output. The arrays for , , and will have a size equal to . ## Properties ### ChannelsCount Gets or sets the number of audio channels for which VU meter data is available. ```csharp public int ChannelsCount { get; set; } ``` #### Property Value Parameters: - (int): ### Decay Gets or sets an array of decay audio levels for each channel. Decay represents the gradual decrease in audio level after a peak. ```csharp public double[] Decay { get; set; } ``` #### Property Value Parameters: - (double [ ]): ### Peak Gets or sets an array of peak audio levels for each channel. The values are typically normalized (e.g., 0.0 to 1.0 or -dB to 0 dB). ```csharp public double[] Peak { get; set; } ``` #### Property Value Parameters: - (double [ ]): ### RMS Gets or sets an array of RMS (Root Mean Square) audio levels for each channel. RMS provides a measure of the average power of the audio signal. ```csharp public double[] RMS { get; set; } ``` #### Property Value Parameters: - (double [ ]): --- # Class VUMeterXEventArgs Link: api/VisioForge.Core.Types.X.VUMeterXEventArgs.html # Class VUMeterXEventArgs # Class VUMeterXEventArgs **Namespace**: VisioForge.Core.Types.X **Assembly**: VisioForge.Core.dll Provides data for VU (Volume Unit) meter update events within the VisioForge X engine. This class encapsulates , which contains the current audio levels. ```csharp public class VUMeterXEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Examples
// Assume an event handler is registered for a VU meter update event.
public void OnVUMeterUpdate(object sender, VUMeterXEventArgs e)
{
    VUMeterXData meterData = e.MeterData;

    if (meterData != null)
    {
        Console.WriteLine($"VU Meter Update for {meterData.ChannelsCount} channels:");
        for (int i = 0; i < meterData.ChannelsCount; i++)
        {
            Console.WriteLine($"  Channel {i + 1}: Peak={meterData.Peak[i]:F2}, RMS={meterData.RMS[i]:F2}");
        }

        // Update a custom VU meter UI component based on meterData.
    }
}
## Remarks This event argument is typically used to drive real-time audio level visualizations in a user interface. Applications can subscribe to events that use this class to update VU meter displays, monitor audio input/output levels, or detect clipping. ## Constructors ### VUMeterXEventArgs(VUMeterXData) Initializes a new instance of the class. ```csharp public VUMeterXEventArgs(VUMeterXData meterData) ``` #### Parameters Parameters: - meterData (VUMeterXData): The containing the VU meter levels. ## Properties ### MeterData Gets the associated with this event. This data contains the peak, decay, and RMS levels for each audio channel. ```csharp public VUMeterXData MeterData { get; } ``` #### Property Value Parameters: - (VUMeterXData): --- # Namespace VisioForge.Core.Types.X Link: api/VisioForge.Core.Types.X.html # Namespace VisioForge.Core.Types.X # Namespace VisioForge.Core.Types.X ### Namespaces Parameters: - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): ### Classes Parameters: - (): Represents detailed audio format information for use within the MediaBlocks framework. This class defines properties such as the audio sample format, sample rate, and number of channels. - (): Provides data for barcode detection events within the VisioForge X engine. This class encapsulates information about the detected barcode, including its type, value, and the timestamp of detection. - (): Provides data for DataMatrix detection events within the VisioForge X engine. This class encapsulates information about the detected DataMatrix code, including its decoded text, symbol information, corner positions, and the timestamp of detection. - (): Provides a set of debugging and control settings for media blocks within the VisioForge X engine. These settings allow for fine-grained control over buffer handling, timing, and error simulation for testing and diagnostic purposes. - (): Represents a media processing element within the VisioForge X engine, typically a GStreamer element. This class provides information about the element's name, type, and its configurable properties. - (): Represents a description of a font, including its family name and available font faces (styles). This class is used to enumerate and select fonts for text rendering within the VisioForge X engine. - (): Represents real-time silence detection data provided through callback events. This class contains information about the current audio level and whether silence is currently being detected, enabling applications to respond immediately to silence detection state changes. - (): Represents a detected period of silence in an audio stream with precise timing information. This class captures the start time, end time, and duration of a silence segment, enabling detailed analysis of audio content for editing, quality control, or speech processing applications. - (): Represents a snapshot of VU (Volume Unit) meter data for multiple audio channels. This class provides information about peak, decay, and RMS (Root Mean Square) levels. - (): Provides data for VU (Volume Unit) meter update events within the VisioForge X engine. This class encapsulates , which contains the current audio levels. - (): Represents detailed information about a video frame, including its dimensions, pixel format, stride, and frame rate. This class is used within the MediaBlocks framework to describe the characteristics of video data. - (): Represents a single video frame within the VisioForge MediaBlocks framework. This class extends to include the actual pixel data, timestamp, and duration. - (): Represents settings for configuring the behavior of a video renderer within the VisioForge X engine. These settings control aspects like aspect ratio preservation and video conversion. ### Interfaces Parameters: - (): Defines an interface for controlling audio volume and muting capabilities. This interface provides methods to check support, set/get mute status, and set/get volume levels. - (): Defines a base interface for media sources within the VisioForge X engine. This interface serves as a marker for all source elements in the MediaBlocks framework. - (): Defines an interface for components that can provide textual information about encoder parameters and capabilities. This is useful for debugging, logging, or displaying detailed encoder settings to the user. - (): Defines an interface for components that can provide detailed information about a video stream. - (): Defines an interface for custom error handling within a MediaBlocks pipeline. Implementations of this interface can intercept and process errors that occur during pipeline execution. ### Enums Parameters: - (): Defines various audio sample formats, including signed/unsigned integers and floating-point types, with different bit depths and endianness. This enumeration is used to specify the format of raw audio data for processing and playback within the MediaBlocks framework. - (): Specifies the operational mode for a barcode detector within the VisioForge X engine. This enumeration defines how the barcode detector interacts with the video processing pipeline. - (): Specifies the type of media capabilities or stream content. This enumeration is used to categorize different types of media data, such as video, audio, or subtitles. - (): Specifies various types of media processing elements (encoders and decoders) available within the VisioForge X engine. This enumeration helps in identifying and configuring specific components in a media processing pipeline. - (): Specifies various pixel formats for images and video frames within the VisioForge X engine. This enumeration defines how color data is stored and interpreted for each pixel. - (): Represents the media types supported in RTP (Real-time Transport Protocol) payloads. This enumeration covers common audio and video codecs used in real-time streaming applications. - (): Specifies various video pixel formats used within the VisioForge X engine. This enumeration defines how color data is stored and arranged for each pixel in a video frame. ### Delegates Parameters: - (): Delegate for silence detection callbacks. Receives real-time silence detection data during audio processing. --- # Namespace VisioForge.Core.Types Link: api/VisioForge.Core.Types.html # Namespace VisioForge.Core.Types # Namespace VisioForge.Core.Types ### Namespaces Parameters: - (): - (): - (): - (): - (): ### Classes Parameters: - (): Represents a single frame of audio data, including its raw data, format information, and timing. This class is used to pass audio data between different components of the framework. - (): Represents a generic frame of data, which can be used for various media types, not limited to audio or video. This class provides a buffer for raw data along with timing and format information. It includes methods for manual memory management of the underlying data buffer. - (): Represents a comprehensive collection of metadata tags for a media file. This class aggregates various pieces of information commonly found in audio and video file tags (e.g., ID3, MP4 tags, Vorbis Comments). - (): Provides data for events that deliver raw audio frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. - (): Provides helper methods for working with . This static class facilitates conversions between different color space representations and calculates image stride. - (): Provides data for events that deliver raw video frames. This class encapsulates a , allowing it to be passed as an argument in event handlers. - (): Represents a rectangular area defined by its left, top, right, and bottom coordinates. This class provides properties to access the dimensions and check if the rectangle is empty. - (): Represents the size of a two-dimensional object, typically in pixels. This class encapsulates a width and a height, providing a convenient way to manage dimensions. ### Structs Parameters: - (): Represents a raw audio frame, designed for direct memory manipulation and interop scenarios. This struct holds a pointer to the raw audio data, its size, and basic audio format information, along with timing details. - (): Represents fundamental information about a raw audio stream. This struct provides details such as bits per sample, number of channels, sample rate, and audio format. - (): Represents fundamental information about a raw video stream or frame. This struct provides details such as width, height, color space, stride, and frame rate. - (): Represents a raw image frame, providing direct access to image data in unmanaged memory. This struct is designed for high-performance image processing and interoperation with native code. - (): Represents a raw video frame, designed for direct memory manipulation and interop scenarios. This struct holds a pointer to the raw video data, its size, and basic video format information, along with timing details. - (): Represents an internal rectangular area defined by its left, top, right, and bottom coordinates. This struct is primarily used for interoperation with native code due to its sequential memory layout. - (): Represents an internal size structure defined by its width and height. This struct is primarily used for interoperation with native code due to its sequential memory layout. - (): Represents a single frame of video data, including its raw data, format information, and timing. This struct provides a managed way to work with video frames, abstracting some of the complexities of unmanaged memory. - (): Represents a video frame rate, typically expressed as a fraction (numerator/denominator) or a floating-point value. This struct provides methods for comparison, conversion, and common frame rate constants. ### Interfaces Parameters: - (): Represents a platform-agnostic bitmap image. This interface is used as a common wrapper for different bitmap implementations across various platforms (e.g., Windows, Android, iOS). - (): Defines a standard set of controls for a media player component. This interface provides a common API for controlling playback of media files, including play, pause, stop, seek, and volume adjustments. It also includes asynchronous versions of most methods for use in responsive UI applications. - (): Defines an interface for a status overlay, which is used to display real-time information on top of a video stream. This can include details like frame rate, resolution, timecode, recording status, or custom text provided by the application. - (): Defines an interface for controlling Virtual Reality (VR) video playback parameters. This interface allows manipulation of camera orientation (yaw, pitch, roll), field of view, and the VR projection mode. - (): Defines a standard set of controls for a video capture component. This interface provides a common API for managing the lifecycle of a video capture session, including starting, pausing, and stopping. It also provides access to audio volume controls during capture. - (): Defines a standard set of controls for applying basic real-time video effects. This interface provides methods to adjust common image properties such as brightness, contrast, and saturation, as well as apply simple transformations like grayscale, flip, and invert. - (): Defines a platform-agnostic interface for a video rendering view. This interface abstracts the underlying UI control used for displaying video, allowing the core engine to remain independent of any specific UI framework (e.g., WinForms, WPF, Android, iOS). - (): Defines an interface for video view components that support switching to a native rendering backend. This is typically used to improve performance in demanding scenarios, such as playing high-resolution (4K/8K) video or using hardware-accelerated GPU decoding. - (): Defines an interface for video views that support direct pushing of video frames for rendering. This interface is crucial for scenarios where raw video data needs to be displayed without relying on a traditional media pipeline (e.g., for custom video processing or real-time frame injection). ### Enums Parameters: - (): Defines the audio format for raw audio data, specifying whether it is Pulse-Code Modulation (PCM), IEEE floating-point, or encoded. This enumeration is crucial for configuring audio streams and ensuring correct data interpretation throughout the framework. - (): Specifies the severity level for logging and debug messages. This enumeration is used to filter the verbosity of diagnostic output. - (): Defines a comprehensive list of codec identifiers from the FFmpeg library. These IDs are used to uniquely identify specific audio, video, subtitle, and data compression formats. - (): Defines how a GIF frame should be resized or stretched to fit a target dimension. - (): Defines the different licensing tiers available for VisioForge products. Each level typically unlocks a different set of features or capabilities within the framework. - (): Specifies the types of metadata tags that can be present in a media file. This enumeration is a bit field, meaning its members can be combined using bitwise operations to indicate the presence of multiple tag types. - (): Specifies constants defining the buttons to display on a message box. This enumeration is used to control the user's interaction options within a dialog. - (): Specifies constants defining the result of a message box dialog. This enumeration is used to identify which button a user clicked on a message box. - (): Specifies constants that define which mouse button was pressed. This enumeration is used in mouse-related events to identify the specific button involved in the event. - (): Defines the possible states of a media playback or capture session. This enumeration is used to indicate whether the media is actively playing, paused, or in an idle state. - (): Defines various raw video color space formats. This enumeration is used to specify how pixel data is arranged and interpreted in raw video frames. - (): Specifies the different Virtual Reality (VR) projection modes supported for video playback. Not all modes may be supported by every component (e.g., specific video blocks, effects, or renderers). - (): Specifies the deinterlacing modes available for the Enhanced Video Renderer (EVR). Deinterlacing converts interlaced video (where each frame consists of two fields captured at different times) into progressive video (where each frame contains all lines of a single moment in time). - (): Specifies the video rendering engine to be used for displaying video frames. The choice of renderer can impact performance, compatibility, and available features. - (): Specifies how video frames are scaled or stretched to fit the display area of a video renderer. This enumeration controls the aspect ratio preservation and filling behavior. - (): Defines the type of a video stream, typically used in frame grabber events or when managing multiple video sources. This enumeration helps distinguish between main video, preview, capture, and Picture-in-Picture (PIP) streams. - (): Specifies the UI framework or rendering technology used by a video view component. This enumeration helps the framework adapt its rendering pipeline to different platforms and UI environments. --- # Class VideoView Link: api/VisioForge.Core.UI.Avalonia.VideoView.html # Class VideoView # Class VideoView **Namespace**: VisioForge.Core.UI.Avalonia **Assembly**: VisioForge.Core.UI.Avalonia.dll VideoView control for Avalonia UI framework that provides cross-platform video rendering capabilities. This control serves as a container for native video rendering on different platforms (Windows, Android, iOS). ```csharp public class VideoView : Panel, INotifyPropertyChanged, IDataContextProvider, ILogical, IThemeVariantHost, IResourceHost, IResourceNode, IStyleHost, ISetLogicalParent, ISetInheritanceParent, ISupportInitialize, IStyleable, INamed, IInputElement, IDataTemplateHost, ISetterValue, IChildIndexProvider, IVideoView, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoView() Initializes a new instance of the class. Sets up the native control host, default size, and background color for video rendering. ```csharp public VideoView() ``` ## Methods ### AttachPipeline(MediaBlocksPipeline) Attaches a media blocks pipeline to the video view for processing. This method is not implemented in the current version. ```csharp public void AttachPipeline(MediaBlocksPipeline pipeline) ``` #### Parameters Parameters: - pipeline (MediaBlocksPipeline): The media blocks pipeline to attach. ### CallInvoke(Delegate, params object[]) Invokes a delegate method with optional arguments. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The delegate method to invoke. - args (object [ ]): Optional arguments to pass to the method. ### CallRefresh() Calls a refresh operation on the video view. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void CallRefresh() ``` ### ClearUI() Clears the user interface elements of the video view. This method is provided for API compatibility but has no implementation. ```csharp public void ClearUI() ``` ### DetachPipeline() Detaches the currently attached media blocks pipeline from the video view. This method is not implemented in the current version. ```csharp public void DetachPipeline() ``` ### Dispose(bool) Releases unmanaged and optionally managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Set to true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Implements the pattern for proper cleanup. ```csharp public void Dispose() ``` ### ~VideoView() Finalizes an instance of the class. ```csharp protected ~VideoView() ``` ### GetBackgroundColor() Gets the background color of the video view as an SKColor. ```csharp public SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): The background , or black if no background is set. ### GetHandle() Gets the native window handle if available for the current platform. On Android and iOS, this returns IntPtr.Zero as those platforms don't expose window handles. ```csharp public nint GetHandle() ``` #### Returns Parameters: - (nint): The native window handle as , or IntPtr.Zero if not available. ### GetInvokeRequired() Gets a value indicating whether the caller must use Invoke when calling methods on the control. In Avalonia, this always returns false as thread marshaling is handled differently. ```csharp public bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): Always returns false in Avalonia. ### GetIsHandleCreated() Gets a value indicating whether the native window handle has been created. ```csharp public bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): true if the handle is created and valid; otherwise, false. ### GetSize() Gets the actual size of the video view control in device-independent pixels. On Windows, this accounts for DPI scaling to return the physical size. ```csharp public Size GetSize() ``` #### Returns Parameters: - (Size): A structure containing the width and height. ### GetUIEngine() Gets the UI engine type used for video rendering. Returns platform-specific engine: Android_TextureView on Android, Apple_Metal on iOS, or Avalonia on other platforms. ```csharp public VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): The enum value indicating the rendering engine in use. ### InvokeStart() Invokes the start operation by adding the native control host to the visual tree. Called when video playback or capture is about to begin. ```csharp public void InvokeStart() ``` ### InvokeStartComplete() Invokes operations to complete the start process. This method is intentionally left empty as no additional operations are required. ```csharp public void InvokeStartComplete() ``` ### InvokeStop() Invokes the stop operation by removing the native control host from the visual tree. Called when video playback or capture is stopping. ```csharp public void InvokeStop() ``` ### InvokeVideoRendererUpdate() Invokes a video renderer update operation. This method is intentionally left empty as the Avalonia implementation handles updates automatically. ```csharp public void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears the contents of the log dialog. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void LogDialogClear() ``` ### LogDialogClose() Closes the log dialog window. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void LogDialogClose() ``` ### LogDialogError(string) Logs an error message to the dialog. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The error message to log. ### PushMouseButtonDown(int, int, MouseButton) Raises the OnMouseButtonDown event with the specified coordinates and button. ```csharp public void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The X coordinate of the mouse pointer in pixels. - y (int): The Y coordinate of the mouse pointer in pixels. - button (MouseButton): The mouse button that was pressed. ### PushMouseButtonUp(int, int, MouseButton) Raises the OnMouseButtonUp event with the specified coordinates and button. ```csharp public void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The X coordinate of the mouse pointer in pixels. - y (int): The Y coordinate of the mouse pointer in pixels. - button (MouseButton): The mouse button that was released. ### PushMouseMove(int, int) Raises the OnMouseMoved event with the specified mouse coordinates. ```csharp public void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The X coordinate of the mouse pointer in pixels. - y (int): The Y coordinate of the mouse pointer in pixels. ### Refresh() Refreshes the control's visual state. This method is provided for API compatibility but has no implementation in the Avalonia version. ```csharp public void Refresh() ``` ### ResizeRoundTo(int) Resizes the video view to be a multiple of the specified value. This method is provided for API compatibility but has no implementation in Avalonia. ```csharp public void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The value to round the dimensions to. ### SetHandle(nint) Sets the native window handle for the video view. This method is not implemented in the Avalonia version as handles are managed internally. ```csharp public void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The native window handle to set. #### Exceptions Parameters: - (NotImplementedException): Always thrown as this operation is not supported. ### ShowMessage(string) Shows a message dialog to the user. In the current implementation, this always returns OK without displaying a dialog. ```csharp public MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message text to display. #### Returns Parameters: - (MessageBoxResult): Always returns . ### ShowMessageEx(string, string, MessageBoxDialogButtons) Shows an extended message dialog with custom caption and button configuration. ```csharp public MessageBoxResult ShowMessageEx(string message, string caption, MessageBoxDialogButtons buttons) ``` #### Parameters Parameters: - message (string): The message text to display. - caption (string): The dialog window caption/title. - buttons (MessageBoxDialogButtons): The button configuration to display in the dialog. #### Returns Parameters: - (MessageBoxResult): The indicating which button was clicked. ### OnMouseButtonDown Occurs when a mouse button is pressed down over the video view. ```csharp public event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when a mouse button is released over the video view. ```csharp public event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when the mouse pointer moves over the video view. ```csharp public event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): --- # Namespace VisioForge.Core.UI.Avalonia Link: api/VisioForge.Core.UI.Avalonia.html # Namespace VisioForge.Core.UI.Avalonia # Namespace VisioForge.Core.UI.Avalonia ### Classes Parameters: - (): VideoView control for Avalonia UI framework that provides cross-platform video rendering capabilities. This control serves as a container for native video rendering on different platforms (Windows, Android, iOS). --- # Class CallbackVideoView Link: api/VisioForge.Core.UI.CallbackVideoView.html # Class CallbackVideoView # Class CallbackVideoView **Namespace**: VisioForge.Core.UI **Assembly**: VisioForge.Core.dll A headless video view implementation that provides frame callbacks without visual rendering. This class serves as a callback-based video sink that receives video frames and forwards them to event handlers for custom processing, analysis, or forwarding to other systems, without performing any UI rendering operations. It's ideal for scenarios requiring frame access without a visual display component, such as video analytics, streaming to external systems, or custom image processing pipelines. Key features: - Receives video frames in configurable pixel formats (RGB, RGBA, NV12, etc.) - Implements for standard video view integration - Implements for receiving frame data - Provides OnFrame event for frame processing subscribers - Supports both VideoFrame and VideoFrameX frame formats - No-op implementations of UI-specific methods (rendering, mouse events, etc.) - Platform-independent operation without UI dependencies - Minimal overhead for maximum processing performance Common use cases: - Video analytics and computer vision processing without display - Frame extraction and image capture operations - Video streaming to custom network protocols - Integration with third-party processing libraries - Headless video recording and transcoding scenarios - Multi-stream processing without rendering overhead Threading considerations: - Frame callbacks occur on the media pipeline thread - Subscribers should handle frames quickly or queue for background processing - No UI thread synchronization overhead Performance characteristics: - Minimal memory allocation per frame - No rendering overhead for maximum throughput - Configurable pixel format to match processing requirements - Zero-copy frame delivery when possible ```csharp public class CallbackVideoView : IVideoView, IVideoViewPushFrame ``` #### Inheritance #### Implements #### Inherited Members ## Properties ### Format Gets or sets the pixel format for video frames received by this callback view. This property determines the pixel format that will be used when video frames are delivered to the event. The format affects frame data layout, stride calculation, and memory usage. Choose the format that best matches your processing requirements. Supported formats include: - RGB: 24-bit RGB (8 bits per channel, no alpha) - RGBA: 32-bit RGBA (8 bits per channel with alpha) - BGRA: 32-bit BGRA (8 bits per channel with alpha) - NV12: YUV 4:2:0 planar format (efficient for video encoding) - I420: YUV 4:2:0 planar format - And other formats supported by VideoFormatX enumeration Performance considerations: - RGB/RGBA formats are CPU-intensive but easy to process - YUV formats (NV12, I420) are more efficient for encoding pipelines - Choose the format matching your target processing to avoid conversions - Format conversion happens in the media pipeline before callback delivery Thread safety: Can be set before starting the media pipeline. Changing during playback may not take effect until restart. ```csharp public VideoFormatX Format { get; set; } ``` #### Property Value Parameters: - (VideoFormatX): ## Methods ### CallInvoke(Delegate, params object[]) Invokes a delegate method. Not implemented. ```csharp public void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The method to invoke. - args (object [ ]): The arguments. ### CallRefresh() Refreshes the view. Not implemented. ```csharp public void CallRefresh() ``` ### ClearUI() Clears the UI. Not implemented. ```csharp public void ClearUI() ``` ### GetBackgroundColor() Gets the background color. ```csharp public SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): Always returns black. ### GetHandle() Gets the window handle. ```csharp public nint GetHandle() ``` #### Returns Parameters: - (nint): Always returns IntPtr.Zero. ### GetInvokeRequired() Gets whether invoke is required. ```csharp public bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): Always returns false. ### GetIsHandleCreated() Gets whether the handle is created. ```csharp public bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): Always returns false. ### GetSize() Gets the size of the view. ```csharp public Size GetSize() ``` #### Returns Parameters: - (Size): Always returns Size(0, 0). ### GetUIEngine() Gets the UI engine type. ```csharp public VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): Returns BufferCallback. ### InvokeStart() Invokes start operation. Not implemented. ```csharp public void InvokeStart() ``` ### InvokeStartComplete() Invokes start complete operation. Not implemented. ```csharp public void InvokeStartComplete() ``` ### InvokeStop() Invokes stop operation. Not implemented. ```csharp public void InvokeStop() ``` ### InvokeVideoRendererUpdate() Invokes video renderer update. Not implemented. ```csharp public void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears the log dialog. Not implemented. ```csharp public void LogDialogClear() ``` ### LogDialogClose() Closes the log dialog. Not implemented. ```csharp public void LogDialogClose() ``` ### LogDialogError(string) Logs an error message in dialog. Not implemented. ```csharp public void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The error message. ### PushFrame(VideoFrame) Pushes a video frame to the view for processing and event notification. This method receives video frames from the media pipeline and converts them to VideoFrameX format before raising the event. It's called internally by the media framework to deliver frames to callback subscribers. Frame conversion process: - Converts legacy VideoFrame format to modern VideoFrameX format - Preserves frame data, dimensions, and timing information - Applies format conversions based on the property - Raises OnFrame event with converted frame data The conversion parameter (false) indicates whether to copy frame data. In this context, no copying occurs to maximize performance. Threading: Called on the media pipeline thread. Synchronous operation - blocks until OnFrame handlers complete. Performance: Minimal overhead conversion with direct frame forwarding. ```csharp public void PushFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The video frame to process in legacy VideoFrame format. ### PushFrame(VideoFrameX) Pushes a video frame to the view for processing and event notification. This method receives video frames in VideoFrameX format and directly raises the event for subscribers. This is the preferred method for modern media pipelines using VideoFrameX format. Frame delivery: - Direct event notification without format conversion - Zero-copy operation for maximum performance - Frame data pointer remains valid only during event handler execution - Subscribers must copy data if processing will occur asynchronously Threading: Called on the media pipeline thread. Synchronous operation - blocks until OnFrame handlers complete. Performance: Most efficient frame delivery path with no conversions. ```csharp public void PushFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The video frame to process in VideoFrameX format. ### PushMouseButtonDown(int, int, MouseButton) Pushes a mouse button down event. Not implemented. ```csharp public void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. - button (MouseButton): The mouse button. ### PushMouseButtonUp(int, int, MouseButton) Pushes a mouse button up event. Not implemented. ```csharp public void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. - button (MouseButton): The mouse button. ### PushMouseMove(int, int) Pushes a mouse move event. Not implemented. ```csharp public void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. ### ResizeRoundTo(int) Resizes the view rounded to specified value. Not implemented. ```csharp public void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The rounding value. ### SetHandle(nint) Sets the window handle. Not implemented. ```csharp public void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The window handle. ### ShowMessage(string) Shows a message box. Not implemented. ```csharp public MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message to display. #### Returns Parameters: - (MessageBoxResult): Always returns None. ### OnFrame Occurs when a new video frame is available for processing. This event is the primary mechanism for receiving video frames in CallbackVideoView. Subscribers receive VideoFrameX objects containing frame data, dimensions, format, and timing information. The event is raised on the media pipeline thread. Event handling guidelines: - Process frames quickly or queue for background processing to avoid blocking the pipeline - Frame data pointers are valid only during the event handler execution - Copy frame data if processing will occur asynchronously - Do not perform heavy processing directly in the event handler - Consider using a producer-consumer pattern for complex frame processing The VideoFrameX parameter provides: - Frame data pointer and size - Frame dimensions (width, height, stride) - Pixel format information - Timestamp and frame number - Additional metadata depending on source Thread safety: Event is raised on media pipeline thread, not UI thread. Subscribers must handle thread synchronization if updating UI components. Performance: Minimize processing time in handlers to maintain real-time performance. For 30fps video, each frame handler should complete within ~33ms. ```csharp public event EventHandler OnFrame ``` #### Event Type Parameters: - (EventHandler < VideoFrameX >): ### OnMouseButtonDown Occurs when a mouse button is pressed down on the video view. Note: This event is never raised in CallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when a mouse button is released on the video view. Note: This event is never raised in CallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when the mouse cursor is moved over the video view. Note: This event is never raised in CallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): --- # Class HelpLinks Link: api/VisioForge.Core.UI.HelpLinks.html # Class HelpLinks # Class HelpLinks **Namespace**: VisioForge.Core.UI **Assembly**: VisioForge.Core.dll Help links. ```csharp public static class HelpLinks ``` #### Inheritance #### Inherited Members ## Properties ### HLSStreaming Gets "HLS streaming" tutorial link. ```csharp public static string HLSStreaming { get; } ``` #### Property Value Parameters: - (string): ### IISSmoothStreaming Gets "IIS Smooth Streaming" tutorial link. ```csharp public static string IISSmoothStreaming { get; } ``` #### Property Value Parameters: - (string): ### NDIVendor Gets NDI vendor link. ```csharp public static string NDIVendor { get; } ``` #### Property Value Parameters: - (string): ### NetworkStreamingToYouTube Gets "Network Streaming to YouTube" tutorial link. ```csharp public static string NetworkStreamingToYouTube { get; } ``` #### Property Value Parameters: - (string): ### RedistFFMPEGx64 Gets FFMPEG x64 redist link. ```csharp public static string RedistFFMPEGx64 { get; } ``` #### Property Value Parameters: - (string): ### RedistFFMPEGx86 Gets FFMPEG x86 redist link. ```csharp public static string RedistFFMPEGx86 { get; } ``` #### Property Value Parameters: - (string): ### RedistLAVx64 Gets LAV x64 redist link. ```csharp public static string RedistLAVx64 { get; } ``` #### Property Value Parameters: - (string): ### RedistLAVx86 Gets LAV x86 redist link. ```csharp public static string RedistLAVx86 { get; } ``` #### Property Value Parameters: - (string): ### RedistVLCx64 Gets VLC x64 redist link. ```csharp public static string RedistVLCx64 { get; } ``` #### Property Value Parameters: - (string): ### RedistVLCx64UI Gets VLC x64 redist with UI link. ```csharp public static string RedistVLCx64UI { get; } ``` #### Property Value Parameters: - (string): ### RedistVLCx86 Gets VLC x86 redist link. ```csharp public static string RedistVLCx86 { get; } ``` #### Property Value Parameters: - (string): ### RedistVLCx86UI Gets VLC x86 redist with UI link. ```csharp public static string RedistVLCx86UI { get; } ``` #### Property Value Parameters: - (string): ### RedistXIPHx64 Gets XIPH x64 redist link. ```csharp public static string RedistXIPHx64 { get; } ``` #### Property Value Parameters: - (string): ### RedistXIPHx86 Gets XIPH x86 redist link. ```csharp public static string RedistXIPHx86 { get; } ``` #### Property Value Parameters: - (string): ### StreamingMSExpressionEncoder Gets "Streaming with Microsoft Expression Encoder" tutorial link. ```csharp public static string StreamingMSExpressionEncoder { get; } ``` #### Property Value Parameters: - (string): ### StreamingToAdobeFlashServer Gets "Streaming to Adobe Flash Server" tutorial link. ```csharp public static string StreamingToAdobeFlashServer { get; } ``` #### Property Value Parameters: - (string): ### TestVideoBunny Gets the test video link (bunny). ```csharp public static string TestVideoBunny { get; } ``` #### Property Value Parameters: - (string): ### VideoTutorials Gets Video Capture SDK .Net video tutorials link. ```csharp public static string VideoTutorials { get; } ``` #### Property Value Parameters: - (string): --- # Class JPEGCallbackVideoView Link: api/VisioForge.Core.UI.JPEGCallbackVideoView.html # Class JPEGCallbackVideoView # Class JPEGCallbackVideoView **Namespace**: VisioForge.Core.UI **Assembly**: VisioForge.Core.dll A headless video view implementation that provides JPEG-encoded frame callbacks without visual rendering. This class serves as a specialized callback-based video sink that receives video frames pre-encoded as JPEG images and forwards them to event handlers. Unlike which delivers raw pixel data, JPEGCallbackVideoView provides ready-to-use JPEG byte arrays, eliminating the need for frame encoding in subscriber code. Ideal for scenarios requiring JPEG images without UI rendering, such as motion JPEG streaming, snapshot systems, or web-based video delivery. Key features: - Receives pre-encoded JPEG frame data as byte arrays - Implements for standard video view integration - Provides OnJPEGFrame event for JPEG data processing - No-op implementations of UI-specific methods (rendering, mouse events, etc.) - Platform-independent operation without UI dependencies - Zero encoding overhead - frames arrive already JPEG-compressed - Memory-efficient delivery of compressed frame data Common use cases: - Motion JPEG (MJPEG) streaming servers - Snapshot capture and storage systems - Web-based video monitoring dashboards - Network camera integration with JPEG output - Thumbnail generation for video content - Low-bandwidth video transmission scenarios - REST API video frame endpoints Threading considerations: - Frame callbacks occur on the media pipeline thread - JPEG data is ready for immediate network transmission or file storage - Subscribers should handle data quickly or queue for background processing - No UI thread synchronization overhead Performance characteristics: - Minimal memory allocation per frame - No rendering or encoding overhead - Compressed data reduces memory and network bandwidth requirements - JPEG quality and compression ratio configured at source level ```csharp public class JPEGCallbackVideoView : IVideoView ``` #### Inheritance #### Implements #### Inherited Members ## Methods ### CallInvoke(Delegate, params object[]) Invokes a delegate method. Not implemented. ```csharp public void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The method to invoke. - args (object [ ]): The arguments. ### CallRefresh() Refreshes the view. Not implemented. ```csharp public void CallRefresh() ``` ### ClearUI() Clears the UI. Not implemented. ```csharp public void ClearUI() ``` ### GetBackgroundColor() Gets the background color. ```csharp public SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): Always returns black. ### GetHandle() Gets the window handle. ```csharp public nint GetHandle() ``` #### Returns Parameters: - (nint): Always returns IntPtr.Zero. ### GetInvokeRequired() Gets whether invoke is required. ```csharp public bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): Always returns false. ### GetIsHandleCreated() Gets whether the handle is created. ```csharp public bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): Always returns false. ### GetSize() Gets the size of the view. ```csharp public Size GetSize() ``` #### Returns Parameters: - (Size): Always returns Size(0, 0). ### GetUIEngine() Gets the UI engine type. ```csharp public VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): Returns JPEGCallback. ### InvokeStart() Invokes start operation. Not implemented. ```csharp public void InvokeStart() ``` ### InvokeStartComplete() Invokes start complete operation. Not implemented. ```csharp public void InvokeStartComplete() ``` ### InvokeStop() Invokes stop operation. Not implemented. ```csharp public void InvokeStop() ``` ### InvokeVideoRendererUpdate() Invokes video renderer update. Not implemented. ```csharp public void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears the log dialog. Not implemented. ```csharp public void LogDialogClear() ``` ### LogDialogClose() Closes the log dialog. Not implemented. ```csharp public void LogDialogClose() ``` ### LogDialogError(string) Logs an error message in dialog. Not implemented. ```csharp public void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The error message. ### PushMouseButtonDown(int, int, MouseButton) Pushes a mouse button down event. Not implemented. ```csharp public void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. - button (MouseButton): The mouse button. ### PushMouseButtonUp(int, int, MouseButton) Pushes a mouse button up event. Not implemented. ```csharp public void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. - button (MouseButton): The mouse button. ### PushMouseMove(int, int) Pushes a mouse move event. Not implemented. ```csharp public void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The x coordinate. - y (int): The y coordinate. ### ResizeRoundTo(int) Resizes the view rounded to specified value. Not implemented. ```csharp public void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The rounding value. ### SetHandle(nint) Sets the window handle. Not implemented. ```csharp public void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The window handle. ### ShowMessage(string) Shows a message box. Not implemented. ```csharp public MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message to display. #### Returns Parameters: - (MessageBoxResult): Always returns None. ### OnJPEGFrame Occurs when a new JPEG-encoded video frame is available for processing. This event is the primary mechanism for receiving JPEG-compressed video frames in JPEGCallbackVideoView. Subscribers receive byte arrays containing complete JPEG image data, ready for storage, transmission, or further processing. The event is raised on the media pipeline thread. Event handling guidelines: - JPEG data is complete and valid for immediate use - Frame data can be directly written to files, network streams, or HTTP responses - Process frames quickly or queue for background processing to avoid blocking the pipeline - Byte array remains valid only during the event handler execution - Copy data if processing will occur asynchronously The byte array parameter contains: - Complete JPEG file data including headers - Compressed image data ready for storage or transmission - Quality and compression configured at the media source level - No additional encoding required Common usage patterns: - Stream to HTTP response for web viewing - Save to file for snapshot capture - Transmit over network for MJPEG streaming - Queue for batch processing or archival - Forward to REST API endpoints Thread safety: Event is raised on media pipeline thread, not UI thread. Subscribers must handle thread synchronization if updating UI components. Performance: JPEG data is pre-encoded by the media pipeline. Frame size varies based on content complexity and configured quality settings. ```csharp public event EventHandler OnJPEGFrame ``` #### Event Type Parameters: - (EventHandler < byte [ ] >): ### OnMouseButtonDown Occurs when a mouse button is pressed down on the video view. Note: This event is never raised in JPEGCallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when a mouse button is released on the video view. Note: This event is never raised in JPEGCallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when the mouse cursor is moved over the video view. Note: This event is never raised in JPEGCallbackVideoView as it has no visual representation. It exists for interface compliance with . Mouse events are only functional in platform-specific video views with UI rendering. ```csharp public event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): --- # Class CustomHandlers Link: api/VisioForge.Core.UI.MAUI.CustomHandlers.html # Class CustomHandlers # Class CustomHandlers **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll Class CustomHandlers. ```csharp public static class CustomHandlers ``` #### Inheritance #### Inherited Members ## Methods ### AddVisioForgeHandlers(IMauiHandlersCollection) Adds the custom handlers. ```csharp public static IMauiHandlersCollection AddVisioForgeHandlers(this IMauiHandlersCollection handlersCollection) ``` #### Parameters Parameters: - handlersCollection (IMauiHandlersCollection): The handlers collection. #### Returns Parameters: - (IMauiHandlersCollection): IMauiHandlersCollection. --- # Class PhotoCaptureView Link: api/VisioForge.Core.UI.MAUI.PhotoCaptureView.html # Class PhotoCaptureView # Class PhotoCaptureView **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll A platform-native photo capture control for .NET MAUI that provides camera preview and photo capture capabilities. ```csharp public class PhotoCaptureView : View, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IViewController, IVisualElementController, IElementController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IView, ITransform, IElement ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This control is available only on iOS and Android platforms where it provides access to the device camera for photo capture operations. The control uses platform-specific camera implementations: - iOS: AVFoundation-based camera capture - Android: Camera2 API for modern devices The actual camera functionality is implemented by the platform-specific which creates and manages the native camera views. Key features: - Real-time camera preview - High-resolution photo capture - Asynchronous photo saving - Platform-optimized camera handling ## Constructors ### PhotoCaptureView() Initializes a new instance of the class. ```csharp public PhotoCaptureView() ``` #### Remarks The camera preview and capture functionality is initialized by the platform-specific handler when the control is added to the visual tree. Camera permissions must be granted by the user before the camera can be accessed. ## Methods ### SavePhotoAsync(string) Captures a photo from the camera and saves it to the specified file asynchronously. ```csharp public Task SavePhotoAsync(string filename) ``` #### Parameters Parameters: - filename (string): The full path where the captured photo should be saved. Must be a valid file path with write permissions. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous save operation. The task result contains: true if the photo was successfully captured and saved; false if the operation failed or the handler/core is not initialized. #### Remarks This method performs the following operations: - Captures a photo using the device camera at the current settings - Saves the captured image to the specified file path - Returns the operation result asynchronously The method requires that: - The handler is initialized (control is in the visual tree) - Camera permissions have been granted - The specified file path is valid and writable The image format and quality depend on the platform-specific camera implementation. On iOS, images are typically saved as JPEG. On Android, the format may vary based on device capabilities. #### Exceptions Parameters: - (UnauthorizedAccessException): Thrown when the application does not have permission to write to the specified file path. - (IOException): Thrown when an I/O error occurs during file write operations. ## See Also --- # Class PhotoCaptureViewHandler Link: api/VisioForge.Core.UI.MAUI.PhotoCaptureViewHandler.html # Class PhotoCaptureViewHandler # Class PhotoCaptureViewHandler **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll Handler for PhotoCaptureView. ```csharp public class PhotoCaptureViewHandler : ViewHandler, IPlatformViewHandler, IViewHandler, IElementHandler ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### PhotoCaptureViewHandler() Initializes a new instance of the class. ```csharp public PhotoCaptureViewHandler() ``` ### PhotoCaptureViewHandler(IPropertyMapper, CommandMapper) Initializes a new instance of the class. ```csharp public PhotoCaptureViewHandler(IPropertyMapper mapper, CommandMapper commandMapper = null) ``` #### Parameters Parameters: - mapper (IPropertyMapper): Property mapper. - commandMapper (CommandMapper): Command mapper. ## Properties ### Core Gets the core. ```csharp public PhotoCaptureView Core { get; } ``` #### Property Value Parameters: - (PhotoCaptureView): ## Methods ### CreatePlatformView() Creates the platform view. ```csharp protected override PhotoCaptureView CreatePlatformView() ``` #### Returns Parameters: - (PhotoCaptureView): The platform view. --- # Class SkinButton Link: api/VisioForge.Core.UI.MAUI.Skins.SkinButton.html # Class SkinButton # Class SkinButton **Namespace**: VisioForge.Core.UI.MAUI.Skins **Assembly**: VisioForge.Core.UI.MAUI.dll A button control that extends with interactive state management. Automatically handles hover, pressed, and disabled visual states based on user interaction across all MAUI platforms (Windows, Android, iOS, macCatalyst). ```csharp public class SkinButton : SkinIconElement, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, ISKCanvasView, IView, IElement, ITransform, ISKCanvasViewController, IViewController, IVisualElementController, IElementController, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The SkinButton extends SkinIconElement with: - Automatic state management (hover/pressed) based on pointer/touch events - Platform-specific interaction handling (Windows: Pointer events only) - Visual feedback for user interactions Platform-specific behavior: - Windows: Full hover and pressed state support via pointer events - Android/iOS: Touch events handled by base SkinIconElement (no hover state) Note: Currently, only Windows platform has active state management code. Android and iOS rely on the OnClickOrTouch event from the base class. ## Constructors ### SkinButton() Initializes a new instance of the class. Sets up event handlers for interactive state management. ```csharp public SkinButton() ``` ## Methods ### Dispose(bool) Releases all resources used by the . ```csharp protected override void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true if disposing managed resources; otherwise, false. #### Remarks This method extends the base disposal to include button-specific cleanup: - Unsubscribes from HandlerChanged and HandlerChanging events - On Windows: Unsubscribes from all pointer events (Entered, Exited, Released, Pressed) - Releases platform view references After cleanup, calls the base class Dispose to complete resource cleanup. The method is safe to call multiple times. --- # Class SkinIconElement Link: api/VisioForge.Core.UI.MAUI.Skins.SkinIconElement.html # Class SkinIconElement # Class SkinIconElement **Namespace**: VisioForge.Core.UI.MAUI.Skins **Assembly**: VisioForge.Core.UI.MAUI.dll A customizable icon element control that integrates with the VisioForge skinning system for MAUI. This control can display both SVG and PNG images with automatic state management for hover, pressed, and disabled states across all MAUI platforms (Windows, Android, iOS, macCatalyst). ```csharp public class SkinIconElement : SKCanvasView, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, ISKCanvasView, IView, IElement, ITransform, ISKCanvasViewController, IViewController, IVisualElementController, IElementController, IDisposable ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Remarks The SkinIconElement automatically handles visual states by: - Loading appropriate graphics from the skin system - Applying hover effects with color overlays - Showing pressed states with shadow effects - Rendering disabled states with transparency overlays - Scaling graphics to fit the control dimensions Platform-specific touch/pointer handling is implemented for: - Windows: Pointer events (PointerPressed) - Android: Touch events with debouncing - iOS/macCatalyst: SKTouchEvents The control integrates with the SkinManager to load graphics and styling information from skin definition files (.vfskin). ## Constructors ### SkinIconElement() Initializes a new instance of the class. ```csharp public SkinIconElement() ``` #### Remarks The constructor performs the following initialization: - Sets transparent background for overlay scenarios - Attaches the paint surface handler for SkiaSharp rendering - Subscribes to handler lifecycle events for platform-specific setup - Enables touch event handling Platform-specific input handlers (pointer, touch) are configured when the control is added to the visual tree via the HandlerChanged event. Graphics are not loaded until a skin is assigned via the property. ## Fields ### ElementStateProperty Dependency property for the ElementState property. Determines the current visual state of the control. ```csharp public static readonly BindableProperty ElementStateProperty ``` #### Field Value Parameters: - (BindableProperty): ### ElementTypeProperty Dependency property for the ElementType property. Determines what type of skin element this control represents. ```csharp public static readonly BindableProperty ElementTypeProperty ``` #### Field Value Parameters: - (BindableProperty): ### SkinNameProperty Dependency property for the SkinName property. Determines which skin to load for this control. ```csharp public static readonly BindableProperty SkinNameProperty ``` #### Field Value Parameters: - (BindableProperty): ## Properties ### ElementState Gets or sets the state of the element. ```csharp public SkinElementState ElementState { get; set; } ``` #### Property Value Parameters: - (SkinElementState): #### Remarks The element state affects the visual appearance through: - Base: Normal appearance - Hover: Highlighted appearance (with optional color overlay) - Pressed: Pressed appearance (with shadow effect) - Disabled: Grayed out appearance (with transparency overlay) ### ElementType Gets or sets the type of skin element this control represents. ```csharp public SkinElementType ElementType { get; set; } ``` #### Property Value Parameters: - (SkinElementType): #### Remarks Changing this property will trigger a reload of the appropriate graphics from the current skin and update the control's visual appearance. ### SkinName Gets or sets the name of the skin to use for this control. ```csharp public string SkinName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks The skin name must match a skin that has been loaded via SkinManager.LoadFromData or SkinManager.LoadFromFile. Changing the skin name will reload all graphics and styling from the new skin definition. ## Methods ### Dispose() Releases all resources used by the . ```csharp public void Dispose() ``` #### Remarks This method performs complete cleanup of managed and unmanaged resources: - Unsubscribes from all platform-specific event handlers - Disposes bitmap resources (_png) - Releases SVG resources (_svg) - Unsubscribes from all MAUI events Call this method when the control is no longer needed to prevent memory leaks, especially important for long-running applications that dynamically create and destroy controls. The method is safe to call multiple times. ### Dispose(bool) Disposes managed and unmanaged resources. Properly unsubscribes from platform-specific event handlers to prevent memory leaks. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True if disposing managed resources. ### OnClickOrTouch Occurs when the user clicks or touches the control. ```csharp public event EventHandler OnClickOrTouch ``` #### Event Type Parameters: - (EventHandler): #### Remarks This event provides a unified click/touch interface across all platforms: - Windows: Fires on pointer press (mouse or touch) - Android: Fires on touch with 500ms debouncing to prevent double-triggers - iOS/macCatalyst: Fires on touch release via SKTouch events The event does not provide coordinates or button information - it simply indicates that the control was activated by user interaction. Platform-specific event handlers are automatically attached and cleaned up via the HandlerChanged and HandlerChanging events. --- # Class SkinPlayerControls Link: api/VisioForge.Core.UI.MAUI.Skins.SkinPlayerControls.html # Class SkinPlayerControls # Class SkinPlayerControls **Namespace**: VisioForge.Core.UI.MAUI.Skins **Assembly**: VisioForge.Core.UI.MAUI.dll A comprehensive MAUI control that provides a skinnable media player interface. This control manages player controls, timeline scrubbing, volume control, and auto-hide functionality with full skin support across all MAUI platforms. ```csharp public class SkinPlayerControls : Grid, INotifyPropertyChanged, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IViewController, IVisualElementController, IElementController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IBindableLayout, IVisualTreeElement, IGridLayout, ILayout, IView, IElement, ITransform, IContainer, IList, ICollection, IEnumerable, IEnumerable, ISafeAreaView, IPadding, ICrossPlatformLayout, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The SkinPlayerControls provides: - Play/pause controls with visual state management - Timeline slider with seeking capabilities - Volume control with mute functionality - Next/Previous frame navigation - Speed control (0.5x, 1x, 2x playback speeds) - Auto-hide functionality for overlay scenarios - Settings and file open dialogs Platform support: - Windows: Full pointer interaction with auto-hide - Android: Touch interaction with auto-hide - iOS/macCatalyst: Tap gesture recognition with auto-hide The control integrates with the VisioForge skinning system to provide customizable appearances and supports IMediaPlayerControls interface for player integration. ## Constructors ### SkinPlayerControls() Initializes a new instance of the class. ```csharp public SkinPlayerControls() ``` ## Fields ### SkinNameProperty The element type property. ```csharp public static readonly BindableProperty SkinNameProperty ``` #### Field Value Parameters: - (BindableProperty): ## Properties ### Filename Gets or sets the full path to the media file to be played. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks This property is automatically set when the user selects a file using the Open File button. You can also set it programmatically to load a specific media file. When the play button is clicked and the player is in the Free state, the file specified by this property will be opened and played automatically. Supported formats depend on the configured media player engine (GStreamer, DirectShow, etc.). ### Player Gets or sets the media player instance that this control will manage. ```csharp public IMediaPlayerControls Player { get; set; } ``` #### Property Value Parameters: - (IMediaPlayerControls): #### Remarks When setting this property: - The previous player's OnStart event is unsubscribed - The new player's OnStart event is subscribed for duration updates - The control gains access to playback controls (play, pause, seek, volume, etc.) The control interacts with the player through the IMediaPlayerControls interface, providing a unified interface for both MediaPlayerCoreX and MediaPlayerCore implementations. Setting this property to null detaches the player and disables control functionality. ### SkinName Gets or sets the name of the skin to apply to the player controls. ```csharp public string SkinName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When this property is set, the control loads the specified skin from the SkinManager and updates all visual elements (buttons, sliders, text colors, background) to match the skin's styling. The skin must be loaded into the SkinManager before setting this property. Use or to load skins. Changing the skin dynamically updates the UI immediately. ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Releases all resources used by the . ```csharp public void Dispose() ``` #### Remarks This method performs comprehensive cleanup: - Unsubscribes from all platform-specific event handlers (Windows pointer, Android touch, iOS gestures) - Disposes and stops both timers (position update and auto-hide) - Unsubscribes from player events - Cancels iOS/macCatalyst tap delay operations - Removes iOS gesture recognizers from the view Call this method when the control is no longer needed to prevent memory leaks and ensure all platform resources are properly released. The method is safe to call multiple times. ### OnAction Occurs when a user interacts with any control button (play, pause, stop, settings, etc.). ```csharp public event EventHandler OnAction ``` #### Event Type Parameters: - (EventHandler < SkinActionEventArgs >): #### Remarks This event fires before the default action is performed, allowing you to: - Customize or override the default behavior - Perform validation or pre-action tasks - Cancel the action by setting to true The event args include the indicating which button was clicked. If is set to true, the control's default action (play, pause, etc.) will not execute. ### OnPlayClick Occurs when play button clicked. ```csharp public event EventHandler OnPlayClick ``` #### Event Type Parameters: - (EventHandler): ### OnPreparePlayClick Occurs when play button clicked (before play call). ```csharp public event EventHandler OnPreparePlayClick ``` #### Event Type Parameters: - (EventHandler): ### OnPrepareStopClick Occurs when stop button clicked (before stop call). ```csharp public event EventHandler OnPrepareStopClick ``` #### Event Type Parameters: - (EventHandler): ### OnStopClick Occurs when stop button clicked. ```csharp public event EventHandler OnStopClick ``` #### Event Type Parameters: - (EventHandler): --- # Namespace VisioForge.Core.UI.MAUI.Skins Link: api/VisioForge.Core.UI.MAUI.Skins.html # Namespace VisioForge.Core.UI.MAUI.Skins # Namespace VisioForge.Core.UI.MAUI.Skins ### Classes Parameters: - (): A button control that extends with interactive state management. Automatically handles hover, pressed, and disabled visual states based on user interaction across all MAUI platforms (Windows, Android, iOS, macCatalyst). - (): A customizable icon element control that integrates with the VisioForge skinning system for MAUI. This control can display both SVG and PNG images with automatic state management for hover, pressed, and disabled states across all MAUI platforms (Windows, Android, iOS, macCatalyst). - (): A comprehensive MAUI control that provides a skinnable media player interface. This control manages player controls, timeline scrubbing, volume control, and auto-hide functionality with full skin support across all MAUI platforms. --- # Class SVGButton Link: api/VisioForge.Core.UI.MAUI.SVGButton.html # Class SVGButton # Class SVGButton **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll A scalable vector graphics button control for .NET MAUI that renders SVG assets with platform-specific touch/pointer handling. ```csharp public class SVGButton : SKCanvasView, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, ISKCanvasView, IView, IElement, ITransform, ISKCanvasViewController, IViewController, IVisualElementController, IElementController ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This control provides a lightweight button implementation using SVG graphics for resolution-independent rendering. The control uses SkiaSharp for SVG rendering and integrates with platform-specific input systems: - Windows: Pointer events (PointerPressed) - Android: Touch events with debouncing to prevent multiple triggers - iOS/macCatalyst: SKTouch events for gesture recognition Key features: - Resolution-independent SVG rendering - Automatic scaling to fit control bounds - Transparent background for overlay scenarios - Asynchronous asset loading from app package - Platform-optimized touch/click handling - Optional state visualization (hover, pressed, disabled) SVG assets are loaded from the app package using the property. The control automatically scales the SVG to fit the available space while maintaining aspect ratio. ## Constructors ### SVGButton() Initializes a new instance of the class. ```csharp public SVGButton() ``` #### Remarks The constructor sets up: - Transparent background for overlay scenarios - Paint surface event handler for rendering - Platform-specific touch/pointer event handlers via HandlerChanged event Platform-specific input handlers are attached when the control is added to the visual tree and the platform handler is created. The actual input handling is configured in the SkinIconElement_HandlerChanged method based on the current platform. ## Properties ### AssetName Gets or sets the name of the SVG asset file to load from the app package. ```csharp public string AssetName { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When this property is set, the control asynchronously loads the SVG file from the app package using . The SVG is parsed and cached for rendering. The asset must be included in the app package with the appropriate build action (MauiAsset or EmbeddedResource). Supported format: SVG (Scalable Vector Graphics) files. Loading occurs on a background thread to avoid blocking the UI. The control will render once loading completes. ### DrawStates Gets or sets a value indicating whether to programmatically draw visual states (hover, pressed, disabled). ```csharp public bool DrawStates { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the control can apply visual effects based on interaction state: - Hover: Color overlay using skin's ButtonHoverColor - Pressed: Shadow effect with multiple offset drawings - Disabled: Semi-transparent black overlay Currently, the state drawing implementation is commented out, so this property has no effect. Future versions may re-enable this functionality for enhanced visual feedback. ### OnClickOrTouch Occurs when the user clicks or touches the button. ```csharp public event EventHandler OnClickOrTouch ``` #### Event Type Parameters: - (EventHandler): #### Remarks This event fires on: - Windows: Pointer press (mouse click or touch) - Android: Touch down event - iOS/macCatalyst: Touch event from SKTouch system The event provides a unified interface for click/touch across all platforms without exposing platform-specific event details. No event arguments are provided beyond the sender. On Android, touch events may benefit from debouncing to prevent accidental double-triggers. --- # Class VideoView Link: api/VisioForge.Core.UI.MAUI.VideoView.html # Class VideoView # Class VideoView **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll Provides a high-performance video rendering control for .NET MAUI applications using SkiaSharp. ```csharp public class VideoView : VideoViewX, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IViewController, IVisualElementController, IElementController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IView, ITransform, IElement ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This control renders video frames using SkiaSharp's hardware-accelerated canvas. On iOS, Android, Windows, and macCatalyst platforms, this class inherits from which provides native platform-specific rendering. On other platforms, it uses SkiaSharp-based rendering with a frame cache system for optimal performance. The control implements for integration with VisioForge media engines and for receiving video frames. Key features: - Hardware-accelerated video rendering via SkiaSharp - Automatic aspect ratio preservation with letterboxing - Frame caching system for smooth playback - Status overlay support for connection progress indicators - Mouse/touch event handling for interactive controls - Background image support when video is not playing --- # Class VideoViewX Link: api/VisioForge.Core.UI.MAUI.VideoViewX.html # Class VideoViewX # Class VideoViewX **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll A platform-native video view control for .NET MAUI that provides hardware-accelerated video rendering. ```csharp public class VideoViewX : View, INotifyPropertyChanged, IVisualTreeElement, IEffectControlProvider, IToolTipElement, IContextFlyoutElement, IAnimatable, IViewController, IVisualElementController, IElementController, IGestureController, IGestureRecognizers, IPropertyMapperView, IHotReloadableView, IReplaceableView, IView, ITransform, IElement ``` #### Inheritance #### Derived #### Implements #### Inherited Members ## Remarks This control serves as a cross-platform wrapper around native video rendering implementations. It leverages platform-specific rendering technologies for optimal performance: - iOS: Metal-based rendering via native iOS views - Android: TextureView or SurfaceView with hardware acceleration - Windows: WinUI 3 native rendering with DirectX - macCatalyst: Metal-based rendering The control integrates with VisioForge media engines through the interface, which is implemented by the platform-specific handlers. Use to access the actual video view implementation for the current platform. This class serves as the MAUI View that is mapped to native handlers on each platform via the . ## Constructors ### VideoViewX() Initializes a new instance of the class. ```csharp public VideoViewX() ``` #### Remarks The control's native implementation is created and initialized by the MAUI handler system when the control is added to the visual tree. The actual video rendering capabilities are provided by the platform-specific handler accessible through . ## Methods ### GetVideoView() Gets the platform-specific video view implementation that handles actual video rendering. ```csharp public IVideoView GetVideoView() ``` #### Returns Parameters: - (IVideoView): An instance that provides access to the native video rendering surface, or null if the handler has not been initialized yet. #### Remarks This method returns the actual video view implementation created by the platform handler. The returned instance implements and can be used to: - Attach media engines for video playback - Control video rendering parameters - Access platform-specific features - Handle video frame delivery The handler must be initialized (control added to visual tree) before this method returns a non-null value. For instances, the VideoView property is accessed directly. For other handler types, the PlatformView is cast to IVideoView. ## See Also --- # Class VideoViewXHandler Link: api/VisioForge.Core.UI.MAUI.VideoViewXHandler.html # Class VideoViewXHandler # Class VideoViewXHandler **Namespace**: VisioForge.Core.UI.MAUI **Assembly**: VisioForge.Core.UI.MAUI.dll Handler for VideoViewX. ```csharp public class VideoViewXHandler : ViewHandler, IPlatformViewHandler, IViewHandler, IElementHandler ``` #### Inheritance #### Implements #### Inherited Members ## Constructors ### VideoViewXHandler() Initializes a new instance of the class. ```csharp public VideoViewXHandler() ``` ### VideoViewXHandler(IPropertyMapper, CommandMapper) Initializes a new instance of the class. ```csharp public VideoViewXHandler(IPropertyMapper mapper, CommandMapper commandMapper = null) ``` #### Parameters Parameters: - mapper (IPropertyMapper): Property mapper. - commandMapper (CommandMapper): Command mapper. ## Properties ### VideoView Gets the video view. ```csharp public IVideoView VideoView { get; } ``` #### Property Value Parameters: - (IVideoView): ## Methods ### CreatePlatformView() Creates the platform view. ```csharp protected override VideoView CreatePlatformView() ``` #### Returns Parameters: - (VideoView): The platform view. --- # Namespace VisioForge.Core.UI.MAUI Link: api/VisioForge.Core.UI.MAUI.html # Namespace VisioForge.Core.UI.MAUI # Namespace VisioForge.Core.UI.MAUI ### Namespaces Parameters: - (): ### Classes Parameters: - (): Class CustomHandlers. - (): A platform-native photo capture control for .NET MAUI that provides camera preview and photo capture capabilities. - (): Handler for PhotoCaptureView. - (): A scalable vector graphics button control for .NET MAUI that renders SVG assets with platform-specific touch/pointer handling. - (): Provides a high-performance video rendering control for .NET MAUI applications using SkiaSharp. - (): A platform-native video view control for .NET MAUI that provides hardware-accelerated video rendering. - (): Handler for VideoViewX. --- # Interface ISkin Link: api/VisioForge.Core.UI.Skins.ISkin.html # Interface ISkin # Interface ISkin **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Defines the contract for UI skin implementations that provide theming and styling capabilities. Implementations of this interface supply visual assets and styling data for media player and capture control UI elements. ```csharp public interface ISkin ``` ## Remarks Skins provide visual customization by defining images and styles for various UI elements such as buttons, sliders, and control panels. The skin system supports multiple visual states (base, hover, pressed, disabled) for interactive elements, enabling rich visual feedback during user interaction. ## Methods ### GetElement(SkinElementType) Retrieves the skin element data for a specific UI element type. ```csharp SkinElementData GetElement(SkinElementType element) ``` #### Parameters Parameters: - element (SkinElementType): The type of UI element to retrieve skin data for. #### Returns Parameters: - (SkinElementData): A object containing the styling information for the specified element type, or null if the element is not defined in this skin. #### Remarks The returned contains image data for multiple visual states (base, hover, pressed, disabled) and indicates whether the images are in SVG or raster format. ### GetName() Gets the display name of the skin for identification purposes. ```csharp string GetName() ``` #### Returns Parameters: - (string): A string containing the human-readable name of the skin used for selection and display in user interfaces. #### Remarks The name should be unique across all loaded skins to allow proper identification and retrieval via . --- # Class Skin Link: api/VisioForge.Core.UI.Skins.Skin.html # Class Skin # Class Skin **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Represents a complete skin theme for the UI, containing styling information for various UI elements. Implements the interface. ```csharp public class Skin : ISkin ``` #### Inheritance #### Implements #### Inherited Members ## Remarks A skin encapsulates all visual assets needed to theme media player and capture control interfaces, including button images, slider styles, control panel layouts, and color schemes. Skins can be loaded from various sources:
  • Embedded resources in assemblies (.vfskin files)
  • ZIP archives containing skin elements
  • File system directories with individual element files
  • Byte arrays with compressed skin data
Each UI element can have multiple visual states (base, hover, pressed, disabled) and supports both SVG and raster image formats. The skin also defines color schemes for backgrounds, text, playlists, and hover effects. ## Constructors ### Skin() Initializes a new instance of the class with empty element collection. ```csharp public Skin() ``` #### Remarks After construction, the skin must be populated with element data using the method or loaded through utility methods. ## Properties ### BackgroundColor Gets or sets the primary background color for the UI. ```csharp public SKColor? BackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ### ButtonHoverColor Gets or sets the fallback color applied to buttons on hover when no hover image is available. ```csharp public SKColor? ButtonHoverColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ### PlaylistBackgroundColor Gets or sets the background color for the playlist container. ```csharp public SKColor? PlaylistBackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ### PlaylistItemBackgroundColor Gets or sets the background color for individual playlist items. ```csharp public SKColor? PlaylistItemBackgroundColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ### PlaylistTextColor Gets or sets the text color for playlist item labels. ```csharp public SKColor? PlaylistTextColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ### TextColor Gets or sets the primary text color for UI labels and text elements. ```csharp public SKColor? TextColor { get; set; } ``` #### Property Value Parameters: - (SKColor ?): ## Methods ### GetElement(SkinElementType) Retrieves the skin element data for the specified UI element type. ```csharp public SkinElementData GetElement(SkinElementType element) ``` #### Parameters Parameters: - element (SkinElementType): The type of UI element to retrieve skin data for. #### Returns Parameters: - (SkinElementData): A object containing the styling information including images for all visual states, or null if the element is not defined in this skin. #### Remarks If an element is not defined in the skin, controls should fall back to default styling or hide the element. The returned contains image data for base, hover, pressed, and disabled states, though some states may be undefined if not provided by the skin. ### GetName() Gets the display name of the skin. ```csharp public string GetName() ``` #### Returns Parameters: - (string): The skin's display name as defined in the Settings.json file within the skin package. #### Remarks This name is used for display in UI selection lists and for programmatic retrieval via . The name should be unique across all loaded skins to avoid ambiguity. ### ParseElement(string, byte[]) Parses and loads skin element data from a file. ```csharp public bool ParseElement(string name, byte[] data) ``` #### Parameters Parameters: - name (string): The filename of the element resource (e.g., "Settings.json", "Play.svg", "WPFSliderStyle.xaml"). - data (byte [ ]): The raw byte data of the element resource. #### Returns Parameters: - (bool): true if the element was successfully parsed and loaded; false if the element type was not recognized or parsing failed. #### Remarks This method supports multiple file types:
  • Settings.json - Contains skin metadata (name, colors)
  • *.svg - SVG vector graphics for UI elements
  • *.png - Raster images for UI elements
  • *.xaml - WPF-specific XAML templates and styles (Windows only)
Element filenames follow a naming convention: ElementType[_state].extension where state can be:
  • No suffix - Base/normal state
  • _h - Hover state
  • _p - Pressed state
  • _d - Disabled state
## See Also --- # Class SkinActionEventArgs Link: api/VisioForge.Core.UI.Skins.SkinActionEventArgs.html # Class SkinActionEventArgs # Class SkinActionEventArgs **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Provides event data for skin-related UI actions, allowing event handlers to identify the UI element involved and control event propagation. ```csharp public class SkinActionEventArgs : EventArgs ``` #### Inheritance #### Inherited Members ## Remarks This event args class is used when users interact with skinned UI elements such as buttons and controls. Event handlers can use the property to determine which element was clicked and set to prevent default behavior and implement custom actions. This is particularly useful for overriding standard control behavior or implementing custom command handling. ## Constructors ### SkinActionEventArgs(SkinElementType) Initializes a new instance of the class with the specified element type. ```csharp public SkinActionEventArgs(SkinElementType elementType) ``` #### Parameters Parameters: - elementType (SkinElementType): The type of UI element that triggered the action. ## Properties ### HandleAndIgnore Gets or sets a value indicating whether the action has been handled externally and should be ignored by the control panel's default handling. ```csharp public bool HandleAndIgnore { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Set this property to true in event handlers when you want to override the default behavior and prevent the control from executing its standard action for the element. This allows for custom command implementations or conditional action execution. By default, this property is false, allowing standard control behavior to proceed. ### Type Gets the type of UI element that triggered the skin action. ```csharp public SkinElementType Type { get; } ``` #### Property Value Parameters: - (SkinElementType): #### Remarks Use this property to identify which button or control was clicked by the user, enabling appropriate response such as play/pause, volume adjustment, or record start/stop. --- # Class SkinElementData Link: api/VisioForge.Core.UI.Skins.SkinElementData.html # Class SkinElementData # Class SkinElementData **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Contains visual state data for a single UI element within a skin, supporting multiple states (base, hover, pressed, disabled). ```csharp public class SkinElementData ``` #### Inheritance #### Inherited Members ## Remarks Each UI element can have up to four visual states, each represented by separate image data:
  • - The default appearance when not interacting
  • - Appearance when mouse cursor is over the element
  • - Appearance during active click or touch
  • - Appearance when the element is not available
Not all states are required; if a state is not defined (null), the control should fall back to the base state or apply alternative visual feedback. The property indicates whether the images are vector (SVG) or raster (PNG, etc.), which affects rendering and scaling behavior. ## Constructors ### SkinElementData(bool) Initializes a new instance of the class with the specified image format. ```csharp public SkinElementData(bool svg) ``` #### Parameters Parameters: - svg (bool): if set to true, indicates that the element images are in SVG format; otherwise, they are raster images. #### Remarks The image format should be consistent across all states (base, hover, pressed, disabled) for a single element. Mixing SVG and raster formats within a single element is not supported. ## Properties ### Base Gets or sets the image data for the element's default/normal state. ```csharp public byte[] Base { get; set; } ``` #### Property Value Parameters: - (byte [ ]): #### Remarks This is the required state for any UI element. If no other states are defined, this image will be used for all visual states. The format (SVG or PNG) is indicated by . ### Disabled Gets or sets the image data displayed when the element is in a disabled state. ```csharp public byte[] Disabled { get; set; } ``` #### Property Value Parameters: - (byte [ ]): #### Remarks This state indicates that the element is not currently available or applicable. If not defined, controls may render the base image with reduced opacity or grayscale effect. ### Hover Gets or sets the image data displayed when the mouse hovers over the element. ```csharp public byte[] Hover { get; set; } ``` #### Property Value Parameters: - (byte [ ]): #### Remarks This state provides visual feedback as the user moves the cursor over interactive elements. If not defined, controls may use for hover feedback or show no hover effect. ### IsSVG Gets a value indicating whether the element images are in SVG format. ```csharp public bool IsSVG { get; } ``` #### Property Value Parameters: - (bool): #### Remarks SVG images provide resolution-independent scaling and are preferred for high-DPI displays. Raster images (PNG) may be used for complex graphics or when SVG rendering is not available. This property is set during construction and cannot be changed, as it affects how the image data is interpreted. ### Pressed Gets or sets the image data displayed when the element is pressed (mouse down or touch active). ```csharp public byte[] Pressed { get; set; } ``` #### Property Value Parameters: - (byte [ ]): #### Remarks This state provides visual feedback during active user interaction. If not defined, controls may fall back to the base image or apply alternative visual effects. ## Methods ### GetByState(SkinElementState) Retrieves the appropriate image data based on the specified element state. ```csharp public byte[] GetByState(SkinElementState state) ``` #### Parameters Parameters: - state (SkinElementState): The visual state of the element to retrieve image data for. #### Returns Parameters: - (byte [ ]): The byte array containing the image data for the specified state. If the requested state is not available (null), returns the image as a fallback. #### Remarks This method ensures that a valid image is always returned by falling back to the base state when specific state images are not defined. This allows partial skin definitions where only the most important states are provided. --- # Enum SkinElementState Link: api/VisioForge.Core.UI.Skins.SkinElementState.html # Enum SkinElementState # Enum SkinElementState **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Defines the visual states that a skinned UI element can be in, determining which image or style variation to display. ```csharp public enum SkinElementState ``` ## Fields Parameters: - Base (): The default state when the element is not being interacted with and is enabled. - Hover (): The state when the mouse cursor is hovering over the element but not clicking. - Pressed (): The state when the element is being actively pressed or clicked by the user. - Disabled (): The state when the element is disabled and cannot be interacted with by the user. ## Remarks These states represent the standard interaction states for UI controls and provide visual feedback to users. State transitions occur automatically based on user interaction:
  • when cursor enters the element
  • when mouse button is pressed down
  • when mouse button is released
  • Any state → when element becomes unavailable
Not all elements need to implement all states; the state is typically required as the fallback. --- # Enum SkinElementType Link: api/VisioForge.Core.UI.Skins.SkinElementType.html # Enum SkinElementType # Enum SkinElementType **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Identifies the types of UI elements that can be skinned in the media player and capture controls. ```csharp public enum SkinElementType ``` ## Fields Parameters: - Play (): The play button control for starting media playback. - PlayPause (): The combined play/pause toggle button that shows play when paused and pause when playing. - Pause (): The pause button control for temporarily stopping media playback. - Stop (): The stop button control for ending media playback and returning to the beginning. - NextFile (): The next file button for skipping to the next item in a playlist. - NextFrame (): The frame step button for advancing video playback by a single frame. - PrevFile (): The previous file button for returning to the previous item in a playlist. - PrevFrame (): The frame step back button for reversing video playback by a single frame. - Mute (): The mute button shown when audio is currently muted. - Sound (): The sound/volume button shown when audio is currently enabled. - Settings (): The settings button for accessing player configuration options. - FullScreen (): The fullscreen toggle button for switching between windowed and fullscreen display modes. - Speed1X (): The normal playback speed button (1x speed). - Speed2X (): The double playback speed button (2x speed). - Speed05X (): The half playback speed button (0.5x speed). - Subtitles (): The subtitles toggle button for enabling/disabling subtitle display. - Open (): The open file button for browsing and loading media files. - Add (): The add button for adding items to a playlist or collection. - Playlist (): The playlist toggle button for showing/hiding the playlist panel. - Effects (): The effects button for accessing video and audio effect controls. - Remove (): The remove button for deleting items from a playlist or collection. - Camera (): The camera button for accessing camera/capture device controls. - CameraSwitch (): The camera switch button for toggling between multiple camera devices. - Photo (): The photo capture button for taking still images from video or camera sources. - Record (): The record button for starting video/audio recording (inactive state). - RecordActive (): The record button shown during active recording (typically displayed in red or with recording indicator). ## Remarks Each value represents a specific UI control or button that can be customized through the skin system. Elements are organized into functional categories:
  • Playback controls: , , ,
  • Navigation controls: , , ,
  • Audio controls: ,
  • Playback speed: , ,
  • Display controls: ,
  • Media management: , , ,
  • Capture controls: , , , ,
  • Advanced features: ,
Each element can have multiple visual states defined in . --- # Class SkinManager Link: api/VisioForge.Core.UI.Skins.SkinManager.html # Class SkinManager # Class SkinManager **Namespace**: VisioForge.Core.UI.Skins **Assembly**: VisioForge.Core.dll Manages the loading, storage, and retrieval of UI skins from various sources including embedded resources, files, and folders. ```csharp public static class SkinManager ``` #### Inheritance #### Inherited Members ## Remarks The serves as the central repository for all loaded skins in the application. It provides multiple loading mechanisms:
  • Automatic loading of embedded .vfskin resources during static initialization
  • Loading from .vfskin files on disk via
  • Loading from directories containing skin element files via
  • Loading from byte arrays via
All loading methods support ZIP-compressed skin packages (.vfskin files) which contain:
  • Settings.json - Skin metadata and color definitions
  • Element images (.svg or .png) - Visual assets for UI elements in various states
  • XAML files (.xaml) - WPF-specific templates and styles (Windows only)
Once loaded, skins can be retrieved by name using or enumerated using and . This class is thread-safe for read operations after initialization, but loading operations should be performed during application startup. ## Methods ### GetSkinByName(string) Retrieves a specific skin by its display name. ```csharp public static Skin GetSkinByName(string name) ``` #### Parameters Parameters: - name (string): The display name of the skin to retrieve. This is case-sensitive and must match exactly. #### Returns Parameters: - (Skin): The instance with the matching name, or null if not found or if name is null or empty. #### Remarks This is the primary method for retrieving skins by user selection. The name must match exactly the value returned by . If no skin with the specified name exists, the application should fall back to a default skin or provide appropriate error handling. ### LoadFromData(string, byte[]) Loads a skin from a byte array containing ZIP-compressed skin data. ```csharp public static void LoadFromData(string name, byte[] data) ``` #### Parameters Parameters: - name (string): The identifier name for debugging purposes. This is not used as the skin's display name; the actual name is read from Settings.json within the ZIP archive. - data (byte [ ]): The byte array containing the ZIP-compressed skin data (.vfskin format). #### Remarks This method is useful for loading skins from network sources, databases, or other non-file storage. The data must be a valid ZIP archive containing skin elements. If the data is not in ZIP format, the load operation is silently ignored. On load failure, the error is logged to debug output but does not throw an exception. ### LoadFromFile(string) Loads a skin from a .vfskin file on disk. ```csharp public static void LoadFromFile(string filename) ``` #### Parameters Parameters: - filename (string): The full path to the .vfskin file to load. #### Remarks The .vfskin file must be a valid ZIP archive containing skin elements. This method reads the entire file into memory before parsing. For large skin files, consider memory usage implications. On load failure, the error is logged to debug output but does not throw an exception. The skin's display name is read from the Settings.json file within the archive, not from the filename. #### Exceptions Parameters: - (FileNotFoundException): Thrown if the specified file does not exist. - (IOException): Thrown if the file cannot be read. ### LoadFromFolder(string) Loads a skin from a directory containing individual skin element files. ```csharp public static void LoadFromFolder(string path) ``` #### Parameters Parameters: - path (string): The full path to the directory containing skin element files (images, settings.json, etc.). #### Remarks This method is useful during skin development and testing, allowing skin elements to be modified without repackaging into a ZIP archive. The directory should contain:
  • Settings.json - Required file containing skin metadata and colors
  • Element image files - .svg or .png files named according to element type and state
  • XAML files - Optional .xaml files for WPF-specific templates (Windows only)
All files in the directory are processed; unrecognized files are ignored. On load failure, the error is logged to debug output but does not throw an exception. #### Exceptions Parameters: - (DirectoryNotFoundException): Thrown if the specified directory does not exist. - (UnauthorizedAccessException): Thrown if the directory cannot be accessed. ### SkinNames() Gets an array of all loaded skin names for display in UI selection lists. ```csharp public static string[] SkinNames() ``` #### Returns Parameters: - (string [ ]): An array of skin display names in the order they were loaded. #### Remarks This method is typically used to populate combo boxes, dropdown menus, or other UI selection controls that allow users to choose between available skins. The returned names correspond to the "Name" field defined in each skin's Settings.json file. ### Skins() Gets the complete list of loaded skin objects. ```csharp public static List Skins() ``` #### Returns Parameters: - (List < Skin >): A list containing all loaded instances. #### Remarks This method provides direct access to all skin objects for advanced scenarios where skin properties need to be examined or enumerated. For simple skin selection by name, use instead. The returned list is the internal collection; modifications to the list will affect the skin manager. --- # Namespace VisioForge.Core.UI.Skins Link: api/VisioForge.Core.UI.Skins.html # Namespace VisioForge.Core.UI.Skins # Namespace VisioForge.Core.UI.Skins ### Classes Parameters: - (): Represents a complete skin theme for the UI, containing styling information for various UI elements. Implements the interface. - (): Provides event data for skin-related UI actions, allowing event handlers to identify the UI element involved and control event propagation. - (): Contains visual state data for a single UI element within a skin, supporting multiple states (base, hover, pressed, disabled). - (): Manages the loading, storage, and retrieval of UI skins from various sources including embedded resources, files, and folders. ### Interfaces Parameters: - (): Defines the contract for UI skin implementations that provide theming and styling capabilities. Implementations of this interface supply visual assets and styling data for media player and capture control UI elements. ### Enums Parameters: - (): Defines the visual states that a skinned UI element can be in, determining which image or style variation to display. - (): Identifies the types of UI elements that can be skinned in the media player and capture controls. --- # Class GlobalStaticResources Link: api/VisioForge.Core.UI.Uno.GlobalStaticResources.html # Class GlobalStaticResources # Class GlobalStaticResources **Namespace**: VisioForge.Core.UI.Uno **Assembly**: VisioForge.Core.UI.Uno.dll Contains all the static resources defined for the application ```csharp public sealed class GlobalStaticResources ``` #### Inheritance #### Inherited Members ## Methods ### Initialize() ```csharp public static void Initialize() ``` ### RegisterDefaultStyles() ```csharp public static void RegisterDefaultStyles() ``` ### RegisterResourceDictionariesBySource() ```csharp public static void RegisterResourceDictionariesBySource() ``` --- # Class VideoView Link: api/VisioForge.Core.UI.Uno.VideoView.html # Class VideoView # Class VideoView **Namespace**: VisioForge.Core.UI.Uno **Assembly**: VisioForge.Core.UI.Uno.dll A cross-platform video view control for Uno Platform that provides hardware-accelerated video rendering. ```csharp public sealed class VideoView : Grid, IAnimationObject, IVisualElement, IVisualElement2, IDependencyObjectStoreProvider, IWeakReferenceProvider, IEnumerable, IDataContextProvider, DependencyObject, ILayoutConstraints, IVideoView, IDisposable, INotifyPropertyChanged ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This control serves as a unified video rendering surface across all Uno Platform targets: - Windows: Native WinUI 3 rendering with DirectX - Android: TextureView-based rendering with hardware acceleration - iOS: Metal-based rendering via native UIView - macCatalyst: Metal-based rendering optimized for macOS - WebAssembly: HTML5 canvas or video element rendering - Skia: SkiaSharp-based software or hardware rendering (Linux, macOS, etc.) The control integrates with VisioForge media engines through the interface, providing consistent video playback APIs across all platforms. It handles platform-specific initialization through partial methods that are implemented in platform-specific files. Key features: - Automatic DPI scaling on Windows - Mouse/pointer event handling (except on Android and iOS) - Minimum size enforcement for reliable rendering - Platform-specific optimizations via partial methods - Thread-safe UI updates via DispatcherQueue ## Constructors ### VideoView() Initializes a new instance of the class. ```csharp public VideoView() ``` #### Remarks The constructor performs the following initialization: - Sets black background for standard video display appearance - Subscribes to lifecycle events (Loaded, Unloaded, SizeChanged) - Subscribes to pointer events on supported platforms (not Android/iOS) - Ensures DispatcherQueue is available for thread-safe operations - Sets minimum size constraints to ensure proper rendering Platform-specific initialization is performed when the control is added to the visual tree via the Loaded event, which calls the partial method OnLoadedPlatform(). ## Methods ### CallInvoke(Delegate, params object[]) Executes a delegate on the UI thread of the control. ```csharp public void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The delegate to execute. - args (object [ ]): The arguments to pass to the delegate. ### CallRefresh() Forces the view to redraw or refresh its content. ```csharp public void CallRefresh() ``` ### ClearUI() Clears the user interface, removing any overlays or graphics. ```csharp public void ClearUI() ``` ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` #### Remarks This method performs comprehensive cleanup: - Unsubscribes from all lifecycle events (Loaded, Unloaded, SizeChanged) - Unsubscribes from pointer events on supported platforms - On Windows: Detaches from parent media engine and unsubscribes from its events The method is safe to call multiple times. After disposal, the control should not be used. ### ~VideoView() Finalizer. ```csharp protected ~VideoView() ``` ### GetBackgroundColor() Gets the background color of the video view. ```csharp public SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): The background color as an . #### Remarks This method safely accesses the Background property from any thread by marshalling to the UI thread if necessary. If the DispatcherQueue is available and the call is not from the UI thread, the method synchronously waits for the result. ### GetHandle() Gets the native window handle of the underlying UI control. ```csharp public nint GetHandle() ``` #### Returns Parameters: - (nint): An representing the window handle. ### GetInvokeRequired() Gets a value indicating whether the caller must use an invoke method when making calls to the control. ```csharp public bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): true if the call must be invoked; otherwise, false. ### GetIsHandleCreated() Gets a value indicating whether the underlying UI control's handle has been created. ```csharp public bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): true if the handle is created; otherwise, false. ### GetSize() Gets the current size of the video view. ```csharp public Size GetSize() ``` #### Returns Parameters: - (Size): The size as a structure. #### Remarks This method returns the control's size with platform-specific adjustments: - Uses ActualWidth/ActualHeight if available, falls back to Width/Height - On Windows: Applies DPI scaling to convert from logical pixels to device pixels - On other platforms: Returns logical pixels directly The returned size is always at least 1x1 pixels and is rounded to integers. If DPI information cannot be retrieved on Windows, a scale of 1.0 (96 DPI) is assumed. ### GetUIEngine() Gets the underlying UI engine being used by the view. ```csharp public VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): The used for rendering. ### InvokeStart() Signals the view that the engine has started. ```csharp public void InvokeStart() ``` #### Remarks This method prepares the control for video rendering: - Sets control visibility to Visible - Calls the platform-specific start hook (OnInvokeStartPlatform) The operation is performed on the UI thread to ensure thread safety. Platform-specific implementations handle additional initialization via the OnInvokeStartPlatform partial method. ### InvokeStartComplete() Signals the view that the engine has completed its start sequence. ```csharp public void InvokeStartComplete() ``` ### InvokeStop() Signals the view that the engine has stopped. ```csharp public void InvokeStop() ``` #### Remarks This method performs cleanup when video playback stops: - Keeps the control visible (unlike some platforms that hide it) - Forces a layout update to ensure proper display - Calls the platform-specific stop hook (OnInvokeStopPlatform) The operation is performed on the UI thread to ensure thread safety. Any exceptions during layout update are caught and logged to debug output. ### InvokeVideoRendererUpdate() Triggers an update of the video renderer. ```csharp public void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears all messages from the log dialog. ```csharp public void LogDialogClear() ``` ### LogDialogClose() Closes the log dialog if it is open. ```csharp public void LogDialogClose() ``` ### LogDialogError(string) Displays an error message in a dialog box. ```csharp public void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The error message to display. ### PushMouseButtonDown(int, int, MouseButton) Pushes a mouse button down event to the control. ```csharp public void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. - button (MouseButton): The mouse button that was pressed. ### PushMouseButtonUp(int, int, MouseButton) Pushes a mouse button up event to the control. ```csharp public void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. - button (MouseButton): The mouse button that was released. ### PushMouseMove(int, int) Pushes a mouse move event to the control for processing. ```csharp public void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The x-coordinate of the mouse. - y (int): The y-coordinate of the mouse. ### ResizeRoundTo(int) Resizes the video view, rounding the dimensions to a specified value. ```csharp public void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The value to round the dimensions to (e.g., 16). ### SetHandle(nint) Sets the native window handle. Used for embedding the video in a specific control. ```csharp public void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The window handle. ### ShowMessage(string) Shows a message box to the user. ```csharp public MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message to display. #### Returns Parameters: - (MessageBoxResult): A indicating which button the user clicked. ### ShowMessageEx(string, string, MessageBoxDialogButtons) Displays a message box with custom caption and buttons. ```csharp public MessageBoxResult ShowMessageEx(string message, string caption, MessageBoxDialogButtons buttons) ``` #### Parameters Parameters: - message (string): The message to display. - caption (string): The caption of the message box. - buttons (MessageBoxDialogButtons): The buttons to display in the message box. #### Returns Parameters: - (MessageBoxResult): The result of the message box. ### OnMouseButtonDown Occurs when a mouse button is pressed down over the control. ```csharp public event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when a mouse button is released over the control. ```csharp public event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when the mouse pointer is moved over the control. ```csharp public event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): ### PropertyChanged Occurs when a property value changes. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): --- # Namespace VisioForge.Core.UI.Uno Link: api/VisioForge.Core.UI.Uno.html # Namespace VisioForge.Core.UI.Uno # Namespace VisioForge.Core.UI.Uno ### Classes Parameters: - (): Contains all the static resources defined for the application - (): A cross-platform video view control for Uno Platform that provides hardware-accelerated video rendering. --- # Class VideoView Link: api/VisioForge.Core.UI.WinUI.VideoView.html # Class VideoView # Class VideoView **Namespace**: VisioForge.Core.UI.WinUI **Assembly**: VisioForge.Core.UI.WinUI.dll Provides a high-performance video rendering control for WinUI 3 applications using Win2D CanvasControl. ```csharp [WinRTRuntimeClassName("Windows.Foundation.IClosable")] [WinRTExposedType(typeof(VisioForge_Core_UI_WinUI_VideoViewWinRTTypeDetails))] public class VideoView : IDisposable, INotifyPropertyChanged, IVideoView, IVideoViewPushFrame ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This control renders video frames using Microsoft's Win2D library with hardware-accelerated DirectX rendering. It provides optimal performance for Windows applications through native WinUI 3 integration. Key features: - DirectX-accelerated rendering via Win2D CanvasControl - Automatic aspect ratio preservation with letterboxing - Frame queue management to handle varying frame rates - Support for RGBA and BGRA pixel formats - Automatic colorspace conversion for RGB/BGR formats - Mouse/pointer and keyboard event handling - Thread-safe frame delivery via DispatcherQueue The control implements for integration with VisioForge media engines and for receiving video frames. Rendering pipeline: 1. Frames arrive via (typically on background thread) 2. Frames are queued (max 5 frames to prevent memory buildup) 3. Canvas invalidation triggers on UI thread 4. Frame is dequeued, converted to CanvasBitmap, and drawn with aspect ratio preservation 5. Frame resources are freed after rendering ## Constructors ### VideoView(CanvasControl) Initializes a new instance of the class. ```csharp public VideoView(CanvasControl canvas) ``` #### Parameters Parameters: - canvas (CanvasControl): The used for hardware-accelerated rendering. Must not be null. #### Remarks The constructor attaches a draw handler to the provided CanvasControl for rendering video frames. The canvas should be properly initialized and added to the visual tree before video playback begins. The control uses the CanvasControl's DirectX rendering surface for optimal performance with hardware acceleration. Frame rendering occurs during the Draw event with automatic invalidation when new frames arrive. #### Exceptions Parameters: - (ArgumentNullException): Thrown when canvas is null. ## Properties ### StatusOverlay Gets or sets the status overlay displayed during the connection phase before video streaming begins. ```csharp public IStatusOverlay StatusOverlay { get; set; } ``` #### Property Value Parameters: - (IStatusOverlay): #### Remarks The status overlay is particularly useful for IP camera and streaming scenarios where there may be a delay between starting playback and receiving the first video frame. It provides visual feedback to users during the connection establishment phase. The overlay is automatically shown after calling and hidden once video frames begin arriving or if an error occurs. Use as a convenient implementation for text-based overlays. ### Video_Renderer Gets the video renderer settings used for displaying video. ```csharp public VideoRendererSettings Video_Renderer { get; } ``` #### Property Value Parameters: - (VideoRendererSettings): #### Remarks This property provides read-only access to the video renderer configuration from the attached media engine. The settings control aspects like stretch mode, rotation, and rendering technology. The property returns null in the following cases: - No parent media engine is attached via - The parent's Video_Renderer property is null Changes to renderer settings should be made through the parent media engine, not directly. ## Methods ### Attach(IMPVCVECore) Attaches a media engine core to this video view for video frame delivery. ```csharp public void Attach(IMPVCVECore parent) ``` #### Parameters Parameters: - parent (IMPVCVECore): The instance to attach. Must not be null. #### Remarks This method establishes the connection between the video view and the media engine: - Stores the parent reference - Subscribes to OnVideoFrameBufferWPF event for frame delivery Once attached, the media engine will deliver video frames to this control via the OnVideoFrameBufferWPF event, which internally calls . Call before disposing the parent or switching to a different engine. #### Exceptions Parameters: - (ArgumentNullException): Thrown when parent is null. ### CallInvoke(Delegate, params object[]) Calls the invoke. ```csharp public void CallInvoke(Delegate method, params object[] args) ``` #### Parameters Parameters: - method (Delegate): The method. - args (object [ ]): The arguments. ### CallRefresh() Calls the refresh. ```csharp public void CallRefresh() ``` ### ClearUI() Clears the UI. ```csharp public void ClearUI() ``` ### Detach(IMPVCVECore) Detaches the currently attached media engine from this video view. ```csharp public void Detach(IMPVCVECore parent) ``` #### Parameters Parameters: - parent (IMPVCVECore): The instance to detach. Should match the currently attached parent. #### Remarks This method cleans up the connection to the media engine: - Unsubscribes from OnVideoFrameBufferWPF event - Clears the parent reference After detaching, the control will no longer receive frames from the media engine. It is safe to call this method when no parent is attached. The parent parameter should match the instance passed to , though the method will proceed with cleanup regardless. ### Dispose() Dispose. ```csharp public void Dispose() ``` ### Dispose(bool) Dispose. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): Disposing parameter. ### ~VideoView() Finalizes an instance of the class. ```csharp protected ~VideoView() ``` ### GetBackgroundColor() Gets the background color of the video view. ```csharp public SKColor GetBackgroundColor() ``` #### Returns Parameters: - (SKColor): Always returns for WinUI implementation. #### Remarks The WinUI video view always uses a black background, which is the standard appearance for video playback controls. Black fills any areas not covered by video content (letterboxing/pillarboxing) and is displayed when no video is playing. The commented-out implementation in the code suggests future support for reading the actual background brush, but the current implementation always returns black for consistency and simplicity. ### GetHandle() Gets window handle. ```csharp public nint GetHandle() ``` #### Returns Parameters: - (nint): Returns . ### GetInvokeRequired() Gets the invoke required. ```csharp public bool GetInvokeRequired() ``` #### Returns Parameters: - (bool): true if the invoke is required, false otherwise. ### GetIsHandleCreated() Gets the is handle created. ```csharp public bool GetIsHandleCreated() ``` #### Returns Parameters: - (bool): true if the handle is created, false otherwise. ### GetSize() Gets the actual size of the canvas control in pixels. ```csharp public Size GetSize() ``` #### Returns Parameters: - (Size): A structure containing the width and height of the canvas in pixels. #### Remarks This method returns the canvas's ActualWidth and ActualHeight, which represent the control's rendered size after layout. These values are used by the media engine to determine appropriate video scaling and aspect ratio calculations. The size is retrieved from the CanvasControl's ActualWidth and ActualHeight properties, which reflect the control's size after XAML layout completes. ### GetUIEngine() Gets the UI engine type used by this video view. ```csharp public VideoViewUIEngine GetUIEngine() ``` #### Returns Parameters: - (VideoViewUIEngine): Always returns for this WinUI 3 implementation. #### Remarks This method identifies the rendering technology used by the video view. For WinUI VideoView, it always returns WinUI to indicate Win2D/CanvasControl-based rendering. This information is used by media engines to optimize frame delivery and select appropriate rendering paths. ### InvokeStart() Initiates video playback and prepares the rendering pipeline. ```csharp public void InvokeStart() ``` #### Remarks This method is called internally when video playback starts. It performs the following: - Resets the frame stopped flag to allow rendering - Clears any stale frames from previous playback sessions - Attaches UI event handlers for pointer, mouse, and keyboard interaction The frame queue is cleared to ensure no old frames from a previous session are displayed. This method must be called before video frames can be pushed and rendered. ### InvokeStartComplete() Invokes Start/Play. ```csharp public void InvokeStartComplete() ``` ### InvokeStop() Stops video playback and releases all rendering resources. ```csharp public void InvokeStop() ``` #### Remarks This method performs comprehensive cleanup of the rendering pipeline: - Sets the frame stopped flag to prevent further rendering - Clears the frame queue and frees all pending frames - Releases temporary frame buffers used for colorspace conversion - Frees native memory allocated for RGB/BGR to RGBA/BGRA conversion - Resets video dimensions - Forces canvas to redraw (clearing to black) After calling this method, the canvas will display a black screen and the control is ready to start playback again via . All memory cleanup is performed immediately to prevent resource leaks. ### InvokeVideoRendererUpdate() Updates the screen settings. ```csharp public void InvokeVideoRendererUpdate() ``` ### LogDialogClear() Clears logs dialog. ```csharp public void LogDialogClear() ``` ### LogDialogClose() Closes logs dialog. ```csharp public void LogDialogClose() ``` ### LogDialogError(string) Logs the error in dialog. ```csharp public void LogDialogError(string msg) ``` #### Parameters Parameters: - msg (string): The message. ### OnPropertyChanged(string) OnPropertyChanged API. ```csharp protected virtual void OnPropertyChanged(string propertyName = null) ``` #### Parameters Parameters: - propertyName (string): Property name. ### PictureBoxCreate(int, int) Create the PictureBox. ```csharp public void PictureBoxCreate(int width, int height) ``` #### Parameters Parameters: - width (int): The width. - height (int): The height. ### PictureBoxDestroy() Destroys the PictureBox. ```csharp public void PictureBoxDestroy() ``` ### PictureBoxExists() Is the PictureBox exists. ```csharp public bool PictureBoxExists() ``` #### Returns Parameters: - (bool): true if exists, false otherwise. ### PictureBoxGetImage() Gets the PictureBox image. ```csharp public Bitmap PictureBoxGetImage() ``` #### Returns Parameters: - (Bitmap): Bitmap. ### PictureBoxSetImage(Bitmap) Set the image on PictureBox. ```csharp public void PictureBoxSetImage(Bitmap image) ``` #### Parameters Parameters: - image (Bitmap): The image. ### PushFrame(VideoFrame) Pushes a video frame to the rendering queue for display. ```csharp public void PushFrame(VideoFrame frame) ``` #### Parameters Parameters: - frame (VideoFrame): The to render. The frame is cloned before queueing. #### Remarks This method handles incoming video frames from the media engine: - Checks if rendering is stopped and ignores frames if so - Updates cached video dimensions from the frame - Manages queue size (max 5 frames) to prevent memory buildup - Clones the frame before queueing to prevent external modifications - Triggers canvas invalidation to render the frame If the queue is full (>5 frames), the oldest frame is dequeued and freed before proceeding. This prevents memory issues but may result in frame drops during high frame rate scenarios. The frame is processed asynchronously - it's queued and rendered on the next canvas draw cycle. The invalidation is performed via DispatcherQueue to ensure thread-safe UI updates. ### PushFrame(VideoFrameX) Pushes a video frame to the rendering queue for display. ```csharp public void PushFrame(VideoFrameX frame) ``` #### Parameters Parameters: - frame (VideoFrameX): The to render. It will be converted to internally. ### PushMouseButtonDown(int, int, MouseButton) Pushes the mouse button down. ```csharp public void PushMouseButtonDown(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. - button (MouseButton): The button. ### PushMouseButtonUp(int, int, MouseButton) Pushes the mouse button up. ```csharp public void PushMouseButtonUp(int x, int y, MouseButton button) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. - button (MouseButton): The button. ### PushMouseMove(int, int) Pushes the mouse move. ```csharp public void PushMouseMove(int x, int y) ``` #### Parameters Parameters: - x (int): The x. - y (int): The y. ### ResizeRoundTo(int) Resizes the VideoView round to value. ```csharp public void ResizeRoundTo(int round) ``` #### Parameters Parameters: - round (int): The value. ### SetHandle(nint) Sets the handle. Not implemented. ```csharp public void SetHandle(nint handle) ``` #### Parameters Parameters: - handle (nint): The handle. ### ShowMessage(string) Shows the message. ```csharp public MessageBoxResult ShowMessage(string message) ``` #### Parameters Parameters: - message (string): The message. #### Returns Parameters: - (MessageBoxResult): MessageBoxResult. ### ShowMessageEx(string, string, MessageBoxDialogButtons) Shows the message. ```csharp public MessageBoxResult ShowMessageEx(string message, string caption, MessageBoxDialogButtons buttons) ``` #### Parameters Parameters: - message (string): The message. - caption (string): The caption. - buttons (MessageBoxDialogButtons): The buttons. #### Returns Parameters: - (MessageBoxResult): MessageBoxResult. ### OnMouseButtonDown Occurs when mouse button down. ```csharp public event EventHandler OnMouseButtonDown ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseButtonUp Occurs when mouse button up. ```csharp public event EventHandler OnMouseButtonUp ``` #### Event Type Parameters: - (EventHandler < MouseButtonEventArgs >): ### OnMouseMoved Occurs when mouse moved. ```csharp public event EventHandler OnMouseMoved ``` #### Event Type Parameters: - (EventHandler < MouseMoveEventArgs >): ### PropertyChanged Property changed event. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): --- # Namespace VisioForge.Core.UI.WinUI Link: api/VisioForge.Core.UI.WinUI.html # Namespace VisioForge.Core.UI.WinUI # Namespace VisioForge.Core.UI.WinUI ### Classes Parameters: - (): Provides a high-performance video rendering control for WinUI 3 applications using Win2D CanvasControl. --- # Namespace VisioForge.Core.UI Link: api/VisioForge.Core.UI.html # Namespace VisioForge.Core.UI # Namespace VisioForge.Core.UI ### Namespaces Parameters: - (): - (): - (): - (): - (): ### Classes Parameters: - (): A headless video view implementation that provides frame callbacks without visual rendering. This class serves as a callback-based video sink that receives video frames and forwards them to event handlers for custom processing, analysis, or forwarding to other systems, without performing any UI rendering operations. It's ideal for scenarios requiring frame access without a visual display component, such as video analytics, streaming to external systems, or custom image processing pipelines. Key features: - Receives video frames in configurable pixel formats (RGB, RGBA, NV12, etc.) - Implements for standard video view integration - Implements for receiving frame data - Provides OnFrame event for frame processing subscribers - Supports both VideoFrame and VideoFrameX frame formats - No-op implementations of UI-specific methods (rendering, mouse events, etc.) - Platform-independent operation without UI dependencies - Minimal overhead for maximum processing performance Common use cases: - Video analytics and computer vision processing without display - Frame extraction and image capture operations - Video streaming to custom network protocols - Integration with third-party processing libraries - Headless video recording and transcoding scenarios - Multi-stream processing without rendering overhead Threading considerations: - Frame callbacks occur on the media pipeline thread - Subscribers should handle frames quickly or queue for background processing - No UI thread synchronization overhead Performance characteristics: - Minimal memory allocation per frame - No rendering overhead for maximum throughput - Configurable pixel format to match processing requirements - Zero-copy frame delivery when possible - (): Help links. - (): A headless video view implementation that provides JPEG-encoded frame callbacks without visual rendering. This class serves as a specialized callback-based video sink that receives video frames pre-encoded as JPEG images and forwards them to event handlers. Unlike which delivers raw pixel data, JPEGCallbackVideoView provides ready-to-use JPEG byte arrays, eliminating the need for frame encoding in subscriber code. Ideal for scenarios requiring JPEG images without UI rendering, such as motion JPEG streaming, snapshot systems, or web-based video delivery. Key features: - Receives pre-encoded JPEG frame data as byte arrays - Implements for standard video view integration - Provides OnJPEGFrame event for JPEG data processing - No-op implementations of UI-specific methods (rendering, mouse events, etc.) - Platform-independent operation without UI dependencies - Zero encoding overhead - frames arrive already JPEG-compressed - Memory-efficient delivery of compressed frame data Common use cases: - Motion JPEG (MJPEG) streaming servers - Snapshot capture and storage systems - Web-based video monitoring dashboards - Network camera integration with JPEG output - Thumbnail generation for video content - Low-bandwidth video transmission scenarios - REST API video frame endpoints Threading considerations: - Frame callbacks occur on the media pipeline thread - JPEG data is ready for immediate network transmission or file storage - Subscribers should handle data quickly or queue for background processing - No UI thread synchronization overhead Performance characteristics: - Minimal memory allocation per frame - No rendering or encoding overhead - Compressed data reduces memory and network bandwidth requirements - JPEG quality and compression ratio configured at source level --- # Class VProcessor Link: api/VisioForge.Core.VAP.VProcessor.html # Class VProcessor # Class VProcessor **Namespace**: VisioForge.Core.VAP **Assembly**: VisioForge.Core.dll Provides video processing capabilities using the VisioForge Video Analysis Platform (VAP). ```csharp public class VProcessor : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

The VProcessor class wraps native video processing functionality and supports: - Real-time video frame processing with configurable filters - Hardware acceleration support - Cross-platform operation (Windows, macOS, Linux, Android) - Dynamic filter parameter updates

This class implements and must be properly disposed to release native resources.

## Constructors ### VProcessor(BaseContext) Initializes a new instance of the class. ```csharp public VProcessor(BaseContext context) ``` #### Parameters Parameters: - context (BaseContext): The base context for logging and error reporting. Can be null if logging is not required. ## Methods ### Dispose(bool) Releases the unmanaged and optionally the managed resources used by the class. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): If set to true, releases both managed and unmanaged resources; if false, releases only unmanaged resources. #### Remarks This method is called by both the method and the finalizer. When called from Dispose (disposing = true), it releases both managed and unmanaged resources. When called from the finalizer (disposing = false), it releases only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` #### Remarks

This method destroys the native video processor instance and releases all associated resources. After calling Dispose, the processor instance cannot be reused.

This method implements the pattern and should be called when the processor is no longer needed. Consider using a 'using' statement to ensure proper disposal.

### ~VProcessor() Finalizes an instance of the class and releases unmanaged resources. ```csharp protected ~VProcessor() ``` #### Remarks This destructor is called by the garbage collector during finalization. It ensures that native resources are released even if Dispose is not called explicitly. For better performance, always call Dispose explicitly when done with the processor. ### Init(int, int, int, string, string, bool) Initializes the video processor with the specified parameters. ```csharp public bool Init(int width, int height, int stride, string filter, string parameters, bool useHardware) ``` #### Parameters Parameters: - width (int): The width of the video frame in pixels. - height (int): The height of the video frame in pixels. - stride (int): The stride (row pitch) of the video frame in bytes. - filter (string): The name of the filter to be applied to video frames. - parameters (string): The configuration parameters for the specified filter. - useHardware (bool): If set to true, enables hardware acceleration for video processing when available. #### Returns Parameters: - (bool): true if initialization is successful; false otherwise. #### Remarks

This method must be called before processing any frames. It creates the native processor instance, configures error logging, and initializes the video processing pipeline with the specified parameters.

If initialization fails, the processor automatically cleans up any allocated resources.

#### Exceptions Parameters: - (InvalidOperationException): Thrown if the native video processor instance cannot be created. ### ProcessFrame(int, int, int, nint) Processes a video frame with the configured filter. ```csharp public bool ProcessFrame(int width, int height, int stride, nint data) ``` #### Parameters Parameters: - width (int): The width of the video frame in pixels. - height (int): The height of the video frame in pixels. - stride (int): The stride (row pitch) of the video frame in bytes. - data (nint): A pointer to the video frame data buffer. The frame data is modified in-place. #### Returns Parameters: - (bool): true if the frame is processed successfully; false otherwise. #### Remarks

If the frame dimensions differ from the initialized dimensions, the processor automatically reinitializes with the new dimensions using the same filter and parameters.

The frame data is expected to be in RGB format and is modified in-place.

#### Exceptions Parameters: - (ObjectDisposedException): Thrown if the processor has been disposed. ### ProcessFrame(VideoFrameX) Processes a video frame using a object. ```csharp public bool ProcessFrame(VideoFrameX videoFrame) ``` #### Parameters Parameters: - videoFrame (VideoFrameX): The video frame object containing the frame data and metadata. #### Returns Parameters: - (bool): true if the frame is processed successfully; false otherwise. #### Remarks This is a convenience overload that extracts width, height, stride, and data pointer from the object and calls the main ProcessFrame method. ### UpdateFilterParameters(string, string) Updates filter parameters dynamically without reinitializing the processor. ```csharp public bool UpdateFilterParameters(string name, string value) ``` #### Parameters Parameters: - name (string): The name of the filter parameter to update. - value (string): The new value for the specified parameter. #### Returns Parameters: - (bool): true if the parameter was successfully updated; false otherwise. #### Remarks This method allows real-time adjustment of filter parameters during video processing without interrupting the processing pipeline. --- # Namespace VisioForge.Core.VAP Link: api/VisioForge.Core.VAP.html # Namespace VisioForge.Core.VAP # Namespace VisioForge.Core.VAP ### Classes Parameters: - (): Provides video processing capabilities using the VisioForge Video Analysis Platform (VAP). --- # Class VideoCaptureCoreX Link: api/VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.html # Class VideoCaptureCoreX # Class VideoCaptureCoreX **Namespace**: VisioForge.Core.VideoCaptureX **Assembly**: VisioForge.Core.dll VideoCaptureX audio effects processing implementation. This partial class provides comprehensive audio effects management for captured audio including real-time equalizers, filters, dynamic range control, noise reduction, and audio enhancement during video capture operations. Supports both live preview and recording with audio effects applied. Uses a cross-platform media processing architecture to handle audio effects in real-time. ```csharp public class VideoCaptureCoreX : IDisposable, IAsyncDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks License management for VideoCaptureX includes: - License key validation and secure storage for video capture operations - User credential association (username, email) for license tracking and support - Runtime license verification to enforce feature restrictions by tier - Compliance with VisioForge licensing requirements for commercial video capture usage - Integration with registry-based license storage on Windows platforms for persistence - Trial mode restrictions and watermark removal upon valid license activation A valid license is required for production use of VideoCaptureX to remove trial limitations and access advanced features such as network streaming, hardware encoding, and professional outputs. ## Constructors ### VideoCaptureCoreX() Initializes a new instance of the class with default settings. Configures logging, initializes the cross-platform media framework, sets up platform-specific redistributables, and prepares core capture components. ```csharp public VideoCaptureCoreX() ``` ### VideoCaptureCoreX(IVideoView) Initializes a new instance of the class with a specified video view for live preview. The video view is automatically added to the preview collection for real-time capture display. Configures logging, initializes the cross-platform media framework, sets up platform-specific redistributables, and prepares core capture components. ```csharp public VideoCaptureCoreX(IVideoView videoView) ``` #### Parameters Parameters: - videoView (IVideoView): The video view control for displaying live capture preview. Pass null to capture without preview. ## Properties ### Audio_OutputDevice Gets or sets the audio output device settings for audio playback. Configure this property to specify which audio device should be used for playback. ```csharp public IAudioRendererSettings Audio_OutputDevice { get; set; } ``` #### Property Value Parameters: - (IAudioRendererSettings): ### Audio_OutputDevice_Mute Gets or sets a value indicating whether the audio output device is muted. When true, audio playback is muted regardless of the volume setting. ```csharp public bool Audio_OutputDevice_Mute { get; set; } ``` #### Property Value Parameters: - (bool): ### Audio_OutputDevice_Volume Gets or sets the audio output device volume level. Valid range is 0.0 (mute) to 1.0 (maximum volume). ```csharp public double Audio_OutputDevice_Volume { get; set; } ``` #### Property Value Parameters: - (double): ### Audio_Play Gets or sets a value indicating whether audio playback is enabled during capture. When true, captured audio will be played through the configured audio output device. ```csharp public bool Audio_Play { get; set; } ``` #### Property Value Parameters: - (bool): ### Audio_Record Gets or sets a value indicating whether audio recording is enabled for output files. When true, audio will be included in recorded files and streams. ```csharp public bool Audio_Record { get; set; } ``` #### Property Value Parameters: - (bool): ### Audio_Source Gets or sets the audio source configuration for capture. This can be a microphone, system audio, or other audio input device. ```csharp public IVideoCaptureBaseAudioSourceSettings Audio_Source { get; set; } ``` #### Property Value Parameters: - (IVideoCaptureBaseAudioSourceSettings): ### Audio_VU_Meter_Enabled Gets or sets a value indicating whether audio VU meter calculation is enabled. When true, OnAudioVUMeter events will be raised with audio level data. ```csharp public bool Audio_VU_Meter_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Barcode_Reader_Enabled Gets or sets a value indicating whether barcode and QR code detection is enabled. When true, the video stream will be analyzed for barcodes and OnBarcodeDetected events will be raised. ```csharp public bool Barcode_Reader_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Debug_Dir Gets or sets the directory where debug logs and pipeline graphs will be saved. Changing this property reconfigures the logger to use the new directory. ```csharp public string Debug_Dir { get; set; } ``` #### Property Value Parameters: - (string): ### Debug_DisableMessageDialogs Gets or sets a value indicating whether error message dialogs should be suppressed. When true, errors will not show dialog boxes even if OnError event is not handled. ```csharp public bool Debug_DisableMessageDialogs { get; set; } ``` #### Property Value Parameters: - (bool): ### Debug_Mode Gets or sets a value indicating whether debug mode is enabled. When true, detailed logging, pipeline graphs, and diagnostic information will be generated. ```csharp public bool Debug_Mode { get; set; } ``` #### Property Value Parameters: - (bool): ### Debug_Telemetry Gets or sets a value indicating whether anonymous telemetry is enabled during debugging. Telemetry helps improve the SDK by collecting anonymous usage and error data. Only active when debugging in Visual Studio. ```csharp public bool Debug_Telemetry { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Only anonymous data will be sent. No personal or sensitive information is collected. ### Face_Detector Gets or sets the face detector implementation for facial recognition in video frames. Configure this property with a face detector instance to enable face detection. ```csharp public IFaceDetector Face_Detector { get; set; } ``` #### Property Value Parameters: - (IFaceDetector): ### Fonts Gets a collection of available system fonts that can be used for text overlays. The collection is populated from the system's installed fonts. ```csharp public ObservableCollection Fonts { get; } ``` #### Property Value Parameters: - (ObservableCollection < FontDescriptionX >): ### SDK_BuildDate Gets the build date of the current SDK assembly. Useful for version tracking and support purposes. ```csharp public static DateTime SDK_BuildDate { get; } ``` #### Property Value Parameters: - (DateTime): ### SDK_Version Gets the version number of the current SDK assembly. Use this to verify SDK compatibility and for support requests. ```csharp public static Version SDK_Version { get; } ``` #### Property Value Parameters: - (Version): ### Snapshot_Grabber_Enabled Gets or sets a value indicating whether the snapshot grabber is enabled. Must be set to true before calling Start/StartAsync to enable snapshot functionality. When enabled, allows capturing still images from the video stream. ```csharp public bool Snapshot_Grabber_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### State Gets or sets the current playback state of the video capture engine. Indicates whether capture is playing, paused, stopped, or in other states. ```csharp public PlaybackState State { get; set; } ``` #### Property Value Parameters: - (PlaybackState): ### Subtitles_Enabled Gets or sets a value indicating whether subtitle rendering is enabled. When true, subtitles from embedded streams or external files will be displayed. ```csharp public bool Subtitles_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Subtitles_ExternalFile Gets or sets the URI of an external subtitle file to load. Supports common subtitle formats like SRT, SSA, and WebVTT. ```csharp public Uri Subtitles_ExternalFile { get; set; } ``` #### Property Value Parameters: - (Uri): ### Subtitles_Settings Gets or sets the subtitle overlay settings including font, color, and position. Configure this property to customize how subtitles are displayed on the video. ```csharp public SubtitleOverlaySettings Subtitles_Settings { get; set; } ``` #### Property Value Parameters: - (SubtitleOverlaySettings): ### Video_Composition_Enabled Gets or sets a value indicating whether video composition features are enabled. When true, allows compositing multiple video sources or adding overlay elements. ```csharp public bool Video_Composition_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Video_Overlay_Enabled Gets or sets a value indicating whether the video overlay manager is enabled. Must be set to true before calling Start/StartAsync methods to enable overlay functionality. When enabled, allows adding text, image, and shape overlays to the video stream. ```csharp public bool Video_Overlay_Enabled { get; set; } ``` #### Property Value Parameters: - (bool): ### Video_Play Gets or sets a value indicating whether video preview/playback is enabled during capture. When true, captured video will be displayed in the configured video views. ```csharp public bool Video_Play { get; set; } ``` #### Property Value Parameters: - (bool): ### Video_Processors Gets the list of custom video processors that will be applied to each video frame. Add custom IVideoProcessor implementations to perform frame-by-frame video analysis or modification. ```csharp public List Video_Processors { get; } ``` #### Property Value Parameters: - (List < IVideoProcessor >): ### Video_Source Gets or sets the video source configuration for capture. This can be a camera device, screen capture, IP camera, or other video source types. ```csharp public IVideoCaptureBaseVideoSourceSettings Video_Source { get; set; } ``` #### Property Value Parameters: - (IVideoCaptureBaseVideoSourceSettings): ### Video_Views Gets the list of video view controls where captured video will be displayed. Add IVideoView implementations (UI controls) to enable video preview during capture. ```csharp public List Video_Views { get; } ``` #### Property Value Parameters: - (List < IVideoView >): ## Methods ### AudioOutputMuteSet(bool) Sets the mute state of the audio output renderer without changing the volume level. When muted, audio playback is silenced while preserving the current volume setting for when unmuted. ```csharp public void AudioOutputMuteSet(bool value) ``` #### Parameters Parameters: - value (bool): true to mute audio playback; false to unmute and restore audio at the current volume level. ### Audio_Effects_AddOrUpdate(BaseAudioEffect) Adds a new audio effect or updates an existing one in the audio processing chain by name. Effects are applied in real-time to the audio stream during capture. If an effect with the same name exists, it will be updated with the new settings. Otherwise, a new effect is added to the chain. ```csharp public void Audio_Effects_AddOrUpdate(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect to add or update in the processing pipeline. ### Audio_Effects_Clear() Removes all audio effects from the audio processing chain, restoring unprocessed audio. Use this to reset audio processing to default state without individual effect removal. ```csharp public void Audio_Effects_Clear() ``` ### Audio_Effects_Get(string) Gets an audio effect by its name identifier from the audio effects chain. Use this to retrieve effect instances for inspection or modification of effect parameters. ```csharp public BaseAudioEffect Audio_Effects_Get(string effectName) ``` #### Parameters Parameters: - effectName (string): The name of the effect to retrieve from the processing chain. #### Returns Parameters: - (BaseAudioEffect): The audio effect instance if found by name; otherwise, null if no effect with that name exists. ### Audio_Effects_Remove(BaseAudioEffect) Removes a specific audio effect from the audio processing chain by instance reference. The capture is temporarily paused during removal to ensure smooth operation and prevent audio glitches. After removal, capture automatically resumes. ```csharp public void Audio_Effects_Remove(BaseAudioEffect effect) ``` #### Parameters Parameters: - effect (BaseAudioEffect): The audio effect instance to remove from the processing chain. ### Audio_Effects_Remove(string) Removes an audio effect by its name identifier from the audio processing chain. The capture is temporarily paused during removal to ensure smooth operation and prevent audio glitches. After removal, capture automatically resumes. If no effect with the specified name exists, no action is taken. ```csharp public void Audio_Effects_Remove(string name) ``` #### Parameters Parameters: - name (string): The name of the audio effect to remove from the processing chain. ### Audio_OutputsAsync(AudioOutputDeviceAPI?) Asynchronously enumerates available audio output devices on the system for live audio monitoring. Includes speakers, headphones, HDMI audio, and other audio playback hardware. Can filter by specific audio API if multiple APIs are available on the platform. ```csharp public Task Audio_OutputsAsync(AudioOutputDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioOutputDeviceAPI ?): Optional: Specific audio API to enumerate devices from (DirectSound, WASAPI, CoreAudio, ALSA, etc.). Pass null to use the default system API. #### Returns Parameters: - (Task < AudioOutputDeviceInfo [ ] >): A task containing an array of for all available audio playback devices on the system. ### Audio_Source_GetInfo(out int, out int, out AudioFormatX) Gets detailed audio format information from the current audio source. Queries the audio source output pad for current audio capabilities including sample rate, channels, and format. ```csharp public bool Audio_Source_GetInfo(out int sampleRate, out int channels, out AudioFormatX format) ``` #### Parameters Parameters: - sampleRate (int): When this method returns, contains the audio sample rate in Hz, or 0 if unavailable. - channels (int): When this method returns, contains the number of audio channels, or 0 if unavailable. - format (AudioFormatX): When this method returns, contains the audio sample format, or if unavailable. #### Returns Parameters: - (bool): true if audio information was successfully retrieved; false if no audio source is active or information is unavailable. ### Audio_SourcesAsync(AudioCaptureDeviceAPI?) Asynchronously enumerates available audio capture devices on the system. Includes microphones, line-in devices, and other audio input hardware. ```csharp public Task Audio_SourcesAsync(AudioCaptureDeviceAPI? api = null) ``` #### Parameters Parameters: - api (AudioCaptureDeviceAPI ?): Optional: Specific audio API to enumerate devices from (DirectSound, WASAPI, etc.). Pass null to use default API. #### Returns Parameters: - (Task < AudioCaptureDeviceInfo [ ] >): A task containing an array of for all available audio input devices. ### Debug_SavePipeline(string) Saves the current media processing pipeline graph to a DOT file for debugging visualization. The DOT file can be converted to an image using Graphviz tools to inspect the pipeline structure. Only functional when is enabled. ```csharp public void Debug_SavePipeline(string name) ``` #### Parameters Parameters: - name (string): The name for the output DOT file (without extension). ### Dispose(bool) Releases unmanaged and optionally managed resources. Stops capture if active, closes pipeline resources, and disposes core components. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Call this method when done using the instance to ensure proper cleanup. ```csharp public void Dispose() ``` ### DisposeAsync() Asynchronously releases resources used by the video capture engine. Implements the IAsyncDisposable pattern for async cleanup operations. Stops capture if active and properly releases all async resources. ```csharp public ValueTask DisposeAsync() ``` #### Returns Parameters: - (ValueTask): A representing the asynchronous dispose operation. ### Duration() Gets the current capture duration since start. Returns the elapsed time of the current capture session. ```csharp public TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): The current capture duration, or if not capturing. ### DurationAsync() Asynchronously gets the current capture duration since start. Returns the elapsed time of the current capture session. ```csharp public Task DurationAsync() ``` #### Returns Parameters: - (Task < TimeSpan >): A task containing the current capture duration, or if not capturing. ### ~VideoCaptureCoreX() Finalizer for the class. Ensures resources are released if Dispose was not called explicitly. ```csharp protected ~VideoCaptureCoreX() ``` ### GetContext() Gets the current logging and media context. ```csharp public ContextX GetContext() ``` #### Returns Parameters: - (ContextX): The ContextX instance containing logger and media configuration. ### GetLogger() Gets the current Serilog logger instance for this capture context. ```csharp public ILogger GetLogger() ``` #### Returns Parameters: - (ILogger): The ILogger instance used for logging. ### GetMediaBlocksPipeline() Gets the underlying MediaBlocksPipeline instance used by this capture session. Provides low-level access to the internal media pipeline for advanced customization and debugging. ```csharp public MediaBlocksPipeline GetMediaBlocksPipeline() ``` #### Returns Parameters: - (MediaBlocksPipeline): The current instance, or null if no capture session is active. ### GetSourceMixerControl() Gets the video mixer control interface when using a VideoMixerSourceSettings as the video source. Allows dynamic control of video mixing parameters during capture. ```csharp public IVideoMixerControl GetSourceMixerControl() ``` #### Returns Parameters: - (IVideoMixerControl): The IVideoMixerControl interface if the source is a video mixer; otherwise, null. ### IsCapturePaused(int) Checks whether a specific output is currently paused. Use this to verify output state before attempting resume operations. ```csharp public bool IsCapturePaused(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to check from the outputs collection. #### Returns Parameters: - (bool): true if the output is in paused state; false if playing, stopped, or index is invalid. ### IsCaptureStarted(int) Checks whether a specific output is currently recording or streaming (in playing state). Use this to monitor output status before attempting to pause, resume, or stop operations. ```csharp public bool IsCaptureStarted(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to check from the outputs collection. #### Returns Parameters: - (bool): true if the output is actively capturing (in playing state); false if stopped, paused, or index is invalid. ### Outputs_Add(IVideoCaptureXBaseOutput, bool) Adds a new output configuration to the capture engine for recording or streaming to a destination. Multiple outputs can be added to simultaneously record or stream to different destinations with independent settings. Each output operates in a separate pipeline branch with its own encoding and processing configuration. ```csharp public void Outputs_Add(IVideoCaptureXBaseOutput output, bool autostart = true) ``` #### Parameters Parameters: - output (IVideoCaptureXBaseOutput): The output configuration defining the destination and encoding (file format, streaming destination, etc.). - autostart (bool): If set to true, the output will start automatically when capture begins; if false, use StartCapture to manually start the output later. ### Outputs_Clear() Removes all output configurations from the collection. All outputs must be stopped before clearing. Use this to reset output configuration between capture sessions. ```csharp public void Outputs_Clear() ``` ### Outputs_Count() Gets the total number of configured outputs in the collection. This includes both active and inactive outputs. ```csharp public int Outputs_Count() ``` #### Returns Parameters: - (int): The count of outputs configured for this capture session. ### Outputs_Get(int) Gets the output configuration at the specified index in the collection. Use this to inspect or modify output settings before starting capture. ```csharp public IVideoCaptureXBaseOutput Outputs_Get(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to retrieve from the collection. #### Returns Parameters: - (IVideoCaptureXBaseOutput): The output configuration at the specified index. ### Outputs_GetDuration(int) Gets the current recording or streaming duration for a specific output. Returns the time elapsed since the output started. For paused outputs, this returns the duration at the pause point. ```csharp public TimeSpan Outputs_GetDuration(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to query from the outputs collection. #### Returns Parameters: - (TimeSpan): The current recording/streaming duration as , or if unavailable, stopped, or index is invalid. ### Outputs_Remove(IVideoCaptureXBaseOutput) Removes the first occurrence of a specific output configuration from the collection. The output must be stopped before removal. If the output is not found, no action is taken. ```csharp public void Outputs_Remove(IVideoCaptureXBaseOutput output) ``` #### Parameters Parameters: - output (IVideoCaptureXBaseOutput): The output configuration instance to remove from the collection. ### Outputs_RemoveAt(int) Removes an output configuration at the specified index from the outputs collection. The output must be stopped before removal. This does not affect other running outputs. ```csharp public void Outputs_RemoveAt(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to remove from the collection. ### Pause() Pauses video capture while maintaining the pipeline state. Video/audio playback and recording are suspended but the pipeline remains ready to resume. ```csharp public bool Pause() ``` #### Returns Parameters: - (bool): true if capture was paused successfully; false if pause failed or pipeline is not active. ### PauseAsync() Asynchronously pauses video capture while maintaining the pipeline state. Video/audio playback and recording are suspended but the pipeline remains ready to resume. ```csharp public Task PauseAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if capture was paused successfully; otherwise, false. ### PauseCapture(int) Pauses recording or streaming for a specific output without closing the file or connection. The output can be resumed later without losing data continuity. Not all output types support pause (e.g., live streaming may not support pause). ```csharp public bool PauseCapture(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to pause from the outputs collection. #### Returns Parameters: - (bool): true if the capture was paused successfully; false if pause is not supported, failed, or index is invalid. ### PauseCaptureAsync(int) Asynchronously pauses recording or streaming for a specific output without closing the file or connection. The output can be resumed later without losing data continuity. Not all output types support pause (e.g., live streaming may not support pause). ```csharp public Task PauseCaptureAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to pause from the outputs collection. #### Returns Parameters: - (Task < bool >): A task that returns true if the capture was paused successfully; otherwise, false if pause is not supported or failed. ### Resume() Resumes video capture after being paused. Restarts video/audio playback and recording from the paused state. ```csharp public bool Resume() ``` #### Returns Parameters: - (bool): true if capture was resumed successfully; false if resume failed or pipeline is not paused. ### ResumeAsync() Asynchronously resumes video capture after being paused. Restarts video/audio playback and recording from the paused state. ```csharp public Task ResumeAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if capture was resumed successfully; otherwise, false. ### ResumeCapture(int) Resumes recording or streaming for a previously paused output. Continues the output from where it was paused, maintaining data continuity. ```csharp public bool ResumeCapture(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to resume from the outputs collection. #### Returns Parameters: - (bool): true if the capture was resumed successfully; false if the output was not paused, resume failed, or index is invalid. ### ResumeCaptureAsync(int) Asynchronously resumes recording or streaming for a previously paused output. Continues the output from where it was paused, maintaining data continuity. ```csharp public Task ResumeCaptureAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to resume from the outputs collection. #### Returns Parameters: - (Task < bool >): A task that returns true if the capture was resumed successfully; otherwise, false if the output was not paused or resume failed. ### SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler) Sets a custom error handler for the MediaBlocks pipeline to provide specialized error handling logic. The custom handler will be called for specific pipeline errors that require specialized handling beyond the default error processing. Pass null to remove custom error handling and revert to default behavior. ```csharp public void SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler errorHandler) ``` #### Parameters Parameters: - errorHandler (IMediaBlocksPipelineCustomErrorHandler): The custom error handler implementation, or null to remove custom handling and use default error processing. ### SetLicenseKey(string, string, string) Activates the SDK with a valid license key to enable full functionality and remove trial limitations. Call this method before or to activate the SDK. License key is provided after purchasing the Video Capture SDK from VisioForge. ```csharp public void SetLicenseKey(string licenseKey, string username, string email) ``` #### Parameters Parameters: - licenseKey (string): The license key received after purchase. - username (string): The username registered during purchase. - email (string): The email address registered during purchase. ### Settings_Load(string) Loads SDK settings from a JSON configuration file. Currently not implemented. Reserved for future functionality. ```csharp public bool Settings_Load(string jsonFilename) ``` #### Parameters Parameters: - jsonFilename (string): The path to the JSON settings file. #### Returns Parameters: - (bool): Always returns false in the current implementation. ### Settings_Save(string, string) Saves current SDK settings to JSON and info files. Creates or overwrites the specified files with SDK version and configuration information. ```csharp public bool Settings_Save(string jsonFilename, string infoFilename) ``` #### Parameters Parameters: - jsonFilename (string): The path for the JSON settings file. - infoFilename (string): The path for the SDK information text file. Pass null or empty string to skip info file creation. #### Returns Parameters: - (bool): true if files were saved successfully; false if save operation failed. ### Snapshot_Get() Captures a snapshot from the current video frame. Requires to be true before starting capture. The caller is responsible for calling Free() on the returned VideoFrameX to release resources. ```csharp public VideoFrameX Snapshot_Get() ``` #### Returns Parameters: - (VideoFrameX): The captured frame as , or null if snapshot grabber is not enabled. ### Snapshot_GetAsync() Asynchronously captures a snapshot from the current video frame. Requires to be true before starting capture. ```csharp public Task Snapshot_GetAsync() ``` #### Returns Parameters: - (Task < VideoFrameX >): A task containing the captured frame as , or null if snapshot grabber is not enabled. ### Snapshot_GetSK() Captures a snapshot from the current video frame as a SkiaSharp bitmap. Requires to be true before starting capture. ```csharp public SKBitmap Snapshot_GetSK() ``` #### Returns Parameters: - (SKBitmap): The captured frame as , or null if snapshot grabber is not enabled or format is unsupported. Caller must dispose the bitmap. ### Snapshot_GetSKAsync() Asynchronously captures a snapshot from the current video frame as a SkiaSharp bitmap. Requires to be true before starting capture. ```csharp public Task Snapshot_GetSKAsync() ``` #### Returns Parameters: - (Task < SKBitmap >): A task containing the captured frame as , or null if snapshot grabber is not enabled. Caller must dispose the bitmap. ### Snapshot_Save(string, SKEncodedImageFormat, int) Captures and saves a snapshot from the current video frame to a file. Requires to be true before starting capture. ```csharp public bool Snapshot_Save(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): The output file path for the snapshot image. - format (SKEncodedImageFormat): The image format (JPEG, PNG, WebP, etc.). - quality (int): The image quality from 0 (lowest) to 100 (highest). Default is 85. #### Returns Parameters: - (bool): true if the snapshot was saved successfully; false if save failed or snapshot grabber is not enabled. ### Snapshot_SaveAsync(string, SKEncodedImageFormat, int) Asynchronously captures and saves a snapshot from the current video frame to a file. Requires to be true before starting capture. ```csharp public Task Snapshot_SaveAsync(string filename, SKEncodedImageFormat format, int quality = 85) ``` #### Parameters Parameters: - filename (string): The output file path for the snapshot image. - format (SKEncodedImageFormat): The image format (JPEG, PNG, WebP, etc.). - quality (int): The image quality from 0 (lowest) to 100 (highest). Default is 85. #### Returns Parameters: - (Task < bool >): A task that returns true if the snapshot was saved successfully; otherwise, false. ### Start() Starts video capture with configured sources and outputs. Builds the media processing pipeline, initializes hardware devices, validates license, and begins capturing video/audio. This is a blocking call that waits for pipeline initialization. Use for non-blocking operation. ```csharp public bool Start() ``` #### Returns Parameters: - (bool): true if capture started successfully; false if startup failed. ### StartAsync() Asynchronously starts video capture with configured sources and outputs. Builds the media processing pipeline, initializes hardware devices, validates license, and begins capturing video/audio. ```csharp public Task StartAsync() ``` #### Returns Parameters: - (Task < bool >): A task that returns true if capture started successfully; otherwise, false. ### StartCapture(int, string) Starts recording or streaming for a specific output with optional filename override. The output pipeline is started independently, allowing multiple outputs to start and stop at different times. Creates the output file or establishes the streaming connection. ```csharp public bool StartCapture(int index, string filename) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to start from the outputs collection. - filename (string): Optional: Override the configured filename or URL for this specific capture session. Pass null to use the configured value. #### Returns Parameters: - (bool): true if the capture started successfully and the pipeline reached playing state; false if start failed or index is invalid. ### StartCaptureAsync(int, string) Asynchronously starts recording or streaming for a specific output with optional filename override. The output pipeline is started independently, allowing multiple outputs to start and stop at different times. ```csharp public Task StartCaptureAsync(int index, string filename) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to start from the outputs collection. - filename (string): Optional: Override the configured filename or URL for this specific capture session. Pass null to use the configured value. #### Returns Parameters: - (Task < bool >): A task that returns true if the capture started successfully and the pipeline reached playing state; otherwise, false. ### Stop() Stops video capture, finalizes recordings, and releases all resources. Stops all active outputs, closes video/audio devices, and clears the pipeline. This is a blocking call. Use for non-blocking operation. ```csharp public void Stop() ``` ### StopAsync() Asynchronously stops video capture, finalizes recordings, and releases all resources. Stops all active outputs, closes video/audio devices, and clears the pipeline. ```csharp public Task StopAsync() ``` #### Returns Parameters: - (Task): A task representing the asynchronous stop operation. ### StopCapture(int) Stops recording or streaming for a specific output, finalizing the file or closing the connection. For file outputs, this writes any buffered data, finalizes headers, and closes the file. For streaming outputs, this gracefully closes the connection. ```csharp public bool StopCapture(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to stop from the outputs collection. #### Returns Parameters: - (bool): true if the capture was stopped successfully and resources were released; false if stop failed or index is invalid. ### StopCaptureAsync(int) Asynchronously stops recording or streaming for a specific output, finalizing the file or closing the connection. For file outputs, this writes any buffered data, finalizes headers, and closes the file. For streaming outputs, this gracefully closes the connection. ```csharp public Task StopCaptureAsync(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the output to stop from the outputs collection. #### Returns Parameters: - (Task < bool >): A task that returns true if the capture was stopped successfully and resources were released; otherwise, false. ### Subtitles_Settings_Update() Updates subtitle overlay settings for the video renderer. Call this method after modifying the property to apply changes to the active renderer. ```csharp public void Subtitles_Settings_Update() ``` ### VideoRenderer_GetVideoInfo() Gets detailed video stream information from the active video renderer. Retrieves current video resolution, frame rate, pixel format, and other stream properties. ```csharp public VideoStreamInfo VideoRenderer_GetVideoInfo() ``` #### Returns Parameters: - (VideoStreamInfo): The for the first video renderer, or null if no renderer is active. ### Video_Composition_Add(VideoCompositionElement) Adds a video composition element to the video stream for overlay or composition effects. Elements can be images, videos, or other visual components that are composited onto the main video. Windows-specific feature that requires media buffer conversion from image data to GStreamer buffer format. Elements are rendered at specified positions with configurable alpha blending and z-order. ```csharp public void Video_Composition_Add(VideoCompositionElement element) ``` #### Parameters Parameters: - element (VideoCompositionElement): The video composition element to add with position, size, and visual properties configured. ### Video_Composition_Clear() Removes all video composition elements from the video stream and releases all associated resources. Ensures proper disposal of all element resources by calling Video_Composition_Remove for each element. Use this to reset video composition to a clean state without individual element removal. ```csharp public void Video_Composition_Clear() ``` ### Video_Composition_Remove(VideoCompositionElement) Removes a video composition element from the video stream and releases associated resources. Properly disposes of the associated GStreamer media buffer to prevent memory leaks. The element is removed from the composition manager's collection. ```csharp public void Video_Composition_Remove(VideoCompositionElement element) ``` #### Parameters Parameters: - element (VideoCompositionElement): The video composition element instance to remove from the stream. ### Video_Effects_AddOrUpdateAsync(IBaseVideoEffect) Asynchronously adds a new video effect or updates an existing one in the video processing chain. Effects are applied in real-time to the video stream during capture. If an effect with the same name exists, it will be updated with the new settings. Otherwise, a new effect is added to the processing pipeline. ```csharp public Task Video_Effects_AddOrUpdateAsync(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect to add or update in the processing pipeline. #### Returns Parameters: - (Task): A Task representing the asynchronous add/update operation. ### Video_Effects_Clear() Removes all video effects from the video processing chain, restoring unprocessed video. Note: If ResizeVideoEffect is present and the pipeline is running, the clear operation will be blocked to prevent resolution mismatch issues. Stop the pipeline first before clearing effects if resize effects are in use. Use this to reset video processing to default state without individual effect removal. ```csharp public void Video_Effects_Clear() ``` ### Video_Effects_Get(string) Gets a video effect by its name identifier from the video effects chain. Use this to retrieve effect instances for inspection or modification of effect parameters. ```csharp public IBaseVideoEffect Video_Effects_Get(string effectName) ``` #### Parameters Parameters: - effectName (string): The name of the effect to retrieve from the processing chain. #### Returns Parameters: - (IBaseVideoEffect): The video effect instance if found by name; otherwise, null if no effect with that name exists. ### Video_Effects_Remove(IBaseVideoEffect) Removes a specific video effect from the video processing chain by instance reference. The capture is temporarily paused during removal to ensure smooth operation and prevent visual glitches. After removal, capture automatically resumes. Note: ResizeVideoEffect cannot be removed when pipeline is started as it affects the bridge configuration. Remove it before starting or after stopping the pipeline to prevent resolution mismatch issues. ```csharp public void Video_Effects_Remove(IBaseVideoEffect effect) ``` #### Parameters Parameters: - effect (IBaseVideoEffect): The video effect instance to remove from the processing chain. ### Video_Effects_Remove(string) Removes a video effect by its name identifier from the video processing chain. The capture is temporarily paused during removal to ensure smooth operation and prevent visual glitches. After removal, capture automatically resumes. If no effect with the specified name exists, no action is taken. Note: ResizeVideoEffect cannot be removed when pipeline is started as it affects the bridge configuration. Remove it before starting or after stopping the pipeline to prevent resolution mismatch issues. ```csharp public void Video_Effects_Remove(string name) ``` #### Parameters Parameters: - name (string): The name of the video effect to remove from the processing chain. ### Video_Overlay_Add(IOverlayManagerElement) Adds a new overlay element to the video stream for on-screen graphics and information display. The overlay will be rendered on top of the video according to its position, z-order, and properties. Supports text overlays (with custom fonts and colors), image overlays, and shape overlays. ```csharp public void Video_Overlay_Add(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element to add (text, image, or shape) with position and appearance configured. ### Video_Overlay_Clear() Removes all overlay elements from the video stream, restoring clean video without overlays. Use this to reset overlay rendering to a clean state without individual overlay removal. ```csharp public void Video_Overlay_Clear() ``` ### Video_Overlay_Remove(IOverlayManagerElement) Removes a specific overlay element from the video stream by instance reference. The overlay will no longer be rendered on the video after removal. ```csharp public void Video_Overlay_Remove(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element instance to remove from the video stream. ### Video_Overlay_RemoveAt(int) Removes an overlay element at the specified index in the overlay collection. The overlay will no longer be rendered on the video after removal. ```csharp public void Video_Overlay_RemoveAt(int index) ``` #### Parameters Parameters: - index (int): The zero-based index of the overlay to remove from the collection. ### Video_Overlay_Update(IOverlayManagerElement) Updates an existing overlay element by removing and re-adding it with modified properties. Use this method after modifying overlay properties (position, text, color, etc.) to apply changes to the rendered output. This ensures the overlay rendering reflects the updated configuration. ```csharp public void Video_Overlay_Update(IOverlayManagerElement overlay) ``` #### Parameters Parameters: - overlay (IOverlayManagerElement): The overlay element with updated properties to re-render on the video stream. ### Video_Source_GetResolutionAndFrameRate(out VideoFrameRate) Gets the current video resolution and frame rate from the active video source. Queries the video source output pad for current video format capabilities. ```csharp public Size Video_Source_GetResolutionAndFrameRate(out VideoFrameRate frameRate) ``` #### Parameters Parameters: - frameRate (VideoFrameRate): When this method returns, contains the video frame rate in fps, or if unavailable. #### Returns Parameters: - (Size): The video resolution as a structure, or if unavailable or no video source is active. ### Video_SourcesAsync() Asynchronously enumerates available video capture devices on the system. Includes webcams, capture cards, virtual cameras, and other video input hardware. ```csharp public Task Video_SourcesAsync() ``` #### Returns Parameters: - (Task < VideoCaptureDeviceInfo [ ] >): A task containing an array of for all available video input devices. ### WaitForStartAsync() Asynchronously waits for the capture pipeline to reach the playing state. Polls the pipeline state until playing is reached or the pipeline becomes null. ```csharp public Task WaitForStartAsync() ``` #### Returns Parameters: - (Task): A task that completes when the pipeline is playing or stopped. ### OnAudioFrameBuffer Occurs whenever a new audio frame is received from the audio capture source. This event provides raw audio data for custom processing or analysis. ```csharp public event EventHandler OnAudioFrameBuffer ``` #### Event Type Parameters: - (EventHandler < AudioFrameBufferEventArgs >): ### OnAudioVUMeter Occurs whenever new audio VU meter data is received, providing audio level information. This event is useful for displaying audio level indicators in the user interface. ```csharp public event EventHandler OnAudioVUMeter ``` #### Event Type Parameters: - (EventHandler < VUMeterXEventArgs >): ### OnBarcodeDetected Occurs when a barcode or QR code is detected in the video stream. Event args contain the decoded barcode data and barcode type information. ```csharp public event EventHandler OnBarcodeDetected ``` #### Event Type Parameters: - (EventHandler < BarcodeDetectorEventArgs >): ### OnError Occurs whenever an error happens during video capture operations. Subscribe to this event to handle and log capture-related errors. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): ### OnFaceDetected Occurs whenever faces are detected in a video frame during capture. This event provides face detection results including face locations and attributes. ```csharp public event EventHandler OnFaceDetected ``` #### Event Type Parameters: - (EventHandler < AFFaceDetectionEventArgs >): ### OnLicenseRequired Occurs when a license is required for using specific features or when the trial period expires. Handle this event to provide license information or notify users about licensing requirements. ```csharp public event EventHandler OnLicenseRequired ``` #### Event Type Parameters: - (EventHandler < LicenseEventArgs >): ### OnMotionDetection Occurs when motion is detected in the video stream based on configured motion detection settings. Event args contain detailed motion data including affected regions and motion levels. ```csharp public event EventHandler OnMotionDetection ``` #### Event Type Parameters: - (EventHandler < MotionDetectionExEventArgs >): ### OnOutputPaused Occurs when a capture output (recording or streaming) is paused. The event argument contains the index of the output that was paused. ```csharp public event EventHandler OnOutputPaused ``` #### Event Type Parameters: - (EventHandler < int >): ### OnOutputResumed Occurs when a capture output (recording or streaming) resumes after being paused. The event argument contains the index of the output that resumed. ```csharp public event EventHandler OnOutputResumed ``` #### Event Type Parameters: - (EventHandler < int >): ### OnOutputStarted Occurs when a capture output (recording or streaming) starts successfully. The event argument contains the index of the output that started. ```csharp public event EventHandler OnOutputStarted ``` #### Event Type Parameters: - (EventHandler < int >): ### OnOutputStopped Occurs when a capture output (recording or streaming) stops. The event argument contains the index of the output that stopped. ```csharp public event EventHandler OnOutputStopped ``` #### Event Type Parameters: - (EventHandler < int >): ### OnPause Occurs when video capture or playback is paused. Use this event to update UI state when capture is temporarily suspended. ```csharp public event EventHandler OnPause ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnResume Occurs when video capture or playback resumes after being paused. Use this event to restore UI state when capture continues. ```csharp public event EventHandler OnResume ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStart Occurs when video capture or playback starts successfully. Use this event to update UI or perform initialization after capture begins. ```csharp public event EventHandler OnStart ``` #### Event Type Parameters: - (EventHandler < EventArgs >): ### OnStop Occurs when video capture or playback stops completely. This event provides the final position and allows for cleanup operations. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): ### OnVideoFrameBuffer Occurs whenever a new video frame is received in RGBA format from the video capture source. This event provides raw video frame data for custom processing or analysis. ```csharp public event EventHandler OnVideoFrameBuffer ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): ### OnVideoFrameSKBitmap Occurs whenever a new video frame is received and converted to SkiaSharp SKBitmap format. This event is useful for cross-platform image processing using SkiaSharp. ```csharp public event EventHandler OnVideoFrameSKBitmap ``` #### Event Type Parameters: - (EventHandler < VideoFrameSKBitmapEventArgs >): ## See Also --- # Namespace VisioForge.Core.VideoCaptureX Link: api/VisioForge.Core.VideoCaptureX.html # Namespace VisioForge.Core.VideoCaptureX # Namespace VisioForge.Core.VideoCaptureX ### Classes Parameters: - (): VideoCaptureX audio effects processing implementation. This partial class provides comprehensive audio effects management for captured audio including real-time equalizers, filters, dynamic range control, noise reduction, and audio enhancement during video capture operations. Supports both live preview and recording with audio effects applied. Uses a cross-platform media processing architecture to handle audio effects in real-time. --- # Class VideoEditCoreX Link: api/VisioForge.Core.VideoEditX.VideoEditCoreX.html # Class VideoEditCoreX # Class VideoEditCoreX **Namespace**: VisioForge.Core.VideoEditX **Assembly**: VisioForge.Core.dll Provides audio effects management for timeline-based video editing. This partial class exposes collections for configuring audio effects and transitions, and internal methods for applying them to timeline clips during the rendering or playback pipeline construction. Supports professional audio post-processing including equalization, amplification, panorama, and crossfade transitions for polished audio output. Implements the . Implements the . ```csharp public class VideoEditCoreX : IDisposable, INotifyPropertyChanged ``` #### Inheritance #### Implements #### Inherited Members ## Remarks VideoEditCoreX uses the timeline editing engine as its foundation, providing a powerful timeline-based editing model with support for clips, layers, tracks, effects, and transitions. It replaces the legacy DirectShow-based editing solutions and offers true cross-platform compatibility. ## Constructors ### VideoEditCoreX(IVideoView) Initializes a new instance of the class with a video view for timeline preview. Sets up the editing environment, configures logging, and prepares the video editing pipeline infrastructure. ```csharp public VideoEditCoreX(IVideoView videoView) ``` #### Parameters Parameters: - videoView (IVideoView): The video view control that will display the timeline preview and playback. ### VideoEditCoreX() Initializes a new instance of the class. ```csharp public VideoEditCoreX() ``` ## Properties ### Audio_Effects Gets the collection of audio effects to apply to the timeline during rendering or playback. ```csharp public List Audio_Effects { get; } ``` #### Property Value Parameters: - (List < IVideoEditXAudioEffect >): #### Remarks Add audio effects to this collection to apply volume adjustments, equalization, normalization, reverb, echo, and other audio processing to your audio content. Effects are applied to all audio clips on the timeline. Common effects include amplify, panorama (stereo positioning), equalizer bands, and dynamic range compression. ### Audio_Transitions Gets the collection of audio transitions to apply between audio clips on the timeline. ```csharp public List Audio_Transitions { get; } ``` #### Property Value Parameters: - (List < AudioTransition >): #### Remarks Audio transitions provide smooth crossfades between audio clips, preventing abrupt audio cuts. Each transition specifies a start time, duration, and crossfade characteristics. Transitions blend the outgoing and incoming audio during the transition period, creating professional audio mixes. Unlike video transitions which have many types, audio transitions typically use crossfade blending. ### AutoTransitions Gets or sets a value indicating whether automatic transitions will be created between adjacent clips on the timeline. ```csharp public bool AutoTransitions { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the editing engine automatically creates smooth crossfade transitions between overlapping or adjacent clips in the same layer. This provides a professional look without manually adding transitions. The transition duration is determined by the overlap between clips. Disable for hard cuts between clips. ### ConsoleUsage Gets or sets a value indicating whether the SDK is being used in a console application without GUI components. ```csharp public bool ConsoleUsage { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When set to true, the method will block until the operation completes, allowing console applications to run without additional threading logic. For GUI applications, leave this false to prevent blocking the UI thread. ### Debug_Dir Gets or sets the directory where debug logs and pipeline graphs will be saved when is enabled. ```csharp public string Debug_Dir { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When debug mode is enabled, the SDK will write detailed log files and media pipeline visualization files (DOT format) to this directory. If not specified, files are written to the current directory. Changing this property reconfigures the logger. ### Debug_DisableMessageDialogs Gets or sets a value indicating whether to suppress error message dialogs when is not handled. ```csharp public bool Debug_DisableMessageDialogs { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks By default, if the OnError event is not subscribed, errors may be displayed through message dialogs. Set this to true to disable automatic error display and handle all errors programmatically through the OnError event. ### Debug_Mode Gets or sets a value indicating whether debug mode is enabled, which activates detailed logging and pipeline visualization. ```csharp public bool Debug_Mode { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks When enabled, the SDK generates detailed log files, saves media pipeline graphs, and provides extensive diagnostic information useful for troubleshooting. This increases disk I/O and should typically be disabled in production. Changing this property reconfigures the logger. ### Debug_Telemetry Gets or sets a value indicating whether to send anonymous telemetry data to Sentry during debugging sessions in Visual Studio. ```csharp public bool Debug_Telemetry { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Telemetry helps improve the SDK by reporting crashes and errors during development. Only anonymous diagnostic data is collected, and only when debugging in Visual Studio with a debugger attached. Telemetry is never active in release builds or production environments. Changing this property reconfigures the logger. ### Fonts Gets a collection of available system fonts that can be used for text overlays in video editing. ```csharp public ObservableCollection Fonts { get; } ``` #### Property Value Parameters: - (ObservableCollection < FontDescriptionX >): #### Remarks This property enumerates all fonts available on the system that can be used with the text overlay feature. Each FontDescriptionX contains the font family name and style information required for rendering text. ### Output_AudioChannels Gets or sets the number of audio channels in the output audio stream. ```csharp public int Output_AudioChannels { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This property defines the channel configuration of the output audio. If not explicitly set, it defaults to the channel count of the first audio clip added to the timeline. All source audio will be mixed or downmixed to match this channel configuration. Setting this property updates the audio track restrictions immediately. ### Output_AudioSampleRate Gets or sets the sample rate of the output audio stream in Hertz (Hz). ```csharp public int Output_AudioSampleRate { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks This property defines the sampling frequency of the output audio. If not explicitly set, it defaults to the sample rate of the first audio clip added to the timeline. All source audio will be resampled to match this rate. Higher sample rates provide better quality but larger file sizes. Setting this property updates the audio track restrictions immediately. ### Output_Format Gets or sets the output format and destination settings for the rendered video. ```csharp public IVideoEditXBaseOutput Output_Format { get; set; } ``` #### Property Value Parameters: - (IVideoEditXBaseOutput): #### Remarks Set this property to configure where and how the final video will be saved. Available output formats include MP4, WebM, MOV, AVI, MKV, MPEG-TS, and various audio-only formats. If null, the SDK operates in preview-only mode without rendering to file. Each output format has specific codec and container requirements. ### Output_VideoCrop Gets or sets the video crop settings to apply to all video content during output rendering. ```csharp public CropVideoEffect Output_VideoCrop { get; set; } ``` #### Property Value Parameters: - (CropVideoEffect): #### Remarks Use this property to crop all video content to a specific region during rendering. This is useful for removing black bars, focusing on a particular area, or adjusting aspect ratios. The crop is applied globally to all video clips before any other effects. Set to null to disable cropping. ### Output_VideoFrameRate Gets or sets the frame rate of the output video. ```csharp public VideoFrameRate Output_VideoFrameRate { get; set; } ``` #### Property Value Parameters: - (VideoFrameRate): #### Remarks This property defines the playback frame rate of the rendered video. If not explicitly set, it defaults to the frame rate of the first video clip added to the timeline. Common values include 24fps (film), 25fps (PAL), 30fps (NTSC), 60fps (high frame rate). Frame rate is expressed as a rational number (numerator/denominator). Setting this property updates the video track restrictions immediately. ### Output_VideoRotateFlip Gets or sets the video rotation and flip settings to apply to all video content during output rendering. ```csharp public FlipRotateVideoEffect Output_VideoRotateFlip { get; set; } ``` #### Property Value Parameters: - (FlipRotateVideoEffect): #### Remarks Use this property to rotate or flip all video content during rendering. This is useful for correcting orientation issues from mobile devices or creating mirror effects. The transformation is applied globally to all video clips before other effects. Set to null to disable rotation/flip. ### Output_VideoSize Gets or sets the resolution (width and height) of the output video in pixels. ```csharp public Size Output_VideoSize { get; set; } ``` #### Property Value Parameters: - (Size): #### Remarks This property defines the dimensions of the rendered video. If not explicitly set, it defaults to the resolution of the first video clip added to the timeline. All source media will be scaled to match this resolution. Common values include 1920x1080 (Full HD), 1280x720 (HD), 3840x2160 (4K UHD). Setting this property updates the video track restrictions immediately. ### SDK_BuildDate Gets the build date of the VideoEditCoreX SDK assembly. ```csharp public static DateTime SDK_BuildDate { get; } ``` #### Property Value Parameters: - (DateTime): #### Remarks This property is useful for determining the exact build of the SDK being used, particularly when troubleshooting or verifying SDK updates. ### SDK_Version Gets the version number of the VideoEditCoreX SDK. ```csharp public static Version SDK_Version { get; } ``` #### Property Value Parameters: - (Version): #### Remarks Use this property to check the SDK version at runtime for compatibility checks or feature detection. ### SmartRender Gets or sets a value indicating whether to use smart render mode, which avoids re-encoding when possible. ```csharp public bool SmartRender { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks Smart rendering examines the source media and output format. When they match or are compatible, it copies streams directly without re-encoding, significantly improving rendering speed and quality. However, this limits the ability to apply certain effects and transitions. Use this for simple cutting and concatenation operations where quality preservation is critical. ### State Gets the current playback or rendering state of the video editing pipeline. ```csharp public PlaybackState State { get; } ``` #### Property Value Parameters: - (PlaybackState): #### Remarks The state reflects the underlying media pipeline state. Check this property to determine if the media pipeline is ready for configuration (Free) or actively processing (Play). ### Video_Effects Gets the collection of video effects to apply to the timeline during rendering or playback. ```csharp public ObservableCollection Video_Effects { get; } ``` #### Property Value Parameters: - (ObservableCollection < IVideoEditXVideoEffect >): #### Remarks Add video effects to this collection to apply color correction, filters, deinterlacing, and other transformations to your video content. Effects are applied in the order they appear in the collection. Each effect can specify its own start and stop times to apply the effect to specific portions of the timeline. Common effects include brightness, contrast, saturation, blur, sharpen, and color balance adjustments. ### Video_TextOverlays Gets the collection of text overlays to render on top of the video during playback or rendering. ```csharp public List Video_TextOverlays { get; } ``` #### Property Value Parameters: - (List < TextOverlay >): #### Remarks Text overlays enable adding titles, subtitles, credits, watermarks, and other text elements to your video. Each TextOverlay specifies the text content, position, font, color, size, duration, and timing. Overlays are rendered on top of the video content during the specified time range. The text supports various fonts (see property), colors, and positioning options. ### Video_Transitions Gets the collection of video transitions to apply between clips on the timeline. ```csharp public ObservableCollection Video_Transitions { get; } ``` #### Property Value Parameters: - (ObservableCollection < VideoTransition >): #### Remarks Video transitions provide smooth visual effects between clips, such as fades, wipes, and dissolves. Each transition specifies a type, start time, and duration. Transitions are rendered during the transition period between clips. Use and helper methods to easily add common transition types. ## Methods ### Dispose(bool) Releases unmanaged and optionally managed resources used by the VideoEditCoreX instance. This implementation properly disposes the media pipeline, timeline objects, layers, assets, clips, encoding profiles, and progress timer to ensure complete cleanup and prevent memory leaks. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method follows the standard IDisposable pattern. When disposing is true, all managed resources including the timeline editing pipeline, asset cache, and clip cache are properly released. The pipeline is set to null state before disposal, and appropriate delays are inserted to ensure clean shutdown. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. This method releases the editing pipeline, timeline, layers, asset cache, clip cache, and all associated media resources. Call this method when you're finished using the VideoEditCoreX instance to ensure proper cleanup. ```csharp public void Dispose() ``` #### Remarks This is the public entry point for disposing the VideoEditCoreX instance. After calling Dispose, the instance should not be used again. The method is safe to call multiple times. Following disposal, the object is removed from the finalization queue for improved garbage collection performance. ### Duration() Gets the total duration of the timeline based on all clips, effects, and transitions currently in the project. ```csharp public TimeSpan Duration() ``` #### Returns Parameters: - (TimeSpan): A representing the total timeline duration. #### Remarks The duration reflects the combined length of all media on the timeline, including any transitions. Returns TimeSpan.Zero if the pipeline is not initialized or no clips have been added. ### ~VideoEditCoreX() Finalizes an instance of the class, performing cleanup if Dispose was not called. This destructor ensures that unmanaged resources are released even if the object is not explicitly disposed, though explicit disposal through Dispose() is strongly recommended for predictable resource cleanup. ```csharp protected ~VideoEditCoreX() ``` ### GetLogger() Gets the Serilog logger instance used by the VideoEditCoreX SDK for structured logging. ```csharp public ILogger GetLogger() ``` #### Returns Parameters: - (ILogger): The instance configured for this SDK instance. #### Remarks Use this logger for consistent, structured logging throughout your application when working with VideoEditCoreX. The logger is automatically configured based on the and settings, with different verbosity levels and output targets depending on the mode. ### Input_AddAudioFile(string, TimeSpan?) Adds an audio file's audio stream to the timeline, including the entire duration of the audio. ```csharp public bool Input_AddAudioFile(string filename, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the audio file to add. - insertTime (TimeSpan ?): Optional timeline position where the audio should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio was successfully added; otherwise, false. #### Remarks Only the audio stream is added to the audio track. Supports all commonly used audio formats (MP3, AAC, WAV, FLAC, Vorbis, Opus, etc.). The audio will be mixed with any other audio on the timeline. ### Input_AddAudioFile(AudioFileSource, TimeSpan?) Adds an audio file's audio stream to the timeline using advanced source configuration options. ```csharp public bool Input_AddAudioFile(AudioFileSource source, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - source (AudioFileSource): An object containing the audio file path, optional segments, and effects configuration. - insertTime (TimeSpan ?): Optional timeline position where the audio should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio was successfully added; otherwise, false. #### Remarks This overload provides access to advanced features like multi-segment editing and per-clip audio effects through the AudioFileSource object. ### Input_AddAudioFile(string, TimeSpan, TimeSpan, TimeSpan?) Adds a specific segment of an audio file's audio stream to the timeline, from startTime to stopTime. ```csharp public bool Input_AddAudioFile(string filename, TimeSpan startTime, TimeSpan stopTime, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the audio file to add. - startTime (TimeSpan): The start time within the source audio from which to begin the clip. - stopTime (TimeSpan): The end time within the source audio at which to end the clip. - insertTime (TimeSpan ?): Optional timeline position where the audio segment should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio segment was successfully added; otherwise, false. #### Remarks This method enables precise trimming of source audio files. Only the portion between startTime and stopTime is added to the timeline and mixed with other audio tracks. ### Input_AddAudioFromStream(Stream, TimeSpan?, TimeSpan?, TimeSpan?) Adds a specific segment of audio data from a seekable stream to the timeline, from startTime to stopTime. ```csharp public bool Input_AddAudioFromStream(Stream stream, TimeSpan? startTime, TimeSpan? stopTime, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - stream (Stream): A seekable stream containing the audio data. - startTime (TimeSpan ?): Optional start time within the source audio. If null, starts from the beginning. - stopTime (TimeSpan ?): Optional end time within the source audio. If null, includes until the end. - insertTime (TimeSpan ?): Optional timeline position where the audio segment should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio segment was successfully added; otherwise, false. #### Remarks The stream must support seeking. The audio data is copied to a temporary file for processing. This enables precise trimming when loading audio from streams rather than files. ### Input_AddAudioVideoFile(string, TimeSpan?, TimeSpan?, TimeSpan?) Adds both audio and video streams from a media file to the timeline. ```csharp public bool Input_AddAudioVideoFile(string filename, TimeSpan? startTime = null, TimeSpan? stopTime = null, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the media file to add. - startTime (TimeSpan ?): Optional start time within the source file. If null, starts from the beginning of the file. - stopTime (TimeSpan ?): Optional end time within the source file. If null, includes until the end of the file. - insertTime (TimeSpan ?): Optional timeline position where the media should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio and video streams were successfully added; otherwise, false. #### Remarks This method adds both audio and video tracks from the source file. If the file contains only audio or only video, only the available stream will be added. Supports all commonly used media formats. ### Input_AddAudioVideoFromStream(Stream, TimeSpan?, TimeSpan?, TimeSpan?) Adds both audio and video streams from a seekable stream containing media data to the timeline. ```csharp public bool Input_AddAudioVideoFromStream(Stream stream, TimeSpan? startTime = null, TimeSpan? stopTime = null, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - stream (Stream): A seekable stream containing the media data. - startTime (TimeSpan ?): Optional start time within the source media. If null, starts from the beginning. - stopTime (TimeSpan ?): Optional end time within the source media. If null, includes until the end. - insertTime (TimeSpan ?): Optional timeline position where the media should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the audio and video streams were successfully added; otherwise, false. #### Remarks The stream must support seeking. The media data is copied to a temporary file for processing. Both audio and video tracks are added if present in the stream. ### Input_AddImageFile(string, TimeSpan, TimeSpan?) Adds a static image to the timeline with the specified duration, creating a video clip from the image file. ```csharp public bool Input_AddImageFile(string filename, TimeSpan duration, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the image file to add. - duration (TimeSpan): The duration for which the image should be displayed in the timeline. - insertTime (TimeSpan ?): Optional timeline position where the image should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the image was successfully added; otherwise, false. #### Remarks Supported image formats include JPEG, PNG, BMP, GIF, and other formats supported by SkiaSharp. The image will be scaled to match the output video resolution while maintaining aspect ratio. ### Input_AddImageFile(ImageFileSource, TimeSpan?) Adds a static image to the timeline using advanced source configuration options. ```csharp public bool Input_AddImageFile(ImageFileSource source, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - source (ImageFileSource): An object containing the image file path, duration, and optional effects. - insertTime (TimeSpan ?): Optional timeline position where the image should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the image was successfully added; otherwise, false. #### Remarks This overload allows specifying additional properties through the ImageFileSource object, such as layer assignment and per-clip video effects. ### Input_AddImageFromStream(Stream, TimeSpan, TimeSpan?) Adds a static image to the timeline from a seekable stream with the specified duration. ```csharp public bool Input_AddImageFromStream(Stream stream, TimeSpan duration, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - stream (Stream): A seekable stream containing the image data. - duration (TimeSpan): The duration for which the image should be displayed in the timeline. - insertTime (TimeSpan ?): Optional timeline position where the image should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the image was successfully added; otherwise, false. #### Remarks The stream must support seeking. The image data is copied to a temporary file for processing. Supported formats are the same as . ### Input_AddTestClip(TimeSpan, TimeSpan, TimeSpan, string) Adds a test clip to the timeline for debugging and testing purposes, generating synthetic video content. ```csharp public bool Input_AddTestClip(TimeSpan startTime, TimeSpan stopTime, TimeSpan insertTime, string id = "blue") ``` #### Parameters Parameters: - startTime (TimeSpan): The start time in the timeline where the test clip begins. - stopTime (TimeSpan): The end time in the timeline where the test clip ends. - insertTime (TimeSpan): The in-point time within the test pattern itself. - id (string): The test pattern identifier (e.g., "blue", "smpte", "snow", "black"). Default is "blue". #### Returns Parameters: - (bool): true if the test clip was successfully added; otherwise, false. #### Remarks Test clips are useful for debugging pipelines, testing effects, and creating placeholder content. Available patterns include solid colors, SMPTE color bars, snow, and various test patterns. ### Input_AddVideoFile(string, TimeSpan?) Adds a video file's video stream to the timeline, including the entire duration of the video. ```csharp public bool Input_AddVideoFile(string filename, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the video file to add. - insertTime (TimeSpan ?): Optional timeline position where the video should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the video was successfully added; otherwise, false. #### Remarks Only the video stream is added; audio is not included. Use to add both. Supports all commonly used video formats (MP4, AVI, MKV, WebM, MOV, etc.). ### Input_AddVideoFile(VideoFileSource, TimeSpan?) Adds a video file's video stream to the timeline using advanced source configuration options. ```csharp public bool Input_AddVideoFile(VideoFileSource source, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - source (VideoFileSource): A object containing the video file path, optional segments, and effects configuration. - insertTime (TimeSpan ?): Optional timeline position where the video should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the video was successfully added; otherwise, false. #### Remarks This overload provides access to advanced features like multi-segment editing, layer assignment, and per-clip video effects through the VideoFileSource object. ### Input_AddVideoFile(string, TimeSpan, TimeSpan, TimeSpan?) Adds a specific segment of a video file's video stream to the timeline, from startTime to stopTime. ```csharp public bool Input_AddVideoFile(string filename, TimeSpan startTime, TimeSpan stopTime, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - filename (string): The path to the video file to add. - startTime (TimeSpan): The start time within the source video from which to begin the clip. - stopTime (TimeSpan): The end time within the source video at which to end the clip. - insertTime (TimeSpan ?): Optional timeline position where the video segment should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the video segment was successfully added; otherwise, false. #### Remarks This method enables precise trimming of source video files. Only the portion between startTime and stopTime is added to the timeline. Only the video stream is included; use for both audio and video. ### Input_AddVideoFromStream(Stream, TimeSpan, TimeSpan, TimeSpan?) Adds a specific segment of video data from a seekable stream to the timeline, from startTime to stopTime. ```csharp public bool Input_AddVideoFromStream(Stream stream, TimeSpan startTime, TimeSpan stopTime, TimeSpan? insertTime = null) ``` #### Parameters Parameters: - stream (Stream): A seekable stream containing the video data. - startTime (TimeSpan): The start time within the source video from which to begin the clip. - stopTime (TimeSpan): The end time within the source video at which to end the clip. - insertTime (TimeSpan ?): Optional timeline position where the video segment should be inserted. If null, appends to the end of the timeline. #### Returns Parameters: - (bool): true if the video segment was successfully added; otherwise, false. #### Remarks The stream must support seeking. The video data is copied to a temporary file for processing. This enables precise trimming when loading video from streams rather than files. ### Input_AddVideoLayer() Creates a new video layer in the timeline for advanced multi-layer composition. ```csharp public int Input_AddVideoLayer() ``` #### Returns Parameters: - (int): The zero-based index of the newly created layer. #### Remarks Video layers enable picture-in-picture effects, watermarks, and complex compositions. Layers are composited from bottom to top, with higher-numbered layers appearing on top. Use the layer ID when adding clips with or to specify which layer the clip should be added to. ### Input_Clear_List() Removes all input clips from the timeline, clearing all audio and video content. ```csharp public void Input_Clear_List() ``` #### Remarks This method removes all media clips that have been added to the main layer. Effects and transitions are not removed by this operation. After clearing, you can add new clips to build a different timeline composition. ### OnPropertyChanged(string) Raises the PropertyChanged event for the specified property. ```csharp protected virtual void OnPropertyChanged(string propertyName = null) ``` #### Parameters Parameters: - propertyName (string): The name of the property that changed. ### Position_Get() Gets the current playback or rendering position within the timeline. ```csharp public TimeSpan Position_Get() ``` #### Returns Parameters: - (TimeSpan): A representing the current position in the timeline. #### Remarks During preview playback, this indicates the current viewing position. During rendering, this reflects the progress of the rendering operation. Returns TimeSpan.Zero if the pipeline is not initialized. ### Position_Set(TimeSpan, bool) Sets the current playback position within the timeline, allowing you to jump to a specific time during preview. ```csharp public void Position_Set(TimeSpan position, bool seekToKeyframe = false) ``` #### Parameters Parameters: - position (TimeSpan): The target position in the timeline to seek to. - seekToKeyframe (bool): If true, seeks to the nearest keyframe for faster seeking; if false, seeks to the exact frame (slower but more accurate). #### Remarks Seeking to keyframes is faster but less precise. For frame-accurate positioning during editing, set seekToKeyframe to false. This method only works during preview playback, not during rendering. ### SDKInit() Initializes the media framework subsystems required for video editing operations. Must be called once before creating any VideoEditCoreX instances. ```csharp public static bool SDKInit() ``` #### Returns Parameters: - (bool): true if initialization was successful; otherwise, false. #### Remarks This method initializes the core media framework and timeline editing services. Call this early in your application startup before using any video editing functionality. ### SetLicenseKey(string, string, string) Activates the VideoEditCoreX SDK with your purchased license credentials, removing trial limitations. ```csharp public void SetLicenseKey(string licenseKey, string username, string email) ``` #### Parameters Parameters: - licenseKey (string): The license key provided after purchase. - username (string): The username used during the purchase process. - email (string): The email address used during the purchase process. #### Remarks Call this method early in your application initialization, before creating any VideoEditCoreX instances. After activation, the SDK will operate without trial restrictions. License credentials are validated against the purchase information. Keep your license key secure and do not distribute it with your application. For subscription licenses, ensure your subscription is active for the license to remain valid. ### Settings_Load(string) Loads SDK configuration settings from a JSON file, restoring all properties to their saved values. ```csharp public bool Settings_Load(string jsonFilename) ``` #### Parameters Parameters: - jsonFilename (string): The full path to the JSON settings file to load. #### Returns Parameters: - (bool): true if settings were successfully loaded; false if the file doesn't exist or loading failed. #### Remarks This method deserializes the JSON file and copies all property values to the current instance. The settings file should have been previously created using . This is useful for persisting user configurations or restoring complex editing setups. Verify the file exists before calling to avoid errors. ### Settings_Save(string, string) Saves the current SDK configuration settings to JSON files for later restoration. ```csharp public bool Settings_Save(string jsonFilename, string infoFilename) ``` #### Parameters Parameters: - jsonFilename (string): The full path where the main settings JSON file will be saved. - infoFilename (string): Optional path for saving SDK version information. Can be null or empty to skip. #### Returns Parameters: - (bool): true if settings were successfully saved; false if an error occurred during saving. #### Remarks This method serializes the current VideoEditCoreX configuration to JSON format, including all properties, effects, and transitions. Video effects are saved to a separate "_video_effects.json" file in the same directory. Use to restore these settings later. The directory is created if it doesn't exist. Settings can be used to persist user preferences or save complex editing projects for later resumption. ### Start() Starts the video editing operation, either beginning timeline playback for preview or initiating rendering to the output file. Validates license, builds the pipeline with all configured clips, effects, and transitions, and begins processing. ```csharp public bool Start() ``` #### Returns Parameters: - (bool): true if the operation started successfully; otherwise, false. #### Remarks This method performs license validation, constructs the complete editing pipeline including all input clips, effects, transitions, and output settings, then starts either preview playback or file rendering depending on the configuration. Progress can be monitored through the OnProgress event. ### Stop() Stops the current video editing operation, whether it's timeline preview playback or rendering to file. Gracefully shuts down the pipeline and releases associated resources. ```csharp public bool Stop() ``` #### Returns Parameters: - (bool): true if the stop operation completed successfully; otherwise, false. #### Remarks This method sends an end-of-stream event to the pipeline, waits for proper shutdown, and cleans up all pipeline resources. After stopping, the pipeline can be reconfigured and started again. ### Video_Transition_Add_FadeIn(TimeSpan, TimeSpan) Adds a fade-in transition effect to the video timeline, creating a smooth transition from black to full opacity. This is a convenience method that creates a FadeIn VideoTransition and adds it to the collection. ```csharp public void Video_Transition_Add_FadeIn(TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startTime (TimeSpan): The timeline position where the fade-in effect begins. - stopTime (TimeSpan): The timeline position where the fade-in effect completes, reaching full opacity. #### Remarks The duration of the fade is determined by the difference between stopTime and startTime. Typical fade durations range from 0.5 to 2 seconds for professional video production. ### Video_Transition_Add_FadeOut(TimeSpan, TimeSpan) Adds a fade-out transition effect to the video timeline, creating a smooth transition from full opacity to black. This is a convenience method that creates a FadeOut VideoTransition and adds it to the collection. ```csharp public void Video_Transition_Add_FadeOut(TimeSpan startTime, TimeSpan stopTime) ``` #### Parameters Parameters: - startTime (TimeSpan): The timeline position where the fade-out effect begins at full opacity. - stopTime (TimeSpan): The timeline position where the fade-out effect completes, reaching complete black. #### Remarks The duration of the fade is determined by the difference between stopTime and startTime. Fade-out transitions are commonly used at the end of videos or scenes for professional finishing. ### Video_Transition_Clear() Removes all video transitions from the timeline. ```csharp public void Video_Transition_Clear() ``` #### Remarks Clears the collection, removing all fade-in, fade-out, and other transition effects. This results in hard cuts between all clips. Call this before reconfiguring transitions to start fresh. ### Video_Transitions_Names() Gets a list of all available video transition type names that can be used in the timeline. ```csharp public ObservableCollection Video_Transitions_Names() ``` #### Returns Parameters: - (ObservableCollection < string >): An observable collection of strings containing the names of all supported transition types. #### Remarks This method returns the names from the enumeration, excluding the "None" value. Use these names to discover available transition effects. Common transitions include crossfade, wipe variations, clock wipes, and iris effects. ### OnError Occurs when an error is detected in the video editing pipeline. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): #### Remarks This event provides detailed error information including error level and message. Subscribe to this event to handle errors gracefully and provide user feedback. If not handled, errors may be displayed through the video view if available. ### OnPause Occurs when playback or rendering is paused. ```csharp public event EventHandler OnPause ``` #### Event Type Parameters: - (EventHandler < EventArgs >): #### Remarks This event fires when the media pipeline transitions from playing to paused state. Preview playback can be paused, but rendering operations typically run to completion without pause support. ### OnProgress Occurs periodically during rendering to report the progress of the output operation. ```csharp public event EventHandler OnProgress ``` #### Event Type Parameters: - (EventHandler < ProgressEventArgs >): #### Remarks Progress events are raised approximately every 100 milliseconds during rendering operations. The event args include a percentage (0-100) indicating how much of the timeline has been processed. This event is primarily useful when rendering to file, not during preview playback. ### OnResume Occurs when paused playback resumes. ```csharp public event EventHandler OnResume ``` #### Event Type Parameters: - (EventHandler < EventArgs >): #### Remarks This event fires when the media pipeline transitions from paused back to playing state during preview playback. ### OnStart Occurs when playback or rendering starts successfully. ```csharp public event EventHandler OnStart ``` #### Event Type Parameters: - (EventHandler < EventArgs >): #### Remarks This event fires after the media pipeline transitions to the playing state and begins processing the timeline. It indicates that preview playback or rendering to file has begun. ### OnStop Occurs when playback or rendering stops, either by reaching the end of the timeline or by calling . ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): #### Remarks This event fires when the operation completes normally or is stopped manually. The event args include the final position in the timeline. After this event, the media pipeline is ready to be reconfigured and restarted. ### PropertyChanged Property changed event. ```csharp public event PropertyChangedEventHandler PropertyChanged ``` #### Event Type Parameters: - (PropertyChangedEventHandler): ## See Also --- # Namespace VisioForge.Core.VideoEditX Link: api/VisioForge.Core.VideoEditX.html # Namespace VisioForge.Core.VideoEditX # Namespace VisioForge.Core.VideoEditX ### Classes Parameters: - (): Provides audio effects management for timeline-based video editing. This partial class exposes collections for configuring audio effects and transitions, and internal methods for applying them to timeline clips during the rendering or playback pipeline construction. Supports professional audio post-processing including equalization, amplification, panorama, and crossfade transitions for polished audio output. Implements the . Implements the . --- # Delegate EncryptionProgressCallback Link: api/VisioForge.Core.VideoEncryption.EncryptionProgressCallback.html # Delegate EncryptionProgressCallback # Delegate EncryptionProgressCallback **Namespace**: VisioForge.Core.VideoEncryption **Assembly**: VisioForge.Core.dll Represents a callback method that is invoked to report progress during video encryption or decryption operations. This delegate enables consumers to track the progress of long-running cryptographic operations and update user interfaces or logging systems accordingly. ```csharp public delegate void EncryptionProgressCallback(int progress) ``` #### Parameters Parameters: - progress (int): The current progress as a percentage value from 0 to 100, where 0 indicates the operation has just started and 100 indicates completion. Values are reported as integers and may not increment smoothly for all operations. ## Remarks

This callback is invoked periodically during encryption and decryption operations performed by and classes.

The callback is optional; passing null for progress callback parameters will simply skip progress reporting. Implementations of this callback should execute quickly to avoid slowing down the cryptographic operation.

--- # Class VideoDecryptor Link: api/VisioForge.Core.VideoEncryption.VideoDecryptor.html # Class VideoDecryptor # Class VideoDecryptor **Namespace**: VisioForge.Core.VideoEncryption **Assembly**: VisioForge.Core.dll Provides cross-platform video decryption functionality using AES-128 encryption in CBC mode. This static class offers both synchronous and asynchronous methods for decrypting video files and streams that were previously encrypted using the corresponding class. ```csharp public static class VideoDecryptor ``` #### Inheritance #### Inherited Members ## Remarks

This class implements AES-128 decryption in Cipher Block Chaining (CBC) mode. The decryption key and initialization vector (IV) are derived from the password and salt using PBKDF2 with 10,000 iterations.

For .NET 6.0 and later, PBKDF2 uses SHA-256 as the hash algorithm. For earlier versions, the default hash algorithm of Rfc2898DeriveBytes is used.

The password and salt used for decryption must exactly match those used during encryption. If no salt is provided, the same automatic salt generation logic from the password's MD5 hash is used, which must match the encryption process.

For stream-based decryption with random access support, consider using the class instead.

## Methods ### Decrypt(string, string, string, byte[], EncryptionProgressCallback) Synchronously decrypts an encrypted video file and saves the result to a new file. This method blocks the calling thread until the decryption operation is complete. ```csharp public static void Decrypt(string encryptedFileName, string decryptedFileName, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - encryptedFileName (string): The path to the encrypted file to decrypt. Must be a valid, accessible file path. - decryptedFileName (string): The path where the decrypted file will be saved. Any existing file at this path will be deleted before the operation begins. - password (string): The password used for decryption. Must exactly match the password used during encryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is derived from the password's MD5 hash. Must match the salt used during encryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during decryption, reported as percentage values from 0 to 100. #### Remarks The source file is not modified; only the destination file is created or overwritten. Both file streams are properly disposed after the operation completes. ### Decrypt(Stream, Stream, string, byte[], EncryptionProgressCallback) Synchronously decrypts data from an encrypted stream and writes the result to an output stream. This method reads encrypted data in chunks, decrypts it using AES-128 encryption in CBC mode, and writes the decrypted data to the output stream. This method blocks the calling thread until the decryption operation is complete. ```csharp public static void Decrypt(Stream encryptedStream, Stream decryptedStream, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - encryptedStream (Stream): The input stream containing encrypted data. The stream must support reading and have a defined length. - decryptedStream (Stream): The output stream where decrypted data will be written. The stream must support writing and be flushed after completion. - password (string): The password used for decryption. Must exactly match the password used during encryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is derived from the password's MD5 hash. Must match the salt used during encryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during decryption, reported as percentage values from 0 to 100. #### Remarks

The decryption is performed using a wrapper that handles block-aligned decryption operations. Data is read in chunks for efficient processing.

The streams are not disposed by this method; the caller is responsible for stream lifetime management. The output stream is flushed after all data has been written.

### DecryptAsync(string, string, string, byte[], EncryptionProgressCallback) Asynchronously decrypts an encrypted video file and saves the result to a new file. ```csharp public static Task DecryptAsync(string sourceFile, string destFile, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - sourceFile (string): The path to the encrypted source file to decrypt. Must be a valid, accessible file path. - destFile (string): The path where the decrypted file will be saved. Any existing file at this path will be deleted before the operation begins. - password (string): The password used for decryption. Must exactly match the password used during encryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is derived from the password's MD5 hash. Must match the salt used during encryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during decryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous decryption operation. #### Remarks This method runs the decryption operation on a background thread using . The source file is not modified; only the destination file is created or overwritten. ### DecryptAsync(Stream, Stream, string, byte[], EncryptionProgressCallback) Asynchronously decrypts data from an encrypted stream and writes the result to an output stream. ```csharp public static Task DecryptAsync(Stream encryptedStream, Stream decryptedStream, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - encryptedStream (Stream): The input stream containing encrypted data. The stream must support reading and have a defined length. - decryptedStream (Stream): The output stream where decrypted data will be written. The stream must support writing. - password (string): The password used for decryption. Must exactly match the password used during encryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is derived from the password's MD5 hash. Must match the salt used during encryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during decryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous decryption operation. #### Remarks

This method runs the decryption operation on a background thread using . The streams are not disposed by this method; the caller is responsible for stream lifetime management.

The input stream position is advanced as data is read, and the output stream receives the decrypted data.

--- # Class VideoDecryptorStream Link: api/VisioForge.Core.VideoEncryption.VideoDecryptorStream.html # Class VideoDecryptorStream # Class VideoDecryptorStream **Namespace**: VisioForge.Core.VideoEncryption **Assembly**: VisioForge.Core.dll Provides a stream-based interface for decrypting encrypted video data with support for random access. This class creates and manages a instance that can be used to read decrypted data from an encrypted source stream on-the-fly, without requiring the entire file to be decrypted at once. ```csharp public class VideoDecryptorStream : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks

This class is useful for scenarios where you need to decrypt video data in a streaming fashion, such as playing encrypted video files without fully decrypting them to disk first. The underlying supports seeking, allowing random access to any position in the decrypted data.

The class implements the pattern to ensure proper cleanup of cryptographic resources. Always dispose of this object when finished, preferably using a using statement.

The decryption uses AES-128 in CBC mode with key derivation via PBKDF2. The password and salt must match those used during encryption with .

## Methods ### DecryptToStream(Stream, string, byte[]) Creates and returns a decryption stream that reads from an encrypted source stream. The returned stream can be used to read decrypted data transparently as if it were unencrypted, and supports seeking to allow random access to any position in the decrypted data. ```csharp public Stream DecryptToStream(Stream encrypted, string key, byte[] salt = null) ``` #### Parameters Parameters: - encrypted (Stream): The encrypted source stream to read from. Must be a valid stream with readable data. - key (string): The decryption password. Must exactly match the password used during encryption and cannot be empty. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is automatically derived from the key's MD5 hash. The salt must match the one used during encryption. #### Returns Parameters: - (Stream): A that provides decrypted data when read from. This stream supports seeking for random access. #### Remarks

The returned stream is managed internally by this instance. When this object is disposed, the internal decryptor stream is also disposed.

The encrypted source stream will not be automatically disposed when this object is disposed, as indicated by the leaveOpen: false parameter passed to the internal . The caller remains responsible for disposing the encrypted stream.

#### Exceptions Parameters: - (ArgumentException): Thrown when the key is empty. - (ArgumentException): Thrown when the salt is empty after automatic generation or when provided as an empty array. - (ArgumentException): Thrown when the encrypted stream is null or has a length of zero. ### Dispose(bool) Releases the unmanaged resources used by the and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method is called by both the public method and the finalizer. When called with disposing set to true, this method disposes the internal decryptor stream and marks this instance as disposed. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Disposes the internal decryptor stream and suppresses finalization of this instance. ```csharp public void Dispose() ``` #### Remarks

Call this method when you are finished using the . It is recommended to use a using statement or using declaration to ensure this method is called automatically.

After calling this method, the object is in a disposed state and should not be used further.

### ~VideoDecryptorStream() Finalizes an instance of the class. Ensures that cryptographic resources are properly disposed even if was not explicitly called. ```csharp protected ~VideoDecryptorStream() ``` #### Remarks This finalizer is part of the dispose pattern and ensures that unmanaged resources are released even if the consumer forgets to call . However, it is always preferable to explicitly dispose of this object using a using statement or by calling directly. ## See Also --- # Class VideoEncryptor Link: api/VisioForge.Core.VideoEncryption.VideoEncryptor.html # Class VideoEncryptor # Class VideoEncryptor **Namespace**: VisioForge.Core.VideoEncryption **Assembly**: VisioForge.Core.dll Provides cross-platform video encryption functionality using AES-128 encryption in CBC mode. This static class offers both synchronous and asynchronous methods for encrypting video files and streams using password-based encryption with optional salt values for key derivation. ```csharp public static class VideoEncryptor ``` #### Inheritance #### Inherited Members ## Remarks

This class implements AES-128 encryption in Cipher Block Chaining (CBC) mode with PKCS7 padding. The encryption key and initialization vector (IV) are derived from the password and salt using PBKDF2 with 10,000 iterations.

For .NET 6.0 and later, PBKDF2 uses SHA-256 as the hash algorithm. For earlier versions, the default hash algorithm of Rfc2898DeriveBytes is used.

If no salt is provided, a salt is automatically generated from the MD5 hash of the password. For maximum security, it is recommended to provide a unique, randomly generated 16-byte salt for each encryption operation.

The encrypted data can be decrypted using the class with the same password and salt values.

## Methods ### Encrypt(string, string, string, byte[], EncryptionProgressCallback) Synchronously encrypts a video file and saves the result to a new file. This method blocks the calling thread until the encryption operation is complete. ```csharp public static void Encrypt(string originalFileName, string encryptedFileName, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalFileName (string): The path to the original unencrypted file. Must be a valid, accessible file path. - encryptedFileName (string): The path where the encrypted file will be saved. Any existing file at this path will be overwritten. - password (string): The password to use for encryption. This password will be required for decryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is automatically derived from the password's MD5 hash. For maximum security, provide a unique, randomly generated 16-byte salt. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Remarks The original file is not modified; only the output file is created or overwritten. Both file streams are properly disposed after the operation completes. ### Encrypt(Stream, Stream, string, byte[], EncryptionProgressCallback) Synchronously encrypts data from a stream and writes the result to an output stream. This method reads unencrypted data in chunks, encrypts it using AES-128 encryption in CBC mode, and writes the encrypted data to the output stream. This method blocks the calling thread until the encryption operation is complete. ```csharp public static void Encrypt(Stream originalStream, Stream encryptedStream, string password, byte[] salt = null, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalStream (Stream): The input stream containing unencrypted data. The stream must support reading and have a defined length. - encryptedStream (Stream): The output stream where encrypted data will be written. The stream must support writing. - password (string): The password to use for encryption. This password will be required for decryption. - salt (byte [ ]): Optional cryptographic salt for key derivation. If null, a salt is automatically derived from the password's MD5 hash. For maximum security, provide a unique, randomly generated 16-byte salt. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Remarks

The encryption is performed in chunks matching the AES block size (16 bytes). Data that doesn't fill a complete block is padded with zeros before encryption.

The streams are not disposed by this method; the caller is responsible for stream lifetime management. The cryptographic resources (AES cipher and encryptor) are properly disposed after the operation completes.

### EncryptAsync(string, string, string, byte[], EncryptionProgressCallback) Asynchronously encrypts a video file and saves the result to a new file using a specified salt. ```csharp public static Task EncryptAsync(string originalFileName, string encryptedFileName, string password, byte[] salt, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalFileName (string): The path to the original unencrypted file. Must be a valid, accessible file path. - encryptedFileName (string): The path where the encrypted file will be saved. Any existing file at this path will be overwritten. - password (string): The password to use for encryption. This password will be required for decryption. - salt (byte [ ]): The cryptographic salt for key derivation. Must be exactly 16 bytes. The same salt must be used for decryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous encryption operation. #### Remarks This method runs the encryption operation on a background thread using . The original file is not modified; only the output file is created or overwritten. ### EncryptAsync(string, string, string, EncryptionProgressCallback) Asynchronously encrypts a video file and saves the result to a new file with automatic salt generation. ```csharp public static Task EncryptAsync(string originalFileName, string encryptedFileName, string password, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalFileName (string): The path to the original unencrypted file. Must be a valid, accessible file path. - encryptedFileName (string): The path where the encrypted file will be saved. Any existing file at this path will be overwritten. - password (string): The password to use for encryption. This password will be required for decryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous encryption operation. #### Remarks

This method automatically generates a salt from the MD5 hash of the password. The same password will generate the same salt, allowing for decryption without explicitly storing the salt.

This method runs the encryption operation on a background thread using . The original file is not modified; only the output file is created or overwritten.

### EncryptAsync(Stream, Stream, string, byte[], EncryptionProgressCallback) Asynchronously encrypts data from a stream and writes the result to an output stream using a specified salt. ```csharp public static Task EncryptAsync(Stream originalStream, Stream encryptedStream, string password, byte[] salt, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalStream (Stream): The input stream containing unencrypted data. The stream must support reading and have a defined length. - encryptedStream (Stream): The output stream where encrypted data will be written. The stream must support writing. - password (string): The password to use for encryption. This password will be required for decryption. - salt (byte [ ]): The cryptographic salt for key derivation. Must be exactly 16 bytes. The same salt must be used for decryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous encryption operation. #### Remarks

This method runs the encryption operation on a background thread using . The streams are not disposed by this method; the caller is responsible for stream lifetime management.

The input stream position is advanced as data is read, and the output stream receives the encrypted data.

### EncryptAsync(Stream, Stream, string, EncryptionProgressCallback) Asynchronously encrypts data from a stream and writes the result to an output stream with automatic salt generation. ```csharp public static Task EncryptAsync(Stream originalStream, Stream encryptedStream, string password, EncryptionProgressCallback progress = null) ``` #### Parameters Parameters: - originalStream (Stream): The input stream containing unencrypted data. The stream must support reading and have a defined length. - encryptedStream (Stream): The output stream where encrypted data will be written. The stream must support writing. - password (string): The password to use for encryption. This password will be required for decryption. - progress (EncryptionProgressCallback): Optional callback delegate to receive progress updates during encryption, reported as percentage values from 0 to 100. #### Returns Parameters: - (Task): A representing the asynchronous encryption operation. #### Remarks

This method automatically generates a salt from the MD5 hash of the password. The same password will generate the same salt, allowing for decryption without explicitly storing the salt.

This method runs the encryption operation on a background thread using . The streams are not disposed by this method; the caller is responsible for stream lifetime management.

--- # Namespace VisioForge.Core.VideoEncryption Link: api/VisioForge.Core.VideoEncryption.html # Namespace VisioForge.Core.VideoEncryption # Namespace VisioForge.Core.VideoEncryption ### Classes Parameters: - (): Provides cross-platform video decryption functionality using AES-128 encryption in CBC mode. This static class offers both synchronous and asynchronous methods for decrypting video files and streams that were previously encrypted using the corresponding class. - (): Provides a stream-based interface for decrypting encrypted video data with support for random access. This class creates and manages a instance that can be used to read decrypted data from an encrypted source stream on-the-fly, without requiring the entire file to be decrypted at once. - (): Provides cross-platform video encryption functionality using AES-128 encryption in CBC mode. This static class offers both synchronous and asynchronous methods for encrypting video files and streams using password-based encryption with optional salt values for key derivation. ### Delegates Parameters: - (): Represents a callback method that is invoked to report progress during video encryption or decryption operations. This delegate enables consumers to track the progress of long-running cryptographic operations and update user interfaces or logging systems accordingly. --- # Class ByteArrayConverter Link: api/VisioForge.Core.VideoFingerPrinting.ByteArrayConverter.html # Class ByteArrayConverter # Class ByteArrayConverter **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Custom JSON converter for byte arrays that handles binary data serialization and deserialization. Supports reading from Base64 strings, numeric arrays, and null values. ```csharp public class ByteArrayConverter : JsonConverter ``` #### Inheritance #### Inherited Members ## Methods ### Read(ref Utf8JsonReader, Type, JsonSerializerOptions) Reads and converts JSON to a byte array. ```csharp public override byte[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) ``` #### Parameters Parameters: - reader (Utf8JsonReader): The reader to read JSON from. - typeToConvert (Type): The type to convert (byte[]). - options (JsonSerializerOptions): Options for the serialization. #### Returns Parameters: - (byte [ ]): The deserialized byte array, or null if the JSON token is null. #### Exceptions Parameters: - (JsonException): Thrown when an unexpected token type is encountered. ### Write(Utf8JsonWriter, byte[], JsonSerializerOptions) Writes a byte array as JSON. ```csharp public override void Write(Utf8JsonWriter writer, byte[] value, JsonSerializerOptions options) ``` #### Parameters Parameters: - writer (Utf8JsonWriter): The writer to write JSON to. - value (byte [ ]): The byte array to serialize. - options (JsonSerializerOptions): Options for the serialization. --- # Class FrameSource Link: api/VisioForge.Core.VideoFingerPrinting.FrameSource.html # Class FrameSource # Class FrameSource **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides video frame extraction and processing capabilities for video fingerprinting operations. ```csharp public class FrameSource : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The class creates a media processing pipeline that extracts video frames from various sources and applies optional transformations such as cropping and resizing. It uses the MediaBlocks pipeline architecture to process video streams and deliver individual frames through events. This class is designed to work with the video fingerprinting system to provide preprocessed frames for fingerprint generation. ## Properties ### Crop Gets or sets the area to crop from video frames. ```csharp public Rect Crop { get; set; } ``` #### Property Value Parameters: - (Rect): #### Remarks Cropping is useful for removing black bars, watermarks, or other static elements that could interfere with fingerprint matching. The crop is applied before resizing. ### CustomResolution Gets or sets the custom resolution for video frame output. ```csharp public Size CustomResolution { get; set; } ``` #### Property Value Parameters: - (Size): #### Remarks Resizing is performed after cropping. Smaller resolutions can improve fingerprinting performance and reduce memory usage while maintaining sufficient detail for matching. ### Pipeline Gets the media blocks pipeline used for video processing. ```csharp public MediaBlocksPipeline Pipeline { get; } ``` #### Property Value Parameters: - (MediaBlocksPipeline): #### Remarks The pipeline is created when is called and disposed when the FrameSource is disposed. It coordinates all media blocks in the processing chain. ### StartPosition Gets or sets the start position within the video. ```csharp public TimeSpan StartPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use this property to skip unwanted content at the beginning of the video, such as introductions or advertisements. ### StopPosition Gets or sets the stop position within the video. ```csharp public TimeSpan StopPosition { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use this property to exclude content at the end of the video, such as credits or advertisements. Processing will stop when this position is reached. ## Methods ### Dispose(bool) Releases unmanaged and - optionally - managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` ### ~FrameSource() Finalizes an instance of the class. ```csharp protected ~FrameSource() ``` ### PlayAsync(UniversalSourceSettings) Starts asynchronous video playback and frame extraction. ```csharp public Task PlayAsync(UniversalSourceSettings sourceSettings) ``` #### Parameters Parameters: - sourceSettings (UniversalSourceSettings): The settings defining the video source, including file path and format options. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if playback started successfully; otherwise, false. #### Remarks This method constructs a media processing pipeline with the following components:
  1. Universal source for reading the video file
  2. Optional crop block if Crop property is set
  3. Optional resize block if CustomResolution property is set
  4. Sample grabber for extracting individual frames
  5. Null renderer as the pipeline sink
The pipeline begins processing immediately after successful initialization. Video frames are delivered through the event. ### OnError Occurs when an error happens during video processing. ```csharp public event EventHandler OnError ``` #### Event Type Parameters: - (EventHandler < ErrorsEventArgs >): #### Remarks This event provides detailed error information including error codes and descriptions. Common errors include file access issues, codec problems, or memory allocation failures. ### OnStop Occurs when video playback is stopped. ```csharp public event EventHandler OnStop ``` #### Event Type Parameters: - (EventHandler < StopEventArgs >): #### Remarks This event is raised when the pipeline stops, either due to reaching the end of the video, encountering an error, or being manually stopped. The event args indicate the reason for stopping. ### OnVideoFrame Occurs when a new video frame is available for processing. ```csharp public event EventHandler OnVideoFrame ``` #### Event Type Parameters: - (EventHandler < VideoFrameXBufferEventArgs >): #### Remarks This event is raised for each video frame extracted from the source. The frame data is provided in RGB format and includes timing information. Subscribers should process frames quickly to avoid blocking the pipeline. ## See Also --- # Class MirrorComparisonExample Link: api/VisioForge.Core.VideoFingerPrinting.MirrorComparisonExample.html # Class MirrorComparisonExample # Class MirrorComparisonExample **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides example usage of the mirror-aware video fingerprinting comparison APIs. ```csharp public static class MirrorComparisonExample ``` #### Inheritance #### Inherited Members ## Methods ### BatchCompareWithMirrorDetection(VFPFingerPrint, VFPFingerPrint[]) Example: Batch comparison of multiple videos against a reference. ```csharp public static void BatchCompareWithMirrorDetection(VFPFingerPrint reference, VFPFingerPrint[] candidates) ``` #### Parameters Parameters: - reference (VFPFingerPrint): The reference video fingerprint. - candidates (VFPFingerPrint [ ]): Array of candidate video fingerprints to compare. ### CompareVideosWithMirrorDetection(VFPFingerPrint, VFPFingerPrint) Example: Compares two video fingerprints with mirror detection. ```csharp public static void CompareVideosWithMirrorDetection(VFPFingerPrint fp1, VFPFingerPrint fp2) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): First video fingerprint. - fp2 (VFPFingerPrint): Second video fingerprint. ### IsMirroredCopy(VFPFingerPrint, VFPFingerPrint) Example: Detects if a video is a mirrored copy of another. ```csharp public static bool IsMirroredCopy(VFPFingerPrint original, VFPFingerPrint suspect) ``` #### Parameters Parameters: - original (VFPFingerPrint): Original video fingerprint. - suspect (VFPFingerPrint): Suspect video fingerprint. #### Returns Parameters: - (bool): True if the suspect is a mirrored copy of the original. ### SearchVideoWithDurationHints(VFPFingerPrint, VFPFingerPrint, double, double) Example: Searches with duration hints for better accuracy. ```csharp public static void SearchVideoWithDurationHints(VFPFingerPrint needle, VFPFingerPrint haystack, double needleDuration, double haystackDuration) ``` #### Parameters Parameters: - needle (VFPFingerPrint): The video fragment to search for. - haystack (VFPFingerPrint): The video to search within. - needleDuration (double): Duration of the needle video in seconds. - haystackDuration (double): Duration of the haystack video in seconds. ### SearchVideoWithMirrorDetection(VFPFingerPrint, VFPFingerPrint) Example: Searches for a video fragment with mirror detection. ```csharp public static void SearchVideoWithMirrorDetection(VFPFingerPrint needle, VFPFingerPrint haystack) ``` #### Parameters Parameters: - needle (VFPFingerPrint): The video fragment to search for. - haystack (VFPFingerPrint): The video to search within. --- # Class VFPAnalyzer Link: api/VisioForge.Core.VideoFingerPrinting.VFPAnalyzer.html # Class VFPAnalyzer # Class VFPAnalyzer **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides high-level methods for video fingerprinting analysis, comparison, and search operations. ```csharp public static class VFPAnalyzer ``` #### Inheritance #### Inherited Members ## Remarks The class is the main entry point for video fingerprinting operations. It provides methods to generate fingerprints from video files, compare videos for similarity, and search for video fragments within larger videos. The class handles the complexity of video decoding, frame processing, and fingerprint generation, providing a simple API for common video fingerprinting tasks. All methods are static and support asynchronous operations. ## Properties ### DebugDir Gets or sets the directory path for debug output. ```csharp public static string DebugDir { get; set; } ``` #### Property Value Parameters: - (string): #### Remarks When set, the analyzer may save intermediate processing results, frames, or other diagnostic information to this directory for troubleshooting purposes. ## Methods ### Compare(VFPFingerPrint, VFPFingerPrint, TimeSpan) Compares two video fingerprints to determine their similarity. ```csharp public static int Compare(VFPFingerPrint fp1, VFPFingerPrint fp2, TimeSpan shift) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The first video fingerprint to compare. - fp2 (VFPFingerPrint): The second video fingerprint to compare. - shift (TimeSpan): Maximum time shift allowed during comparison. The comparison will test alignments within this time range to find the best match. #### Returns Parameters: - (int): A difference score where lower values indicate greater similarity. Returns if either fingerprint is null. #### Remarks This method is used to compare fingerprints generated with . The shift parameter allows for temporal misalignment between videos, which is useful when comparing videos that may have different intros or be slightly out of sync. The comparison is performed in one-second increments. ### CompareVideoFilesAsync(VFPFingerprintSource, VFPFingerprintSource, TimeSpan, VFPErrorCallback, int) Compares two video files to determine if they contain the same content. ```csharp public static Task CompareVideoFilesAsync(VFPFingerprintSource file1, VFPFingerprintSource file2, TimeSpan shift, VFPErrorCallback errorCallback, int threshold = 500) ``` #### Parameters Parameters: - file1 (VFPFingerprintSource): Configuration for the first video file to compare. - file2 (VFPFingerprintSource): Configuration for the second video file to compare. - shift (TimeSpan): Maximum time shift allowed during comparison. The comparison will test alignments within this time range to find the best match. - errorCallback (VFPErrorCallback): Optional callback to receive error messages during processing. - threshold (int): Maximum difference score to consider videos as matching. Default is 500. Lower values require closer matches. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the videos are considered identical (difference below threshold); otherwise, false. #### Remarks This is a convenience method that combines fingerprint generation and comparison into a single operation. It generates comparison fingerprints for both videos and then compares them. This method is suitable for determining if two video files contain the same content, even if they have different encodings, resolutions, or minor edits. The threshold parameter should be adjusted based on the expected similarity and quality requirements. ### GetComparingFingerprintForVideoFileAsync(VFPFingerprintSource, VFPErrorCallback, VFPProgressCallback) Generates a fingerprint from a video file optimized for whole-video comparison operations. ```csharp public static Task GetComparingFingerprintForVideoFileAsync(VFPFingerprintSource source, VFPErrorCallback errorDelegate = null, VFPProgressCallback progressDelegate = null) ``` #### Parameters Parameters: - source (VFPFingerprintSource): The video source configuration including file path, time range, and processing options. - errorDelegate (VFPErrorCallback): Optional callback to receive error messages during processing. - progressDelegate (VFPProgressCallback): Optional callback to receive progress updates (0-100) during processing. #### Returns Parameters: - (Task < VFPFingerPrint >): A task that represents the asynchronous operation. The task result contains the generated or null if an error occurred. #### Remarks This method generates fingerprints optimized for comparing entire videos or large segments to determine overall similarity. It processes the complete specified time range and creates a comprehensive fingerprint. For searching short fragments within longer videos, use instead. The method handles video decoding, frame extraction, optional transformations (cropping, resizing), and ignored area masking automatically. ### GetSearchFingerprintForVideoFileAsync(VFPFingerprintSource, VFPErrorCallback, VFPProgressCallback) Generates a fingerprint from a video file optimized for fragment search operations. ```csharp public static Task GetSearchFingerprintForVideoFileAsync(VFPFingerprintSource source, VFPErrorCallback errorDelegate = null, VFPProgressCallback progressDelegate = null) ``` #### Parameters Parameters: - source (VFPFingerprintSource): The video source configuration including file path, time range, and processing options. - errorDelegate (VFPErrorCallback): Optional callback to receive error messages during processing. - progressDelegate (VFPProgressCallback): Optional callback to receive progress updates (0-100) during processing. #### Returns Parameters: - (Task < VFPFingerPrint >): A task that represents the asynchronous operation. The task result contains the generated or null if an error occurred. #### Remarks This method generates fingerprints optimized for searching video fragments within larger videos. It's designed to create fingerprints of short clips (e.g., commercials, intros, or specific scenes) that can then be located within full-length videos. For comparing entire videos, use instead. The method includes detection for processing issues like stuck frames. ### Search(VFPFingerPrint, VFPFingerPrint, TimeSpan, int, bool) Searches for occurrences of a video fragment within a larger video. ```csharp public static List Search(VFPFingerPrint fp1, VFPFingerPrint fp2, TimeSpan duration, int maxDifference, bool allowMultipleFragments) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The fingerprint of the video fragment to search for (needle). Should be generated using . - fp2 (VFPFingerPrint): The fingerprint of the video to search within (haystack). Can be generated using either fingerprint generation method. - duration (TimeSpan): The duration of the fragment being searched for. Used to prevent overlapping matches when searching for multiple occurrences. - maxDifference (int): Maximum allowed difference score for a valid match. Lower values require closer matches. Typical values range from 5 to 20. - allowMultipleFragments (bool): If true, searches for all occurrences of the fragment. If false, returns only the first match. #### Returns Parameters: - (List < TimeSpan >): A list of timestamps where matches were found. Returns an empty list if no matches are found or if either fingerprint is null. #### Remarks This is the synchronous version of . The search algorithm uses a sliding window approach to find the best matches within the specified difference threshold. ### SearchAsync(VFPFingerPrint, VFPFingerPrint, TimeSpan, int, bool) Asynchronously searches for occurrences of a video fragment within a larger video. ```csharp public static Task> SearchAsync(VFPFingerPrint fp1, VFPFingerPrint fp2, TimeSpan duration, int maxDifference, bool allowMultipleFragments) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The fingerprint of the video fragment to search for (needle). Should be generated using . - fp2 (VFPFingerPrint): The fingerprint of the video to search within (haystack). Can be generated using either fingerprint generation method. - duration (TimeSpan): The duration of the fragment being searched for. Used to prevent overlapping matches when searching for multiple occurrences. - maxDifference (int): Maximum allowed difference score for a valid match. Lower values require closer matches. Typical values range from 5 to 20. - allowMultipleFragments (bool): If true, searches for all occurrences of the fragment. If false, returns only the first match. #### Returns Parameters: - (Task < List < TimeSpan > >): A task that represents the asynchronous operation. The task result contains a list of timestamps where matches were found, or an empty list if no matches. #### Remarks This method is ideal for finding commercials, intros, or specific scenes within longer videos. The search is performed on a background thread to avoid blocking. ### SetLicenseKey(string) Sets license key for Video Fingerprinting SDK. ```csharp public static void SetLicenseKey(string vfpLicense) ``` #### Parameters Parameters: - vfpLicense (string): Video Fingerprinting SDK license key. --- # Class VFPAPI Link: api/VisioForge.Core.VideoFingerPrinting.VFPAPI.html # Class VFPAPI # Class VFPAPI **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides platform-agnostic access to the native video fingerprinting library functions. ```csharp public static class VFPAPI ``` #### Inheritance #### Inherited Members ## Remarks The class acts as a wrapper that automatically selects the appropriate native library (x86 or x64) based on the current process architecture. It provides a unified interface for all video fingerprinting operations including search, comparison, and image comparison functionality. All methods delegate to either or depending on the platform. Supports Windows, Linux, and macOS platforms with automatic native library resolution. ## Properties ### ExpectedLibraryName Gets the expected native library name for the current platform. ```csharp public static string ExpectedLibraryName { get; } ``` #### Property Value Parameters: - (string): ### IsLibraryAvailable Gets a value indicating whether the Video Fingerprinting library is available. ```csharp public static bool IsLibraryAvailable { get; } ``` #### Property Value Parameters: - (bool): ### LibraryLoadError Gets the error message if the library failed to load. ```csharp public static string LibraryLoadError { get; } ``` #### Property Value Parameters: - (string): ### PlatformName Gets the current platform name. ```csharp public static string PlatformName { get; } ``` #### Property Value Parameters: - (string): ## Methods ### Initialize() Initializes the Video Fingerprinting native library. ```csharp public static bool Initialize() ``` #### Returns Parameters: - (bool): True if initialization succeeded, false otherwise. ### VFPCompare_Build(out int, nint) Builds a comparison fingerprint from processed frame data. ```csharp public static nint VFPCompare_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): When this method returns, contains the length of the fingerprint data in bytes. - pDataTmp (nint): Pointer to the comparison data structure containing processed frames. #### Returns Parameters: - (nint): A pointer to the fingerprint data. The data remains valid until the comparison structure is cleared. ### VFPCompare_Clear(nint) Clears and releases a comparison data structure. ```csharp public static void VFPCompare_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the comparison data structure to clear. #### Remarks This method properly cleans up the native comparison structure and releases any internal resources. It should be called when the comparison data is no longer needed. ### VFPCompare_Compare(nint, int, nint, int, int) Compares two video fingerprints to determine their similarity. ```csharp public static double VFPCompare_Compare(nint pData1, int iLen1, nint pData2, int iLen2, int MaxS) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data. - iLen1 (int): Length of the first fingerprint in bytes. - pData2 (nint): Pointer to the second fingerprint data. - iLen2 (int): Length of the second fingerprint in bytes. - MaxS (int): Maximum allowed time shift in seconds for comparison. #### Returns Parameters: - (double): A similarity score between 0 and 100, where 100 indicates identical videos and lower values indicate greater differences. ### VFPCompare_CompareMirror(nint, int, nint, int, int, out int) Compares two video fingerprints with mirror detection support. ```csharp public static double VFPCompare_CompareMirror(nint data1, int len1, nint data2, int len2, int maxShift, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint in bytes. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint in bytes. - maxShift (int): Maximum allowed time shift in seconds for comparison. - mirrorMode (int): When this method returns, contains the detected mirror mode. #### Returns Parameters: - (double): A similarity score between 0 and 100, where 100 indicates identical videos and lower values indicate greater differences. ### VFPCompare_Init(int, nint) Initializes a comparison data structure with the specified video duration. ```csharp public static void VFPCompare_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The expected duration of the video in seconds. - pDataTmp (nint): Pointer to pre-allocated memory for the comparison data structure. #### Remarks This method is used for whole-video comparison operations rather than search operations. The memory must be allocated with the correct size for the platform. ### VFPCompare_Init2(int) Initializes and allocates a new comparison data structure. ```csharp public static nint VFPCompare_Init2(int count) ``` #### Parameters Parameters: - count (int): The expected duration of the video in seconds. #### Returns Parameters: - (nint): A pointer to the newly allocated and initialized comparison data structure. The caller is responsible for freeing this memory using . ### VFPCompare_Process(nint, int, int, int, double, nint) Processes a video frame for comparison fingerprint generation. ```csharp public static int VFPCompare_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the RGB24 frame data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (row pitch) of the frame data in bytes. - dTime (double): Timestamp of the frame in milliseconds. - pDataTmp (nint): Pointer to the comparison data structure. #### Returns Parameters: - (int): Returns a non-zero value on success, 0 on failure. ### VFPSearch_Build(out int, nint) Builds a search fingerprint from processed frame data. ```csharp public static nint VFPSearch_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): When this method returns, contains the length of the fingerprint data in bytes. - pDataTmp (nint): Pointer to the search data structure containing processed frames. #### Returns Parameters: - (nint): A pointer to the fingerprint data. The data remains valid until the search structure is cleared. ### VFPSearch_Clear(nint) Clears and releases a search data structure. ```csharp public static void VFPSearch_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the search data structure to clear. #### Remarks This method properly cleans up the native search structure and releases any internal resources. It should be called when the search data is no longer needed. ### VFPSearch_Init(int, nint) Initializes a search data structure with the specified video duration. ```csharp public static void VFPSearch_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The expected duration of the video in seconds. - pDataTmp (nint): Pointer to pre-allocated memory for the search data structure. #### Remarks This method initializes the native search structure in pre-allocated memory. The memory must be allocated with the correct size for the platform (48 bytes for x86, 80 bytes for x64). #### Exceptions Parameters: - (InvalidOperationException): Thrown when the native library is not available. ### VFPSearch_Init2(int) Initializes and allocates a new search data structure. ```csharp public static nint VFPSearch_Init2(int count) ``` #### Parameters Parameters: - count (int): The expected duration of the video in seconds. #### Returns Parameters: - (nint): A pointer to the newly allocated and initialized search data structure. The caller is responsible for freeing this memory using . ### VFPSearch_Process(nint, int, int, int, double, nint) Processes a video frame for search fingerprint generation. ```csharp public static int VFPSearch_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the RGB24 frame data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (row pitch) of the frame data in bytes. - dTime (double): Timestamp of the frame in milliseconds. - pDataTmp (nint): Pointer to the search data structure. #### Returns Parameters: - (int): Returns a non-zero value on success, 0 on failure. ### VFPSearch_Search(nint, int, int, nint, int, int, out double, int) Searches for a video fragment within another video using fingerprints. ```csharp public static int VFPSearch_Search(nint pData1, int iLen1, int iSkip1, nint pData2, int iLen2, int iSkip2, out double pDiff, int maxDiff) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data (needle). - iLen1 (int): Length of the first fingerprint in bytes. - iSkip1 (int): Number of seconds to skip from the beginning of the first fingerprint. - pData2 (nint): Pointer to the second fingerprint data (haystack). - iLen2 (int): Length of the second fingerprint in bytes. - iSkip2 (int): Number of seconds to skip from the beginning of the second fingerprint. - pDiff (double): When this method returns, contains the difference score of the best match. - maxDiff (int): Maximum allowed difference threshold for a valid match. #### Returns Parameters: - (int): The position in seconds where the match was found, or a large value if no match found. ### VFPSearch_SearchMirror(nint, int, nint, int, out int, out int, out int) Searches for a video fragment within another video with mirror detection. ```csharp public static void VFPSearch_SearchMirror(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data (needle). - len1 (int): Length of the first fingerprint in bytes. - data2 (nint): Pointer to the second fingerprint data (haystack). - len2 (int): Length of the second fingerprint in bytes. - diff (int): When this method returns, contains the difference score of the best match. - pos (int): When this method returns, contains the position where the match was found. - mirrorMode (int): When this method returns, contains the detected mirror mode. ### VFPSearch_SearchMirror2(nint, int, nint, int, out int, out int, out int, double, double) Searches for a video fragment within another video with mirror detection and duration hints. ```csharp public static void VFPSearch_SearchMirror2(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode, double duration1, double duration2) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data (needle). - len1 (int): Length of the first fingerprint in bytes. - data2 (nint): Pointer to the second fingerprint data (haystack). - len2 (int): Length of the second fingerprint in bytes. - diff (int): When this method returns, contains the difference score of the best match. - pos (int): When this method returns, contains the position where the match was found. - mirrorMode (int): When this method returns, contains the detected mirror mode. - duration1 (double): Duration of the first video in seconds. - duration2 (double): Duration of the second video in seconds. ### VFPSetLicenseKey(string) Sets license key. ```csharp public static void VFPSetLicenseKey(string licenseKey) ``` #### Parameters Parameters: - licenseKey (string): License key. #### Exceptions Parameters: - (InvalidOperationException): Thrown when the native library is not available. ### X86() Determines whether the current process is running as a 32-bit (x86) application. ```csharp public static bool X86() ``` #### Returns Parameters: - (bool): true if the process is 32-bit; false if it is 64-bit. --- # Class VFPAPI64 Link: api/VisioForge.Core.VideoFingerPrinting.VFPAPI64.html # Class VFPAPI64 # Class VFPAPI64 **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides access to the 64-bit native video fingerprinting API through platform invoke declarations. This class contains methods for fingerprint search, comparison, and image analysis operations. Supports Windows, Linux, and macOS platforms. ```csharp public static class VFPAPI64 ``` #### Inheritance #### Inherited Members ## Methods ### VFPCompare_Build(out int, nint) Builds the final fingerprint data from processed frames for comparison. ```csharp public static extern nint VFPCompare_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): Output parameter receiving the length of the fingerprint data. - pDataTmp (nint): Pointer to the comparison context. #### Returns Parameters: - (nint): Pointer to the built fingerprint data. ### VFPCompare_Clear(nint) Clears and releases resources associated with the comparison context. ```csharp public static extern void VFPCompare_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the comparison context to clear. ### VFPCompare_Compare(nint, int, nint, int, int) Compares two fingerprints and returns a similarity score. ```csharp public static extern double VFPCompare_Compare(nint pData1, int iLen1, nint pData2, int iLen2, int MaxS) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data. - iLen1 (int): Length of the first fingerprint data. - pData2 (nint): Pointer to the second fingerprint data. - iLen2 (int): Length of the second fingerprint data. - MaxS (int): Maximum shift allowed during comparison. #### Returns Parameters: - (double): Similarity score between 0 and 100, where higher values indicate greater similarity. ### VFPCompare_CompareMirror(nint, int, nint, int, int, out int) Compares two fingerprints with mirror detection support. ```csharp public static extern double VFPCompare_CompareMirror(nint data1, int len1, nint data2, int len2, int maxShift, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - maxShift (int): Maximum shift allowed during comparison. - mirrorMode (int): Output parameter receiving the detected mirror mode. #### Returns Parameters: - (double): Similarity score between 0 and 100, where higher values indicate greater similarity. ### VFPCompare_Init(int, nint) Initializes the fingerprint comparison engine with a specified frame count. ```csharp public static extern void VFPCompare_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. - pDataTmp (nint): Pointer to the temporary data structure for comparison operations. ### VFPCompare_Init2(int) Initializes the fingerprint comparison engine and returns a handle to the comparison context. ```csharp public static extern nint VFPCompare_Init2(int count) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. #### Returns Parameters: - (nint): A pointer to the initialized comparison context. ### VFPCompare_Process(nint, int, int, int, double, nint) Processes a video frame for fingerprint comparison operations. ```csharp public static extern int VFPCompare_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the frame pixel data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (bytes per row) of the frame data. - dTime (double): Timestamp of the frame in seconds. - pDataTmp (nint): Pointer to the comparison context. #### Returns Parameters: - (int): Status code indicating success (0) or failure. ### VFPSearch_Build(out int, nint) Builds the final fingerprint data from processed frames. ```csharp public static extern nint VFPSearch_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): Output parameter receiving the length of the fingerprint data. - pDataTmp (nint): Pointer to the search context. #### Returns Parameters: - (nint): Pointer to the built fingerprint data. ### VFPSearch_Clear(nint) Clears and releases resources associated with the search context. ```csharp public static extern void VFPSearch_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the search context to clear. ### VFPSearch_Init(int, nint) Initializes the fingerprint search engine with a specified frame count. ```csharp public static extern void VFPSearch_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. - pDataTmp (nint): Pointer to the temporary data structure for search operations. ### VFPSearch_Init2(int) Initializes the fingerprint search engine and returns a handle to the search context. ```csharp public static extern nint VFPSearch_Init2(int count) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. #### Returns Parameters: - (nint): A pointer to the initialized search context. ### VFPSearch_Process(nint, int, int, int, double, nint) Processes a video frame for fingerprint search operations. ```csharp public static extern int VFPSearch_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the frame pixel data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (bytes per row) of the frame data. - dTime (double): Timestamp of the frame in seconds. - pDataTmp (nint): Pointer to the search context. #### Returns Parameters: - (int): Status code indicating success (0) or failure. ### VFPSearch_Search(nint, int, int, nint, int, int, out double, int) Searches for matches between two fingerprints. ```csharp public static extern int VFPSearch_Search(nint pData1, int iLen1, int iSkip1, nint pData2, int iLen2, int iSkip2, out double pDiff, int maxDiff) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data. - iLen1 (int): Length of the first fingerprint data. - iSkip1 (int): Number of bytes to skip in the first fingerprint. - pData2 (nint): Pointer to the second fingerprint data. - iLen2 (int): Length of the second fingerprint data. - iSkip2 (int): Number of bytes to skip in the second fingerprint. - pDiff (double): Output parameter receiving the difference value between fingerprints. - maxDiff (int): Maximum allowed difference for a match. #### Returns Parameters: - (int): The position of the best match, or -1 if no match found. ### VFPSearch_SearchMirror(nint, int, nint, int, out int, out int, out int) Searches for matches between two fingerprints with mirror detection. ```csharp public static extern void VFPSearch_SearchMirror(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - diff (int): Output parameter receiving the difference value between fingerprints. - pos (int): Output parameter receiving the position of the best match. - mirrorMode (int): Output parameter receiving the detected mirror mode. ### VFPSearch_SearchMirror2(nint, int, nint, int, out int, out int, out int, double, double) Searches for matches between two fingerprints with mirror detection and duration hints. ```csharp public static extern void VFPSearch_SearchMirror2(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode, double duration1, double duration2) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - diff (int): Output parameter receiving the difference value between fingerprints. - pos (int): Output parameter receiving the position of the best match. - mirrorMode (int): Output parameter receiving the detected mirror mode. - duration1 (double): Duration of the first video in seconds. - duration2 (double): Duration of the second video in seconds. ### VFPSetLicenseKey(string) Sets the license key for the video fingerprinting library. ```csharp public static extern void VFPSetLicenseKey(string licenseKey) ``` #### Parameters Parameters: - licenseKey (string): The license key string to activate the library. --- # Class VFPAPI86 Link: api/VisioForge.Core.VideoFingerPrinting.VFPAPI86.html # Class VFPAPI86 # Class VFPAPI86 **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides access to the 32-bit (x86) native video fingerprinting API through platform invoke declarations. This class contains methods for fingerprint search, comparison, and image analysis operations. Note: 32-bit support is primarily for Windows; Linux and macOS typically use 64-bit libraries. ```csharp public static class VFPAPI86 ``` #### Inheritance #### Inherited Members ## Methods ### VFPCompare_Build(out int, nint) Builds the final fingerprint data from processed frames for comparison. ```csharp public static extern nint VFPCompare_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): Output parameter receiving the length of the fingerprint data. - pDataTmp (nint): Pointer to the comparison context. #### Returns Parameters: - (nint): Pointer to the built fingerprint data. ### VFPCompare_Clear(nint) Clears and releases resources associated with the comparison context. ```csharp public static extern void VFPCompare_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the comparison context to clear. ### VFPCompare_Compare(nint, int, nint, int, int) Compares two fingerprints and returns a similarity score. ```csharp public static extern double VFPCompare_Compare(nint pData1, int iLen1, nint pData2, int iLen2, int MaxS) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data. - iLen1 (int): Length of the first fingerprint data. - pData2 (nint): Pointer to the second fingerprint data. - iLen2 (int): Length of the second fingerprint data. - MaxS (int): Maximum shift allowed during comparison. #### Returns Parameters: - (double): Similarity score between 0 and 100, where higher values indicate greater similarity. ### VFPCompare_CompareMirror(nint, int, nint, int, int, out int) Compares two fingerprints with mirror detection support. ```csharp public static extern double VFPCompare_CompareMirror(nint data1, int len1, nint data2, int len2, int maxShift, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - maxShift (int): Maximum shift allowed during comparison. - mirrorMode (int): Output parameter receiving the detected mirror mode. #### Returns Parameters: - (double): Similarity score between 0 and 100, where higher values indicate greater similarity. ### VFPCompare_Init(int, nint) Initializes the fingerprint comparison engine with a specified frame count. ```csharp public static extern void VFPCompare_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. - pDataTmp (nint): Pointer to the temporary data structure for comparison operations. ### VFPCompare_Init2(int) Initializes the fingerprint comparison engine and returns a handle to the comparison context. ```csharp public static extern nint VFPCompare_Init2(int count) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. #### Returns Parameters: - (nint): A pointer to the initialized comparison context. ### VFPCompare_Process(nint, int, int, int, double, nint) Processes a video frame for fingerprint comparison operations. ```csharp public static extern int VFPCompare_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the frame pixel data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (bytes per row) of the frame data. - dTime (double): Timestamp of the frame in seconds. - pDataTmp (nint): Pointer to the comparison context. #### Returns Parameters: - (int): Status code indicating success (0) or failure. ### VFPSearch_Build(out int, nint) Builds the final fingerprint data from processed frames. ```csharp public static extern nint VFPSearch_Build(out int pLen, nint pDataTmp) ``` #### Parameters Parameters: - pLen (int): Output parameter receiving the length of the fingerprint data. - pDataTmp (nint): Pointer to the search context. #### Returns Parameters: - (nint): Pointer to the built fingerprint data. ### VFPSearch_Clear(nint) Clears and releases resources associated with the search context. ```csharp public static extern void VFPSearch_Clear(nint pDataTmp) ``` #### Parameters Parameters: - pDataTmp (nint): Pointer to the search context to clear. ### VFPSearch_Init(int, nint) Initializes the fingerprint search engine with a specified frame count. ```csharp public static extern void VFPSearch_Init(int count, nint pDataTmp) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. - pDataTmp (nint): Pointer to the temporary data structure for search operations. ### VFPSearch_Init2(int) Initializes the fingerprint search engine and returns a handle to the search context. ```csharp public static extern nint VFPSearch_Init2(int count) ``` #### Parameters Parameters: - count (int): The number of frames to allocate for processing. #### Returns Parameters: - (nint): A pointer to the initialized search context. ### VFPSearch_Process(nint, int, int, int, double, nint) Processes a video frame for fingerprint search operations. ```csharp public static extern int VFPSearch_Process(nint p, int w, int h, int s, double dTime, nint pDataTmp) ``` #### Parameters Parameters: - p (nint): Pointer to the frame pixel data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (bytes per row) of the frame data. - dTime (double): Timestamp of the frame in seconds. - pDataTmp (nint): Pointer to the search context. #### Returns Parameters: - (int): Status code indicating success (0) or failure. ### VFPSearch_Search(nint, int, int, nint, int, int, out double, int) Searches for matches between two fingerprints. ```csharp public static extern int VFPSearch_Search(nint pData1, int iLen1, int iSkip1, nint pData2, int iLen2, int iSkip2, out double pDiff, int maxDiff) ``` #### Parameters Parameters: - pData1 (nint): Pointer to the first fingerprint data. - iLen1 (int): Length of the first fingerprint data. - iSkip1 (int): Number of bytes to skip in the first fingerprint. - pData2 (nint): Pointer to the second fingerprint data. - iLen2 (int): Length of the second fingerprint data. - iSkip2 (int): Number of bytes to skip in the second fingerprint. - pDiff (double): Output parameter receiving the difference value between fingerprints. - maxDiff (int): Maximum allowed difference for a match. #### Returns Parameters: - (int): The position of the best match, or -1 if no match found. ### VFPSearch_SearchMirror(nint, int, nint, int, out int, out int, out int) Searches for matches between two fingerprints with mirror detection. ```csharp public static extern void VFPSearch_SearchMirror(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - diff (int): Output parameter receiving the difference value between fingerprints. - pos (int): Output parameter receiving the position of the best match. - mirrorMode (int): Output parameter receiving the detected mirror mode. ### VFPSearch_SearchMirror2(nint, int, nint, int, out int, out int, out int, double, double) Searches for matches between two fingerprints with mirror detection and duration hints. ```csharp public static extern void VFPSearch_SearchMirror2(nint data1, int len1, nint data2, int len2, out int diff, out int pos, out int mirrorMode, double duration1, double duration2) ``` #### Parameters Parameters: - data1 (nint): Pointer to the first fingerprint data. - len1 (int): Length of the first fingerprint data. - data2 (nint): Pointer to the second fingerprint data. - len2 (int): Length of the second fingerprint data. - diff (int): Output parameter receiving the difference value between fingerprints. - pos (int): Output parameter receiving the position of the best match. - mirrorMode (int): Output parameter receiving the detected mirror mode. - duration1 (double): Duration of the first video in seconds. - duration2 (double): Duration of the second video in seconds. ### VFPSetLicenseKey(string) Sets the license key for the video fingerprinting library. ```csharp public static extern void VFPSetLicenseKey(string licenseKey) ``` #### Parameters Parameters: - licenseKey (string): The license key string to activate the library. --- # Class VFPCompare Link: api/VisioForge.Core.VideoFingerPrinting.VFPCompare.html # Class VFPCompare # Class VFPCompare **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides static methods for building and comparing video fingerprints to determine content similarity. ```csharp public static class VFPCompare ``` #### Inheritance #### Inherited Members ## Methods ### Build(out long, ref VFPCompareData) Builds the final fingerprint data from all processed frames. ```csharp public static nint Build(out long length, ref VFPCompareData video) ``` #### Parameters Parameters: - length (long): Output parameter that receives the size of the fingerprint data in bytes. - video (VFPCompareData): Reference to the comparison data containing processed frame information. #### Returns Parameters: - (nint): Pointer to the newly allocated fingerprint data. Caller must free this memory using Marshal.FreeCoTaskMem. ### Compare(VFPFingerPrint, VFPFingerPrint, int) Compares two video fingerprints and returns a similarity score with automatic mirror detection. ```csharp public static double Compare(VFPFingerPrint fp1, VFPFingerPrint fp2, int maxDifference) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The first fingerprint to compare. - fp2 (VFPFingerPrint): The second fingerprint to compare. - maxDifference (int): Maximum allowed difference for comparison sensitivity (higher values allow more variation). #### Returns Parameters: - (double): Similarity score between 0 and 100, where higher values indicate greater similarity. #### Remarks

Enhanced with automatic mirror detection (v15.8.4+):

This method now automatically detects and matches videos that have been mirrored or rotated:

  • Horizontal flip (left-right mirror)
  • Vertical flip (top-bottom mirror)
  • 180-degree rotation (both horizontal and vertical flip)

The method returns the best match across all orientations, ensuring accurate comparison even when videos have been transformed. This enhancement requires no code changes - existing implementations will automatically benefit from improved matching accuracy.

Backward compatibility: Existing code continues to work without modification. The performance impact is minimal (up to 4x comparison time in worst case when checking all orientations).

Note: If you need to know which specific mirror transformation was detected, use the method instead, which returns both the similarity score and the detected mirror mode.

### CompareMirror(VFPFingerPrint, VFPFingerPrint, int) Compares two fingerprints with explicit mirror detection information. ```csharp public static VFPComparisonResult CompareMirror(VFPFingerPrint data1, VFPFingerPrint data2, int maxShift) ``` #### Parameters Parameters: - data1 (VFPFingerPrint): First fingerprint data. - data2 (VFPFingerPrint): Second fingerprint data. - maxShift (int): Maximum time shift allowed in seconds. #### Returns Parameters: - (VFPComparisonResult): Comparison result including similarity score and the specific mirror mode detected. #### Remarks

This method provides the same mirror detection capabilities as the standard method, but additionally returns information about which mirror transformation was detected.

Use cases:

  • When you need to know if videos are mirrored versions of each other
  • For forensic analysis requiring transformation details
  • When implementing UI that shows how videos match

The returned includes:

  • Difference: Similarity score (lower is better match)
  • MirrorMode: The specific transformation detected (None, Horizontal, Vertical, or Both)
  • Success: Whether the comparison completed successfully

Note: The standard method uses this functionality internally but only returns the similarity score for backward compatibility.

### Process(nint, int, int, int, TimeSpan, ref VFPCompareData) Processes a video frame in RGB24 format for fingerprint comparison. ```csharp public static int Process(nint ptr, int w, int h, int s, TimeSpan dTime, ref VFPCompareData data) ``` #### Parameters Parameters: - ptr (nint): Pointer to the RGB24 frame data. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (bytes per row) of the frame data. - dTime (TimeSpan): Timestamp of the frame from the beginning of the video. - data (VFPCompareData): Reference to the comparison data structure to update. #### Returns Parameters: - (int): Status code where 0 indicates success. ### SetLicenseKey(string) Sets the license key for the video fingerprinting library. ```csharp public static void SetLicenseKey(string licenseKey) ``` #### Parameters Parameters: - licenseKey (string): The license key string to activate fingerprinting features. --- # Struct VFPCompareData Link: api/VisioForge.Core.VideoFingerPrinting.VFPCompareData.html # Struct VFPCompareData # Struct VFPCompareData **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Manages native video fingerprint comparison data structures with proper memory lifecycle management. ```csharp public struct VFPCompareData ``` #### Inherited Members ## Constructors ### VFPCompareData(int) Initializes a new instance of the struct with the specified duration. ```csharp public VFPCompareData(int duration) ``` #### Parameters Parameters: - duration (int): The expected duration of the video in seconds for memory allocation. ## Properties ### Data Gets or sets the pointer to the native fingerprint comparison data structure. ```csharp public nint Data { readonly get; set; } ``` #### Property Value Parameters: - (nint): ## Methods ### Free() Releases the native memory resources associated with this comparison data structure. ```csharp public void Free() ``` --- # Class VFPComparisonResult Link: api/VisioForge.Core.VideoFingerPrinting.VFPComparisonResult.html # Class VFPComparisonResult # Class VFPComparisonResult **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents the result of a fingerprint comparison or search operation. ```csharp public class VFPComparisonResult ``` #### Inheritance #### Inherited Members ## Remarks This class encapsulates all information returned from a fingerprint comparison or search operation, including the similarity score, any detected video transformations, temporal alignment information, and the overall operation status. It is used by both whole-video comparison and fragment search operations. ## Properties ### Difference Gets or sets the difference score indicating how similar the fingerprints are. ```csharp public double Difference { get; set; } ``` #### Property Value Parameters: - (double): ### MirrorMode Gets or sets the detected mirror mode for the best match. ```csharp public VFPMirrorMode MirrorMode { get; set; } ``` #### Property Value Parameters: - (VFPMirrorMode): ### Success Gets or sets whether the comparison operation completed successfully. ```csharp public bool Success { get; set; } ``` #### Property Value Parameters: - (bool): ### TimeOffset Gets or sets the time offset in seconds where the best match was found. ```csharp public int TimeOffset { get; set; } ``` #### Property Value Parameters: - (int): --- # Delegate VFPErrorCallback Link: api/VisioForge.Core.VideoFingerPrinting.VFPErrorCallback.html # Delegate VFPErrorCallback # Delegate VFPErrorCallback **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents a callback method that reports errors during video fingerprinting operations. ```csharp public delegate void VFPErrorCallback(string error) ``` #### Parameters Parameters: - error (string): A descriptive error message explaining what went wrong during the fingerprinting operation. ## Remarks This callback is invoked when an error occurs during fingerprinting operations such as file access failures, codec issues, insufficient memory, or invalid parameters. The error message provides details to help diagnose and resolve the issue. After this callback is invoked, the fingerprinting operation typically terminates. --- # Class VFPFingerPrint Link: api/VisioForge.Core.VideoFingerPrinting.VFPFingerPrint.html # Class VFPFingerPrint # Class VFPFingerPrint **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents a video fingerprint containing unique characteristics of video content for identification and comparison. Supports serialization and deserialization of fingerprint data with metadata. ```csharp public class VFPFingerPrint ``` #### Inheritance #### Inherited Members ## Constructors ### VFPFingerPrint() Initializes a new instance of the class. ```csharp public VFPFingerPrint() ``` ## Properties ### Data Gets or sets the binary fingerprint data representing the video content signature. ```csharp public byte[] Data { get; set; } ``` #### Property Value Parameters: - (byte [ ]): ### Duration Gets or sets the duration of the fingerprinted video segment. ```csharp public TimeSpan Duration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### FrameRate Gets or sets the frame rate of the source video. ```csharp public double FrameRate { get; set; } ``` #### Property Value Parameters: - (double): ### Height Gets or sets the height of the source video frames used for fingerprinting. ```csharp public int Height { get; set; } ``` #### Property Value Parameters: - (int): ### ID Gets or sets the unique identifier for this fingerprint. ```csharp public Guid ID { get; set; } ``` #### Property Value Parameters: - (Guid): ### IgnoredAreas Gets the collection of rectangular regions that were ignored during fingerprint generation. ```csharp public List IgnoredAreas { get; set; } ``` #### Property Value Parameters: - (List < Rect >): ### OriginalDuration Gets or sets the total duration of the original source file. ```csharp public TimeSpan OriginalDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): ### OriginalFilename Gets or sets the path to the source file from which this fingerprint was generated. ```csharp public string OriginalFilename { get; set; } ``` #### Property Value Parameters: - (string): ### SupportsMirrorDetection Gets or sets whether this fingerprint supports mirror-aware comparison. ```csharp public bool SupportsMirrorDetection { get; set; } ``` #### Property Value Parameters: - (bool): #### Remarks This corresponds to fingerprint Version 2 and later. Older fingerprints (Version 1) do not support mirror detection. ### Tag Gets or sets an optional user-defined tag for categorizing or identifying this fingerprint. ```csharp public string Tag { get; set; } ``` #### Property Value Parameters: - (string): ### Version Gets or sets the fingerprint format version. ```csharp public int Version { get; set; } ``` #### Property Value Parameters: - (int): #### Remarks Different versions use different algorithms and data structures. Always use the latest version (2) for new fingerprints unless compatibility with older versions is required. ### Width Gets or sets the width of the source video frames used for fingerprinting. ```csharp public int Width { get; set; } ``` #### Property Value Parameters: - (int): ## Methods ### ~VFPFingerPrint() Finalizes an instance of the class. ```csharp protected ~VFPFingerPrint() ``` ### Load(string) Loads a video fingerprint from a file on disk. ```csharp public static VFPFingerPrint Load(string filename) ``` #### Parameters Parameters: - filename (string): The path to the fingerprint file to load. Recommended extension is .vsigx. #### Returns Parameters: - (VFPFingerPrint): A deserialized object containing the fingerprint data and metadata. #### Remarks This method deserializes fingerprint data saved in JSON format with custom binary encoding for the fingerprint data array. The file format supports both current and legacy versions. #### Exceptions Parameters: - (FileNotFoundException): Thrown when the specified file does not exist. - (JsonException): Thrown when the file contains invalid or corrupted fingerprint data. ### Load(byte[]) Loads a video fingerprint from a byte array in memory. ```csharp public static VFPFingerPrint Load(byte[] data) ``` #### Parameters Parameters: - data (byte [ ]): A byte array containing the serialized fingerprint data. #### Returns Parameters: - (VFPFingerPrint): A deserialized object containing the fingerprint data and metadata. #### Remarks This method is useful for loading fingerprints that have been transmitted over a network, retrieved from a database, or stored in memory. The data must be in the same JSON format used by the method. #### Exceptions Parameters: - (JsonException): Thrown when the data contains invalid or corrupted fingerprint information. ### Save(string) Saves the fingerprint to a file on disk. ```csharp public void Save(string filename) ``` #### Parameters Parameters: - filename (string): The destination file path. Recommended extension is .vsigx (.sig for legacy compatibility). #### Remarks If the file already exists, it will be deleted before writing the new fingerprint data. The fingerprint is serialized to JSON format with custom binary encoding for efficient storage. Legacy extension .sig is supported for backward compatibility, but .vsigx is recommended. #### Exceptions Parameters: - (IOException): Thrown when the file cannot be written due to permissions or disk space issues. ### Save() Serializes the fingerprint to a byte array for in-memory storage or transmission. ```csharp public byte[] Save() ``` #### Returns Parameters: - (byte [ ]): A byte array containing the serialized fingerprint data in JSON format with binary encoding. #### Remarks The returned byte array can be stored in a database, transmitted over a network, or kept in memory. It can later be deserialized using the method. The data is compact and includes all fingerprint metadata and settings. --- # Class VFPFingerPrintDB Link: api/VisioForge.Core.VideoFingerPrinting.VFPFingerPrintDB.html # Class VFPFingerPrintDB # Class VFPFingerPrintDB **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents a database of video fingerprints for managing and searching video content signatures. ```csharp public class VFPFingerPrintDB ``` #### Inheritance #### Inherited Members ## Remarks The class provides functionality to store, retrieve, and manage video fingerprints. It supports serialization to persist fingerprint databases to disk and provides methods to check for duplicate content based on fingerprint signatures. ## Constructors ### VFPFingerPrintDB() Initializes a new instance of the class. ```csharp public VFPFingerPrintDB() ``` ## Properties ### Items Gets or sets the collection of video fingerprints stored in the database. ```csharp public List Items { get; set; } ``` #### Property Value Parameters: - (List < VFPFingerPrint >): ## Methods ### ContainsFile(VFPFingerprintSource) Checks whether the database contains a fingerprint matching the specified source configuration. ```csharp public bool ContainsFile(VFPFingerprintSource source) ``` #### Parameters Parameters: - source (VFPFingerprintSource): A specifying the filename and ignored areas to search for. #### Returns Parameters: - (bool): true if the database contains a fingerprint with matching filename and ignored areas; otherwise, false. #### Remarks This method performs an exact match on both the filename and the ignored areas configuration. Two sources are considered matching only if they have the same filename and identical ignored area rectangles (order-independent). This helps avoid duplicate fingerprints and enables fingerprint caching to skip re-processing of previously analyzed videos. ### ~VFPFingerPrintDB() Finalizes an instance of the class. ```csharp protected ~VFPFingerPrintDB() ``` ### GetFingerprint(VFPFingerprintSource) Retrieves a fingerprint from the database that matches the specified source. ```csharp public VFPFingerPrint GetFingerprint(VFPFingerprintSource source) ``` #### Parameters Parameters: - source (VFPFingerprintSource): The fingerprint source containing the filename and ignored areas to match against. #### Returns Parameters: - (VFPFingerPrint): The matching if found; otherwise, null. #### Remarks This method searches for an exact match based on both the filename and the ignored areas configuration. If multiple fingerprints exist for the same file with different ignored areas, only the one with matching ignored areas will be returned. ### Load(string) Loads a fingerprint database from a file on disk. ```csharp public static VFPFingerPrintDB Load(string filename) ``` #### Parameters Parameters: - filename (string): The path to the database file to load. Recommended extension is .vsigx. #### Returns Parameters: - (VFPFingerPrintDB): A deserialized object containing all stored fingerprints. If the file cannot be loaded or contains invalid data, returns an empty database instance. #### Remarks This method gracefully handles errors by returning an empty database if the file is corrupted, inaccessible, or contains invalid data. Error details are logged to the console and debug output. This ensures the application can continue running even if the database file is damaged. ### Save(string) Saves the fingerprint database to a file on disk. ```csharp public void Save(string filename) ``` #### Parameters Parameters: - filename (string): The destination file path for the database. Recommended extension is .vsigx. #### Remarks The entire database, including all fingerprints and their metadata, is serialized to JSON format with custom binary encoding. This allows efficient storage and retrieval of large fingerprint collections. #### Exceptions Parameters: - (IOException): Thrown when the file cannot be written due to permissions or disk space issues. --- # Class VFPFingerprintFromFrames Link: api/VisioForge.Core.VideoFingerPrinting.VFPFingerprintFromFrames.html # Class VFPFingerprintFromFrames # Class VFPFingerprintFromFrames **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Creates video fingerprints from individual image frames. ```csharp public class VFPFingerprintFromFrames ``` #### Inheritance #### Inherited Members ## Remarks The class allows creation of video fingerprints from a sequence of image frames rather than from a video file. This is useful when processing video streams, generated content, or when frames are already available in memory. The class accepts frames in RGB24 format, SKBitmap objects (cross-platform), or Bitmap objects (Windows only) and builds a fingerprint that can be used for content matching. ## Constructors ### VFPFingerprintFromFrames(double, int, int, TimeSpan) Initializes a new instance of the class. ```csharp public VFPFingerprintFromFrames(double frameRate, int width, int height, TimeSpan totalDuration) ``` #### Parameters Parameters: - frameRate (double): The frame rate of the video in frames per second. - width (int): The width of the video frames in pixels. - height (int): The height of the video frames in pixels. - totalDuration (TimeSpan): The total expected duration of the video content. #### Remarks All frames pushed to this instance must match the specified width and height. The frame rate is used to calculate proper timestamps for each frame. The total duration should be an estimate of the complete video length to properly initialize the fingerprinting algorithm. ## Methods ### Build() Builds the final video fingerprint from all processed frames. ```csharp public VFPFingerPrint Build() ``` #### Returns Parameters: - (VFPFingerPrint): A object containing the generated fingerprint data and metadata about the video. #### Remarks This method should be called after all frames have been pushed using the Push methods. It finalizes the fingerprint generation process and returns a fingerprint object that can be saved to disk or used for comparison operations. After calling Build, the internal resources are freed and this instance should not be used further. ### ~VFPFingerprintFromFrames() Finalizes an instance of the class. ```csharp protected ~VFPFingerprintFromFrames() ``` #### Remarks The finalizer ensures that any unmanaged memory allocated for temporary frame buffers is properly released even if Dispose is not called explicitly. ### Push(byte[]) Adds an RGB24 frame to the fingerprint generation process. ```csharp public void Push(byte[] rgb24frame) ``` #### Parameters Parameters: - rgb24frame (byte [ ]): A byte array containing the frame data in RGB24 format (3 bytes per pixel). #### Remarks The frame data must be in RGB24 format with pixels stored in row-major order. Each pixel consists of 3 bytes representing red, green, and blue channels. Frames should be pushed in chronological order for accurate fingerprint generation. #### Exceptions Parameters: - (Exception): Thrown when the buffer size doesn't match the expected size (width * height * 3). ### Push(SKBitmap) Adds a SkiaSharp bitmap frame to the fingerprint generation process. ```csharp public void Push(SKBitmap frame) ``` #### Parameters Parameters: - frame (SKBitmap): A containing the video frame. #### Remarks The method accepts SKBitmap in any pixel format and automatically converts it to RGB24 format. The bitmap is not modified and can be reused after this call. Frames should be pushed in chronological order. This method is available on all platforms. #### Exceptions Parameters: - (Exception): Thrown when the frame dimensions don't match the expected width and height. ### Push(nint, int) Adds an RGB24 frame from unmanaged memory to the fingerprint generation process. ```csharp public void Push(nint rgb24frame, int rgb24frameSize) ``` #### Parameters Parameters: - rgb24frame (nint): Pointer to the frame data in RGB24 format in unmanaged memory. - rgb24frameSize (int): Size of the frame data in bytes. Must equal width * height * 3. #### Remarks This method is useful when working with frames from native libraries or when frames are already available in unmanaged memory. The timestamp for each frame is automatically calculated based on the frame rate and the order in which frames are pushed. --- # Class VFPFingerprintSource Link: api/VisioForge.Core.VideoFingerPrinting.VFPFingerprintSource.html # Class VFPFingerprintSource # Class VFPFingerprintSource **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents a source file configuration for video fingerprinting operations. ```csharp public class VFPFingerprintSource ``` #### Inheritance #### Inherited Members ## Remarks The class encapsulates all the settings and parameters needed to generate a video fingerprint from a media file. It supports temporal trimming, spatial cropping, resolution adjustment, and the ability to ignore specific regions of the video frame during fingerprint generation. ## Constructors ### VFPFingerprintSource(string) Initializes a new instance of the class. ```csharp public VFPFingerprintSource(string filename) ``` #### Parameters Parameters: - filename (string): The path to the video file to be used as a fingerprint source. #### Remarks The constructor automatically reads the video duration from the file metadata and initializes the StopTime to match the full duration. The CustomResolution is set to and CustomCropSize is initialized to an empty rectangle. #### Exceptions Parameters: - (FileNotFoundException): Thrown when the specified file does not exist. ## Properties ### CustomCropSize Gets or sets the custom crop rectangle to apply to video frames before fingerprinting. ```csharp public Rect CustomCropSize { get; set; } ``` #### Property Value Parameters: - (Rect): #### Remarks Cropping is applied before any resolution changes. Use this to remove black bars, watermarks, or other static elements that might interfere with fingerprint matching. ### CustomResolution Gets or sets the custom resolution to which video frames should be resized before fingerprinting. ```csharp public Size CustomResolution { get; set; } ``` #### Property Value Parameters: - (Size): #### Remarks Resizing occurs after cropping but before fingerprint generation. Standardizing resolution can improve matching performance and reduce computational requirements. ### Filename Gets or sets the path to the source media file for fingerprinting. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): #### Exceptions Parameters: - (FileNotFoundException): Thrown when the specified file does not exist during object construction. ### IgnoredAreas Gets the collection of rectangular areas to be ignored during fingerprint generation. ```csharp public List IgnoredAreas { get; } ``` #### Property Value Parameters: - (List < Rect >): #### Remarks Ignored areas are applied after cropping but before resizing. This feature is useful for excluding dynamic overlays such as channel logos, timestamps, or other burn-in graphics that would otherwise interfere with content matching. The rectangles are defined in the coordinate space of the cropped (but not yet resized) frame. ### OriginalDuration Gets or sets the original duration of the source media file. ```csharp public TimeSpan OriginalDuration { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks This value is automatically populated when the source file is loaded and represents the complete duration of the media file, regardless of the StartTime and StopTime settings. ### StartTime Gets or sets the start time for fingerprint generation within the video. ```csharp public TimeSpan StartTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use this property to skip introductions or other unwanted content at the beginning of the video. ### StopTime Gets or sets the stop time for fingerprint generation within the video. ```csharp public TimeSpan StopTime { get; set; } ``` #### Property Value Parameters: - (TimeSpan): #### Remarks Use this property to exclude end credits or other unwanted content at the end of the video. The actual duration analyzed will be StopTime - StartTime. --- # Enum VFPMirrorMode Link: api/VisioForge.Core.VideoFingerPrinting.VFPMirrorMode.html # Enum VFPMirrorMode # Enum VFPMirrorMode **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Specifies the mirror mode detected or applied during fingerprint comparison. ```csharp [Flags] public enum VFPMirrorMode ``` ## Fields Parameters: - None (): No mirroring detected. The video content is in its original orientation. - Horizontal (): Horizontal flip detected. The video is mirrored left-to-right (mirror image). - Vertical (): Vertical flip detected. The video is flipped top-to-bottom (upside down). - Both (): Both horizontal and vertical flips detected. The video is rotated 180 degrees. ## Remarks This enumeration is used to identify video transformations that may occur when content is reprocessed, broadcast, or redistributed. Video content may be mirrored horizontally (left-right flip) to avoid copyright detection, or flipped vertically due to processing errors. The fingerprinting system can detect these transformations automatically and report the best match regardless of mirroring. This flag enumeration allows combinations of transformations to be represented. --- # Delegate VFPProgressCallback Link: api/VisioForge.Core.VideoFingerPrinting.VFPProgressCallback.html # Delegate VFPProgressCallback # Delegate VFPProgressCallback **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Represents a callback method that reports progress during video fingerprinting operations. ```csharp public delegate void VFPProgressCallback(int percent) ``` #### Parameters Parameters: - percent (int): The progress percentage from 0 to 100, indicating how much of the fingerprinting operation has been completed. ## Remarks This callback is invoked periodically during lengthy fingerprinting operations to provide feedback on the operation's progress. The percent value increases monotonically from 0 (operation started) to 100 (operation complete). Implementations should return quickly to avoid blocking the fingerprinting process. --- # Class VFPSearch Link: api/VisioForge.Core.VideoFingerPrinting.VFPSearch.html # Class VFPSearch # Class VFPSearch **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Provides static methods for building and analyzing video fingerprints for content matching. ```csharp public static class VFPSearch ``` #### Inheritance #### Inherited Members ## Remarks The class is the main entry point for video fingerprint search operations. It provides methods to process video frames, build fingerprints from the processed data, and search for matching content between different fingerprints. All methods are static and interact with the native video fingerprinting library through P/Invoke calls. ## Methods ### Build(out long, ref VFPSearchData) Builds a fingerprint from the accumulated frame data. ```csharp public static nint Build(out long length, ref VFPSearchData video) ``` #### Parameters Parameters: - length (long): When this method returns, contains the length of the fingerprint data in bytes. - video (VFPSearchData): The instance containing the processed frame data. #### Returns Parameters: - (nint): A pointer to the newly allocated memory containing the fingerprint data. The caller is responsible for freeing this memory using . #### Remarks This method should be called after all frames have been processed using the method. The returned fingerprint can be saved to disk or used for searching operations. The method allocates new memory for the fingerprint data which must be freed by the caller. ### Process(nint, int, int, int, TimeSpan, ref VFPSearchData) Processes a single video frame for fingerprint generation. ```csharp public static int Process(nint ptr, int w, int h, int s, TimeSpan time, ref VFPSearchData video) ``` #### Parameters Parameters: - ptr (nint): Pointer to the RGB24 frame data in native memory. - w (int): Width of the frame in pixels. - h (int): Height of the frame in pixels. - s (int): Stride (row pitch) of the frame data in bytes. - time (TimeSpan): The timestamp of the frame relative to the start of the video. - video (VFPSearchData): The instance accumulating fingerprint data. #### Returns Parameters: - (int): Returns 1 if processing was successful, 0 if invalid parameters were provided. #### Remarks This method should be called for each frame of the video in chronological order. The frame data must be in RGB24 format. Invalid dimensions or stride values will result in the method returning 0 without processing the frame. ### Search(VFPFingerPrint, int, VFPFingerPrint, int, out double, int) Searches for a video fragment within another video using fingerprint matching with automatic mirror detection. ```csharp public static int Search(VFPFingerPrint fp1, int skip1, VFPFingerPrint fp2, int skip2, out double difference, int maxDiff) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The fingerprint of the video fragment to search for (needle). - skip1 (int): Number of seconds to skip from the beginning of the first fingerprint. - fp2 (VFPFingerPrint): The fingerprint of the video to search within (haystack). - skip2 (int): Number of seconds to skip from the beginning of the second fingerprint. - difference (double): When this method returns, contains the calculated difference score between the best match found. Lower values indicate better matches. - maxDiff (int): The maximum allowed difference threshold. Matches with differences exceeding this value will not be considered valid. #### Returns Parameters: - (int): The position (in seconds) within fp2 where fp1 was found, or if no match was found within the difference threshold. #### Remarks

This method performs a sliding window search to find the best match location. The search is optimized for finding video fragments that may have undergone slight modifications such as compression, scaling, or minor edits.

Enhanced with automatic mirror detection (v15.8.4+):

The search now automatically detects and matches video fragments that have been transformed:

  • Horizontally flipped (mirrored left-right)
  • Vertically flipped (mirrored top-bottom)
  • Rotated 180 degrees (both flips combined)

This enhancement dramatically improves the ability to find matching content in videos that have been intentionally modified to avoid detection, such as:

  • Copyright infringement attempts using mirrored uploads
  • Social media videos flipped to bypass content matching
  • Surveillance footage from different camera orientations

Backward compatibility: Existing code works without modification. The method automatically checks all orientations and returns the best match. Performance impact is proportional to the search space but optimized to minimize overhead.

Note: If you need to know which specific mirror transformation was detected, use the method instead.

### SearchMirror(VFPFingerPrint, VFPFingerPrint) Searches for a video fragment within another video with explicit mirror detection information. ```csharp public static VFPComparisonResult SearchMirror(VFPFingerPrint fp1, VFPFingerPrint fp2) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The fingerprint of the video fragment to search for (needle). - fp2 (VFPFingerPrint): The fingerprint of the video to search within (haystack). #### Returns Parameters: - (VFPComparisonResult): Search result including position, difference score, and the specific mirror mode detected. #### Remarks

This method provides the same mirror detection capabilities as the standard method, but additionally returns detailed information about which mirror transformation was detected.

Use cases:

  • Content moderation systems that need to log how videos were modified
  • Forensic analysis requiring transformation documentation
  • Analytics dashboards showing common transformation patterns
  • Automated correction systems that can un-mirror detected content

The returned includes:

  • TimeOffset: Position in seconds where the match was found
  • Difference: Match quality score (lower is better)
  • MirrorMode: The specific transformation (None, Horizontal, Vertical, or Both)
  • Success: Whether the search completed successfully

Note: The standard method uses this functionality internally for mirror detection but only returns the position and difference for backward compatibility.

### SearchMirror(VFPFingerPrint, VFPFingerPrint, double, double) Searches for a video fragment within another video with explicit mirror detection and duration optimization. ```csharp public static VFPComparisonResult SearchMirror(VFPFingerPrint fp1, VFPFingerPrint fp2, double duration1, double duration2) ``` #### Parameters Parameters: - fp1 (VFPFingerPrint): The fingerprint of the video fragment to search for (needle). - fp2 (VFPFingerPrint): The fingerprint of the video to search within (haystack). - duration1 (double): Duration of the first video in seconds for search optimization. - duration2 (double): Duration of the second video in seconds for search optimization. #### Returns Parameters: - (VFPComparisonResult): Search result including position, difference score, and the specific mirror mode detected. #### Remarks

This overload accepts duration hints to optimize the search algorithm for better performance when video lengths are known in advance. The duration information helps:

  • Optimize memory allocation for search buffers
  • Improve search window calculations
  • Reduce unnecessary comparisons at video boundaries

Mirror detection modes returned:

  • None: Videos match in original orientation
  • Horizontal: Match found with horizontal flip
  • Vertical: Match found with vertical flip
  • Both: Match found with 180-degree rotation

Performance tip: Providing accurate duration values can improve search performance by up to 20% for long videos by eliminating impossible match positions early in the search process.

### SetLicenseKey(string) Sets the license key for the video fingerprinting library. ```csharp public static void SetLicenseKey(string licenseKey) ``` #### Parameters Parameters: - licenseKey (string): The license key string provided by VisioForge. #### Remarks A valid license key is required to use the video fingerprinting functionality without limitations. Call this method once during application initialization before using any other fingerprinting features. --- # Class VFPSearchData Link: api/VisioForge.Core.VideoFingerPrinting.VFPSearchData.html # Class VFPSearchData # Class VFPSearchData **Namespace**: VisioForge.Core.VideoFingerPrinting **Assembly**: VisioForge.Core.dll Manages native memory allocation for video fingerprint search operations. ```csharp public class VFPSearchData : IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks The class encapsulates unmanaged memory used by the native video fingerprinting library during search operations. It implements to ensure proper cleanup of native resources. The memory allocation size varies between x86 (48 bytes) and x64 (80 bytes) platforms. ## Constructors ### VFPSearchData(TimeSpan) Initializes a new instance of the class. ```csharp public VFPSearchData(TimeSpan duration) ``` #### Parameters Parameters: - duration (TimeSpan): The expected duration of the video content to be processed. #### Remarks The constructor allocates platform-specific amounts of unmanaged memory (48 bytes for x86, 80 bytes for x64) and initializes the native search structure with the specified duration. ## Properties ### Data Gets or sets the pointer to the native search data structure. ```csharp public nint Data { get; set; } ``` #### Property Value Parameters: - (nint): #### Remarks This pointer is allocated during construction and must be properly freed by calling or disposing the object. ## Methods ### Dispose() Releases all resources used by the instance. ```csharp public void Dispose() ``` #### Remarks This method implements the pattern and ensures that unmanaged memory is properly freed. It also suppresses finalization to improve performance. ### Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): true to release both managed and unmanaged resources; false to release only unmanaged resources. #### Remarks This method follows the standard dispose pattern. When called from the finalizer (disposing = false), only unmanaged resources are freed. When called from Dispose() (disposing = true), both managed and unmanaged resources are freed. ### ~VFPSearchData() Finalizes an instance of the class. ```csharp protected ~VFPSearchData() ``` ### Free() Releases the unmanaged memory allocated for search data. ```csharp public void Free() ``` #### Remarks This method clears the native search structure and sets the data pointer to . It is automatically called during disposal but can be called manually if immediate cleanup is required. ### X86() Determines whether the current process is running as a 32-bit (x86) application. ```csharp public static bool X86() ``` #### Returns Parameters: - (bool): true if the process is 32-bit; false if it is 64-bit. #### Remarks This method is used internally to determine the correct memory allocation size for platform-specific structures. --- # Namespace VisioForge.Core.VideoFingerPrinting Link: api/VisioForge.Core.VideoFingerPrinting.html # Namespace VisioForge.Core.VideoFingerPrinting # Namespace VisioForge.Core.VideoFingerPrinting ### Classes Parameters: - (): Custom JSON converter for byte arrays that handles binary data serialization and deserialization. Supports reading from Base64 strings, numeric arrays, and null values. - (): Provides video frame extraction and processing capabilities for video fingerprinting operations. - (): Provides example usage of the mirror-aware video fingerprinting comparison APIs. - (): Provides platform-agnostic access to the native video fingerprinting library functions. - (): Provides access to the 64-bit native video fingerprinting API through platform invoke declarations. This class contains methods for fingerprint search, comparison, and image analysis operations. Supports Windows, Linux, and macOS platforms. - (): Provides access to the 32-bit (x86) native video fingerprinting API through platform invoke declarations. This class contains methods for fingerprint search, comparison, and image analysis operations. Note: 32-bit support is primarily for Windows; Linux and macOS typically use 64-bit libraries. - (): Provides high-level methods for video fingerprinting analysis, comparison, and search operations. - (): Provides static methods for building and comparing video fingerprints to determine content similarity. - (): Represents the result of a fingerprint comparison or search operation. - (): Represents a video fingerprint containing unique characteristics of video content for identification and comparison. Supports serialization and deserialization of fingerprint data with metadata. - (): Represents a database of video fingerprints for managing and searching video content signatures. - (): Creates video fingerprints from individual image frames. - (): Represents a source file configuration for video fingerprinting operations. - (): Provides static methods for building and analyzing video fingerprints for content matching. - (): Manages native memory allocation for video fingerprint search operations. ### Structs Parameters: - (): Manages native video fingerprint comparison data structures with proper memory lifecycle management. ### Enums Parameters: - (): Specifies the mirror mode detected or applied during fingerprint comparison. ### Delegates Parameters: - (): Represents a callback method that reports errors during video fingerprinting operations. - (): Represents a callback method that reports progress during video fingerprinting operations. --- # Class VisioForgeX Link: api/VisioForge.Core.VisioForgeX.html # Class VisioForgeX # Class VisioForgeX **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll Provides static methods for initializing, managing, and destroying the VisioForge SDK. This class serves as the main entry point for setting up the SDK environment and controlling its lifecycle. ```csharp public static class VisioForgeX ``` #### Inheritance #### Inherited Members ## Examples
// Initialize the SDK when your application starts.
VisioForgeX.InitSDK();

// Check if the SDK is initialized.
if (VisioForgeX.IsSDKInitialized)
{
    Console.WriteLine("VisioForge SDK is ready.");
}

// Perform media operations...

// Destroy the SDK when your application exits to release resources.
VisioForgeX.DestroySDK();
## Remarks Proper initialization and destruction of the SDK are crucial for resource management and application stability. The SDK relies on GStreamer, and this class handles the underlying GStreamer initialization and cleanup. ## Properties ### DebugLevel Gets or sets the debug level for GStreamer messages. This controls the verbosity of logging from the underlying GStreamer framework. ```csharp public static DebugLevel DebugLevel { get; set; } ``` #### Property Value Parameters: - (DebugLevel): ### IsSDKInitialized Gets a value indicating whether the VisioForge SDK is currently initialized. ```csharp public static bool IsSDKInitialized { get; } ``` #### Property Value Parameters: - (bool): ## Methods ### DestroySDK() Destroys the VisioForge SDK, releasing all allocated resources. This method should be called when the application no longer needs the SDK to prevent resource leaks. ```csharp public static bool DestroySDK() ``` #### Returns Parameters: - (bool): true if the SDK was successfully destroyed; otherwise, false. ### InitSDK(ContextX, bool) Initializes the VisioForge SDK synchronously. This method performs the necessary setup for the SDK, including GStreamer initialization. ```csharp public static void InitSDK(ContextX context = null, bool editing = false) ``` #### Parameters Parameters: - context (ContextX): Optional. The to use for initialization. If null, a default context is created. - editing (bool): Optional. A boolean value indicating whether the SDK is initialized for editing purposes. Defaults to false. ### InitSDKAsync(ContextX, bool) Initializes the VisioForge SDK asynchronously. This method performs the necessary setup for the SDK, including GStreamer initialization. ```csharp public static Task InitSDKAsync(ContextX context = null, bool editing = false) ``` #### Parameters Parameters: - context (ContextX): Optional. The to use for initialization. If null, a default context is created. - editing (bool): Optional. A boolean value indicating whether the SDK is initialized for editing purposes. Defaults to false. #### Returns Parameters: - (Task): A representing the asynchronous initialization operation. --- # Namespace VisioForge.Core Link: api/VisioForge.Core.html # Namespace VisioForge.Core # Namespace VisioForge.Core ### Namespaces Parameters: - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): - (): ### Classes Parameters: - (): Provides a base context class for logging operations and utility functions across the VisioForge SDK. This class serves as a foundation for other SDK components, offering centralized logging capabilities and shared utilities like random number generation. - (): Provides specialized enumeration for Allied Vision industrial cameras using the Vimba X SDK integration. - (): Class NativeAPI. - (): Redist links. - (): TagLib helper for tags copying. - (): Provides static methods for initializing, managing, and destroying the VisioForge SDK. This class serves as the main entry point for setting up the SDK environment and controlling its lifecycle. - (): ZIP resource. - (): ZIP resource manager. --- # Class ZIPResource Link: api/VisioForge.Core.ZIPResource.html # Class ZIPResource # Class ZIPResource **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll ZIP resource. ```csharp public class ZIPResource ``` #### Inheritance #### Inherited Members ## Constructors ### ZIPResource(string, string, object) Initializes a new instance of the class. ```csharp public ZIPResource(string filename, string name, object data) ``` #### Parameters Parameters: - filename (string): The filename. - name (string): The name. - data (object): The data. ## Properties ### Data Gets or sets the data. ```csharp public object Data { get; set; } ``` #### Property Value Parameters: - (object): ### Filename Gets or sets the filename. ```csharp public string Filename { get; set; } ``` #### Property Value Parameters: - (string): ### Name Gets or sets the name. ```csharp public string Name { get; set; } ``` #### Property Value Parameters: - (string): ## Methods ### GetData() Gets the data. ```csharp public byte[] GetData() ``` #### Returns Parameters: - (byte [ ]): System.Byte[]. --- # Class ZIPResourceManager Link: api/VisioForge.Core.ZIPResourceManager.html # Class ZIPResourceManager # Class ZIPResourceManager **Namespace**: VisioForge.Core **Assembly**: VisioForge.Core.dll ZIP resource manager. ```csharp public class ZIPResourceManager ``` #### Inheritance #### Inherited Members ## Constructors ### ZIPResourceManager(Assembly) Initializes a new instance of the class. ```csharp public ZIPResourceManager(Assembly assembly) ``` #### Parameters Parameters: - assembly (Assembly): The assembly. ## Properties ### Resources Gets the resources. ```csharp public Dictionary Resources { get; } ``` #### Property Value Parameters: - (Dictionary < string , ZIPResource >): ## Methods ### GetTextValue(string) Gets the text value. ```csharp public string GetTextValue(string name) ``` #### Parameters Parameters: - name (string): The name. #### Returns Parameters: - (string): System.String. --- # Interface IMQTTClient Link: api/VisioForge.Plugins.MQTT.IMQTTClient.html # Interface IMQTTClient # Interface IMQTTClient **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Marker interface for MQTT client implementations. ```csharp public interface IMQTTClient ``` ## Remarks This interface serves as a contract for MQTT client functionality within the VisioForge plugin ecosystem. Implementations should provide methods for connecting, publishing, subscribing, and managing MQTT broker connections. --- # Interface IMQTTOutputSettings Link: api/VisioForge.Plugins.MQTT.IMQTTOutputSettings.html # Interface IMQTTOutputSettings # Interface IMQTTOutputSettings **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Defines configuration settings for MQTT output streams. ```csharp public interface IMQTTOutputSettings ``` ## Remarks This interface provides a common contract for configuring different types of MQTT output streams, allowing implementations to specify the data format being transmitted. ## Properties ### StreamType Gets the type of data stream being transmitted via MQTT. ```csharp MQTTDataType StreamType { get; } ``` #### Property Value Parameters: - (MQTTDataType): --- # Class MQTTOutputBlock Link: api/VisioForge.Plugins.MQTT.MediaBlocks.MQTTOutputBlock.html # Class MQTTOutputBlock # Class MQTTOutputBlock **Namespace**: VisioForge.Plugins.MQTT.MediaBlocks **Assembly**: VisioForge.Plugins.MQTT.dll Provides a media block that outputs video and audio frames to an MQTT broker. ```csharp public class MQTTOutputBlock : BufferSinkBlock, IMediaBlock, IDisposable, IMediaBlockInternals ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class extends to enable publishing media frames (video, audio, or data) to an MQTT topic. It automatically handles JPEG-encoded video frames and can be extended to support PCM audio data streaming. The block integrates with the VisioForge media pipeline architecture. ## Constructors ### MQTTOutputBlock(MQTTClient, string) Initializes a new instance of the class with the specified MQTT client and topic. ```csharp public MQTTOutputBlock(MQTTClient mqttClient, string topic) ``` #### Parameters Parameters: - mqttClient (MQTTClient): The instance to use for publishing messages. - topic (string): The MQTT topic to publish media frames to. ### MQTTOutputBlock() Initializes a new instance of the class without MQTT client configuration. ```csharp public MQTTOutputBlock() ``` #### Remarks When using this constructor, the block will not publish any data as no MQTT client is configured. This constructor may be used for testing or placeholder scenarios. ## Methods ### Build() Builds and initializes the MQTT output block, setting up event handlers for media frame processing. ```csharp public override bool Build() ``` #### Returns Parameters: - (bool): True if the block was successfully built and initialized; false if the MQTT client is not configured or if the base build failed. #### Remarks This method registers event handlers for data, video, and audio frame buffers. The block will only successfully build if an MQTT client is configured via the appropriate constructor. --- # Namespace VisioForge.Plugins.MQTT.MediaBlocks Link: api/VisioForge.Plugins.MQTT.MediaBlocks.html # Namespace VisioForge.Plugins.MQTT.MediaBlocks # Namespace VisioForge.Plugins.MQTT.MediaBlocks ### Classes Parameters: - (): Provides a media block that outputs video and audio frames to an MQTT broker. --- # Class MQTTClient Link: api/VisioForge.Plugins.MQTT.MQTTClient.html # Class MQTTClient # Class MQTTClient **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Provides MQTT client functionality for publishing and subscribing to MQTT broker messages. ```csharp public class MQTTClient : IMQTTClient, IDisposable ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class wraps the MQTTnet library to provide simplified MQTT client operations including connection management, message publishing with various payload types, and topic subscription management. Supports asynchronous operations and proper resource cleanup through IDisposable pattern. ## Methods ### ConnectAsync(string, int, string, string, CancellationToken?) Asynchronously connects to an MQTT broker server. ```csharp public Task ConnectAsync(string server, int port, string username = null, string password = null, CancellationToken? cancellationToken = null) ``` #### Parameters Parameters: - server (string): The hostname or IP address of the MQTT broker server. - port (int): The port number of the MQTT broker server. - username (string): Optional username for authentication. Can be null if authentication is not required. - password (string): Optional password for authentication. Can be null if authentication is not required. - cancellationToken (CancellationToken ?): Optional cancellation token to cancel the operation. If null, the operation cannot be cancelled. #### Returns Parameters: - (Task < bool >): A task that represents the asynchronous operation. The task result contains true if the connection was successful, otherwise false. #### Remarks This method creates a new MQTT client and establishes a connection to the specified broker. If both username and password are provided, they will be used for authentication. The connection uses TCP transport without TLS by default. ### DisconnectAsync() Asynchronously disconnects from the MQTT broker server. ```csharp public Task DisconnectAsync() ``` #### Returns Parameters: - (Task): A task that represents the asynchronous disconnect operation. #### Remarks This method gracefully disconnects from the MQTT broker. If the client is not connected, the method returns immediately. ### Dispose(bool) Releases the unmanaged resources used by the and optionally releases the managed resources. ```csharp protected virtual void Dispose(bool disposing) ``` #### Parameters Parameters: - disposing (bool): True to release both managed and unmanaged resources; false to release only unmanaged resources. ### Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ```csharp public void Dispose() ``` #### Remarks This method disposes the underlying MQTT client and releases all associated resources. After disposal, the client instance should not be reused. ### ~MQTTClient() Finalizes an instance of the class. ```csharp protected ~MQTTClient() ``` ### PublishAsync(string, string, CancellationToken?) Asynchronously publishes a string message to the specified MQTT topic. ```csharp public Task PublishAsync(string topic, string payload, CancellationToken? cancellationToken = null) ``` #### Parameters Parameters: - topic (string): The MQTT topic to publish the message to. - payload (string): The string payload to publish. - cancellationToken (CancellationToken ?): Optional cancellation token to cancel the operation. If null, the operation cannot be cancelled. #### Returns Parameters: - (Task): A task that represents the asynchronous publish operation. #### Remarks This method publishes a text message to the specified topic. If the client is not connected, the method returns immediately without publishing. ### PublishAsync(string, MQTTJPEGFrame, CancellationToken?) Asynchronously publishes a JPEG-encoded video frame to the specified MQTT topic. ```csharp public Task PublishAsync(string topic, MQTTJPEGFrame data, CancellationToken? cancellationToken = null) ``` #### Parameters Parameters: - topic (string): The MQTT topic to publish the frame to. - data (MQTTJPEGFrame): The containing the JPEG-encoded image data to publish. - cancellationToken (CancellationToken ?): Optional cancellation token to cancel the operation. If null, the operation cannot be cancelled. #### Returns Parameters: - (Task): A task that represents the asynchronous publish operation. #### Remarks This method publishes binary JPEG frame data to the specified topic. If the client is not connected, the method returns immediately without publishing. The frame's timestamp is not included in the message payload but could be added as a user property if needed. ### SubscribeAsync(string, CancellationToken?) Asynchronously subscribes to the specified MQTT topic to receive messages. ```csharp public Task SubscribeAsync(string topic, CancellationToken? cancellationToken = null) ``` #### Parameters Parameters: - topic (string): The MQTT topic to subscribe to. Supports wildcard patterns (+ for single level, # for multi-level). - cancellationToken (CancellationToken ?): Optional cancellation token to cancel the operation. If null, the operation cannot be cancelled. #### Returns Parameters: - (Task): A task that represents the asynchronous subscribe operation. #### Remarks This method subscribes to messages on the specified topic with QoS level "At Least Once" (QoS 1). If the client is not connected, the method returns immediately without subscribing. ### UnsubscribeAsync(string, CancellationToken?) Asynchronously unsubscribes from the specified MQTT topic. ```csharp public Task UnsubscribeAsync(string topic, CancellationToken? cancellationToken = null) ``` #### Parameters Parameters: - topic (string): The MQTT topic to unsubscribe from. - cancellationToken (CancellationToken ?): Optional cancellation token to cancel the operation. If null, the operation cannot be cancelled. #### Returns Parameters: - (Task): A task that represents the asynchronous unsubscribe operation. #### Remarks This method stops receiving messages from the specified topic. If the client is not connected, the method returns immediately. --- # Enum MQTTDataType Link: api/VisioForge.Plugins.MQTT.MQTTDataType.html # Enum MQTTDataType # Enum MQTTDataType **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Specifies the type of media data being transmitted via MQTT. ```csharp public enum MQTTDataType ``` ## Fields Parameters: - JPEG (): JPEG-encoded video frame data. - PCM (): Pulse-Code Modulation (PCM) uncompressed audio data. ## Remarks This enumeration defines the supported data formats for MQTT streaming, allowing the system to properly encode and decode media streams. --- # Class MQTTJPEGFrame Link: api/VisioForge.Plugins.MQTT.MQTTJPEGFrame.html # Class MQTTJPEGFrame # Class MQTTJPEGFrame **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Represents a JPEG-encoded video frame for MQTT transmission. ```csharp public class MQTTJPEGFrame ``` #### Inheritance #### Inherited Members ## Remarks This class encapsulates a JPEG-compressed video frame along with its timestamp, optimized for efficient transmission over MQTT message broker networks. ## Constructors ### MQTTJPEGFrame(byte[], TimeSpan) Initializes a new instance of the class with raw JPEG data and timestamp. ```csharp public MQTTJPEGFrame(byte[] data, TimeSpan timestamp) ``` #### Parameters Parameters: - data (byte [ ]): The JPEG-encoded image data as a byte array. - timestamp (TimeSpan): The timestamp indicating when the frame was captured. ### MQTTJPEGFrame(DataFrame) Initializes a new instance of the class from a . ```csharp public MQTTJPEGFrame(DataFrame data) ``` #### Parameters Parameters: - data (DataFrame): The data frame containing the JPEG-encoded image data and timestamp. #### Remarks This constructor extracts the frame data and timestamp from a VisioForge DataFrame object. ## Properties ### Data Gets the JPEG-encoded image data as a byte array. ```csharp public byte[] Data { get; } ``` #### Property Value Parameters: - (byte [ ]): ### Timestamp Gets the timestamp indicating when the frame was captured. ```csharp public TimeSpan Timestamp { get; } ``` #### Property Value Parameters: - (TimeSpan): --- # Class MQTTOutputSettingsJPEGStream Link: api/VisioForge.Plugins.MQTT.MQTTOutputSettingsJPEGStream.html # Class MQTTOutputSettingsJPEGStream # Class MQTTOutputSettingsJPEGStream **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Provides configuration settings for MQTT output streams transmitting JPEG-encoded video frames. ```csharp public class MQTTOutputSettingsJPEGStream : IMQTTOutputSettings ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class configures MQTT streaming for JPEG-compressed video data, enabling efficient transmission of video frames over MQTT message broker networks. ## Properties ### StreamType Gets the stream type, which is always for this configuration. ```csharp public MQTTDataType StreamType { get; } ``` #### Property Value Parameters: - (MQTTDataType): --- # Class MQTTOutputSettingsPCMStream Link: api/VisioForge.Plugins.MQTT.MQTTOutputSettingsPCMStream.html # Class MQTTOutputSettingsPCMStream # Class MQTTOutputSettingsPCMStream **Namespace**: VisioForge.Plugins.MQTT **Assembly**: VisioForge.Plugins.MQTT.dll Provides configuration settings for MQTT output streams transmitting PCM (Pulse-Code Modulation) audio data. ```csharp public class MQTTOutputSettingsPCMStream : IMQTTOutputSettings ``` #### Inheritance #### Implements #### Inherited Members ## Remarks This class configures MQTT streaming for uncompressed PCM audio data, enabling real-time audio transmission over MQTT message broker networks. ## Properties ### StreamType Gets the stream type, which is always for this configuration. ```csharp public MQTTDataType StreamType { get; } ``` #### Property Value Parameters: - (MQTTDataType): --- # Namespace VisioForge.Plugins.MQTT Link: api/VisioForge.Plugins.MQTT.html # Namespace VisioForge.Plugins.MQTT # Namespace VisioForge.Plugins.MQTT ### Namespaces Parameters: - (): ### Classes Parameters: - (): Provides MQTT client functionality for publishing and subscribing to MQTT broker messages. - (): Represents a JPEG-encoded video frame for MQTT transmission. - (): Provides configuration settings for MQTT output streams transmitting JPEG-encoded video frames. - (): Provides configuration settings for MQTT output streams transmitting PCM (Pulse-Code Modulation) audio data. ### Interfaces Parameters: - (): Marker interface for MQTT client implementations. - (): Defines configuration settings for MQTT output streams. ### Enums Parameters: - (): Specifies the type of media data being transmitted via MQTT. --- # Class VideoFingerprintDB Link: api/VisioForge.VideoFingerPrinting.MongoDB.VideoFingerprintDB.html # Class VideoFingerprintDB # Class VideoFingerprintDB **Namespace**: VisioForge.VideoFingerPrinting.MongoDB **Assembly**: VisioForge.VideoFingerPrinting.MongoDB.dll Provides MongoDB-based storage and retrieval for video fingerprint data. ```csharp public class VideoFingerprintDB ``` #### Inheritance #### Inherited Members ## Remarks This class manages video fingerprints using MongoDB with GridFS for binary storage. It provides functionality to load, save, query, and manage video fingerprint collections stored in a MongoDB database. Fingerprints can be loaded from the database or from filesystem folders containing .vsigx files. ## Constructors ### VideoFingerprintDB(string) Initializes a new instance of the class with default connection settings. ```csharp public VideoFingerprintDB(string dbname) ``` #### Parameters Parameters: - dbname (string): The name of the MongoDB database to use for fingerprint storage. #### Remarks This constructor creates a MongoDB client with default settings connecting to the local MongoDB instance. ### VideoFingerprintDB(string, string) Initializes a new instance of the class with a custom connection string. ```csharp public VideoFingerprintDB(string dbname, string connectionString) ``` #### Parameters Parameters: - dbname (string): The name of the MongoDB database to use for fingerprint storage. - connectionString (string): The MongoDB connection string specifying server address, credentials, and other options. #### Remarks This constructor allows connecting to MongoDB using a custom connection string, enabling connection to remote servers or with specific authentication settings. ### VideoFingerprintDB(string, MongoClientSettings) Initializes a new instance of the class with custom MongoDB client settings. ```csharp public VideoFingerprintDB(string dbname, MongoClientSettings settings) ``` #### Parameters Parameters: - dbname (string): The name of the MongoDB database to use for fingerprint storage. - settings (MongoClientSettings): The object containing advanced connection configuration. #### Remarks This constructor provides the most flexibility for configuring MongoDB connections, allowing fine-grained control over connection pooling, SSL/TLS, timeouts, and other advanced options. ## Properties ### Items Gets the collection of loaded video fingerprints. ```csharp public List Items { get; } ``` #### Property Value Parameters: - (List < VFPFingerPrint >): ## Methods ### LoadFromDB() Loads all video fingerprints from the MongoDB database into the collection. ```csharp public bool LoadFromDB() ``` #### Returns Parameters: - (bool): True if fingerprints were successfully loaded; false if an error occurred during loading. #### Remarks This method queries all fingerprint files stored in GridFS, deserializes them, and populates the Items collection. Any existing items in the collection are cleared before loading. Files are sorted by upload date in descending order. ### LoadFromFolder(string) Loads video fingerprints from .vsigx files in the specified folder and its subfolders. ```csharp public bool LoadFromFolder(string folder) ``` #### Parameters Parameters: - folder (string): The path to the folder containing fingerprint files (.vsigx extension). #### Returns Parameters: - (bool): False in all cases (appears to be a bug in the original implementation). #### Remarks This method recursively searches the specified folder for .vsigx fingerprint files, loads each fingerprint, and adds it to the Items collection. Note: The return value does not accurately reflect success/failure status. ### MaxAdDuration() Calculates the maximum duration among all loaded fingerprints. ```csharp public long MaxAdDuration() ``` #### Returns Parameters: - (long): The duration in seconds of the longest fingerprint in the Items collection, or 0 if no items exist. #### Remarks This method iterates through all loaded fingerprints and returns the maximum duration value, which can be useful for buffer sizing or processing time estimation. ### RemoveAll() Removes all fingerprints from the MongoDB database. ```csharp public void RemoveAll() ``` #### Remarks This method deletes all fingerprint files stored in GridFS that were uploaded after January 1, 2000. Use with caution as this operation cannot be undone. Note: This method does not clear the Items collection; call .Clear() if needed. ### RemoveByID(string, bool) Removes a fingerprint by its unique identifier from both the Items collection and optionally from the database. ```csharp public void RemoveByID(string id, bool fromDB = true) ``` #### Parameters Parameters: - id (string): The string representation of the fingerprint ID to remove (case-insensitive). - fromDB (bool): If true, also removes the fingerprint from the MongoDB database; if false, only removes from the Items collection. #### Remarks This method searches the Items collection for a fingerprint with the matching ID. When found, it removes the item from the collection and optionally from the database. The search is case-insensitive. ### RemoveByName(string, bool) Removes a fingerprint by its original filename from both the Items collection and optionally from the database. ```csharp public void RemoveByName(string name, bool fromDB = true) ``` #### Parameters Parameters: - name (string): The original filename of the fingerprint to remove (case-insensitive). - fromDB (bool): If true, also removes the fingerprint from the MongoDB database; if false, only removes from the Items collection. #### Remarks This method searches the Items collection for a fingerprint with the matching original filename. When found, it removes the item from the collection and optionally from the database. The search is case-insensitive. ### SearchFingerprintsInFolder(string) Searches for video fingerprint files (.vsigx) in the specified folder and all subfolders. ```csharp public static IEnumerable SearchFingerprintsInFolder(string folder) ``` #### Parameters Parameters: - folder (string): The path to the folder to search. The folder will be created if it doesn't exist. #### Returns Parameters: - (IEnumerable < string >): An enumerable collection of full file paths to all .vsigx fingerprint files found. #### Remarks This static method performs a recursive search for files with the .vsigx extension. If the specified folder doesn't exist, it will be created automatically. ### Upload(VFPFingerPrint) Uploads a video fingerprint to the MongoDB database using GridFS storage. ```csharp public void Upload(VFPFingerPrint fingerprint) ``` #### Parameters Parameters: - fingerprint (VFPFingerPrint): The object to upload to the database. #### Remarks This method serializes the fingerprint and stores it in GridFS with the fingerprint's ID as the filename. If a fingerprint with the same ID already exists, it will not be automatically overwritten; use remove methods first if replacement is needed. --- # Namespace VisioForge.VideoFingerPrinting.MongoDB Link: api/VisioForge.VideoFingerPrinting.MongoDB.html # Namespace VisioForge.VideoFingerPrinting.MongoDB # Namespace VisioForge.VideoFingerPrinting.MongoDB ### Classes Parameters: - (): Provides MongoDB-based storage and retrieval for video fingerprint data. ---