亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ddoverlay.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// Copyright (c) Samsung Electronics. Co. LTD. All rights reserved.

/*++

THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.

Module Name:

    ddoverlay.cpp

Abstract:

    This module implements the main class that derived from DDGPE of display driver to support DirectDraw
    In this part, there are codes that implement base logical HW control functions to use DirectDraw Overlay

Functions:

    Overlay Resource Control, Overlay Enable/Disable

Notes:

--*/

#include "precomp.h"

BOOL
S3C6410Disp::OverlayAllocResource(BOOL bLocalPath)
{
    RETAILMSG(DISP_ZONE_ENTER, (_T("[DISPDRV] ++%s(%d)\n\r"), _T(__FUNCTION__), bLocalPath));

    DWORD dwBytes;

    // Request FIMD Win0 H/W Resource to Video Engine Driver for Overlay Window
    if ( !DeviceIoControl(m_hVideoDrv, IOCTL_SVE_RSC_REQUEST_FIMD_WIN0, NULL, 0, NULL, 0, &dwBytes, NULL) )
    {
        RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] %s() : IOCTL_SVE_RSC_REQUEST_FIMD_WIN0 Failed\n\r"), _T(__FUNCTION__)));
        goto AllocFail;
    }

    if (bLocalPath)
    {
        // Request Post Processor H/W Resource to Video Engine Driver for Overlay Window
        if ( !DeviceIoControl(m_hVideoDrv, IOCTL_SVE_RSC_REQUEST_POST, NULL, 0, NULL, 0, &dwBytes, NULL) )
        {
            RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] %s() : IOCTL_SVE_RSC_REQUEST_POST Failed\n\r"), _T(__FUNCTION__)));
            goto AllocFail;
        }
    }

    RETAILMSG(DISP_ZONE_ENTER, (_T("[DISPDRV] --%s()\n\r"), _T(__FUNCTION__)));

    return TRUE;

AllocFail:

    // Release Partially Allocated Resource
    OverlayReleaseResource(bLocalPath);

    RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] --%s() : Failed\n\r"), _T(__FUNCTION__)));

    return FALSE;
}


BOOL
S3C6410Disp::OverlayReleaseResource(BOOL bLocalPath)
{
    RETAILMSG(DISP_ZONE_ENTER, (_T("[DISPDRV] ++%s(%d)\n\r"), _T(__FUNCTION__), bLocalPath));

    BOOL bRet = TRUE;
    DWORD dwBytes;

    // Release FIMD Win0 H/W Resource to Video Engine Driver for Overlay Window
    if ( !DeviceIoControl(m_hVideoDrv, IOCTL_SVE_RSC_RELEASE_FIMD_WIN0, NULL, 0, NULL, 0, &dwBytes, NULL) )
    {
        RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] %s() : IOCTL_SVE_RSC_RELEASE_FIMD_WIN0 Failed\n\r"), _T(__FUNCTION__)));
        bRet = FALSE;
    }

    if (bLocalPath)
    {
        // Release Post Processor H/W Resource to Video Engine Driver for Overlay Window
        if ( !DeviceIoControl(m_hVideoDrv, IOCTL_SVE_RSC_RELEASE_POST, NULL, 0, NULL, 0, &dwBytes, NULL) )
        {
            RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] %s() : IOCTL_SVE_RSC_RELEASE_POST Failed\n\r"), _T(__FUNCTION__)));
            bRet = FALSE;
        }
    }

    RETAILMSG(DISP_ZONE_ENTER, (_T("[DISPDRV] --%s()\n\r"), _T(__FUNCTION__)));

    return bRet;
}


BOOL
S3C6410Disp::OverlayInitialize(S3C6410Surf* pOverlaySurface, RECT *pSrc, RECT *pDest)
{
    BOOL bRet = TRUE;

    RETAILMSG(DISP_ZONE_ENTER, (_T("[DDHAL:INF] OverlayInitialize() (%d,%d) (%d,%d,%d,%d) (%d,%d,%d,%d)\n\r"),
                    pOverlaySurface->Width(), pOverlaySurface->Height(),
                    pSrc->left, pSrc->top, pSrc->right, pSrc->bottom,
                    pDest->left, pDest->top, pDest->right, pDest->bottom));

    EnterCriticalSection(&m_csDevice);

    m_OverlayCtxt.pSurface = pOverlaySurface;

    switch(m_iRotate)
    {
    case DMDO_0:
    default:
        // Driver support Overlay Source Clipping
        m_OverlayCtxt.uiSrcWidth = pSrc->right - pSrc->left;
        m_OverlayCtxt.uiSrcHeight = pSrc->bottom - pSrc->top;
        m_OverlayCtxt.uiSrcOffsetX = pSrc->left;
        m_OverlayCtxt.uiSrcOffsetY = pSrc->top;

        //  Driver support Overlay Destination Stretch
        m_OverlayCtxt.uiDstWidth = pDest->right - pDest->left;
        m_OverlayCtxt.uiDstHeight = pDest->bottom - pDest->top;
        m_OverlayCtxt.uiDstOffsetX = pDest->left;
        m_OverlayCtxt.uiDstOffsetY = pDest->top;
        break;
    case DMDO_90:
        // Driver support Overlay Source Clipping
        m_OverlayCtxt.uiSrcWidth = pSrc->bottom - pSrc->top;
        m_OverlayCtxt.uiSrcHeight = pSrc->right - pSrc->left;
        m_OverlayCtxt.uiSrcOffsetX = pSrc->top;
        m_OverlayCtxt.uiSrcOffsetY = pOverlaySurface->Height()
                                        - m_OverlayCtxt.uiSrcHeight - pSrc->left;

        //  Driver support Overlay Destination Stretch
        m_OverlayCtxt.uiDstWidth = pDest->bottom - pDest->top;
        m_OverlayCtxt.uiDstHeight = pDest->right - pDest->left;
        m_OverlayCtxt.uiDstOffsetX = pDest->top;
        m_OverlayCtxt.uiDstOffsetY = m_pPrimarySurface->ScreenHeight()
                                        - m_OverlayCtxt.uiDstHeight - pDest->left;
        break;
    case DMDO_180:
        // Driver support Overlay Source Clipping
        m_OverlayCtxt.uiSrcWidth = pSrc->right - pSrc->left;
        m_OverlayCtxt.uiSrcHeight = pSrc->bottom - pSrc->top;
        m_OverlayCtxt.uiSrcOffsetX = pOverlaySurface->Width()
                                        - m_OverlayCtxt.uiSrcWidth - pSrc->left;
        m_OverlayCtxt.uiSrcOffsetY = pOverlaySurface->Height()
                                        - m_OverlayCtxt.uiSrcHeight - pSrc->top;

        //  Driver support Overlay Destination Stretch
        m_OverlayCtxt.uiDstWidth = pDest->right - pDest->left;
        m_OverlayCtxt.uiDstHeight = pDest->bottom - pDest->top;
        m_OverlayCtxt.uiDstOffsetX = m_pPrimarySurface->ScreenWidth()
                                        - m_OverlayCtxt.uiDstWidth - pDest->left;
        m_OverlayCtxt.uiDstOffsetY = m_pPrimarySurface->ScreenHeight()
                                        - m_OverlayCtxt.uiDstHeight - pDest->top;
        break;
    case DMDO_270:
        // Driver support Overlay Source Clipping
        m_OverlayCtxt.uiSrcHeight = pSrc->right - pSrc->left;
        m_OverlayCtxt.uiSrcWidth = pSrc->bottom - pSrc->top;
        m_OverlayCtxt.uiSrcOffsetX = pOverlaySurface->Width()
                                        - m_OverlayCtxt.uiSrcWidth - pSrc->top;;
        m_OverlayCtxt.uiSrcOffsetY = pSrc->left;

        //  Driver support Overlay Destination Stretch
        m_OverlayCtxt.uiDstHeight = pDest->right - pDest->left;
        m_OverlayCtxt.uiDstWidth = pDest->bottom - pDest->top;
        m_OverlayCtxt.uiDstOffsetX = m_pPrimarySurface->ScreenWidth()
                                        - m_OverlayCtxt.uiDstWidth - pDest->top;
        m_OverlayCtxt.uiDstOffsetY = pDest->left;
        break;
    }

    switch(m_OverlayCtxt.pSurface->PixelFormat())
    {
    case ddgpePixelFormat_I420:    // YUV420
    case ddgpePixelFormat_YV12:    // YVU420
        m_OverlayCtxt.bLocalPath = TRUE;
        m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
        m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        m_OverlayCtxt.dwPostSrcType = POST_SRC_YUV420;
        break;
    case ddgpePixelFormat_YUYV:    // YUV422 (YCbYCr)
    case ddgpePixelFormat_YUY2:    // YUV422 (YCbYCr)
        m_OverlayCtxt.bLocalPath = TRUE;
        m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
        m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        m_OverlayCtxt.dwPostSrcType = POST_SRC_YUV422_CRYCBY;
        break;
    case ddgpePixelFormat_UYVY:    // YUV422 (CbYCrY)
        m_OverlayCtxt.bLocalPath = TRUE;
        m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
        m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        m_OverlayCtxt.dwPostSrcType = POST_SRC_YUV422_YCRYCB;
        break;
    case ddgpePixelFormat_YVYU:    // YUV422 (YCrYCb)
        m_OverlayCtxt.bLocalPath = TRUE;
        m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
        m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        m_OverlayCtxt.dwPostSrcType = POST_SRC_YUV422_CBYCRY;
        break;
    case ddgpePixelFormat_VYUY:    // YUV422 (CrYCbY)
        m_OverlayCtxt.bLocalPath = TRUE;
        m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
        m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        m_OverlayCtxt.dwPostSrcType = POST_SRC_YUV422_YCBYCR;
        break;
    case ddgpePixelFormat_565:
        if (    (m_OverlayCtxt.uiSrcWidth == pOverlaySurface->Width())
            && (m_OverlayCtxt.uiSrcHeight == pOverlaySurface->Height())
            && (m_OverlayCtxt.uiDstWidth == pOverlaySurface->Width())
            && (m_OverlayCtxt.uiDstHeight == pOverlaySurface->Height()))
        {
            // No Clipping and No Stretch, Don't Use Local Path for RGB
            m_OverlayCtxt.bLocalPath = FALSE;
            m_OverlayCtxt.dwWinMode = DISP_WIN0_DMA;
            m_OverlayCtxt.dwBPPMode = DISP_16BPP_565;
        }
        else
        {
            // Use Local Path for RGB
            m_OverlayCtxt.bLocalPath = TRUE;
            m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
            m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
            m_OverlayCtxt.dwPostSrcType = POST_SRC_RGB16;
        }
        break;
    //case ddgpePixelFormat_8880:    // FIMD can not support Packed RGB888
    case ddgpePixelFormat_8888:
        if (    (m_OverlayCtxt.uiSrcWidth == pOverlaySurface->Width())
            && (m_OverlayCtxt.uiSrcHeight == pOverlaySurface->Height())
            && (m_OverlayCtxt.uiDstWidth == pOverlaySurface->Width())
            && (m_OverlayCtxt.uiDstHeight == pOverlaySurface->Height()))
        {
            // No Clipping and No Stretch, Don't Use Local Path for RGB
            m_OverlayCtxt.bLocalPath = FALSE;
            m_OverlayCtxt.dwWinMode = DISP_WIN0_DMA;
            m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
        }
        else
        {
            // Use Local Path for RGB
            m_OverlayCtxt.bLocalPath = TRUE;
            m_OverlayCtxt.dwWinMode = DISP_WIN0_POST_RGB;
            m_OverlayCtxt.dwBPPMode = DISP_24BPP_888;
            m_OverlayCtxt.dwPostSrcType = POST_SRC_RGB24;
        }
        break;
    }

    // Request H/W Resource for Overlay to Video Engine Driver
    if (OverlayAllocResource(m_OverlayCtxt.bLocalPath) == FALSE)
    {
        RETAILMSG(DISP_ZONE_ERROR, (_T("[DISPDRV:ERR] OverlayInitialize() : OverlayAllocResource() Failed\n\r")));
        bRet = FALSE;
        goto CleanUp;
    }

    // Adjust for Post Processor and FIMD restriction
    switch(m_OverlayCtxt.pSurface->PixelFormat())
    {
    case ddgpePixelFormat_I420:
    case ddgpePixelFormat_YV12:
        m_OverlayCtxt.uiSrcWidth = m_OverlayCtxt.uiSrcWidth-m_OverlayCtxt.uiSrcWidth%8;
        m_OverlayCtxt.uiSrcHeight = m_OverlayCtxt.uiSrcHeight-m_OverlayCtxt.uiSrcHeight%2;
        m_OverlayCtxt.uiSrcOffsetX = m_OverlayCtxt.uiSrcOffsetX-m_OverlayCtxt.uiSrcOffsetX%8;

        if (m_OverlayCtxt.uiSrcWidth < 8) m_OverlayCtxt.uiSrcWidth = 8;
        if (m_OverlayCtxt.uiSrcHeight < 4) m_OverlayCtxt.uiSrcHeight = 4;
        if (m_OverlayCtxt.uiDstHeight < 3) m_OverlayCtxt.uiDstHeight = 3;
        break;
    case ddgpePixelFormat_YUYV:
    case ddgpePixelFormat_YUY2:
    case ddgpePixelFormat_UYVY:
    case ddgpePixelFormat_YVYU:
    case ddgpePixelFormat_VYUY:
        m_OverlayCtxt.uiSrcWidth = m_OverlayCtxt.uiSrcWidth-m_OverlayCtxt.uiSrcWidth%2;
        m_OverlayCtxt.uiSrcHeight = m_OverlayCtxt.uiSrcHeight-m_OverlayCtxt.uiSrcHeight%2;
        m_OverlayCtxt.uiSrcOffsetX = m_OverlayCtxt.uiSrcOffsetX-m_OverlayCtxt.uiSrcOffsetX%2;

        if (m_OverlayCtxt.uiSrcWidth < 2) m_OverlayCtxt.uiSrcWidth = 2;
        if (m_OverlayCtxt.uiSrcHeight < 2) m_OverlayCtxt.uiSrcHeight = 2;
        break;
    case ddgpePixelFormat_565:
        m_OverlayCtxt.uiSrcWidth = m_OverlayCtxt.uiSrcWidth-m_OverlayCtxt.uiSrcWidth%2;
        m_OverlayCtxt.uiSrcHeight = m_OverlayCtxt.uiSrcHeight-m_OverlayCtxt.uiSrcHeight%2;
        m_OverlayCtxt.uiSrcOffsetX = m_OverlayCtxt.uiSrcOffsetX-m_OverlayCtxt.uiSrcOffsetX%2;

        m_OverlayCtxt.uiDstWidth = m_OverlayCtxt.uiDstWidth-m_OverlayCtxt.uiDstWidth%2;
        m_OverlayCtxt.uiDstOffsetX = m_OverlayCtxt.uiDstOffsetX-m_OverlayCtxt.uiDstOffsetX%2;

        if (m_OverlayCtxt.uiSrcWidth < 2) m_OverlayCtxt.uiSrcWidth = 2;
        if (m_OverlayCtxt.uiSrcHeight < 2) m_OverlayCtxt.uiSrcHeight = 2;
        if (m_OverlayCtxt.uiDstWidth < 2) m_OverlayCtxt.uiDstWidth = 2;
        break;
    }

    // Adjust for Overlay Window Position

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一区二区三区四区| 中文字幕欧美区| 日本中文字幕一区二区视频| 9191成人精品久久| 久久精品av麻豆的观看方式| 2017欧美狠狠色| 成人aa视频在线观看| 亚洲色图.com| 欧美精品 国产精品| 精品午夜久久福利影院| 日本一区免费视频| 色先锋aa成人| 久久国产婷婷国产香蕉| 国产精品久久久爽爽爽麻豆色哟哟| 不卡视频在线观看| 亚洲成人综合视频| 久久久精品国产99久久精品芒果| 成人精品国产福利| 亚洲高清免费观看高清完整版在线观看 | 久久久久久久久久美女| 国产九九视频一区二区三区| 欧美国产日韩在线观看| av成人免费在线| 亚洲国产精品久久一线不卡| 91精品婷婷国产综合久久性色 | 一本色道**综合亚洲精品蜜桃冫| 一区二区三区精品久久久| 欧美视频在线一区二区三区| 无吗不卡中文字幕| 精品剧情在线观看| 国产suv精品一区二区6| 一区二区三区免费网站| 欧美肥妇bbw| 国内精品视频666| 中文字幕亚洲一区二区av在线 | 色嗨嗨av一区二区三区| 午夜视频一区二区三区| 久久亚洲免费视频| 99国产精品久久久久| 丝瓜av网站精品一区二区| 欧美精品亚洲一区二区在线播放| 天堂影院一区二区| 精品国产免费久久| 国产成人精品免费| 亚洲欧美二区三区| 久久精品人人做人人综合| av综合在线播放| 日韩高清一级片| 中文字幕不卡在线播放| 欧美人与禽zozo性伦| 国产成人精品免费一区二区| 亚洲国产一区二区三区青草影视| 久久综合999| 欧美性大战久久久久久久蜜臀| 国内精品久久久久影院薰衣草| 日韩美女啊v在线免费观看| 在线成人午夜影院| zzijzzij亚洲日本少妇熟睡| 免费在线成人网| 亚洲精品欧美二区三区中文字幕| 日韩精品一区二区三区视频| 色素色在线综合| 国产乱码一区二区三区| 婷婷久久综合九色国产成人| 国产精品成人免费在线| 久久先锋影音av鲁色资源| 欧美亚洲国产怡红院影院| 成人夜色视频网站在线观看| 蜜桃视频免费观看一区| 亚洲一区在线看| 亚洲欧洲一区二区在线播放| 精品捆绑美女sm三区| 欧美剧在线免费观看网站| 99久久婷婷国产综合精品| 久久成人免费日本黄色| 五月婷婷久久丁香| 日韩毛片精品高清免费| 国产日韩在线不卡| 亚洲精品一区二区三区影院| 欧美精品久久一区二区三区| 色噜噜狠狠成人中文综合| 99视频热这里只有精品免费| 国产91丝袜在线18| 国产麻豆91精品| 捆绑紧缚一区二区三区视频| 无吗不卡中文字幕| 依依成人精品视频| 亚洲精品中文字幕乱码三区| 中文字幕中文字幕一区二区| 国产亚洲一区二区在线观看| 精品入口麻豆88视频| 制服丝袜国产精品| 91精品国产色综合久久不卡电影| 欧美日韩电影在线| 欧美色综合久久| 欧美吻胸吃奶大尺度电影 | 精品在线视频一区| 久草在线在线精品观看| 久久精品久久久精品美女| 石原莉奈一区二区三区在线观看 | 欧美吻胸吃奶大尺度电影| 色婷婷综合激情| 欧美在线视频你懂得| 欧美性视频一区二区三区| 在线观看视频91| 欧美日韩免费电影| 777午夜精品视频在线播放| 欧美大尺度电影在线| 日韩精品一区二区三区四区视频| 欧美精品一区二区三区蜜桃| 久久综合丝袜日本网| 欧美高清在线一区| 亚洲图片你懂的| 亚洲一区二区三区自拍| 日本中文字幕一区二区视频| 精品亚洲国内自在自线福利| 国产成人夜色高潮福利影视| 成人黄色网址在线观看| 99re热这里只有精品视频| 在线观看91精品国产入口| 欧美一区二区三区爱爱| 精品久久久久久久久久久久久久久| 精品国产1区二区| 1区2区3区欧美| 亚洲综合av网| 蜜臀av性久久久久av蜜臀妖精| 国产精品一品视频| 成人一级黄色片| 欧美性感一区二区三区| 精品久久人人做人人爰| 国产精品私房写真福利视频| 亚洲一区二区三区激情| 久久精品av麻豆的观看方式| www.欧美色图| 欧美片网站yy| 国产精品免费观看视频| 午夜欧美在线一二页| 国产999精品久久久久久| 欧美日韩一区二区在线视频| 精品国产伦一区二区三区观看体验 | 日韩精品一区二区在线观看| 综合久久国产九一剧情麻豆| 日韩二区三区在线观看| 国产盗摄一区二区| 欧美日韩高清一区二区三区| 国产精品无遮挡| 日韩精品电影一区亚洲| 成人av电影在线观看| 日韩精品一区国产麻豆| 亚洲激情六月丁香| 国产一区二区三区在线观看免费| 91国产丝袜在线播放| 久久久久久毛片| 日本伊人色综合网| 色诱亚洲精品久久久久久| 精品国产sm最大网站| 亚洲第一会所有码转帖| 成人免费va视频| 91精品久久久久久蜜臀| 亚洲三级电影全部在线观看高清| 久久国产生活片100| 日韩午夜激情av| 亚欧色一区w666天堂| 91丨porny丨国产入口| 日本一区二区三区久久久久久久久不| 亚洲一区二区av电影| 不卡视频在线看| 欧美国产日韩在线观看| 奇米亚洲午夜久久精品| 精品视频一区 二区 三区| 亚洲欧美日韩国产一区二区三区| 国产麻豆午夜三级精品| 日韩欧美国产系列| 日韩精品福利网| 欧美日韩二区三区| 亚洲一区二区三区在线看| 日本韩国欧美一区| 国产精品久线在线观看| 成人午夜精品一区二区三区| 欧美成人精品福利| 久久成人羞羞网站| 555www色欧美视频| 丝袜脚交一区二区| 欧美三级日本三级少妇99| 亚洲国产精品欧美一二99| 欧美视频一二三区| 亚洲一级在线观看| 欧美日韩国产综合一区二区| 亚洲国产综合91精品麻豆| 欧美日韩三级在线| 午夜精品久久久久| 欧美久久久影院| 日韩精品视频网站| 日韩美女主播在线视频一区二区三区 | 日日噜噜夜夜狠狠视频欧美人 | 一区二区三区四区在线播放| 91免费观看视频在线| 亚洲午夜久久久久久久久久久 | 日本怡春院一区二区| 欧美一区二区播放|