Exemplo n.º 1
0
Int32 grpx_link_scale_demo()
{
    UInt32 devId;
    UInt32 outWidth, outHeight;
    UInt32 startX, startY;
    UInt32 offsetX, offsetY;
    UInt32 loopCount, i;
    UInt32 runCount;

    devId = VDIS_DEV_SD;

    runCount = 10000;

    loopCount = 100;
    offsetX = offsetY = 1;

    /* putting in a loop for test */
    while(runCount--)
    {
        /* putting in another loop to change size and position every few msecs */
        for(i=1; i<=loopCount; i++)
        {
            Demo_swMsGetOutSize(Vdis_getResolution(devId), &outWidth, &outHeight);

            startX = offsetX*i;
            startY = offsetY*i;

            outWidth  -= startX*2;
            outHeight -= startY*2;

            grpx_link_scale(devId, startX, startY, outWidth, outHeight);

            OSA_waitMsecs(17);
        }
        for(i=loopCount; i>=1; i--)
        {
            Demo_swMsGetOutSize(Vdis_getResolution(devId), &outWidth, &outHeight);

            startX = offsetX*i;
            startY = offsetY*i;

            outWidth  -= startX*2;
            outHeight -= startY*2;

            grpx_link_scale(devId, startX, startY, outWidth, outHeight);

            OSA_waitMsecs(17);
        }

        /* restore to original */
        Demo_swMsGetOutSize(Vdis_getResolution(devId), &outWidth, &outHeight);

        dprintf("[reset] %d x %d\n", outWidth, outHeight);
        grpx_link_scale(devId, 0, 0, outWidth, outHeight);

        OSA_waitMsecs(17);
    }

    return 0;
}
Exemplo n.º 2
0
/*----------------------------------------------------------------------------
 grpx_fb init/exit function
-----------------------------------------------------------------------------*/
int grpx_fb_start(grpx_plane_type planeType)
{
    int fd=0;
    struct fb_var_screeninfo varinfo;

    UInt32 outWidth, outHeight;

    app_grpx_t *grpx = &grpx_obj;
    int hdbuf_size, i;

    dprintf("\n");
    dprintf("FB0: Starting !!!\n")

    memset(grpx, 0, sizeof(app_grpx_t));

    if(planeType >= GRPX_FORMAT_MAX)
    {
        return -1;
    }
    else
    {
        grpx->planeType = planeType;
    }

    //# Open the display device
    fd = open(FBDEV_NAME_0, O_RDWR);
    if (fd <= 0) {
        eprintf("FB0: Could not open device [%s] !!! \n",FBDEV_NAME_0);
        return -1;
    }

    grpx->curWidth = GRPX_PLANE_WIDTH;
    grpx->curHeight = GRPX_PLANE_HEIGHT;

    dprintf("FB2: Opened device [%s] (fd=%d) !!!\n",FBDEV_NAME_0,fd);

    if (ioctl(fd, FBIOGET_VSCREENINFO, &varinfo) < 0) {
        eprintf("FB0: FBIOGET_VSCREENINFO !!!\n");
    }
    varinfo.xres           =  grpx->curWidth;
    varinfo.yres           =  grpx->curHeight;
    varinfo.xres_virtual   =  grpx->curWidth;
    varinfo.yres_virtual   =  grpx->curHeight;

    if (grpx->planeType == GRPX_FORMAT_RGB565)
    {
        varinfo.bits_per_pixel   =  16;
        varinfo.red.length       =  5;
        varinfo.green.length     =  6;
        varinfo.blue.length      =  5;

        varinfo.red.offset       =  11;
        varinfo.green.offset     =  5;
        varinfo.blue.offset      =  0;
    }

    if (ioctl(fd, FBIOPUT_VSCREENINFO, &varinfo) < 0) {
        eprintf("FB0: FBIOPUT_VSCREENINFO !!!\n");
    }

    grpx->bytes_per_pixel = (varinfo.bits_per_pixel / 8);

    hdbuf_size = disp_fbinfo(fd);
    if(hdbuf_size < 0)
    {
        eprintf("FB0: disp_fbinfo() !!!\n");
        return -1;
    }

    grpx->buf[0] = (unsigned char *)mmap (0, hdbuf_size*NUM_GRPX_DISPLAYS,
            (PROT_READ|PROT_WRITE), MAP_SHARED, fd, 0);
    if (grpx->buf[0] == MAP_FAILED) {
        eprintf("FB0: mmap() failed !!!\n");
        return -1;
    }
    grpx->buf_size = hdbuf_size;
    for(i=1; i<NUM_GRPX_DISPLAYS; i++) {
        grpx->buf[i] = grpx->buf[i-1] + (grpx->curWidth*grpx->curHeight*grpx->bytes_per_pixel);
    }

    grpx->fd = fd;

    Demo_swMsGetOutSize(Vdis_getResolution(VDIS_DEV_HDMI), &outWidth,  &outHeight);

    grpx_fb_scale(VDIS_DEV_HDMI, 0, 0, outWidth, outHeight);

    disp_fbinfo(fd);

    dprintf("FB0: Start DONE !!!\n");
    dprintf("\n");

    return 0;
}
Exemplo n.º 3
0
/*----------------------------------------------------------------------------
 grpx_link init/exit function
-----------------------------------------------------------------------------*/
int grpx_link_init(grpx_plane_type planeType)
{
    UInt32 outWidth, outHeight;

    VGRPX_CREATE_PARAM_S createPrm;
    VGRPX_BUFFER_INFO_S  bufInfo;

    app_grpx_t *grpx = &grpx_obj;

    dprintf("\n");
    dprintf("Starting !!!\n")

    memset(grpx, 0, sizeof(app_grpx_t));

    if(planeType >= GRPX_FORMAT_MAX)
    {
        return -1;
    }
    else
    {
        grpx->planeType = planeType;
    }

    grpx->bytes_per_pixel = 4;
    if(planeType==GRPX_FORMAT_RGB565)
        grpx->bytes_per_pixel = 2;

    grpx->curWidth = GRPX_PLANE_WIDTH;
    grpx->curHeight = GRPX_PLANE_HEIGHT;

    Demo_swMsGetOutSize(Vdis_getResolution(VDIS_DEV_HDMI), &outWidth,  &outHeight);

    createPrm.grpxId                    = HDMI_GRPX_ID;
    createPrm.bufferInfo.bufferPhysAddr = 0;
    createPrm.bufferInfo.bufferPitch    = 0;
    createPrm.bufferInfo.bufferWidth    = grpx->curWidth;
    createPrm.bufferInfo.bufferHeight   = grpx->curHeight;

    if(planeType==GRPX_FORMAT_RGB565)
        createPrm.bufferInfo.dataFormat = VGRPX_DATA_FORMAT_RGB565;
    else
        createPrm.bufferInfo.dataFormat = VGRPX_DATA_FORMAT_ARGB888;

    createPrm.bufferInfo.scanFormat     = VGRPX_SF_PROGRESSIVE;

    createPrm.dynPrm.scaleEnable        = TRUE;
    createPrm.dynPrm.transperencyEnable = TRUE;
    createPrm.dynPrm.transperencyColor  = RGB_KEY_24BIT_GRAY;
    createPrm.dynPrm.inWidth            = grpx->curWidth;
    createPrm.dynPrm.inHeight           = grpx->curHeight;
    createPrm.dynPrm.displayWidth       = outWidth;
    createPrm.dynPrm.displayHeight      = outHeight;
    createPrm.dynPrm.displayStartX      = 0;
    createPrm.dynPrm.displayStartY      = 0;

    Vgrpx_create(HDMI_GRPX_ID, &createPrm);

    Vgrpx_getInfo(HDMI_GRPX_ID, &bufInfo);

    grpx->buf_size = bufInfo.bufferPitch*bufInfo.bufferHeight;

    grpx->buf[0] = (unsigned char *)Vgrpx_mmap(bufInfo.bufferPhysAddr, grpx->buf_size, FALSE);

    if (grpx->buf[0] == NULL) {
        eprintf("GRPX0: mmap() failed !!!\n");
        return -1;
    }

    Demo_swMsGetOutSize(Vdis_getResolution(VDIS_DEV_SD), &outWidth, &outHeight);

    createPrm.grpxId                    = SDTV_GRPX_ID;
    createPrm.bufferInfo.bufferPhysAddr = bufInfo.bufferPhysAddr;
    createPrm.bufferInfo.bufferPitch    = bufInfo.bufferPitch;
    createPrm.bufferInfo.bufferWidth    = bufInfo.bufferWidth;
    createPrm.bufferInfo.bufferHeight   = bufInfo.bufferHeight;
    createPrm.bufferInfo.dataFormat     = bufInfo.dataFormat;
    createPrm.bufferInfo.scanFormat     = bufInfo.scanFormat;

    createPrm.dynPrm.scaleEnable        = TRUE;
    createPrm.dynPrm.transperencyEnable = TRUE;
    createPrm.dynPrm.transperencyColor  = RGB_KEY_24BIT_GRAY;
    createPrm.dynPrm.inWidth            = grpx->curWidth;
    createPrm.dynPrm.inHeight           = grpx->curHeight;
    createPrm.dynPrm.displayWidth       = outWidth;
    createPrm.dynPrm.displayHeight      = outHeight;
    createPrm.dynPrm.displayStartX      = 0;
    createPrm.dynPrm.displayStartY      = 0;

    Vgrpx_create(SDTV_GRPX_ID, &createPrm);

    Vgrpx_enable(HDMI_GRPX_ID, TRUE);
    Vgrpx_enable(SDTV_GRPX_ID, TRUE);

    {
        UInt32 curTime = OSA_getCurTimeInMsec();
        //# init fb - fill RGB_KEY
        draw_fill_color(grpx->buf[0]);

        curTime = OSA_getCurTimeInMsec() - curTime;

        dprintf("### Memfill time = %d msecs\n", curTime);
    }

    dprintf("Start DONE !!!\n");
    dprintf("\n");

    return 0;
}
Exemplo n.º 4
0
int grpx_fb_start2()
{
    int fd2 = 0;
    struct fb_var_screeninfo varinfo;

    app_grpx_t *grpx = &grpx_obj;
    int hdbuf_size;
    UInt32 outWidth, outHeight;

    dprintf("\n");
    dprintf("FB2: Starting !!!\n")

    fd2 = open(FBDEV_NAME_2, O_RDWR);
    if (fd2 <= 0) {
        eprintf("FB2: Could not open device [%s] !!! \n",FBDEV_NAME_2);
        return -1;
    }

    dprintf("FB2: Opened device [%s] (fd=%d) !!!\n",FBDEV_NAME_2,fd2);

    grpx->fd2 = fd2;

    if (ioctl(fd2, FBIOGET_VSCREENINFO, &varinfo) < 0) {
        eprintf("FB2: FBIOGET_VSCREENINFO !!!\n");
    }

    if (grpx->planeType == GRPX_FORMAT_RGB565)
    {

        varinfo.bits_per_pixel   =  16;
        varinfo.red.length       =  5;
        varinfo.green.length     =  6;
        varinfo.blue.length      =  5;

        varinfo.red.offset       =  11;
        varinfo.green.offset     =  5;
        varinfo.blue.offset      =  0;

        if(ioctl(fd2, FBIOPUT_VSCREENINFO, &varinfo) < 0) {
             eprintf("FB2: FBIOPUT_VSCREENINFO !!!\n");
        }
    }

    hdbuf_size = disp_fbinfo(fd2);
    if(hdbuf_size < 0)
    {
        eprintf("FB2: disp_fbinfo() !!!\n");
    }

    Demo_swMsGetOutSize(Vdis_getResolution(VDIS_DEV_SD), &outWidth,  &outHeight);

    grpx_fb_scale(VDIS_DEV_SD, 0, 0, outWidth, outHeight);

    if (ioctl(fd2, FBIOGET_VSCREENINFO, &varinfo) < 0) {
        eprintf("FB2: FBIOGET_VSCREENINFO !!!\n");
    }

    varinfo.xres           = grpx->curWidth;
    varinfo.yres           = grpx->curHeight;
    varinfo.xres_virtual   = grpx->curWidth;
    varinfo.yres_virtual   = grpx->curHeight;

    if(ioctl(fd2, FBIOPUT_VSCREENINFO, &varinfo) < 0) {
         eprintf("FB2: FBIOPUT_VSCREENINFO !!!\n");
    }

    disp_fbinfo(fd2);

    dprintf("FB2: Start DONE !!!\n")
    dprintf("\n");

    return 0;
}