vprocss: xvprocss.h File Reference

| vprocss Xilinx SDK Drivers API Documentation

- Overview
- Data Structures
- APIs
- File List
- Examples

Data Structures | Macros | Enumerations | Functions
xvprocss.h File Reference

## Overview

This is main header file of the Xilinx Video Processing Subsystem driver.

Video Processing Subsystem Overview

Video Subsystem is a collection of IP cores bonded together by software to provide an abstract view of the processing pipe. It hides all the complexities of programming the underlying cores from end user.

Subsystem Driver Features

Video Subsystem supports following features

- AXI Stream Input/Output interface
- 1, 2 or 4 pixel-wide video interface
- 8/10/12/16 bits per component
- RGB & YCbCr color space
- Memory based/streaming mode scaling in either direction (Up/Down)
- Up to 4k2k 60Hz resolution at both Input and Output interface
- Interlaced input support (1080i 50Hz/60Hz)
- Frame rate conversion
  - Drop frames if input rate > output rate
  - Repeat frames if input rate < output rate
- Auto configuration of processing pipe based on detected use case
  - Scale Up/Down
  - Zoom mode wherein a window in input is scaled to panel resolution
  - Picture-In-Picture mode wherein the input stream is scaled down to a defined window size and background is painted to user define color
  - Color Space and color format Conversion
  - Interlaced to Progressive conversion

Subsystem Configurations

Six types of configurations, each with options, are supported via GUI in IPI

- Full Configuration: provides all the features mentioned above
- Five streaming mode configurations have specific limited functionalities:

Scaler-only mode allows only for changing the picture size

- Deinterlace-only mode allows for converting interlaced to progressive
- Csc-only mode allows only for changing the color space, e.g. YUV to RGB
- Vertical Chroma Resamp-only mode allows only for 420<->422 conversion
- Horizontal Chroma Resamp-only mode allows only for 422<->444 conversion

Number of processing cores that get included in the design will depend upon the configuration selected. Static configuration parameters are stored in vprocss_g.c file that gets generated when compiling the board support package (BSP). A table is defined where each entry contains configuration information for the instances of the subsystem in the design. This information includes the elected configuration, sub-cores used and their device ID, base addresses of memory mapped devices, user specified DDR address for buffer management and address range available for subsystem frame/field buffers.

Full configuration mode includes following sub-cores in HW

- Scalers (horizontal/vertical)
- Deinterlacer
- Chroma Resamplers (one horizontal and two vertical)
- Color Space Converter
- VDMA for buffer management
- Letterbox
- AXIS Switch

Streaming mode configurations include the following sub-cores in HW

- Scaler-only: Scalers (horizontal/vertical)
- Deinterlace-only: Deinterlacer
- Csc-only: Color Space Converter
- Vertical Chroma Resamp-only: One Vertical Chroma Resampler
- Horizontal Chroma Resamp-only: Horizontal Chroma Resampler

The subsystem driver itself always includes the full software stack irrespective of the configuration selected. Generic API's are provided to interact with the subsystem and/or with the included sub-cores. At run-time the subsystem will query the static configuration and configure itself for supported use cases

Subsystem Driver Description

Subsystem driver is built upon layer 1&2 device drivers of included sub-cores Layer 1 provides API's to peek/poke registers at HW level. Layer 2 provides API's that abstract sub-core functionality, providing an easy to use feature interface

Pre-Requisite's

- For memory based design (Full Fledged Topology with VDMA, and/or Deinterlace with MADi) the application must program the base address of the video buffers in memory. Refer to Memory Requirement section below.
- For microblaze based designs it is recommended to include a timer peripheral in the design and application should register a delay handling routine with the subsystem using the provided API.

Subsystem Driver Usage

The subsystem driver in itself is a dormant driver that needs application SW to make use of provided API's to configure it at boot-up. Thereafter application SW is responsible to monitor the system for external impetus and call the subsystem API's to communicate the change and trigger the reconfiguration of internal data processing pipe (refer to API XVprocSs_ConfigureSubsystem()) AXI Stream configuration for input/output interface is derived from the Xilinx video common driver and only the resolutions listed therein are supported at this time

Memory Requirement

For full configuration mode DDR memory is used to store video frame buffers Subsystem uses 5 frame buffers for Progressive input and 3 field buffers for interlaced input. The amount of memory required by the subsystem can be calculated by below equation

- 5 * MAX_WIDTHp * MAX_HEIGHTp * NUM_VIDEO_COMPONENTS * BytesPerComp
  - 3 * MAX_WIDTHi * MAX_HEIGHTi * NUM_VIDEO_COMPONENTS * BytesPerComp

BytesPerComp

- 1 Byte for 8 bit data pipe
- 2 Byte for 10/12/16 bit data pipe

The location of these buffers in the memory is system dependent and as such must be determined by the system designer and the application code is responsible to program the base address of the buffer memory prior to initializing the subsystem. API to use is defined below

- XVprocSs_SetFrameBufBaseaddr

Interrupt Service

Currently no interrupts are available from the subsystem. User application is responsible for triggering processing pipe update when any change in subsystem configuration is performed at application level

Log Capability Subsystem driver implements a logging feature that captures the interaction between included sub-core(s) as the subsystem is being configured and started. This is a potenital debugging aid should the system not behave as expected. If code size becomes a concern this logging capability can be removed from the driver by defining XV_CONFIG_LOG_VPRCOSS_DISABLE preprocessor macro in driver/BSP makefile. For maximun code savings logging capaibility can be disabled, globally, for all included video drivers in BSP by defining the preprocessor macro XV_CONFIG_LOG_DISABLE_ALL in the BSP makefile.

Virtual Memory

This driver supports Virtual Memory. The RTOS is responsible for calculating the correct device base address in Virtual Memory space.

Threads

This driver is not thread safe. Any needs for threads or thread mutual exclusion must be satisfied by the layer above this driver.

Asserts

Asserts are used within all Xilinx drivers to enforce constraints on argument values. Asserts can be turned off on a system-wide basis by defining, at compile time, the NDEBUG identifier. By default, asserts are turned on and it is recommended that application developers leave asserts on during development.

    MODIFICATION HISTORY:

    Ver   Who    Date     Changes

    1.00  rco   08/28/15  Initial Release
    2.00  rco   11/05/15  Update to adapt to sub-core layer 2 changes
          dmc   12/02/15  Added four new topologies. There are now six topologies
          dmc   12/17/15  Accommodate Full topology with no VDMA
                          Rename and modify H,VCresample constants and routines
                          Add macros to query for the new topologies
          dmc   01/11/16  Add new data struct, enums, constants and prototypes
                          to support a new Event Logging system for xvprocss.
    2.10  rco   07/20/16  Add lbox background color storage to context data
                          Used UINTPTR instead of u32 for Baseaddress, Frameaddr
                          Changed the prototype of XVprocSs_CfgInitialize and
                          XVprocSs_SetFrameBufBaseaddr API
    2.30  rco  11/15/16   Make debug log optional (can be disabled via makefile)
                             12/15/16   Added HasMADI configuration option

## Data Structures
struct | XVprocSs_ContextData
| Video Processing Subsystem context scratch pad memory. More...
struct | XSubCore
| Sub-Core Configuration Table. More...
struct | XVprocSs_Config
| Video Processing Subsystem configuration structure. More...
struct | XVprocSs
| The XVprocSs driver instance data. More...

## Macros
#define | XVPROCSS_H
| < prevent circular inclusions by using protection macros More...
#define | XVprocSs_GetSubsystemTopology(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology)
| This macro returns the subsystem topology. More...
#define | XVprocSs_GetColorDepth(XVprocSsPtr) ((XVprocSsPtr)->Config.ColorDepth)
| This macro returns the subsystem Color Depth. More...
#define | XVprocSs_IsConfigModeMax(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_FULL_FLEDGED)
| This macro checks if subsystem is in Maximum (Full_Fledged) configuration. More...
#define | XVprocSs_IsConfigModeSscalerOnly(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_SCALER_ONLY)
| This macro checks if subsystem configuration is in Scaler Only Mode. More...
#define | XVprocSs_IsConfigModeDeinterlaceOnly(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_DEINTERLACE_ONLY)
| This macro checks if subsystem configuration is in Deinterlace Only Mode. More...
#define | XVprocSs_IsConfigModeCscOnly(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_CSC_ONLY)
| This macro checks if subsystem configuration is in CSC Only Mode. More...
#define | XVprocSs_IsConfigModeVCResampleOnly(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_VCRESAMPLE_ONLY)
| This macro checks if subsystem configuration is in V Chroma ResampleMode. More...
#define | XVprocSs_IsConfigModeHCResampleOnly(XVprocSsPtr) ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_HCRESAMPLE_ONLY)
| This macro checks if subsystem configuration is in H Chroma Resample Mode. More...
#define | XVprocSs_IsPipModeOn(XVprocSsPtr) ((XVprocSsPtr)->CtxtData.PipEn)
| This macro returns the current state of PIP Mode stored in subsystem internal scratch pad memory. More...
#define | XVprocSs_IsZoomModeOn(XVprocSsPtr) ((XVprocSsPtr)->CtxtData.ZoomEn)
| This macro returns the current state of Zoom Mode stored in subsystem internal scratch pad memory. More...
#define | XVprocSs_GetPipZoomWinHStepSize(XVprocSsPtr) ((XVprocSsPtr)->CtxtData.PixelHStepSize)
| This macro returns the Pip/Zoom window horizontal increment size. More...
#define | XVprocSs_ResetPipModeFlag(XVprocSsPtr) ((XVprocSsPtr)->CtxtData.PipEn = FALSE)
| This macro clears the PIP mode flag stored in subsystem internal scratch pad memory. More...
#define | XVprocSs_ResetZoomModeFlag(XVprocSsPtr) ((XVprocSsPtr)->CtxtData.ZoomEn = FALSE)
| This macro clears the ZOOM mode flag stored in subsystem internal scratch pad memory. More...
#define | XVprocSs_SetStreamColorFormat(Stream, ColorFormat) ((Stream)->ColorFormatId = ColorFormat)
| This macro sets the specified stream's color format. More...
#define | XVprocSs_SetStreamColorDepth(Stream, ColorDepth) ((Stream)->ColorDepth = ColorDepth)
| This macro sets the specified stream's color depth. More...

## Enumerations
enum | XVPROCSS_SUBCORE_ID
| Subsystem sub-core layer 2 header files Layer 2 includes Layer-1. More...
enum | XVPROCSS_CONFIG_TOPOLOGY
| This typedef enumerates supported subsystem configuration topology. More...
enum | XVprocSs_Win
| This typedef enumerates types of Windows (Sub-frames) available in the Subsystem. More...
enum | XVprocSs_ScaleMode
| This typedef enumerates supported scaling modes. More...
enum | XVprocSs_ColorChannel
| This typedef enumerates supported Color Channels. More...

## Functions
int | XVprocSs_CfgInitialize (XVprocSs *InstancePtr, XVprocSs_Config *CfgPtr, UINTPTR EffectiveAddr)
| This function initializes the video subsystem and included sub-cores. More...
int | XVprocSs_SetSubsystemConfig (XVprocSs *InstancePtr)
| This function is the entry point into the video processing subsystem driver processing path. More...
XVprocSs_Config * | XVprocSs_LookupConfig (u32 DeviceId)
| This function looks for the device configuration based on the unique device ID. More...
void | XVprocSs_Start (XVprocSs *InstancePtr)
| This function starts the video subsystem including all sub-cores that are included in the processing pipeline for a given use-case. More...
void | XVprocSs_Stop (XVprocSs *InstancePtr)
| This function stops the video subsystem including all sub-cores Stop the video pipe starting from front to back. More...
void | XVprocSs_Reset (XVprocSs *InstancePtr)
| This function resets the video subsystem sub-cores. More...
int | XVprocSs_SetVidStreamIn (XVprocSs *InstancePtr, const XVidC_VideoStream *StrmIn)
| This function configures the video subsystem input interface. More...
int | XVprocSs_SetVidStreamOut (XVprocSs *InstancePtr, const XVidC_VideoStream *StrmOut)
| This function configures the video subsystem output interface. More...
int | XVprocSs_SetStreamResolution (XVidC_VideoStream *StreamPtr, const XVidC_VideoMode VmId, XVidC_VideoTiming const *Timing)
| This function sets the required subsystem video stream to the user provided stream and timing parameters. More...
void | XVprocSs_SetFrameBufBaseaddr (XVprocSs *InstancePtr, UINTPTR addr)
| This function sets the base address of the video frame buffers used by the subsystem instance. More...
void | XVprocSs_SetUserTimerHandler (XVprocSs *InstancePtr, XVidC_DelayHandler CallbackFunc, void *CallbackRef)
| This function registers the user defined delay/sleep function with subsystem. More...
void | XVprocSs_SetZoomMode (XVprocSs *InstancePtr, u8 OnOff)
| This function configures the video subsystem to enable/disable ZOOM feature If ZOOM mode is set to ON but user has not set window coordinates then quarter of input stream resolution at coordinates 0,0 is set as the default zoom window. More...
void | XVprocSs_SetPipMode (XVprocSs *InstancePtr, u8 OnOff)
| This function configures the video subsystem to enable/disable PIP feature If PIP mode is set to ON but user has not set window coordinates then half of input stream resolution at coordinates 0,0 is set as the default zoom window. More...
void | XVprocSs_SetZoomPipWindow (XVprocSs *InstancePtr, XVprocSs_Win mode, XVidC_VideoWindow *win)
| This function allows user to set the Zoom or PIP window. More...
void | XVprocSs_GetZoomPipWindow (XVprocSs *InstancePtr, XVprocSs_Win mode, XVidC_VideoWindow *win)
| This function reads the user defined Zoom/Pip window from scratch pad memory. More...
void | XVprocSs_UpdateZoomPipWindow (XVprocSs *InstancePtr)
| This function updates the Pip/Zoom window currently on screen in-place. More...
s32 | XVprocSs_GetPictureBrightness (XVprocSs *InstancePtr)
| This function returns picture brighntess setting. More...
void | XVprocSs_SetPictureBrightness (XVprocSs *InstancePtr, s32 NewValue)
| This function updates picture brighntess setting with specified value. More...
s32 | XVprocSs_GetPictureContrast (XVprocSs *InstancePtr)
| This function returns picture contrast setting. More...
void | XVprocSs_SetPictureContrast (XVprocSs *InstancePtr, s32 NewValue)
| This function updates picture contrast setting with specified value. More...
s32 | XVprocSs_GetPictureSaturation (XVprocSs *InstancePtr)
| This function returns picture saturation setting. More...
void | XVprocSs_SetPictureSaturation (XVprocSs *InstancePtr, s32 NewValue)
| This function updates picture saturation setting with specified value. More...
s32 | XVprocSs_GetPictureGain (XVprocSs *InstancePtr, XVprocSs_ColorChannel ChId)
| This function returns picture gain setting for the specified color channel. More...
void | XVprocSs_SetPictureGain (XVprocSs *InstancePtr, XVprocSs_ColorChannel ChId, s32 NewValue)
| This function updates picture gain setting with specified value. More...
XVidC_ColorStd | XVprocSs_GetPictureColorStdIn (XVprocSs *InstancePtr)
| This function returns picture color standard setting for input. More...
void | XVprocSs_SetPictureColorStdIn (XVprocSs *InstancePtr, XVidC_ColorStd NewVal)
| This function sets picture color standard setting for input. More...
XVidC_ColorStd | XVprocSs_GetPictureColorStdOut (XVprocSs *InstancePtr)
| This function returns picture color standard setting for output. More...
void | XVprocSs_SetPictureColorStdOut (XVprocSs *InstancePtr, XVidC_ColorStd NewVal)
| This function sets picture color standard setting for output. More...
XVidC_ColorRange | XVprocSs_GetPictureColorRange (XVprocSs *InstancePtr)
| This function returns picture color range for output. More...
void | XVprocSs_SetPictureColorRange (XVprocSs *InstancePtr, XVidC_ColorRange NewVal)
| This function sets picture color range for output. More...
int | XVprocSs_SetPictureDemoWindow (XVprocSs *InstancePtr, XVidC_VideoWindow *Win)
| This function sets picture Demo Window. More...
void | XVprocSs_SetPIPBackgroundColor (XVprocSs *InstancePtr, XLboxColorId ColorId)
| This function sets PIP background color. More...
void | XVprocSs_LoadScalerCoeff (XVprocSs *InstancePtr, u32 CoreId, u16 num_phases, u16 num_taps, const short *Coeff)
| This function enables user to load external filter coefficients for Scaler cores, independently for H & V. More...
void | XVprocSs_LoadChromaResamplerCoeff (XVprocSs *InstancePtr, u32 CoreId, u16 num_taps, const short *Coeff)
| This function enables user to load external filter coefficients for Chroma Resampler cores, independently for H & V. More...
void | XVprocSs_ReportSubsystemConfig (XVprocSs *InstancePtr)
| This function reports the subsystem HW and input/output stream configuration. More...
void | XVprocSs_ReportSubsystemCoreInfo (XVprocSs *InstancePtr)
| This function reports Video Processing Subsystem HW configuration. More...
void | XVprocSs_ReportSubcoreStatus (XVprocSs *InstancePtr, u32 SubcoreId)
| This function reports the status of specified sub-core. More...
void | XVprocSs_LogReset (XVprocSs *InstancePtr)
| This function will reset the driver's logging mechanism. More...
u16 | XVprocSs_LogRead (XVprocSs *InstancePtr)
| This function will read the last event from the log. More...
void | XVprocSs_LogDisplay (XVprocSs *InstancePtr)
| This function will read and print the entire event log. More...
void | XVprocSs_LogWrite (XVprocSs *InstancePtr, XVprocSs_LogEvent Evt, u8 Data)
| This function will insert an event in the driver's logging mechanism. More...

## Macro Definition Documentation

#define XVprocSs_GetColorDepth | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.ColorDepth)

This macro returns the subsystem Color Depth.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  Color Depth

Referenced by XVprocSs_SetupRouterDataFlow().

#define XVprocSs_GetPipZoomWinHStepSize | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->CtxtData.PixelHStepSize)

This macro returns the Pip/Zoom window horizontal increment size.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  Pixel H Step size

Referenced by XVprocSs_ReportSubsystemConfig().

#define XVprocSs_GetSubsystemTopology | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology)

This macro returns the subsystem topology.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  XVPROCSS_TOPOLOGY_FULL_FLEDGED or XVPROCSS_TOPOLOGY_SCALER_ONLY

Referenced by XVprocSs_CfgInitialize(), XVprocSs_ReportSubsystemCoreInfo(), and XVprocSs_SetSubsystemConfig().

#define XVPROCSS_H

< prevent circular inclusions by using protection macros

#define XVprocSs_IsConfigModeCscOnly | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_CSC_ONLY)

This macro checks if subsystem configuration is in CSC Only Mode.

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  Returns 1 if condition is TRUE or 0 if FALSE

#define XVprocSs_IsConfigModeDeinterlaceOnly | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_DEINTERLACE_ONLY)

This macro checks if subsystem configuration is in Deinterlace Only Mode.

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  Returns 1 if condition is TRUE or 0 if FALSE

#define XVprocSs_IsConfigModeHCResampleOnly | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_HCRESAMPLE_ONLY)

This macro checks if subsystem configuration is in H Chroma Resample Mode.

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  Returns 1 if condition is TRUE or 0 if FALSE

#define XVprocSs_IsConfigModeMax | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_FULL_FLEDGED)

This macro checks if subsystem is in Maximum (Full_Fledged) configuration.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  Return 1 if condition is TRUE or 0 if FALSE

Referenced by XVprocSs_GetZoomPipWindow(), XVprocSs_ReportSubsystemConfig(), XVprocSs_SetPipMode(), XVprocSs_SetZoomMode(), XVprocSs_SetZoomPipWindow(), and XVprocSs_UpdateZoomPipWindow().

#define XVprocSs_IsConfigModeSscalerOnly | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_SCALER_ONLY)

This macro checks if subsystem configuration is in Scaler Only Mode.

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  Returns 1 if condition is TRUE or 0 if FALSE

#define XVprocSs_IsConfigModeVCResampleOnly | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->Config.Topology == XVPROCSS_TOPOLOGY_VCRESAMPLE_ONLY)

This macro checks if subsystem configuration is in V Chroma ResampleMode.

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  Returns 1 if condition is TRUE or 0 if FALSE

#define XVprocSs_IsPipModeOn | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->CtxtData.PipEn)

This macro returns the current state of PIP Mode stored in subsystem internal scratch pad memory.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  Returns 1 if PIP mode is ON or 0 if OFF

Referenced by XVprocSs_ReportSubsystemConfig(), XVprocSs_SetupRouterDataFlow(), XVprocSs_UpdateZoomPipWindow(), and XVprocSs_VdmaSetWinToDnScaleMode().

#define XVprocSs_IsZoomModeOn | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->CtxtData.ZoomEn)

This macro returns the current state of Zoom Mode stored in subsystem internal scratch pad memory.

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  Returns 1 if ZOOM mode is ON or 0 if OFF

Referenced by XVprocSs_ReportSubsystemConfig(), XVprocSs_SetupRouterDataFlow(), and XVprocSs_VdmaSetWinToUpScaleMode().

#define XVprocSs_ResetPipModeFlag | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->CtxtData.PipEn = FALSE)

This macro clears the PIP mode flag stored in subsystem internal scratch pad memory.

This call has no side-effect

Parameters

  XVprocSsPtr | is a pointer to the Video Processing subsystem instance

Returns
  None

#define XVprocSs_ResetZoomModeFlag | ( |  | XVprocSsPtr | ) | ((XVprocSsPtr)->CtxtData.ZoomEn = FALSE)

This macro clears the ZOOM mode flag stored in subsystem internal scratch pad memory.

This call has no side-effect

Parameters

  XVprocSsPtr | is pointer to the Video Processing subsystem instance

Returns
  None

#define XVprocSs_SetStreamColorDepth | ( |  | Stream,
|  |  | ColorDepth
| ) |  | ((Stream)->ColorDepth = ColorDepth)

This macro sets the specified stream's color depth.

It can be used to update input or output stream. This call has no side-effect in isolation For change to take effect user must trigger processing path reconfiguration by calling XVprocSs_ConfigureSubsystem()

Parameters

  Stream | is a pointer to the Subsystem Input or Output Stream
  ColorDepth | is the requested color depth

Returns
  None

#define XVprocSs_SetStreamColorFormat | ( |  | Stream,
|  |  | ColorFormat
| ) |  | ((Stream)->ColorFormatId = ColorFormat)

This macro sets the specified stream's color format.

It can be used to update input or output stream. This call has no side-effect in isolation. For change to take effect user must trigger processing path reconfiguration by calling XVprocSs_ConfigureSubsystem()

Parameters

  Stream | is a pointer to the Subsystem Input or Output Stream
  ColorFormat | is the requested color format

Returns
  None

## Enumeration Type Documentation

enum XVprocSs_ColorChannel

This typedef enumerates supported Color Channels.

enum XVPROCSS_CONFIG_TOPOLOGY

This typedef enumerates supported subsystem configuration topology.

enum XVprocSs_ScaleMode

This typedef enumerates supported scaling modes.

enum XVPROCSS_SUBCORE_ID

Subsystem sub-core layer 2 header files Layer 2 includes Layer-1.

This typedef enumerates the AXIS Switch Port for Sub-Core connection

enum XVprocSs_Win

This typedef enumerates types of Windows (Sub-frames) available in the Subsystem.

## Function Documentation

int XVprocSs_CfgInitialize | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_Config * | CfgPtr,
|  | UINTPTR | EffectiveAddr
| ) |  |

This function initializes the video subsystem and included sub-cores.

This function must be called prior to using the subsystem. Initialization includes setting up the instance data for top level as well as all included sub-core therein, and ensuring the hardware is in a known stable state.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  CfgPtr | points to the configuration structure associated with the subsystem instance.
  EffectiveAddr | is the base address of the device. If address translation is being used, then this parameter must reflect the virtual base address. Otherwise, the physical address should be used.

Returns
  XST_SUCCESS if initialization is successful else XST_FAILURE

References XVprocSs_Config::BaseAddress, XVprocSs_Config::ColorDepth, XVprocSs::Config, XVprocSs::CscPtr, XVprocSs::CtxtData, XVprocSs_ContextData::DeintBufAddr, XVprocSs::DeintPtr, XVprocSs::FrameBufBaseaddr, XVprocSs_Config::HasMADI, XVprocSs::HcrsmplrPtr, XVprocSs::HscalerPtr, XVprocSs::IsReady, XVprocSs::LboxPtr, XVprocSs_Config::MaxHeight, XVprocSs_Config::MaxWidth, XVprocSs_Config::NumVidComponents, XVprocSs::RouterPtr, XVprocSs::RstAximmPtr, XVprocSs::RstAxisPtr, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVprocSs::VdmaPtr, XVprocSs::VscalerPtr, XVPROCSS_EVT_CHK_BASEADDR, XVPROCSS_EVT_CHK_TOPO, XVPROCSS_EVT_INIT, XVprocSs_GetSubsystemTopology, XVprocSs_LogWrite(), XVprocSs_Reset(), XVprocSs_SubcoreInitCsc(), XVprocSs_SubcoreInitDeinterlacer(), XVprocSs_SubcoreInitHCrsmplr(), XVprocSs_SubcoreInitHScaler(), XVprocSs_SubcoreInitLetterbox(), XVprocSs_SubcoreInitResetAximm(), XVprocSs_SubcoreInitResetAxis(), XVprocSs_SubcoreInitRouter(), XVprocSs_SubcoreInitVCrsmpleIn(), XVprocSs_SubcoreInitVCrsmpleOut(), XVprocSs_SubcoreInitVdma(), and XVprocSs_SubcoreInitVScaler().

Referenced by XSys_Init().

s32 XVprocSs_GetPictureBrightness | ( | XVprocSs * | InstancePtr | ) |

This function returns picture brighntess setting.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  current value (0-100), if csc subcore is included

References XVprocSs::CscPtr.

XVidC_ColorRange XVprocSs_GetPictureColorRange | ( | XVprocSs * | InstancePtr | ) |

This function returns picture color range for output.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  Current set output range, if csc core is included
  - XVIDC_CR_16_235
  - XVIDC_CR_16_240

- XVIDC_CR_0_255 Else XVIDC_CR_UNKNOWN_RANGE

References XVprocSs::CscPtr.

XVidC_ColorStd XVprocSs_GetPictureColorStdIn | ( | XVprocSs * | InstancePtr | ) |

This function returns picture color standard setting for input.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  Current set color standard, if csc core is included
  - XVIDC_BT_2020
  - XVIDC_BT_709
  - XVIDC_BT_601 Else XVIDC_BT_UNKNOWN

References XVprocSs::CscPtr.

XVidC_ColorStd XVprocSs_GetPictureColorStdOut | ( | XVprocSs * | InstancePtr | ) |

This function returns picture color standard setting for output.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  Current set color standard, if csc core is included
  - XVIDC_BT_2020
  - XVIDC_BT_709
  - XVIDC_BT_601 Else XVIDC_BT_UNKNOWN

References XVprocSs::CscPtr.

s32 XVprocSs_GetPictureContrast | ( | XVprocSs * | InstancePtr | ) |

This function returns picture contrast setting.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  current value (0-100), if csc subcore is included

References XVprocSs::CscPtr.

s32 XVprocSs_GetPictureGain | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_ColorChannel | ChId
| ) |  |

This function returns picture gain setting for the specified color channel.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  ChId | is the color channel id for which gain is requested

Returns
  current value (0-100), if csc subcore is included

References XVprocSs::CscPtr.

s32 XVprocSs_GetPictureSaturation | ( | XVprocSs * | InstancePtr | ) |

This function returns picture saturation setting.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  current value (0-100), if csc subcore is included

References XVprocSs::CscPtr.

void XVprocSs_GetZoomPipWindow | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_Win | mode,
|  | XVidC_VideoWindow * | win
| ) |  |

This function reads the user defined Zoom/Pip window from scratch pad memory.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  mode | is feature (PIP or ZOOM) whose window coordinates are to be retrieved
  win | is structure that will contain read window coordinates and size

Note
  For Zoom mode RD client window is read from scratch pad memory For Pip mode WR client window is read from scratch pad memory This function is not applicable in Subsystem Stream Mode Configuration

References XVprocSs::CtxtData, XVprocSs_ContextData::RdWindow, XVprocSs_ContextData::WrWindow, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_GET_ZPWIN, XVprocSs_IsConfigModeMax, and XVprocSs_LogWrite().

Referenced by XVprocSs_ReportSubsystemConfig(), XVprocSs_VdmaSetWinToDnScaleMode(), and XVprocSs_VdmaSetWinToUpScaleMode().

void XVprocSs_LoadChromaResamplerCoeff | ( | XVprocSs * | InstancePtr,
|  | u32 | CoreId,
|  | u16 | num_taps,
|  | const short * | Coeff
| ) |  |

This function enables user to load external filter coefficients for Chroma Resampler cores, independently for H & V.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  CoreId | is the resampler core to be worked on XVPROCSS_SUBCORE_CR_H XVPROCSS_SUBCORE_CR_V_IN XVPROCSS_SUBCORE_CR_V_OUT
  num_taps | is the taps of the resampler hw instance
  Coeff | is the pointer to the filter table to be loaded

Returns
  None

Note
  Applicable only if Resampler cores are included in the subsystem

References XVprocSs::HcrsmplrPtr, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVPROCSS_EVT_CFG_HCR, XVPROCSS_EVT_CFG_VCRI, XVPROCSS_EVT_CFG_VCRO, and XVprocSs_LogWrite().

void XVprocSs_LoadScalerCoeff | ( | XVprocSs * | InstancePtr,
|  | u32 | CoreId,
|  | u16 | num_phases,
|  | u16 | num_taps,
|  | const short * | Coeff
| ) |  |

This function enables user to load external filter coefficients for Scaler cores, independently for H & V.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  CoreId | is the Scaler core to be worked on XVPROCSS_SUBCORE_SCALER_V XVPROCSS_SUBCORE_SCALER_H
  num_phases | is the number of phases supported by Scaler
  num_taps | is the effective taps to be used by Scaler
  Coeff | is the pointer to the filter table to be loaded

Returns
  None

Note
  Applicable only if Scaler cores are included in the subsystem

References XVprocSs::HscalerPtr, XVprocSs::VscalerPtr, XVPROCSS_EVT_CFG_HSCALER, XVPROCSS_EVT_CFG_VSCALER, and XVprocSs_LogWrite().

void XVprocSs_LogDisplay | ( | XVprocSs * | InstancePtr | ) |

This function will read and print the entire event log.

Parameters

  InstancePtr | is a pointer to the XVprocSs core instance.

Returns
  None.

Note
  After reading out all events, the log will be empty.

References XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_CFG_CSC, XVPROCSS_EVT_CFG_DEINT, XVPROCSS_EVT_CFG_HCR, XVPROCSS_EVT_CFG_HSCALER, XVPROCSS_EVT_CFG_MAX, XVPROCSS_EVT_CFG_VCRI, XVPROCSS_EVT_CFG_VCRO, XVPROCSS_EVT_CFG_VPSS, XVPROCSS_EVT_CFG_VSCALER, XVPROCSS_EVT_CFGERR_VDMA, XVPROCSS_EVT_CHK_BASEADDR, XVPROCSS_EVT_CHK_TOPO, XVPROCSS_EVT_GET_ZPWIN, XVPROCSS_EVT_INIT, XVPROCSS_EVT_INIT_LBOX, XVPROCSS_EVT_INIT_RESAXIM, XVPROCSS_EVT_INIT_RESAXIS, XVPROCSS_EVT_INIT_ROUTER, XVPROCSS_EVT_INIT_VDMA, XVPROCSS_EVT_NONE, XVPROCSS_EVT_OPERR_VDMA, XVPROCSS_EVT_RESET_VPSS, XVPROCSS_EVT_SET_PIPMODE, XVPROCSS_EVT_SET_PIPWIN, XVPROCSS_EVT_SET_ZOOMMODE, XVPROCSS_EVT_SET_ZOOMWIN, XVPROCSS_EVT_START_VPSS, XVPROCSS_EVT_STOP_VPSS, XVPROCSS_EVT_UPDATE_ZPWIN, and XVprocSs_LogRead().

u16 XVprocSs_LogRead | ( | XVprocSs * | InstancePtr | ) |

This function will read the last event from the log.

Parameters

  InstancePtr | is a pointer to the XVprocSs core instance.

Returns
  The log data.

Note
  The read is "destructive" in the sense an event may only be read once, the read pointer then advancing to the next entry. After reading all the events (see routine XVprocSs_LogDisplay), the log will be empty.

References XVprocSs::Log, XVPROCSS_EVT_BUFFSIZE, and XVPROCSS_EVT_NONE.

Referenced by XVprocSs_LogDisplay().

void XVprocSs_LogReset | ( | XVprocSs * | InstancePtr | ) |

This function will reset the driver's logging mechanism.

Parameters

  InstancePtr | is a pointer to the XVprocSs core instance.

Returns
  None.

Note
  HeadIndex == TailIndex means that the log is empty.

References XVprocSs::Log.

Referenced by XSys_Init().

void XVprocSs_LogWrite | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_LogEvent | Evt,
|  | u8 | Data
| ) |  |

This function will insert an event in the driver's logging mechanism.

Parameters

  InstancePtr | is a pointer to the XVprocSs core instance.
  Evt | is the event type to log.
  Data | is the associated data for the event.

Returns
  None.

Note
  The DataBuffer is circular. If full, new events will overwrite oldest events.

References XVprocSs::Log, XVPROCSS_EVT_BUFFSIZE, and XVPROCSS_EVT_LAST_ENUM.

Referenced by XVprocSs_BuildRoutingTable(), XVprocSs_CfgInitialize(), XVprocSs_GetZoomPipWindow(), XVprocSs_LoadChromaResamplerCoeff(), XVprocSs_LoadScalerCoeff(), XVprocSs_ProgRouterMux(), XVprocSs_Reset(), XVprocSs_SetPictureDemoWindow(), XVprocSs_SetPIPBackgroundColor(), XVprocSs_SetPipMode(), XVprocSs_SetSubsystemConfig(), XVprocSs_SetupRouterDataFlow(), XVprocSs_SetZoomMode(), XVprocSs_SetZoomPipWindow(), XVprocSs_Start(), XVprocSs_Stop(), XVprocSs_SubcoreInitCsc(), XVprocSs_SubcoreInitDeinterlacer(), XVprocSs_SubcoreInitHCrsmplr(), XVprocSs_SubcoreInitHScaler(), XVprocSs_SubcoreInitLetterbox(), XVprocSs_SubcoreInitResetAximm(), XVprocSs_SubcoreInitResetAxis(), XVprocSs_SubcoreInitRouter(), XVprocSs_SubcoreInitVCrsmpleIn(), XVprocSs_SubcoreInitVCrsmpleOut(), XVprocSs_SubcoreInitVdma(), XVprocSs_SubcoreInitVScaler(), XVprocSs_UpdateZoomPipWindow(), XVprocSs_VdmaReadSetup(), XVprocSs_VdmaReset(), XVprocSs_VdmaStartTransfer(), and XVprocSs_VdmaWriteSetup().

void XVprocSs_ReportSubcoreStatus | ( | XVprocSs * | InstancePtr,
|  | u32 | SubcoreId
| ) |  |

This function reports the status of specified sub-core.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  SubcoreId | is the subcore index from the below list XVPROCSS_SUBCORE_SCALER_V XVPROCSS_SUBCORE_SCALER_H XVPROCSS_SUBCORE_VDMA XVPROCSS_SUBCORE_LBOX XVPROCSS_SUBCORE_CR_H XVPROCSS_SUBCORE_CR_V_IN XVPROCSS_SUBCORE_CR_V_OUT XVPROCSS_SUBCORE_CSC XVPROCSS_SUBCORE_DEINT

Returns
  None

References XVprocSs::CscPtr, XVprocSs::CtxtData, XVprocSs::DeintPtr, XVprocSs::HcrsmplrPtr, XVprocSs::HscalerPtr, XVprocSs::LboxPtr, XVprocSs_ContextData::PixelWidthInBits, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVprocSs::VscalerPtr, and XVprocSs_VdmaDbgReportStatus().

void XVprocSs_ReportSubsystemConfig | ( | XVprocSs * | InstancePtr | ) |

This function reports the subsystem HW and input/output stream configuration.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  None

References XVprocSs::CtxtData, XVprocSs_ContextData::RtngTable, XVprocSs::VidIn, XVprocSs::VidOut, XVprocSs_GetPipZoomWinHStepSize, XVprocSs_GetZoomPipWindow(), XVprocSs_IsConfigModeMax, XVprocSs_IsPipModeOn, and XVprocSs_IsZoomModeOn.

void XVprocSs_ReportSubsystemCoreInfo | ( | XVprocSs * | InstancePtr | ) |

This function reports Video Processing Subsystem HW configuration.

Parameters

  InstancePtr | is a pointer to the Subsystem instance.

Returns
  None

References XVprocSs_Config::ColorDepth, XVprocSs::Config, XVprocSs::CscPtr, XVprocSs::DeintPtr, XVprocSs::HcrsmplrPtr, XVprocSs::HscalerPtr, XVprocSs::LboxPtr, XVprocSs_Config::MaxHeight, XVprocSs_Config::MaxWidth, XVprocSs_Config::NumVidComponents, XVprocSs_Config::PixPerClock, XVprocSs::RouterPtr, XVprocSs::RstAximmPtr, XVprocSs::RstAxisPtr, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVprocSs::VdmaPtr, XVprocSs::VscalerPtr, and XVprocSs_GetSubsystemTopology.

Referenced by XSys_ReportSystemInfo().

void XVprocSs_Reset | ( | XVprocSs * | InstancePtr | ) |

This function resets the video subsystem sub-cores.

There are 2 reset networks within the subsystem

- For cores that are on AXIS interface
- For cores that are on AXI-MM interface

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  None

XVprocSs_Reset,_Start controls vpss resets as shown axis_int -—_______________________-----------------------------— axis_ext -—________________________________________________----— aximm --------—_______--------------------------------------— | 100us| 100us| 1000us | 1000us | | _Reset...............................| | Program VSPP IP| _Start

References XVprocSs::CtxtData, XVprocSs::RstAximmPtr, XVprocSs::RstAxisPtr, XVprocSs_ContextData::StartCore, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_RESET_VPSS, XVprocSs_LogWrite(), XVPROCSS_RSTMASK_IP_AXIMM, XVPROCSS_RSTMASK_IP_AXIS, and XVprocSs_VdmaReset().

Referenced by XVprocSs_CfgInitialize().

void XVprocSs_SetFrameBufBaseaddr | ( | XVprocSs * | InstancePtr,
|  | UINTPTR | addr
| ) |  |

This function sets the base address of the video frame buffers used by the subsystem instance.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  addr | is the base address of the video frame buffers

Returns
  None

References XVprocSs::FrameBufBaseaddr.

Referenced by XSys_Init().

void XVprocSs_SetPictureBrightness | ( | XVprocSs * | InstancePtr,
|  | s32 | NewValue
| ) |  |

This function updates picture brighntess setting with specified value.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewValue | is the new value to be written Range: 0-100

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPictureColorRange | ( | XVprocSs * | InstancePtr,
|  | XVidC_ColorRange | NewVal
| ) |  |

This function sets picture color range for output.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewVal | is the required color range XVIDC_CR_16_235 XVIDC_CR_16_240

- XVIDC_CR_0_255

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPictureColorStdIn | ( | XVprocSs * | InstancePtr,
|  | XVidC_ColorStd | NewVal
| ) |  |

This function sets picture color standard setting for input.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewVal | is the required color standard XVIDC_BT_2020 XVIDC_BT_709 XVIDC_BT_601

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPictureColorStdOut | ( | XVprocSs * | InstancePtr,
|  | XVidC_ColorStd | NewVal
| ) |  |

This function sets picture color standard setting for output.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewVal | is the required color standard XVIDC_BT_2020 XVIDC_BT_709 XVIDC_BT_601

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPictureContrast | ( | XVprocSs * | InstancePtr,
|  | s32 | NewValue
| ) |  |

This function updates picture contrast setting with specified value.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewValue | is the new value to be written Range: 0-100

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

int XVprocSs_SetPictureDemoWindow | ( | XVprocSs * | InstancePtr,
|  | XVidC_VideoWindow * | Win
| ) |  |

This function sets picture Demo Window.

Post this function call all further picture settings will apply only within the defined window. Demo window gets reset everytime subsystem configuration changes

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  Win | is the pointer to window coordinates within which picture settings should be applied

Returns
  XST_SUCCESS if window is valid else XST_FAILURE

Note
  Applicable only if CSC core is included in the subsystem and the Demo Window is enabled

References XVprocSs::CscPtr, XVPROCSS_EVT_CFG_CSC, and XVprocSs_LogWrite().

void XVprocSs_SetPictureGain | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_ColorChannel | ChId,
|  | s32 | NewValue
| ) |  |

This function updates picture gain setting with specified value.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  ChId | is the color channel id for which gain is to be updated
  NewValue | is the new value to be written Range: 0-100

Returns
  none

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPictureSaturation | ( | XVprocSs * | InstancePtr,
|  | s32 | NewValue
| ) |  |

This function updates picture saturation setting with specified value.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  NewValue | is the new value to be written Range: 0-100

Returns
  None

Note
  Applicable only if CSC core is included in the subsystem

References XVprocSs::CscPtr.

void XVprocSs_SetPIPBackgroundColor | ( | XVprocSs * | InstancePtr,
|  | XLboxColorId | ColorId
| ) |  |

This function sets PIP background color.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  ColorIs | is the requested background color XLBOX_BKGND_BLACK XLBOX_BKGND_WHITE XLBOX_BKGND_RED XLBOX_BKGND_GREEN XLBOX_BKGND_BLUE

Returns
  None

Note
  Applicable only if Letterbox core is included in the subsystem

References XVprocSs::CtxtData, XVprocSs_ContextData::LboxBkgndColor, XVprocSs::LboxPtr, XVprocSs_ContextData::StrmCformat, XVprocSs::VidIn, XVPROCSS_EVT_SET_PIPMODE, and XVprocSs_LogWrite().

void XVprocSs_SetPipMode | ( | XVprocSs * | InstancePtr,
|  | u8 | OnOff
| ) |  |

This function configures the video subsystem to enable/disable PIP feature If PIP mode is set to ON but user has not set window coordinates then half of input stream resolution at coordinates 0,0 is set as the default zoom window.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  OnOff | is the action required

Returns
  None

Note
  User must call XVprocSs_ConfigureSubsystem() for change to take effect This call has not been added here such that it provides an opportunity to make the change during vertical blanking at system level. This behavior will change once shadow register support is available in sub-core IP's This function is not applicable in Subsystem Stream Mode Configuration

References XVprocSs::CtxtData, XVprocSs_ContextData::PipEn, XVPROCSS_EVT_SET_PIPMODE, XVprocSs_IsConfigModeMax, XVprocSs_LogWrite(), and XVprocSs_ContextData::ZoomEn.

int XVprocSs_SetStreamResolution | ( | XVidC_VideoStream * | StreamPtr,
|  | const XVidC_VideoMode | VmId,
|  | XVidC_VideoTiming const * | Timing
| ) |  |

This function sets the required subsystem video stream to the user provided stream and timing parameters.

Parameters

  StreamPtr | is a pointer to the subsystem video stream to be configured
  VmId | is the Video Mode ID of the new resolution to be set
  Timing | is the timing parameters of the new resolution to be set

Returns
  XST_SUCCESS if successful else XST_FAILURE

int XVprocSs_SetSubsystemConfig | ( | XVprocSs * | InstancePtr | ) |

This function is the entry point into the video processing subsystem driver processing path.

It will examine the instantiated subsystem configuration mode and the input and output stream configuration. Based on the available information control flow is determined and requisite sub-cores are configured to implement the supported use case

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  XST_SUCCESS if successful else XST_FAILURE

References XVPROCSS_EVT_CHK_TOPO, XVprocSs_GetSubsystemTopology, and XVprocSs_LogWrite().

void XVprocSs_SetUserTimerHandler | ( | XVprocSs * | InstancePtr,
|  | XVidC_DelayHandler | CallbackFunc,
|  | void * | CallbackRef
| ) |  |

This function registers the user defined delay/sleep function with subsystem.

Parameters

  InstancePtr | is a pointer to the Subsystem instance
  CallbackFunc | is the function pointer to the user defined delay function
  CallbackRef | is the pointer to timer instance used by the delay function

Returns
  None

References XVprocSs::UsrDelayUs, and XVprocSs::UsrTmrPtr.

int XVprocSs_SetVidStreamIn | ( | XVprocSs * | InstancePtr,
|  | const XVidC_VideoStream * | StrmIn
| ) |  |

This function configures the video subsystem input interface.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  StrmIn | is the pointer to input stream configuration

Returns
  XST_SUCCESS

References XVprocSs::VidIn.

Referenced by XSys_SetStreamParam().

int XVprocSs_SetVidStreamOut | ( | XVprocSs * | InstancePtr,
|  | const XVidC_VideoStream * | StrmOut
| ) |  |

This function configures the video subsystem output interface.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  StrmOut | is the pointer to input stream configuration

Returns
  XST_SUCCESS

References XVprocSs::VidOut.

Referenced by XSys_SetStreamParam().

void XVprocSs_SetZoomMode | ( | XVprocSs * | InstancePtr,
|  | u8 | OnOff
| ) |  |

This function configures the video subsystem to enable/disable ZOOM feature If ZOOM mode is set to ON but user has not set window coordinates then quarter of input stream resolution at coordinates 0,0 is set as the default zoom window.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  OnOff | is the action required

Returns
  None

Note
  User must call XVprocSs_ConfigureSubsystem() for change to take effect This call has not been added here such that it provides an opportunity to make the change during vertical blanking at system level. This behavior will change once shadow register support is available in sub-core IP's This function is not applicable in Subsystem Stream Mode Configuration

References XVprocSs::CtxtData, XVprocSs_ContextData::PipEn, XVPROCSS_EVT_SET_ZOOMMODE, XVprocSs_IsConfigModeMax, XVprocSs_LogWrite(), and XVprocSs_ContextData::ZoomEn.

void XVprocSs_SetZoomPipWindow | ( | XVprocSs * | InstancePtr,
|  | XVprocSs_Win | mode,
|  | XVidC_VideoWindow * | win
| ) |  |

This function allows user to set the Zoom or PIP window.

Scratch pad memory is updated with the new window information

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.
  mode | is feature to be updated PIP or ZOOM
  win | is structure that contains window coordinates and size

Returns
  None

Note
  For Zoom mode RD client window is written in scratch pad memory For Pip mode WR client window is written in scratch pad memory This function is not applicable in Subsystem Stream Mode Configuration

References XVprocSs::Config, XVprocSs::CtxtData, XVprocSs_ContextData::PixelHStepSize, XVprocSs_Config::PixPerClock, XVprocSs_ContextData::RdWindow, XVprocSs::VdmaPtr, XVprocSs_ContextData::WrWindow, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_SET_PIPWIN, XVPROCSS_EVT_SET_ZOOMWIN, XVprocSs_IsConfigModeMax, and XVprocSs_LogWrite().

void XVprocSs_Start | ( | XVprocSs * | InstancePtr | ) |

This function starts the video subsystem including all sub-cores that are included in the processing pipeline for a given use-case.

Video pipe is started from back to front

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  None

Note
  Cores are started only if the corresponding start flag in the scratch pad memory is set. This allows to selectively start only those cores included in the processing chain

References XVprocSs::CscPtr, XVprocSs::CtxtData, XVprocSs::DeintPtr, XVprocSs::HcrsmplrPtr, XVprocSs::HscalerPtr, XVprocSs::LboxPtr, XVprocSs::RstAxisPtr, XVprocSs_ContextData::StartCore, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVprocSs::VscalerPtr, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_START_VPSS, XVprocSs_LogWrite(), XVPROCSS_RSTMASK_VIDEO_IN, and XVprocSs_VdmaStartTransfer().

Referenced by XVprocSs_SetupRouterDataFlow().

void XVprocSs_Stop | ( | XVprocSs * | InstancePtr | ) |

This function stops the video subsystem including all sub-cores Stop the video pipe starting from front to back.

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  None

References XVprocSs::CscPtr, XVprocSs::DeintPtr, XVprocSs::HcrsmplrPtr, XVprocSs::HscalerPtr, XVprocSs::LboxPtr, XVprocSs::VcrsmplrInPtr, XVprocSs::VcrsmplrOutPtr, XVprocSs::VdmaPtr, XVprocSs::VscalerPtr, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_STOP_VPSS, XVprocSs_LogWrite(), and XVprocSs_VdmaStop().

void XVprocSs_UpdateZoomPipWindow | ( | XVprocSs * | InstancePtr | ) |

This function updates the Pip/Zoom window currently on screen in-place.

This implies the video is not blanked and the new coordinates will update instantly as the function executes

Parameters

  InstancePtr | is a pointer to the Subsystem instance to be worked on.

Returns
  None

Note
  This function must be called only after the respective mode (PIP/Zoom) has been enabled and user wants to move window to a new location This function is not applicable in Subsystem Stream Mode Configuration

References XVprocSs::CtxtData, XVprocSs::LboxPtr, XVprocSs::VidOut, XVprocSs_ContextData::WrWindow, XVPROCSS_EDAT_SUCCESS, XVPROCSS_EVT_UPDATE_ZPWIN, XVprocSs_IsConfigModeMax, XVprocSs_IsPipModeOn, XVprocSs_LogWrite(), XVprocSs_VdmaSetWinToDnScaleMode(), XVprocSs_VdmaSetWinToUpScaleMode(), and XVprocSs_VdmaStartTransfer().