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

📄 device.h

📁 传说中的 视频抓取驱动源码 啊啊啊啊啊啊啊啊啊啊啊啊啊
💻 H
字号:
#pragma once

//==========================================================================;
//
//  Device - Declaration of the Bt829 CVideoDecoderDevice
//
//      $Date:   28 Aug 1998 14:44:36  $
//  $Revision:   1.2  $
//    $Author:   Tashjian  $
//
// $Copyright:  (c) 1997 - 1998  ATI Technologies Inc.  All Rights Reserved.  $
//
//==========================================================================;

#include "decoder.h"
#include "scaler.h"
#include "xbar.h"
#include "capmain.h"
#include "capdebug.h"
#include "wdmvdec.h"
#include "decdev.h"

class Device: public CVideoDecoderDevice
{
private:
    NTSTATUS GetRegistryValue(HANDLE, PWCHAR, ULONG, PWCHAR, ULONG);
    VOID UseRegistryValues(PPORT_CONFIGURATION_INFORMATION);
    BOOL stringsEqual(PWCHAR, PWCHAR);

    PDEVICE_PARMS   m_pDeviceParms;

    int hue;
    int saturation;
    int contrast;
    int brightness;
    int NTSCDecoderWidth;
    int NTSCDecoderHeight;
    int PALDecoderWidth;
    int PALDecoderHeight;
    int defaultDecoderWidth;
    int defaultDecoderHeight;
    int VBIEN;
    int VBIFMT;
    BOOL isCodeInDataStream;
    BOOL is16;
    MRect destRect;
    Connector source;

    int VBISurfaceOriginX;
    int VBISurfaceOriginY;
    int VBISurfacePitch;
    int VideoSurfaceOriginX;
    int VideoSurfaceOriginY;
    int VideoSurfacePitch;
    
    Decoder *decoder;
    Scaler *scaler;
    CrossBar *xbar;


public:
    Device(PPORT_CONFIGURATION_INFORMATION, 
        PDEVICE_PARMS, 
        PUINT puiError);

    void * operator new(size_t size, void * pAllocation) { return(pAllocation);}
    void operator delete(void * pAllocation) {}

    void SaveState();
    void RestoreState(DWORD dwStreamsOpen = -1);
    void SetRect(MRect &);
    int GetDecoderWidth();
    int GetDecoderHeight();
    int GetDefaultDecoderWidth();
    int GetDefaultDecoderHeight();
    int GetPartID();
    int GetPartRev();

    //
    // --------------- decoder functions
    //

    void SoftwareReset() 
        {decoder->SoftwareReset();}

    void SetOutputEnabled(BOOL b)
        {
            decoder->SetOutputEnabled( b);
        }
    
    BOOL IsOutputEnabled()
        {return decoder->IsOutputEnabled();}


    void GetVideoDecoderCaps(PKSPROPERTY_VIDEODECODER_CAPS_S caps)
        {decoder->GetVideoDecoderCaps(caps);}
    void GetVideoDecoderStatus(PKSPROPERTY_VIDEODECODER_STATUS_S status)
        {decoder->GetVideoDecoderStatus(status);}
    DWORD GetVideoDecoderStandard()
        {return decoder->GetVideoDecoderStandard();}

    BOOL SetVideoDecoderStandard(DWORD standard);
   
    
    void SetHighOdd(BOOL b)
        {decoder->SetHighOdd(b);}

    BOOL IsHighOdd()
        {return decoder->IsHighOdd();}

    ErrorCode SetVideoInput(Connector i)
        {source = i; return decoder->SetVideoInput(i);}

    Connector GetVideoInput()
        {return decoder->GetVideoInput();}


    NTSTATUS GetProcAmpProperty(ULONG, PLONG);
    NTSTATUS SetProcAmpProperty(ULONG, LONG);

    
    void Set16BitDataStream(BOOL b)
        {decoder->Set16BitDataStream(b);}
    
    BOOL Is16BitDataStream()
        {return decoder->Is16BitDataStream();}

    void SetCodeInsertionEnabled(BOOL b)
        {decoder->SetCodeInsertionEnabled(b);}
    
    BOOL IsCodeInsertionEnabled()
        {return decoder->IsCodeInsertionEnabled();}

    void SetOutputEnablePolarity(int i)
        {decoder->SetOutputEnablePolarity(i);}
    
    int GetOutputEnablePolarity()
        {return decoder->GetOutputEnablePolarity();}

    //
    // --------------- scaler functions
    //
    void SetVBIEN(BOOL b)
        {scaler->SetVBIEN(b);}
    
    BOOL IsVBIEN()
        {return scaler->IsVBIEN();}

    void SetVBIFMT(BOOL b)
        {scaler->SetVBIFMT(b);}
    
    BOOL IsVBIFMT()
        {return scaler->IsVBIFMT();}

    //
    // --------------- xbar functions
    //
    BOOL GoodPins(ULONG InPin, ULONG OutPin)
        {return xbar->GoodPins(InPin, OutPin);}

    BOOL TestRoute(ULONG InPin, ULONG OutPin)
        {return xbar->TestRoute(InPin, OutPin);}

    void Route(ULONG OutPin, ULONG InPin)
        {xbar->Route(OutPin, InPin);}

    ULONG GetNoInputs()
        {return xbar->GetNoInputs();}

    ULONG GetNoOutputs()
        {return xbar->GetNoOutputs();}

    ULONG GetPinInfo(KSPIN_DATAFLOW dir, ULONG idx, ULONG &related)
        {return xbar->GetPinInfo(dir, idx, related);}

    ULONG GetRoute(ULONG OutPin)
        {return xbar->GetRoute(OutPin);}

    KSPIN_MEDIUM * GetPinMedium(KSPIN_DATAFLOW dir, ULONG idx)
        {return xbar->GetPinMedium(dir, idx);}

    void Reset();
    ~Device();


    void GetVideoPortProperty(PHW_STREAM_REQUEST_BLOCK pSrb);
    void GetVideoPortVBIProperty(PHW_STREAM_REQUEST_BLOCK pSrb);
    void ConfigVPSurfaceParams(PKSVPSURFACEPARAMS pSurfaceParams);
    void ConfigVPVBISurfaceParams(PKSVPSURFACEPARAMS pSurfaceParams);

    void GetVideoSurfaceOrigin(int* pX, int* pY)
        { *pX = VideoSurfaceOriginX; *pY = VideoSurfaceOriginY; }
    void GetVBISurfaceOrigin(int* pX, int* pY)
        { *pX = VBISurfaceOriginX; *pY = VBISurfaceOriginY; }
};  


typedef struct
{
    CWDMVideoDecoder        CWDMDecoder;
    Device                  CDevice;
    Decoder                 CDecoder;
    Scaler                  CScaler;
    CrossBar                CXbar;
    CI2CScript              CScript;
    DEVICE_PARMS            deviceParms;
} DEVICE_DATA_EXTENSION, * PDEVICE_DATA_EXTENSION;


⌨️ 快捷键说明

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