|
|
#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;
|