Example #1
0
RET_CODE lib_subt_atsc_get_region_pos(struct osd_device *subt_atsc_osd_dev)
{ 
    RET_CODE ret = SUCCESS;
    struct OSDRect rect;
   ret = OSDDrv_GetRegionPos((HANDLE)subt_atsc_osd_dev,0,&rect);
   if(SUCCESS != ret)
   {
    SDBBP();
   }
   #ifdef tnntc_debug
   
   libc_printf("Character rect region got: uLeft:%d, uTop:%d, uWidth:%d, uHeight:%d\n",rect.uLeft,rect.uTop,\
                   rect.uWidth,rect.uHeight); 
   #endif
   return ret;
}
Example #2
0
RET_CODE OSDDrv_RegionFillInverse(HANDLE hDev,UINT8 uRegionId,struct OSDRect *rect, UINT32 uColorData)
{
	struct osd_device *dev = (struct osd_device *)hDev;

#ifdef GE_SIMULATE_OSD
    RET_CODE ret;
    struct OSDRect rr;

    ret = OSDDrv_GetRegionPos(hDev, uRegionId, &rr);
    if(ret != RET_SUCCESS)
        return ret;

    GE_SIMU_MUTEX_LOCK();	

    ge_cmd_list_new(m_osddrv_ge_dev, m_cmd_list, GE_COMPILE_AND_EXECUTE);
    ret = ge_gma_set_region_to_cmd_list(m_osddrv_ge_dev, GMA_SW_LAYER_ID, uRegionId, m_cmd_list);
    if (ret != RET_SUCCESS)
    {
       GE_SIMU_MUTEX_UNLOCK();	
	return ret;
    }
    UINT32 cmd_hdl = ge_cmd_begin(m_osddrv_ge_dev, m_cmd_list, GE_FILL_RECT_DRAW_COLOR);
    ge_set_draw_color(m_osddrv_ge_dev, cmd_hdl, uColorData);
    ge_set_xy(m_osddrv_ge_dev, cmd_hdl, GE_DST, (rr.uWidth - rect->uLeft - rect->uWidth), rect->uTop);
    ge_set_wh(m_osddrv_ge_dev, cmd_hdl, GE_DST, rect->uWidth, rect->uHeight);
    ge_set_scan_order(m_osddrv_ge_dev, cmd_hdl, GE_PTN, GE_SCAN_TOP_TO_BOTTOM, GE_SCAN_RIGHT_TO_LEFT);
    ge_cmd_end(m_osddrv_ge_dev, cmd_hdl);

    ge_cmd_list_end(m_osddrv_ge_dev, m_cmd_list);
    GE_SIMU_MUTEX_UNLOCK();	

    return RET_SUCCESS;
#endif

	/* If device not running, exit */
	if ((dev->flags & HLD_DEV_STATS_UP) == 0)
	{
		return RET_FAILURE;
	}
	
	if (dev->region_fill_inverse)
	{
		return dev->region_fill_inverse(dev, uRegionId,rect,uColorData);
	}
	
	return !RET_SUCCESS;
}
Example #3
0
RET_CODE OSDDrv_RegionReadInverse(HANDLE hDev,UINT8 uRegionId,VSCR *pVscr,struct OSDRect *rect)
{
	struct osd_device *dev = (struct osd_device *)hDev;

#ifdef GE_SIMULATE_OSD
    RET_CODE ret;
    struct OSDRect rr;

    ret = OSDDrv_GetRegionPos(hDev, uRegionId, &rr);
    if(ret != RET_SUCCESS)
        return ret;

    GE_SIMU_MUTEX_LOCK();	

    ge_cmd_list_new(m_osddrv_ge_dev, m_cmd_list, GE_COMPILE_AND_EXECUTE);
    ret = ge_gma_set_region_to_cmd_list(m_osddrv_ge_dev, GMA_SW_LAYER_ID, uRegionId, m_cmd_list);
    if (ret != RET_SUCCESS)
    {
        GE_SIMU_MUTEX_UNLOCK();			
        return ret;
    }
    UINT32 byte_pitch = osddrv_get_pitch(pVscr->bColorMode, pVscr->vR.uWidth);
    UINT32 ptn_x, ptn_y;

    ptn_x = rect->uLeft - pVscr->vR.uLeft;
    ptn_y = rect->uTop - pVscr->vR.uTop;
    osal_cache_invalidate(pVscr->lpbScr + byte_pitch * ptn_y, byte_pitch * rect->uHeight);

    ge_cmd_list_hdl cmd_list = m_cmd_list;
    ge_base_addr_t base_addr;

    base_addr.color_format = (enum GE_PIXEL_FORMAT)osddrv_color_mode_to_ge(pVscr->bColorMode);
    base_addr.base_address = (UINT32)pVscr->lpbScr;
    base_addr.data_decoder = GE_DECODER_DISABLE;
    base_addr.pixel_pitch = pVscr->vR.uWidth;
    base_addr.modify_flags = GE_BA_FLAG_ADDR|GE_BA_FLAG_FORMAT|GE_BA_FLAG_PITCH;

    UINT32 cmd_hdl = ge_cmd_begin(m_osddrv_ge_dev, cmd_list, GE_PRIM_DISABLE);
    ge_set_base_addr(m_osddrv_ge_dev, cmd_hdl, GE_DST, &base_addr);
    ge_set_xy(m_osddrv_ge_dev, cmd_hdl, GE_DST, ptn_x, ptn_y);
    ge_set_wh(m_osddrv_ge_dev, cmd_hdl, GE_DST, rect->uWidth, rect->uHeight);
    ge_set_xy(m_osddrv_ge_dev, cmd_hdl, GE_SRC, (rr.uWidth - rect->uLeft - rect->uWidth), rect->uTop);
    ge_set_scan_order(m_osddrv_ge_dev, cmd_hdl, GE_SRC, GE_SCAN_TOP_TO_BOTTOM, GE_SCAN_RIGHT_TO_LEFT);

    ge_cmd_end(m_osddrv_ge_dev, cmd_hdl);
    ge_cmd_list_end(m_osddrv_ge_dev, cmd_list);
    GE_SIMU_MUTEX_UNLOCK();	

    return RET_SUCCESS;
#endif

	/* If device not running, exit */
	if ((dev->flags & HLD_DEV_STATS_UP) == 0)
	{
		return RET_FAILURE;
	}
	
	if (dev->region_read_inverse)
	{
		return dev->region_read_inverse(dev, uRegionId,pVscr,rect);
	}
	
	return  !RET_SUCCESS;
}