⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thresher.h

📁 完整的基于Conxant平台的USB电视棒的WIN驱动程序。
💻 H
字号:
/*+++ *******************************************************************\
*
*  Copyright and Disclaimer:
*
*     ---------------------------------------------------------------
*     This software is provided "AS IS" without warranty of any kind,
*     either expressed or implied, including but not limited to the
*     implied warranties of noninfringement, merchantability and/or
*     fitness for a particular purpose.
*     ---------------------------------------------------------------
*
*     Copyright (c) 2008 Conexant Systems, Inc.
*     All rights reserved.
*
\******************************************************************* ---*/

#ifndef _THRESHER_H
#define _THRESHER_H

extern "C"
{
    #include <wdm.h>
}

#include <windef.h>
#include <unknown.h>
#include <ks.h>
#include <ksmedia.h>
#include "SyncRegIo.h"
#include "IVideoDecoder.h"

#include "CxCopyProtect.h"
#include "colibri.h"

class Device;
class DirectIF;

class Thresher : public IVideoDecoder
{
public:
    BOOLEAN IsVideoPresent();
    Thresher(Device* p_device, DWORD video_standard, SyncRegIo* p_registers, DirectIF* p_DIF, Colibri *p_colibri);

    ~Thresher();

    VOID setVideoInput(DWORD video_input, DWORD input_mux);
    VOID setResolution(ULONG width, ULONG height);
    VOID setVideoMode(VIDEO_MODE video_mode);
    VOID getResolution(ULONG *width, ULONG *height) {*width=_width; *height=_height;}

    VOID enableVideoOutput();
    VOID disableVideoOutput();

    VOID waitForLock();

    VOID notifyPreChannelChange();
    VOID notifyPostChannelChange();

    VOID EnableACGEnAndCKillen(BOOLEAN fld_CAGCEN, BOOLEAN fld_CKILLEN);

    //Video Proc Amp
    BOOLEAN setBrightness(INT brightness);
    BOOLEAN setContrast(INT contrast);
    BOOLEAN setHue(INT hue);
    BOOLEAN setSaturation(INT saturation);
    BOOLEAN setSharpness(INT sharpness);

    DWORD getCopyProtectStatus();
    VOID videoMute();
    VOID videoUnmute();

    VOID videoSetGrey(BOOLEAN enableGrey);

    VOID powerUp();
    VOID powerDown();

    DWORD initializeThresher();

    //416 SliceCC support
    DWORD getSlicedVbiStartCodes();
    DWORD getSlicedVbiStopCodes();

    DWORD caliberateDroopComp();
    VOID  setupHTL_CTRL();

protected:
    VOID initializeRegistersAutoDetect();

    VOID initializeRegisters_NTSC();
    VOID initializeRegisters_PAL();
    VOID initializeRegisters_SECAM();
    VOID initializeRegisters_PAL_N();
    VOID initializeRegisters_PAL_NC();

    VOID setInputMux(DWORD input_mux);
    VOID do_MODE_CTRL_overrides();

    BOOLEAN GetVideoLock();

private:
    SyncRegIo*  _p_registers;
    Colibri*    _p_colibri;
    DWORD       _width;
    DWORD       _height;
    BOOLEAN     _enable_3d_comb;

    BYTE        _preserved_saturation;
    BYTE        _preserved_contrast;
    BYTE        _preserved_brightness;

    BOOLEAN     _video_muted;
    BOOLEAN     _powered_up;
};

inline DWORD Thresher::getSlicedVbiStartCodes()
{
    //91 is for ancillary packet data ID's field 1, 
    //55 is for ancillary packet data ID's field 2
    return 0x91559155;

}

inline DWORD Thresher::getSlicedVbiStopCodes()
{
    //20 is SAV VBI field 1, 60 is SAV VBI field 2
    //80 is SAV active video field 1, 0xC0 is SAV active video field 2 
    return 0x206080C0;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -