# Parser Blocks - VisioForge Media Blocks SDK .Net

Media Blocks SDK .Net

Parser blocks are essential components in media processing pipelines. They are used to parse elementary streams, which might be raw or partially processed, to extract metadata, and to prepare the streams for further processing like decoding or multiplexing. VisioForge Media Blocks SDK .Net offers a variety of parser blocks for common video and audio codecs.

# Video Parser Blocks

# AV1 Parser Block

The AV1ParseBlock is used to parse AV1 video elementary streams. It helps in identifying frame boundaries and extracting codec-specific information.

# Block info

Name: AV1ParseBlock.

Pin direction Media type Pins count
Input video AV1 video 1
Output video AV1 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source (e.g., File or Network)"] --> AV1ParseBlock;
    AV1ParseBlock --> AV1DecoderBlock["AV1 Decoder Block"];
    AV1DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# H.263 Parser Block

The H263ParseBlock is designed to parse H.263 video elementary streams. This is useful for older video conferencing and mobile video applications.

# Block info

Name: H263ParseBlock.

Pin direction Media type Pins count
Input video H.263 video 1
Output video H.263 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> H263ParseBlock;
    H263ParseBlock --> H263DecoderBlock["H.263 Decoder Block"];
    H263DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# H.264 Parser Block

The H264ParseBlock parses H.264 (AVC) video elementary streams. This is one of the most widely used video codecs. The parser helps in identifying NAL units and other stream properties.

# Block info

Name: H264ParseBlock.

Pin direction Media type Pins count
Input video H.264 video 1
Output video H.264 video 1

# The sample pipeline

graph LR;
    PushDataSource["Push Data Source (H.264 NALUs)"] --> H264ParseBlock;
    H264ParseBlock --> H264DecoderBlock["H.264 Decoder Block"];
    H264DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# H.265 Parser Block

The H265ParseBlock parses H.265 (HEVC) video elementary streams. H.265 offers better compression than H.264. The parser helps in identifying NAL units and other stream properties.

# Block info

Name: H265ParseBlock.

Pin direction Media type Pins count
Input video H.265 video 1
Output video H.265 video 1

# The sample pipeline

graph LR;
    PushDataSource["Push Data Source (H.265 NALUs)"] --> H265ParseBlock;
    H265ParseBlock --> H265DecoderBlock["H.265 Decoder Block"];
    H265DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# JPEG 2000 Parser Block

The JPEG2000ParseBlock is used to parse JPEG 2000 video streams. JPEG 2000 is a wavelet-based compression standard that can be used for still images and video.

# Block info

Name: JPEG2000ParseBlock.

Pin direction Media type Pins count
Input video JPEG 2000 video 1
Output video JPEG 2000 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> JPEG2000ParseBlock;
    JPEG2000ParseBlock --> JPEG2000DecoderBlock["JPEG 2000 Decoder Block"];
    JPEG2000DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# MPEG-1/2 Video Parser Block

The MPEG12VideoParseBlock parses MPEG-1 and MPEG-2 video elementary streams. These are older but still relevant video codecs, especially MPEG-2 for DVDs and broadcast.

# Block info

Name: MPEG12VideoParseBlock.

Pin direction Media type Pins count
Input video MPEG-1/2 video 1
Output video MPEG-1/2 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> MPEG12VideoParseBlock;
    MPEG12VideoParseBlock --> MPEGVideoDecoderBlock["MPEG-1/2 Decoder Block"];
    MPEGVideoDecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# MPEG-4 Video Parser Block

The MPEG4ParseBlock parses MPEG-4 Part 2 video elementary streams (often referred to as DivX/Xvid in its early forms).

# Block info

Name: MPEG4ParseBlock.

Pin direction Media type Pins count
Input video MPEG-4 video 1
Output video MPEG-4 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> MPEG4ParseBlock;
    MPEG4ParseBlock --> MPEG4DecoderBlock["MPEG-4 Decoder Block"];
    MPEG4DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# PNG Parser Block

The PNGParseBlock is used to parse PNG image data. While PNG is primarily an image format, this parser can be useful in scenarios where PNG images are part of a stream or need to be processed within the Media Blocks pipeline.

# Block info

Name: PNGParseBlock.

Pin direction Media type Pins count
Input video PNG image data 1
Output video PNG image data 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source (PNG data)"] --> PNGParseBlock;
    PNGParseBlock --> PNGDecoderBlock["PNG Decoder Block"];
    PNGDecoderBlock --> VideoRendererBlock["Video Renderer Block (or Image Overlay)"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# VC-1 Parser Block

The VC1ParseBlock parses VC-1 video elementary streams. VC-1 was developed by Microsoft and was used in Blu-ray Discs and Windows Media Video.

# Block info

Name: VC1ParseBlock.

Pin direction Media type Pins count
Input video VC-1 video 1
Output video VC-1 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> VC1ParseBlock;
    VC1ParseBlock --> VC1DecoderBlock["VC-1 Decoder Block"];
    VC1DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# VP9 Parser Block

The VP9ParseBlock parses VP9 video elementary streams. VP9 is an open and royalty-free video coding format developed by Google, often used for web video.

# Block info

Name: VP9ParseBlock.

Pin direction Media type Pins count
Input video VP9 video 1
Output video VP9 video 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source"] --> VP9ParseBlock;
    VP9ParseBlock --> VP9DecoderBlock["VP9 Decoder Block"];
    VP9DecoderBlock --> VideoRendererBlock["Video Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.


# Audio Parser Blocks

# MPEG Audio Parser Block

The MPEGAudioParseBlock parses MPEG audio elementary streams, which includes MP1, MP2, and MP3 audio.

# Block info

Name: MPEGAudioParseBlock.

Pin direction Media type Pins count
Input audio MPEG audio 1
Output audio MPEG audio 1

# The sample pipeline

graph LR;
    DataSourceBlock["Data Source (MP3 data)"] --> MPEGAudioParseBlock;
    MPEGAudioParseBlock --> MP3DecoderBlock["MP3 Decoder Block"];
    MP3DecoderBlock --> AudioRendererBlock["Audio Renderer Block"];

# Platforms

Windows, macOS, Linux, iOS, Android.

# Individual Parser Blocks

# AV1 Parse

Parses AV1 video streams to extract frame boundaries and metadata.

# Block info

Name: AV1ParseBlock.

Pin direction Media type Pins count
Input AV1 compressed 1
Output AV1 parsed 1

# Sample code

var pipeline = new MediaBlocksPipeline();
var av1Parse = new AV1ParseBlock();
// Connect to AV1 stream source and decoder
await pipeline.StartAsync();

# H263 Parse

Parses H.263 video streams for frame boundary detection.

# Block info

Name: H263ParseBlock.

Pin direction Media type Pins count
Input H.263 compressed 1
Output H.263 parsed 1

# H264 Parse

Parses H.264/AVC video streams to extract NAL units and frame information.

# Block info

Name: H264ParseBlock.

Pin direction Media type Pins count
Input H.264 compressed 1
Output H.264 parsed 1

# H265 Parse

Parses H.265/HEVC video streams to extract NAL units and coding information.

# Block info

Name: H265ParseBlock.

Pin direction Media type Pins count
Input H.265 compressed 1
Output H.265 parsed 1

# JPEG2000 Parse

Parses JPEG2000 video streams.

# Block info

Name: JPEG2000ParseBlock.

Pin direction Media type Pins count
Input JPEG2000 compressed 1
Output JPEG2000 parsed 1

# MPEG-1/2 Video Parse

Parses MPEG-1 and MPEG-2 video streams.

# Block info

Name: MPEG12VideoParseBlock.

Pin direction Media type Pins count
Input MPEG-1/2 compressed 1
Output MPEG-1/2 parsed 1

# MPEG-4 Parse

Parses MPEG-4 video streams.

# Block info

Name: MPEG4ParseBlock.

Pin direction Media type Pins count
Input MPEG-4 compressed 1
Output MPEG-4 parsed 1

# MPEG Audio Parse

Parses MPEG audio streams (MP1, MP2, MP3).

# Block info

Name: MPEGAudioParseBlock.

Pin direction Media type Pins count
Input MPEG audio compressed 1
Output MPEG audio parsed 1

# PNG Parse

Parses PNG image streams.

# Block info

Name: PNGParseBlock.

Pin direction Media type Pins count
Input PNG compressed 1
Output PNG parsed 1

# VC-1 Parse

Parses VC-1 video streams (Windows Media Video 9).

# Block info

Name: VC1ParseBlock.

Pin direction Media type Pins count
Input VC-1 compressed 1
Output VC-1 parsed 1

# VP9 Parse

Parses VP9 video streams.

# Block info

Name: VP9ParseBlock.

Pin direction Media type Pins count
Input VP9 compressed 1
Output VP9 parsed 1

# Platforms

Windows, macOS, Linux, iOS, Android.