Video and Vision Processing Suite Intel® FPGA IP User Guide

ID 683329
Date 4/04/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

16.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 214.  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 will not be 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_pip_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 will 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_ pip_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_tpg_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 a valid and initialized instance. 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 pointer 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 a valid and initialized instance. 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 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]

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 a valid and initialized instance. 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 a valid and initialized instance 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 a valid and initialized instance. 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 a valid and initialized instance. 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 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]

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 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]

Returns

the vertical offset for the layer

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 a valid and initialized instance 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 a valid and initialized instance 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 a valid and initialized instance 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 a valid and initialized instance 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_tpg_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