From 4037beef4af68360675be07b0b6f91561b05f5cf Mon Sep 17 00:00:00 2001 From: Rohit Consul Date: Fri, 7 Aug 2015 16:05:05 -0700 Subject: [PATCH] vprocss: Fixed PIP background color in supported video formats -Bug fix for wrong pip background color when video format is changed -Input stream color depth and pixel/clock must be overwritten by subsystem as these are not run time configurable -Deinterlacer supports 480i/576i and 1080i. removed constraint for 1080i support only -Updated mdd file to reflect new drivers versions - video_common_v2.0 and axivdma_v6.0, in dependency list Signed-off-by: Rohit Consul --- .../drivers/vprocss/data/vprocss.mdd | 2 +- .../drivers/vprocss/src/xvprocss.c | 40 +++++++------------ .../drivers/vprocss/src/xvprocss_router.c | 7 ++++ 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/XilinxProcessorIPLib/drivers/vprocss/data/vprocss.mdd b/XilinxProcessorIPLib/drivers/vprocss/data/vprocss.mdd index 392971e8..e107832c 100755 --- a/XilinxProcessorIPLib/drivers/vprocss/data/vprocss.mdd +++ b/XilinxProcessorIPLib/drivers/vprocss/data/vprocss.mdd @@ -37,7 +37,7 @@ BEGIN driver vprocss OPTION driver_state = ACTIVE; OPTION copyfiles = all; OPTION VERSION = 1.0; - OPTION DEPENDS = (video_common_v1_1 v_csc_v1_0 v_deinterlacer_v5_0 v_hcresampler_v1_0 v_vcresampler_v1_0 v_hscaler_v1_0 v_vscaler_v1_0 v_letterbox_v1_0 axivdma_v5_1 gpio_v4_0 axis_switch_v1_0); + OPTION DEPENDS = (video_common_v2_0 v_csc_v1_0 v_deinterlacer_v5_0 v_hcresampler_v1_0 v_vcresampler_v1_0 v_hscaler_v1_0 v_vscaler_v1_0 v_letterbox_v1_0 axivdma_v6_0 gpio_v4_0 axis_switch_v1_0); OPTION NAME = vprocss; END driver diff --git a/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss.c b/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss.c index 3c8e2c37..65164762 100644 --- a/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss.c +++ b/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss.c @@ -1057,9 +1057,9 @@ void XVprocss_UpdateZoomPipWindow(XVprocss *InstancePtr) if(XVprocss_IsPipModeOn(InstancePtr)) { XV_LBoxSetActiveWin(InstancePtr->lbox, - &InstancePtr->idata.wrWindow, - InstancePtr->VidOut.Timing.HActive, - InstancePtr->VidOut.Timing.VActive); + &InstancePtr->idata.wrWindow, + InstancePtr->VidOut.Timing.HActive, + InstancePtr->VidOut.Timing.VActive); } } else //Scaler Only Config @@ -1429,21 +1429,17 @@ static int ValidateSubsystemConfig(XVprocss *InstancePtr) XVidC_VideoStream *StrmIn = &InstancePtr->VidIn; XVidC_VideoStream *StrmOut = &InstancePtr->VidOut; - /* Check Stream Samples/Clock against Subsystem HW Configuration */ - if((StrmIn->PixPerClk != InstancePtr->Config.PixPerClock) || - (StrmOut->PixPerClk != InstancePtr->Config.PixPerClock)) - { - xdbg_printf(XDBG_DEBUG_GENERAL,"VPROCSS ERR:: Input/Output Stream Samples/Clk Not Supported \r\n"); - return(XST_FAILURE); - } + /* Runtime Color Depth conversion not supported + * Always overwrite input/output stream color depth with subsystem setting + */ + StrmIn->ColorDepth = InstancePtr->Config.ColorDepth; + StrmOut->ColorDepth = InstancePtr->Config.ColorDepth; - /* Check Stream Color Depth against Subsystem HW Configuration */ - if((StrmIn->ColorDepth != InstancePtr->Config.ColorDepth) || - (StrmOut->ColorDepth != InstancePtr->Config.ColorDepth)) - { - xdbg_printf(XDBG_DEBUG_GENERAL,"VPROCSS ERR:: Input/Output Stream ColorDepth Not Supported \r\n"); - return(XST_FAILURE); - } + /* Runtime Pixel/Clock conversion not supported + * Always overwrite input/output stream pixel/clk with subsystem setting + */ + StrmIn->PixPerClk = InstancePtr->Config.PixPerClock; + StrmOut->PixPerClk = InstancePtr->Config.PixPerClock; /* Check Stream Width is aligned at Samples/Clock boundary */ if(((StrmIn->Timing.HActive % InstancePtr->Config.PixPerClock) != 0) || @@ -1513,15 +1509,7 @@ static int ValidateSubsystemConfig(XVprocss *InstancePtr) xdbg_printf(XDBG_DEBUG_GENERAL,"VPROCSS ERR:: Interlaced YUV420 stream not supported\r\n"); return(XST_FAILURE); } - if(InstancePtr->deint) - { - if((StrmIn->VmId != XVIDC_VM_1080_50_I) && ((StrmIn->VmId != XVIDC_VM_1080_60_I))) - { - xdbg_printf(XDBG_DEBUG_GENERAL,"VPROCSS ERR:: Only 1080i 50Hz/60Hz Supported\r\n"); - return(XST_FAILURE); - } - } - else + if(!InstancePtr->deint) { xdbg_printf(XDBG_DEBUG_GENERAL,"VPROCSS ERR:: Interlaced input not supported\r\n"); return(XST_FAILURE); diff --git a/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss_router.c b/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss_router.c index 181b49b5..c57f969c 100644 --- a/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss_router.c +++ b/XilinxProcessorIPLib/drivers/vprocss/src/xvprocss_router.c @@ -635,6 +635,13 @@ void XVprocss_SetupRouterDataFlow(XVprocss *pVprocss) &lboxWin, pVprocss->VidOut.Timing.HActive, pVprocss->VidOut.Timing.VActive); + + /* set background to default color on pipe reset */ + XV_LboxSetBackgroundColor(pVprocss->lbox, + XLBOX_BKGND_BLACK, + pVprocss->idata.strmCformat, + pVprocss->VidOut.ColorDepth); + pStartCore[XVPROCSS_RTR_LBOX] = TRUE; } break;