Video and Vision Processing Suite Intel® FPGA IP User Guide

ID 683329
Date 12/31/2023
Public
Document Table of Contents
1. About the Video and Vision Processing Suite 2. Getting Started with the Video and Vision Processing IPs 3. Video and Vision Processing IPs Functional Description 4. Video and Vision Processing IP Interfaces 5. Video and Vision Processing IP Registers 6. Video and Vision Processing IPs Software Programming Model 7. Protocol Converter Intel® FPGA IP 8. 1D LUT Intel® FPGA IP 9. 3D LUT Intel® FPGA IP 10. AXI-Stream Broadcaster Intel® FPGA IP 11. Bits per Color Sample Adapter Intel FPGA IP 12. Black Level Correction Intel® FPGA IP 13. Black Level Statistics Intel® FPGA IP 14. Chroma Key Intel® FPGA IP 15. Chroma Resampler Intel® FPGA IP 16. Clipper Intel® FPGA IP 17. Clocked Video Input Intel® FPGA IP 18. Clocked Video to Full-Raster Converter Intel® FPGA IP 19. Clocked Video Output Intel® FPGA IP 20. Color Space Converter Intel® FPGA IP 21. Defective Pixel Correction Intel® FPGA IP 22. Deinterlacer Intel® FPGA IP 23. Demosaic Intel® FPGA IP 24. FIR Filter Intel® FPGA IP 25. Frame Cleaner Intel® FPGA IP 26. Full-Raster to Clocked Video Converter Intel® FPGA IP 27. Full-Raster to Streaming Converter Intel® FPGA IP 28. Genlock Controller Intel® FPGA IP 29. Generic Crosspoint Intel® FPGA IP 30. Genlock Signal Router Intel® FPGA IP 31. Guard Bands Intel® FPGA IP 32. Histogram Statistics Intel® FPGA IP 33. Interlacer Intel® FPGA IP 34. Mixer Intel® FPGA IP 35. Pixels in Parallel Converter Intel® FPGA IP 36. Scaler Intel® FPGA IP 37. Stream Cleaner Intel® FPGA IP 38. Switch Intel® FPGA IP 39. Tone Mapping Operator Intel® FPGA IP 40. Test Pattern Generator Intel® FPGA IP 41. Unsharp Mask Intel® FPGA IP 42. Video and Vision Monitor Intel FPGA IP 43. Video Frame Buffer Intel® FPGA IP 44. Video Frame Reader Intel FPGA IP 45. Video Frame Writer Intel FPGA IP 46. Video Streaming FIFO Intel® FPGA IP 47. Video Timing Generator Intel® FPGA IP 48. Vignette Correction Intel® FPGA IP 49. Warp Intel® FPGA IP 50. White Balance Correction Intel® FPGA IP 51. White Balance Statistics Intel® FPGA IP 52. Design Security 53. Document Revision History for Video and Vision Processing Suite User Guide

34.5. Mixer IP Software API

The IP includes software for run-time control. The IP does not fit any of the generic device models provided by the Nios II HAL and it exposes a set of dedicated accessors to the control and status registers. The IP driver structure inherits the base driver structure so all common methods defined in Video and Vision Processing IPs Software API are applicable.

Register definition header file: intel_vvp_mixer_regs.h

Include file: intel_vvp_mixer.h

Table 570.  Mixer IP Software API
Name Description
intel_vvp_ mixer _init Initialize the Mixer Protocol Converter instance
Intel_vvp_core_* .Accessors defined in Video and Vision Processing IPs Software Programming Model . Writable when Lite is on. Readable when Lite is off and Debug features is on.
intel_vvp_mixer_get_lite_mode Returns if lite mode is on
intel_vvp_mixer_get_debug_enabled Returns if debug features is on
intel_vvp_mixer_get_num_layers Returns the number of layers
intel_vvp_mixer_get_pixels_in_parallel Returns the number of pixels in parallel
intel_vvp_mixer_get_supported_blend_mode Returns the supported mixing configurations
intel_vvp_mixer_requires_restricted_offsets Returns if there are restrictions on mixing offsets
intel_vvp_mixer_is_running Returns if the IP is processing data
intel_vvp_mixer_get_commit_status Returns uncommitted writes
intel_vvp_mixer_is_layer_active Returns if a layer is active
intel_vvp_mixer_get_status Reads the status register
intel_vvp_mixer_set_input_mode Setup a layer
intel_vvp_mixer_get_input_mode Returns layer setup
intel_vvp_mixer_set_blend_mode Configure alpha-blending for a layer
intel_vvp_mixer_get_blend_mode Returns alpha-blending configuration
intel_vvp_mixer_set_static_alpha Sets a layer static alpha blend value
intel_vvp_mixer_get_static_alpha Retrieves a layer static alpha blend value
intel_vvp_mixer_set_horiz_offset Sets the horizontal offset for a layer
intel_vvp_mixer_set_vert_offset Sets the vertical offset for a layer
intel_vvp_mixer_get_horiz_offset Retrieves the horizontal offset for a layer
intel_vvp_mixer_get_vert_offset Retrieves the vertical offset for a layer
intel_vvp_mixer_set_width Sets a layer width
intel_vvp_mixer_set_height Sets a layer height
intel_vvp_mixer_get_width Retrieves a layer width
intel_vvp_mixer_get_height Retrieves a layer height
intel_vvp_mixer_commit_writes Commits pending writes

enum eIntelVvpBlendModeConfig

Members

kIntelVvpMixerBlendConfigNone (0) – Alpha-blending not supported

kIntelVvpMixerBlendConfigStaticAlpha (1) – Static alpha-blending supported

kIntelVvpMixerBlendConfigInputAlpha (2) – Alpha-blending with in-band alpha values supported

kIntelVvpMixerBlendConfigStaticOrInputAlpha (3) – Alpha-blending with static alpha value or in-band alpha values supported

Description

Compile-time configuration for a layer blending methods support

enum eIntelVvpBlendMode

Members

kIntelVvpMixerBlendTransparent (0) – Input not displayed

kIntelVvpMixerBlendOpaque (1) – Input completely hides lower layers

kIntelVvpMixerBlendStaticAlpha (2) – Alpha-blending with a unique static alpha value

kIntelVvpMixerBlendInputAlpha (3) – Alpha-blending with in-band alpha values supported

Description

Run-time selection for the blending mode

intel_vvp_mixer_init

Prototype
int intel_vvp_mixer_init(intel_vvp_mixer_instance *instance, intel_vvp_core_base base);
Description

Initializes a Protocol Converter instance. The initialization stops early if the vendor ID or product ID read at the base address are not a match or if the register map version is not supported. Otherwise, the function proceeds to read and store the IP compile-time parameterization. The instance is not fully initialized and should not be used further by the application if returning a non-zero error code. Beware that the IP is left in a stopped state after successful initialization.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

base – base address of the register map

Returns

kIntelVvpCoreOk (0) in case of success, a negative error code in case of error

kIntelVvpCoreVidErr if the vendor id of the core is not the IntelFPGA vendor ID (0x6AF7).

kIntelVvpCorePidErr if the product_id does not match with the Mixer product ID

kIntelVvpCoreInstanceErr if the instance is a null pointer

kIntelVvpMixerRegMapVersionErr if the register map is not supported

intel_vvp_mixer_get_lite_mode

Prototype
 bool intel_vvp_mixer_get_lite_mode (intel_vvp_mixer_instance *instance);
Description

Returns the value of the LITE_MODE register. The instance must be a valid intel_vvp_mixer_instance fully initialized

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

true if the IP is parameterized in lite mode

intel_vvp_mixer_get_debug_enabled

Prototype
 bool intel_vvp_mixer_get_debug_enabled(intel_vvp_mixer_instance *instance);
Description

Returns the value of the DEBUG_ENABLED register. The instance must be a valid intel_vvp_mixer_instance fully initialized.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

true if the IP is parameterized with debug features enabled

intel_vvp_mixer_get_num_layers

Prototype
 uint8_t intel_vvp_mixer_get_num_layers(intel_vvp_mixer_instance *instance);
Description

Returns the configured number of layers (background layer included)

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

The number of layers

intel_vvp_mixer_get_pixels_in_parallel

Prototype

uint8_t intel_vvp_mixer_get_pixels_in_parallel(intel_vvp_mixer_instance *instance);

Description

Returns the configured number of pixels transmitted in parallel

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

The number of layers

intel_vvp_mixer_get_supported_blend_mode

Prototype
uint8_t intel_vvp_mixer_get_supported_blend_mode(intel_vvp_mixer_instance *instance, uint8_t layer);
Description

Returns the blending algorithms supported for a specific layer. The instance must be a valid, initialized, intel_vvp_mixer_instance and the layer must be valid

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

Blend modes supported by the layer (static alpha and/or in-band alpha)

intel_vvp_mixer_requires_restricted_offsets

Prototype
bool intel_vvp_mixer_requires_restricted_offsets(intel_vvp_mixer_instance *instance, uint8_t layer);
Description

Returns if there is a restriction on the horizontal offset for the specified layer

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

True if the layer does not support an offset that is not a multiple of get_num_pixels_in_parallel()

intel_vvp_mixer_is_running

Prototype
 bool intel_vvp_mixer_is_running(intel_vvp_mixer_conv_instance* instance);
Description

Reads and returns the running bit of the STATUS register. The instance must be a valid intel_vvp_mixer_instance fully initialized.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

True is the IP is currently generating an output field, false when disabled and/or between two fields

intel_vvp_mixer_get_commit_status

Prototype
 bool intel_vvp_mixer_get_commit_status(intel_vvp_mixer_instance* instance);
Description

Reads and returns the commit pending bit of the STATUS register. The instance must be a valid intel_vvp_mixer_instance fully initialized and configured in full mode.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

True is the Mixer is configured in full mode and if the agent interface contains uncommitted writes.

intel_vvp_mixer_is_layer_active

Prototype
bool intel_vvp_mixer_is_layer_active (intel_vvp_mixer_instance* instance , uint8_t layer);
Description

Reads and returns the relevant layer_active bit in the STATUS register. The instance must be a valid intel_vvp_mixer_instance fully initialized and the layer should be a valid layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

The layer active bit value read from the status register

intel_vvp_mixer_get_status

Prototype
uint8_t intel_vvp_mixer_get_status(intel_vvp_mixer_instance* instance);
Description

Reads and returns the STATUS register. The instance must be a valid intel_vvp_mixer_instance fully initialized.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

The value read from the status register

intel_vvp_mixer_set_input_mode

Prototype
 int intel_vvp_mixer_set_input_mode(intel_vvp_mixer_instance* instance, uint8_t layer, bool enable, bool consume, bool soft_start);
Description

Setup the run-time configuration for a given layer. The instance must be valid and initialized. The layer must be a valid foreground layer. The kIntelVvpMixerLayerErr error code is returned if some input parameters were incompatible but the input mode is still overwritten in these cases. Specifically, enabled is forced to true if consumed is true and soft_start is forced to false if enabled is false

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

enabled – enabled status of the layer (returned value)

consumed – consumed status of the layer (returned value)

soft_start – soft-start status of the layer (returned value)

Returns

kIntelVvpCoreOk if the input mode was changed, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer

kIntelVvpMixerParameterErr if some parameters have been ignored/overwritten

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_get_input_mode

Prototype
 int intel_vvp_mixer_get_input_mode(intel_vvp_mixer_instance* instance, uint8_t layer, bool *enabled, bool *consumed, bool *soft_start);
Description

Returns the current run-time configuration for a given layer. The instance must be a valid and initialized instance with debug enabled. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

enabled – enabled status of the layer (returned value)

consumed – consumed status of the layer (returned value)

soft_start – soft-start status of the layer (returned value)

Returns

kIntelVvpCoreOk if the input mode was retrieved, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer or debug is not enabled

kIntelVvpCoreNullPtrErr if one of the pointers to store return values is the null pointer

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_set_blend_mode

Prototype
 int intel_vvp_mixer_set_blend_mode(intel_vvp_mixer_instance* instance, uint8_t layer, eIntelVvpBlendMode blend_mode)
Description

Select the blending for a given layer. The instance must be valid and initialized. The layer must be a valid foreground layer that supports the chosen blending algorithm

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

blend_mode – selected blending

Returns

kIntelVvpCoreOk if the blending was changed, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer

kIntelVvpMixerParameterErr if the blending is not supported

kIntelVvpMixerLayerErr if the layer is not in the valid range

Prototype
eIntelVvpBlendMode intel_vvp_mixer_get_blend_mode(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the current run-time blending for a given layer. The instance must be valid and initialized with debug enabled. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the current blending algorithm for the layer

intel_vvp_mixer_set_static_alpha

Prototype
int intel_vvp_mixer_set_static_alpha(intel_vvp_mixer_instance* instance, uint8_t layer, uint32_t static_alpha)
Description

Select the static alpha value for a given layer. The instance must be valid and initialized. The layer must be a valid foreground layer that supports static alpha blending

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

blend_mode – selected blending

Returns

kIntelVvpCoreOk if the static alpha value was changed, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_get_static_alpha

Prototype
uint32_t intel_vvp_mixer_get_static_alpha(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the current static alpha value for a given layer. The instance must be valid and initialized with debug enabled. The layer must be a valid foreground layer supporting alpha blending with a static value.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the static alpha value for the layer

intel_vvp_mixer_set_horiz_offset

Prototype
int intel_vvp_mixer_set_horiz_offset(intel_vvp_mixer_instance* instance, uint8_t layer, uint32_t offset)
Description

Select the horizontal offset for a given layer. The instance must be valid and initialized. The layer must be a valid foreground layer. The kIntelVvpMixerParameterErr error code is returned when trying to set an unsupported horizontal offset but the configuration is still changed in this case.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

offset – new horizontal offset

Returns

kIntelVvpCoreOk in case of success, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer

kIntelVvpMixerLayerErr if the layer is not in the valid range

kIntelVvpMixerParameterErr if offset is not a multiple of the number of pixels in parallel and this is not supported by the layer

intel_vvp_mixer_set_vert_offset

Prototype
 int intel_vvp_mixer_set_vert_offset(intel_vvp_mixer_instance* instance, uint8_t layer, uint32_t offset)
Description

Select the vertical offset for a given layer. The instance must be valid and initialized. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

offset – new vertical offset

Returns

kIntelVvpCoreOk in case of success, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_get_horiz_offset

Prototype
uint32_t intel_vvp_mixer_get_horiz_offset(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the current horizontal offset for a given layer. The instance must be valid and initialized with debug enabled. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the horizontal offset for the layer

intel_vvp_mixer_get_vert_offset

Prototype
uint32_t intel_vvp_mixer_get_vert_offset(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the current vertical offset for a given layer. The instance must be valid and initialized with debug enabled. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the vertical offset for the layer

intel_vvp_mixer_set_width

Prototype
int intel_vvp_mixer_set_width(intel_vvp_mixer_instance* instance, uint8_t layer, uint32_t width)
Description

Set the width of a foreground layer. The instance must be valid and initialized configured with the lite variant. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

width – new width

Returns

kIntelVvpCoreOk in case of success, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer or not the lite variant

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_set_height

Prototype
int intel_vvp_mixer_set_height(intel_vvp_mixer_instance* instance, uint8_t layer, uint32_t height)
Description

Set the height of a foreground layer. The instance must be valid and initialized configured with the lite variant. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

height – new height

Returns

kIntelVvpCoreOk in case of success, negative error code otherwise

kIntelVvpCoreInstanceErr if the instance is the null pointer or not the lite variant

kIntelVvpMixerLayerErr if the layer is not in the valid range

intel_vvp_mixer_get_width

Prototype
uint32_t intel_vvp_mixer_get_width(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the width selected for a given layer. The instance must be valid and initialized with debug enabled and in lite variant. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the width of the layer

intel_vvp_mixer_get_height

Prototype
uint32_t intel_vvp_mixer_get_height(intel_vvp_mixer_instance* instance, uint8_t layer)
Description

Returns the height selected for a given layer. The instance must be valid and initialized with debug enabled and in lite variant. The layer must be a valid foreground layer.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

layer – valid foreground layer in the range [1 .. get_num_layers()-1]

Returns

the height of the layer

intel_vvp_mixer_commit_writes

Prototype
int intel_vvp_mixer_commit_writes(intel_vvp_mixer_instance* instance)
Description

Commits all pending writes before starting the next output field. The instance must be valid and parameterized in full mode.

Arguments

instance – pointer to the intel_vvp_mixer_instance software driver instance structure

Returns

kIntelVvpCoreOk (0) for success, negative error code otherwise