Table of Contents

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.

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX class with default settings. Configures logging, initializes the cross-platform media framework, sets up platform-specific redistributables, and prepares core capture components.

public VideoCaptureCoreX()

VideoCaptureCoreX(IVideoView)

Initializes a new instance of the VisioForge.Core.VideoCaptureX.VideoCaptureCoreX 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.

public VideoCaptureCoreX(IVideoView videoView)

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.

public IAudioRendererSettings Audio_OutputDevice { get; set; }

Property Value

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.

public bool Audio_OutputDevice_Mute { get; set; }

Property Value

bool

Audio_OutputDevice_Volume

Gets or sets the audio output device volume level. Valid range is 0.0 (mute) to 1.0 (maximum volume).

public double Audio_OutputDevice_Volume { get; set; }

Property Value

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.

public bool Audio_Play { get; set; }

Property Value

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.

public bool Audio_Record { get; set; }

Property Value

bool

Audio_Source

Gets or sets the audio source configuration for capture. This can be a microphone, system audio, or other audio input device.

public IVideoCaptureBaseAudioSourceSettings Audio_Source { get; set; }

Property Value

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.

public bool Audio_VU_Meter_Enabled { get; set; }

Property Value

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.

public bool Barcode_Reader_Enabled { get; set; }

Property Value

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.

public string Debug_Dir { get; set; }

Property Value

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.

public bool Debug_DisableMessageDialogs { get; set; }

Property Value

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.

public bool Debug_Mode { get; set; }

Property Value

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.

public bool Debug_Telemetry { get; set; }

Property Value

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.

public IFaceDetector Face_Detector { get; set; }

Property Value

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.

public ObservableCollection<FontDescriptionX> Fonts { get; }

Property Value

ObservableCollection<FontDescriptionX>

SDK_BuildDate

Gets the build date of the current SDK assembly. Useful for version tracking and support purposes.

public static DateTime SDK_BuildDate { get; }

Property Value

DateTime

SDK_Version

Gets the version number of the current SDK assembly. Use this to verify SDK compatibility and for support requests.

public static Version SDK_Version { get; }

Property Value

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.

public bool Snapshot_Grabber_Enabled { get; set; }

Property Value

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.

public PlaybackState State { get; set; }

Property Value

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.

public bool Subtitles_Enabled { get; set; }

Property Value

bool

Subtitles_ExternalFile

Gets or sets the URI of an external subtitle file to load. Supports common subtitle formats like SRT, SSA, and WebVTT.

public Uri Subtitles_ExternalFile { get; set; }

Property Value

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.

public SubtitleOverlaySettings Subtitles_Settings { get; set; }

Property Value

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.

public bool Video_Composition_Enabled { get; set; }

Property Value

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.

public bool Video_Overlay_Enabled { get; set; }

Property Value

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.

public bool Video_Play { get; set; }

Property Value

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.

public List<IVideoProcessor> Video_Processors { get; }

Property Value

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.

public IVideoCaptureBaseVideoSourceSettings Video_Source { get; set; }

Property Value

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.

public List<IVideoView> Video_Views { get; }

Property Value

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.

public void AudioOutputMuteSet(bool value)

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.

public void Audio_Effects_AddOrUpdate(BaseAudioEffect effect)

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.

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.

public BaseAudioEffect Audio_Effects_Get(string effectName)

Parameters

effectName string

The name of the effect to retrieve from the processing chain.

Returns

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.

public void Audio_Effects_Remove(BaseAudioEffect effect)

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.

public void Audio_Effects_Remove(string name)

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.

public Task<AudioOutputDeviceInfo[]> Audio_OutputsAsync(AudioOutputDeviceAPI? api = null)

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

Task<AudioOutputDeviceInfo[]>

A task containing an array of VisioForge.Core.Types.X.Output.AudioOutputDeviceInfo 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.

public bool Audio_Source_GetInfo(out int sampleRate, out int channels, out AudioFormatX format)

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 VisioForge.Core.Types.X.AudioFormatX.Unknown if unavailable.

Returns

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.

public Task<AudioCaptureDeviceInfo[]> Audio_SourcesAsync(AudioCaptureDeviceAPI? api = null)

Parameters

api AudioCaptureDeviceAPI?

Optional: Specific audio API to enumerate devices from (DirectSound, WASAPI, etc.). Pass null to use default API.

Returns

Task<AudioCaptureDeviceInfo[]>

A task containing an array of VisioForge.Core.Types.X.Sources.AudioCaptureDeviceInfo 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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Debug_Mode is enabled.

public void Debug_SavePipeline(string name)

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.

protected virtual void Dispose(bool disposing)

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX instance to ensure proper cleanup.

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.

public ValueTask DisposeAsync()

Returns

ValueTask

A ValueTask representing the asynchronous dispose operation.

Duration()

Gets the current capture duration since start. Returns the elapsed time of the current capture session.

public TimeSpan Duration()

Returns

TimeSpan

The current capture duration, or Zero if not capturing.

DurationAsync()

Asynchronously gets the current capture duration since start. Returns the elapsed time of the current capture session.

public Task<TimeSpan> DurationAsync()

Returns

Task<TimeSpan>

A task containing the current capture duration, or Zero if not capturing.

~VideoCaptureCoreX()

Finalizer for the VisioForge.Core.VideoCaptureX.VideoCaptureCoreX class. Ensures resources are released if Dispose was not called explicitly.

protected ~VideoCaptureCoreX()

GetContext()

Gets the current logging and media context.

public ContextX GetContext()

Returns

ContextX

The ContextX instance containing logger and media configuration.

GetLogger()

Gets the current Serilog logger instance for this capture context.

public ILogger GetLogger()

Returns

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.

public MediaBlocksPipeline GetMediaBlocksPipeline()

Returns

MediaBlocksPipeline

The current VisioForge.Core.MediaBlocks.MediaBlocksPipeline 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.

public IVideoMixerControl GetSourceMixerControl()

Returns

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.

public bool IsCapturePaused(int index)

Parameters

index int

The zero-based index of the output to check from the outputs collection.

Returns

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.

public bool IsCaptureStarted(int index)

Parameters

index int

The zero-based index of the output to check from the outputs collection.

Returns

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.

public void Outputs_Add(IVideoCaptureXBaseOutput output, bool autostart = true)

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.

public void Outputs_Clear()

Outputs_Count()

Gets the total number of configured outputs in the collection. This includes both active and inactive outputs.

public int Outputs_Count()

Returns

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.

public IVideoCaptureXBaseOutput Outputs_Get(int index)

Parameters

index int

The zero-based index of the output to retrieve from the collection.

Returns

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.

public TimeSpan Outputs_GetDuration(int index)

Parameters

index int

The zero-based index of the output to query from the outputs collection.

Returns

TimeSpan

The current recording/streaming duration as TimeSpan, or Zero 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.

public void Outputs_Remove(IVideoCaptureXBaseOutput output)

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.

public void Outputs_RemoveAt(int index)

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.

public bool Pause()

Returns

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.

public Task<bool> PauseAsync()

Returns

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).

public bool PauseCapture(int index)

Parameters

index int

The zero-based index of the output to pause from the outputs collection.

Returns

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).

public Task<bool> PauseCaptureAsync(int index)

Parameters

index int

The zero-based index of the output to pause from the outputs collection.

Returns

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.

public bool Resume()

Returns

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.

public Task<bool> ResumeAsync()

Returns

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.

public bool ResumeCapture(int index)

Parameters

index int

The zero-based index of the output to resume from the outputs collection.

Returns

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.

public Task<bool> ResumeCaptureAsync(int index)

Parameters

index int

The zero-based index of the output to resume from the outputs collection.

Returns

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.

public void SetCustomErrorHandler(IMediaBlocksPipelineCustomErrorHandler errorHandler)

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Start or VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.StartAsync to activate the SDK. License key is provided after purchasing the Video Capture SDK from VisioForge.

public void SetLicenseKey(string licenseKey, string username, string email)

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.

public bool Settings_Load(string jsonFilename)

Parameters

jsonFilename string

The path to the JSON settings file.

Returns

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.

public bool Settings_Save(string jsonFilename, string infoFilename)

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

bool

true if files were saved successfully; false if save operation failed.

Snapshot_Get()

Captures a snapshot from the current video frame. Requires VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture. The caller is responsible for calling Free() on the returned VideoFrameX to release resources.

public VideoFrameX Snapshot_Get()

Returns

VideoFrameX

The captured frame as VisioForge.Core.Types.X.VideoFrameX, or null if snapshot grabber is not enabled.

Snapshot_GetAsync()

Asynchronously captures a snapshot from the current video frame. Requires VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture.

public Task<VideoFrameX> Snapshot_GetAsync()

Returns

Task<VideoFrameX>

A task containing the captured frame as VisioForge.Core.Types.X.VideoFrameX, or null if snapshot grabber is not enabled.

Snapshot_GetSK()

Captures a snapshot from the current video frame as a SkiaSharp bitmap. Requires VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture.

public SKBitmap Snapshot_GetSK()

Returns

SKBitmap

The captured frame as SkiaSharp.SKBitmap, 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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture.

public Task<SKBitmap> Snapshot_GetSKAsync()

Returns

Task<SKBitmap>

A task containing the captured frame as SkiaSharp.SKBitmap, 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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture.

public bool Snapshot_Save(string filename, SKEncodedImageFormat format, int quality = 85)

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

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Snapshot_Grabber_Enabled to be true before starting capture.

public Task<bool> Snapshot_SaveAsync(string filename, SKEncodedImageFormat format, int quality = 85)

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

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.StartAsync for non-blocking operation.

public bool Start()

Returns

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.

public Task<bool> StartAsync()

Returns

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.

public bool StartCapture(int index, string filename)

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

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.

public Task<bool> StartCaptureAsync(int index, string filename)

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

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.StopAsync for non-blocking operation.

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.

public Task StopAsync()

Returns

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.

public bool StopCapture(int index)

Parameters

index int

The zero-based index of the output to stop from the outputs collection.

Returns

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.

public Task<bool> StopCaptureAsync(int index)

Parameters

index int

The zero-based index of the output to stop from the outputs collection.

Returns

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 VisioForge.Core.VideoCaptureX.VideoCaptureCoreX.Subtitles_Settings property to apply changes to the active renderer.

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.

public VideoStreamInfo VideoRenderer_GetVideoInfo()

Returns

VideoStreamInfo

The VisioForge.Core.Types.MediaInfo.VideoStreamInfo 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.

public void Video_Composition_Add(VideoCompositionElement element)

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.

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.

public void Video_Composition_Remove(VideoCompositionElement element)

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.

public Task Video_Effects_AddOrUpdateAsync(IBaseVideoEffect effect)

Parameters

effect IBaseVideoEffect

The video effect to add or update in the processing pipeline.

Returns

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.

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.

public IBaseVideoEffect Video_Effects_Get(string effectName)

Parameters

effectName string

The name of the effect to retrieve from the processing chain.

Returns

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.

public void Video_Effects_Remove(IBaseVideoEffect effect)

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.

public void Video_Effects_Remove(string name)

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.

public void Video_Overlay_Add(IOverlayManagerElement overlay)

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.

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.

public void Video_Overlay_Remove(IOverlayManagerElement overlay)

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.

public void Video_Overlay_RemoveAt(int index)

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.

public void Video_Overlay_Update(IOverlayManagerElement overlay)

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.

public Size Video_Source_GetResolutionAndFrameRate(out VideoFrameRate frameRate)

Parameters

frameRate VideoFrameRate

When this method returns, contains the video frame rate in fps, or VisioForge.Core.Types.VideoFrameRate.Empty if unavailable.

Returns

Size

The video resolution as a VisioForge.Core.Types.Size structure, or VisioForge.Core.Types.Size.Empty 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.

public Task<VideoCaptureDeviceInfo[]> Video_SourcesAsync()

Returns

Task<VideoCaptureDeviceInfo[]>

A task containing an array of VisioForge.Core.Types.X.Sources.VideoCaptureDeviceInfo 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.

public Task WaitForStartAsync()

Returns

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.

public event EventHandler<AudioFrameBufferEventArgs> OnAudioFrameBuffer

Event Type

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.

public event EventHandler<VUMeterXEventArgs> OnAudioVUMeter

Event Type

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.

public event EventHandler<BarcodeDetectorEventArgs> OnBarcodeDetected

Event Type

EventHandler<BarcodeDetectorEventArgs>

OnError

Occurs whenever an error happens during video capture operations. Subscribe to this event to handle and log capture-related errors.

public event EventHandler<ErrorsEventArgs> OnError

Event Type

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.

public event EventHandler<AFFaceDetectionEventArgs> OnFaceDetected

Event Type

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.

public event EventHandler<LicenseEventArgs> OnLicenseRequired

Event Type

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.

public event EventHandler<MotionDetectionExEventArgs> OnMotionDetection

Event Type

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.

public event EventHandler<int> OnOutputPaused

Event Type

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.

public event EventHandler<int> OnOutputResumed

Event Type

EventHandler<int>

OnOutputStarted

Occurs when a capture output (recording or streaming) starts successfully. The event argument contains the index of the output that started.

public event EventHandler<int> OnOutputStarted

Event Type

EventHandler<int>

OnOutputStopped

Occurs when a capture output (recording or streaming) stops. The event argument contains the index of the output that stopped.

public event EventHandler<int> OnOutputStopped

Event Type

EventHandler<int>

OnPause

Occurs when video capture or playback is paused. Use this event to update UI state when capture is temporarily suspended.

public event EventHandler<EventArgs> OnPause

Event Type

EventHandler<EventArgs>

OnResume

Occurs when video capture or playback resumes after being paused. Use this event to restore UI state when capture continues.

public event EventHandler<EventArgs> OnResume

Event Type

EventHandler<EventArgs>

OnStart

Occurs when video capture or playback starts successfully. Use this event to update UI or perform initialization after capture begins.

public event EventHandler<EventArgs> OnStart

Event Type

EventHandler<EventArgs>

OnStop

Occurs when video capture or playback stops completely. This event provides the final position and allows for cleanup operations.

public event EventHandler<StopEventArgs> OnStop

Event Type

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.

public event EventHandler<VideoFrameXBufferEventArgs> OnVideoFrameBuffer

Event Type

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.

public event EventHandler<VideoFrameSKBitmapEventArgs> OnVideoFrameSKBitmap

Event Type

EventHandler<VideoFrameSKBitmapEventArgs>

See Also