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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ddoverlay.cpp

?? 6410BSP3
?? CPP
?? 第 1 頁 / 共 3 頁
字號(hào):
//
// 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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产aⅴ入口| 国产欧美日韩综合| 亚洲视频免费在线观看| 奇米影视7777精品一区二区| 成人h版在线观看| 日韩精品一区二区三区中文不卡 | 9久草视频在线视频精品| 在线播放91灌醉迷j高跟美女| 国产精品久久久久久久久久久免费看 | 亚洲色图视频网站| 国产精品99久久久久久宅男| 日韩午夜av一区| 亚洲第一主播视频| 色综合久久综合中文综合网| 国产午夜精品一区二区三区视频 | 麻豆传媒一区二区三区| 欧美专区在线观看一区| 亚洲欧洲综合另类| 国产不卡视频在线播放| 精品乱码亚洲一区二区不卡| 五月激情综合婷婷| 精品视频一区二区不卡| 亚洲男同性视频| 99久久综合精品| 国产欧美日韩不卡免费| 国产一区二三区| 精品区一区二区| 久色婷婷小香蕉久久| 欧美一区国产二区| 蜜臀av一区二区三区| 欧美一级片在线看| 毛片基地黄久久久久久天堂| 777a∨成人精品桃花网| 日日嗨av一区二区三区四区| 欧美美女激情18p| 偷拍日韩校园综合在线| 欧美日韩不卡视频| 午夜影视日本亚洲欧洲精品| 欧美日韩一区高清| 亚洲国产欧美一区二区三区丁香婷| 色综合久久六月婷婷中文字幕| 中文字幕日韩av资源站| www.欧美.com| 最好看的中文字幕久久| 日本高清免费不卡视频| 一区二区三区精密机械公司| 欧美日韩一区视频| 视频一区二区三区在线| 欧美电视剧免费观看| 狠狠色狠狠色综合| 国产亚洲综合性久久久影院| 国产不卡视频一区| 国产精品日韩精品欧美在线| 99v久久综合狠狠综合久久| 一区视频在线播放| 色爱区综合激月婷婷| 亚洲午夜久久久久久久久电影院| 欧美色图天堂网| 五月天亚洲婷婷| 欧美成人r级一区二区三区| 国产一区二区精品久久99| 国产欧美va欧美不卡在线| 国产69精品久久久久毛片| 亚洲少妇最新在线视频| 欧美色精品天天在线观看视频| 日韩av中文字幕一区二区 | 欧美影视一区二区三区| 日韩国产高清在线| 精品国产三级电影在线观看| 成人av电影免费在线播放| 亚洲曰韩产成在线| 日韩三级.com| 成人免费看片app下载| 亚洲午夜一二三区视频| 日韩精品一区二区三区三区免费| 丁香六月久久综合狠狠色| 一区二区三区免费在线观看| 欧美一级黄色片| 成人黄色av网站在线| 亚洲成a人片在线观看中文| 欧美白人最猛性xxxxx69交| 不卡视频一二三| 日韩在线观看一区二区| 久久99精品国产麻豆婷婷| 国产精品久久久久婷婷| 欧美日韩aaaaaa| 国产成人aaa| 亚洲小说欧美激情另类| 久久影院视频免费| 在线观看av一区二区| 激情五月播播久久久精品| 一区二区三区小说| 久久先锋影音av| 欧美日韩一区二区在线观看| 国产v综合v亚洲欧| 五月天久久比比资源色| 国产精品你懂的在线| 3d成人h动漫网站入口| 成人免费观看av| 视频在线观看一区| 中文字幕一区不卡| 精品剧情v国产在线观看在线| 色诱亚洲精品久久久久久| 韩国av一区二区三区四区| 一区二区三区不卡视频在线观看| 精品播放一区二区| 在线观看91精品国产入口| 国产成人99久久亚洲综合精品| 天天av天天翘天天综合网 | 日韩视频在线你懂得| 99国产麻豆精品| 国产一区二区三区四区五区美女| 亚洲一区二区3| 国产精品色噜噜| 欧美精品一区二区三区蜜桃视频| 欧美亚洲综合色| 99精品一区二区三区| 国产一区二区中文字幕| 日韩精彩视频在线观看| 亚洲蜜臀av乱码久久精品| 国产亚洲视频系列| 日韩一区二区三区四区五区六区| 色诱亚洲精品久久久久久| 成人一区二区视频| 国产一区二区在线电影| 日韩av一区二区在线影视| 亚洲网友自拍偷拍| 亚洲欧美另类在线| 国产精品大尺度| 国产网红主播福利一区二区| 日韩美女主播在线视频一区二区三区 | 一区二区高清视频在线观看| 国产精品久久一级| 久久久噜噜噜久噜久久综合| 日韩欧美国产综合一区 | 成人国产在线观看| 国产精品一区不卡| 激情六月婷婷久久| 美日韩一区二区三区| 日精品一区二区三区| 五月天亚洲婷婷| 午夜欧美视频在线观看| 亚洲激情自拍视频| 亚洲精品国产无套在线观| 成人免费小视频| 国产精品毛片久久久久久| 国产欧美精品国产国产专区| 国产日产亚洲精品系列| 久久久久久久网| 久久精品亚洲麻豆av一区二区| 欧美成人午夜电影| 精品1区2区在线观看| 精品成人a区在线观看| 2020日本不卡一区二区视频| 亚洲精品一区二区三区在线观看| 日韩成人一级大片| 人人超碰91尤物精品国产| 免费高清在线一区| 麻豆极品一区二区三区| 韩国av一区二区三区在线观看| 国模冰冰炮一区二区| 国产成人亚洲综合a∨婷婷图片| 国产成人日日夜夜| 国产91精品入口| 97久久精品人人澡人人爽| 色婷婷久久久亚洲一区二区三区 | 成人在线一区二区三区| 成人黄动漫网站免费app| 93久久精品日日躁夜夜躁欧美| 色欧美片视频在线观看| 欧美性一区二区| 欧美精品黑人性xxxx| 91精品国产综合久久久久久 | 欧美久久一区二区| 欧美一区二区三区四区高清| 欧美mv日韩mv国产网站app| 久久久精品蜜桃| 国产精品网站一区| 亚洲精品精品亚洲| 石原莉奈在线亚洲三区| 国产呦精品一区二区三区网站| 国产999精品久久久久久绿帽| 色综合一区二区| 欧美日韩久久不卡| 欧美精品一区二区三区蜜臀| 一色桃子久久精品亚洲| 亚洲国产综合人成综合网站| 毛片av一区二区| 国产91丝袜在线观看| 在线观看亚洲一区| 日韩免费高清av| 国产精品视频一区二区三区不卡| 亚洲激情综合网| 麻豆91在线观看| 99免费精品在线| 8x8x8国产精品| 国产日产精品一区| 亚洲线精品一区二区三区| 国产一区二区影院| 欧美性猛交xxxx乱大交退制版|