16.5. Mixer IP Software API
Register definition header file: intel_vvp_mixer_regs.h
Include file: intel_vvp_mixer.h
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