windows-nt/Source/XPSP1/NT/multimedia/published/dxmdev/dshowdev/idl/tune.h
2020-09-26 16:20:57 +08:00

842 lines
32 KiB
C++

//------------------------------------------------------------------------------
// File: Tune.h
//
// Desc: Additional infrastructure to extend the tuner.idl. Works nicely
// from C++.
//
// Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
#pragma once
#ifndef TUNE_H
#define TUNE_H
#include <tuner.h>
namespace BDATuningModel {
const long DEFAULT_MIN_CHANNEL = 2;
const long DEFAULT_MAX_CHANNEL = 999;
const long DEFAULT_MIN_FREQUENCY = 535; //bottom us am
const long DEFAULT_MAX_FREQUENCY = 108000; // top us fm
const long DEFAULT_ANALOG_TUNER_COUNTRY_CODE = 1; //usa
const TunerInputType DEFAULT_ANALOG_TUNER_INPUT_TYPE = TunerInputCable; //usa
typedef CComQIPtr<ITuningSpaceContainer> PQTuningSpaceContainer;
typedef CComQIPtr<ITuningSpace> PQTuningSpace;
typedef CComQIPtr<IAnalogRadioTuningSpace> PQAnalogRadioTuningSpace;
typedef CComQIPtr<IAnalogTVTuningSpace> PQAnalogTVTuningSpace;
typedef CComQIPtr<IATSCTuningSpace> PQATSCTuningSpace;
typedef CComQIPtr<ITuneRequest> PQTuneRequest;
typedef CComQIPtr<IChannelTuneRequest> PQChannelTuneRequest;
typedef CComQIPtr<IATSCChannelTuneRequest> PQATSCChannelTuneRequest;
typedef CComQIPtr<ILocator> PQLocator;
typedef CComQIPtr<IATSCLocator> PQATSCLocator;
typedef CComQIPtr<IDVBTuningSpace> PQDVBTuningSpace;
typedef CComQIPtr<IDVBTuneRequest> PQDVBTuneRequest;
typedef CComQIPtr<IDVBSLocator> PQDVBSLocator;
typedef CComQIPtr<IDVBTLocator> PQDVBTLocator;
typedef CComQIPtr<IAuxInTuningSpace> PQAuxInTuningSpace;
// tuning space container
class TNTuningSpaceContainer : public PQTuningSpaceContainer {
TNTuningSpaceContainer() {}
TNTuningSpaceContainer(const PQTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {}
TNTuningSpaceContainer(ITuningSpace *p) : PQTuningSpaceContainer(p) {}
TNTuningSpaceContainer(IUnknown *p) : PQTuningSpaceContainer(p) {}
TNTuningSpaceContainer(const TNTuningSpaceContainer &a) : PQTuningSpaceContainer(a) {}
TNTuningSpaceContainer& operator=(TNTuningSpaceContainer& rhs) {
PQTuningSpaceContainer::operator=(rhs);
return *this;
}
};
// tuning spaces
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNTuningSpaceHelper : public TUNINGSPACETYPE {
public:
TNTuningSpaceHelper() {}
TNTuningSpaceHelper(const TUNINGSPACETYPE &a) : TUNINGSPACETYPE(a) {}
TNTuningSpaceHelper(ITuningSpace *p) : TUNINGSPACETYPE(p) {}
TNTuningSpaceHelper(IUnknown *p) : TUNINGSPACETYPE(p) {}
TNTuningSpaceHelper(const TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TUNINGSPACETYPE(a) {}
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TUNINGSPACETYPE::operator=(rhs);
return *this;
}
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TUNINGSPACETYPE::operator=(rhs);
return *this;
}
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown *rhs) {
TUNINGSPACETYPE::operator=(rhs);
return *this;
}
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(ITuningSpace *rhs) {
TUNINGSPACETYPE::operator=(rhs);
return *this;
}
bool operator==(TUNINGSPACETYPE& rhs) {
CComBSTR rhsname;
HRESULT hr = rhs->get_UniqueName(&rhsname);
if (FAILED(hr)) {
return false;
}
CComBSTR name;
hr = (*this)->get_UniqueName(&name);
if (FAILED(hr)) {
return false;
}
return name == rhsname;
}
bool operator!=(TUNINGSPACETYPE& rhs) {
return !operator==(rhs);
}
PQTuneRequest CreateTuneRequest() {
PQTuneRequest p;
HRESULT hr = (*this)->CreateTuneRequest(&p);
if (FAILED(hr)) {
return PQTuneRequest();
}
return p;
}
PQLocator Locator() {
_ASSERT(*this);
PQLocator ts;
HRESULT hr = (*this)->get_DefaultLocator(&ts);
if (FAILED(hr)) {
return PQLocator();
}
return ts;
}
HRESULT Locator(PQLocator& l) {
_ASSERT(*this);
return (*this)->put_Locator(l);
}
void Clone() {
PQTuningSpace t;
HRESULT hr = (*this)->Clone(&t);
if (FAILED(hr) || !t) {
Release(); // clone failed, clear ourselves
return;
}
TUNINGSPACETYPE::operator=(t);
}
};
typedef TNTuningSpaceHelper<PQTuningSpace, PQTuneRequest> TNTuningSpace;
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNAnalogRadioTuningSpaceHelper : public TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> {
public:
TNAnalogRadioTuningSpaceHelper() {}
TNAnalogRadioTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAnalogRadioTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(p) {}
TNAnalogRadioTuningSpaceHelper(const TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
template<class TS, class TR> TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TS, TR>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(TUNINGSPACETYPE(rhs));
return *this;
}
TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TNAnalogRadioTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown* rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
long MaxFrequency() {
_ASSERT(*this);
long freq;
HRESULT hr = (*this)->get_MaxFrequency(&freq);
if (FAILED(hr)) {
freq = DEFAULT_MAX_FREQUENCY;
}
return freq;
}
HRESULT MaxFrequency(long freq) {
_ASSERT(*this);
return (*this)->put_MaxFrequency(freq);
}
long MinFrequency() {
_ASSERT(*this);
long freq;
HRESULT hr = (*this)->get_MinFrequency(&freq);
if (FAILED(hr)) {
freq = DEFAULT_MIN_FREQUENCY;
}
return freq;
}
HRESULT MinFrequency(long freq) {
_ASSERT(*this);
return (*this)->put_MinFrequency(freq);
}
};
typedef TNAnalogRadioTuningSpaceHelper<PQAnalogRadioTuningSpace, PQChannelTuneRequest> TNAnalogRadioTuningSpace;
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNAnalogTVTuningSpaceHelper : public TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> {
public:
TNAnalogTVTuningSpaceHelper() {}
TNAnalogTVTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAnalogTVTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(p) {}
TNAnalogTVTuningSpaceHelper(const TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
template<class TS, class TR> TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TS, TR>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(TUNINGSPACETYPE(rhs));
return *this;
}
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown* rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TunerInputType InputType() {
_ASSERT(*this);
TunerInputType ti;
HRESULT hr = (*this)->get_InputType(&ti);
if (FAILED(hr)) {
ti = DEFAULT_ANALOG_TUNER_INPUT_TYPE;
}
return ti;
}
HRESULT InputType(TunerInputType ti) {
_ASSERT(*this);
return (*this)->put_InputType(&ti);
}
long CountryCode() {
_ASSERT(*this);
long cc;
HRESULT hr = (*this)->get_CountryCode(&cc);
if (FAILED(hr)) {
cc = DEFAULT_ANALOG_TUNER_INPUT_TYPE;
}
return cc;
}
HRESULT CountryCode(long cc) {
_ASSERT(*this);
return (*this)->put_CountryCode(cc);
}
long MinChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MinChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MIN_CHANNEL;
}
return chan;
}
HRESULT MinChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MinChannel(chan);
}
long MaxChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MaxChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MAX_CHANNEL;
}
return chan;
}
HRESULT MaxChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MaxChannel(chan);
}
};
typedef TNAnalogTVTuningSpaceHelper<PQAnalogTVTuningSpace, PQChannelTuneRequest> TNAnalogTVTuningSpace;
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNAuxInTuningSpaceHelper : public TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> {
public:
TNAuxInTuningSpaceHelper() {}
TNAuxInTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAuxInTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(p) {}
TNAuxInTuningSpaceHelper(const TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
template<class TS, class TR> TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TS, TR>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(TUNINGSPACETYPE(rhs));
return *this;
}
TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TNAuxInTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown* rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
};
typedef TNAuxInTuningSpaceHelper<PQAuxInTuningSpace, PQChannelTuneRequest> TNAuxInTuningSpace;
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNATSCTuningSpaceHelper : public TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> {
public:
TNATSCTuningSpaceHelper() {}
TNATSCTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNATSCTuningSpaceHelper(IUnknown *p) : TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(p) {}
TNATSCTuningSpaceHelper(const TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
template<class TS, class TR> TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TS, TR>& rhs) {
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(TUNINGSPACETYPE(rhs));
return *this;
}
TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TNATSCTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown* rhs) {
TNAnalogTVTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
long MinMinorChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MinMinorChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MIN_CHANNEL;
}
return chan;
}
HRESULT MinMinorChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MinMinorChannel(chan);
}
long MaxMinorChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MaxMinorChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MAX_CHANNEL;
}
return chan;
}
HRESULT MaxMinorChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MaxMinorChannel(chan);
}
long MinPhysicalChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MinPhysicalChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MIN_CHANNEL;
}
return chan;
}
HRESULT MinPhysicalChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MinPhysicalChannel(chan);
}
long MaxPhysicalChannel() {
_ASSERT(*this);
long chan;
HRESULT hr = (*this)->get_MaxPhysicalChannel(&chan);
if (FAILED(hr)) {
chan = DEFAULT_MAX_CHANNEL;
}
return chan;
}
HRESULT MaxPhysicalChannel(long chan) {
_ASSERT(*this);
return (*this)->put_MaxPhysicalChannel(chan);
}
};
typedef TNATSCTuningSpaceHelper<PQATSCTuningSpace, PQATSCChannelTuneRequest> TNATSCTuningSpace;
// dvb tuning space
template<class TUNINGSPACETYPE, class TUNEREQUESTTYPE> class TNDVBTuningSpaceHelper : public TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> {
public:
TNDVBTuningSpaceHelper() {}
TNDVBTuningSpaceHelper(const TUNINGSPACETYPE &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNDVBTuningSpaceHelper(IUnknown *p) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(p) {}
TNDVBTuningSpaceHelper(const TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE> &a) : TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>(a) {}
TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
template<class TS, class TR> TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TNTuningSpaceHelper<TS, TR>& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(TUNINGSPACETYPE(rhs));
return *this;
}
TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(TUNINGSPACETYPE& rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
TNDVBTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>& operator=(IUnknown* rhs) {
TNTuningSpaceHelper<TUNINGSPACETYPE, TUNEREQUESTTYPE>::operator=(rhs);
return *this;
}
DVBSystemType SystemType() const {
DVBSystemType st;
HRESULT hr = (*this)->get_SystemType(&st);
if (FAILED(hr)) {
return DVB_Cable;
}
return st;
}
HRESULT SystemType(DVBSystemType st) {
_ASSERT(*this);
return (*this)->put_SystemType(st);
}
};
typedef TNDVBTuningSpaceHelper<PQDVBTuningSpace, PQDVBTuneRequest> TNDVBTuningSpace;
// locators
template<class LOCATORTYPE> class TNLocatorHelper : public LOCATORTYPE {
public:
TNLocatorHelper() {}
TNLocatorHelper(const LOCATORTYPE &a) : LOCATORTYPE(a) {}
TNLocatorHelper(IUnknown *p) : LOCATORTYPE(p) {}
TNLocatorHelper(const TNLocatorHelper<LOCATORTYPE> &a) : LOCATORTYPE(a) {}
TNLocatorHelper(ILocator *p) : LOCATORTYPE(p) {}
TNLocatorHelper<LOCATORTYPE>& operator=(TNLocatorHelper<LOCATORTYPE>& rhs) {
LOCATORTYPE::operator=(rhs);
return *this;
}
TNLocatorHelper<LOCATORTYPE>& operator=(LOCATORTYPE& rhs) {
LOCATORTYPE::operator=(rhs);
return *this;
}
TNLocatorHelper<LOCATORTYPE>& operator=(ILocator* rhs) {
LOCATORTYPE::operator=(rhs);
return *this;
}
TNLocatorHelper<LOCATORTYPE>& operator=(IUnknown* rhs) {
LOCATORTYPE::operator=(rhs);
return *this;
}
void Clone() {
PQLocator t;
HRESULT hr = (*this)->Clone(&t);
if (FAILED(hr) || !t) {
Release(); // clone failed, clear ourselves
return;
}
LOCATORTYPE::operator=(t);
}
long CarrierFrequency() {
_ASSERT(*this);
long f;
HRESULT hr = (*this)->get_CarrierFrequency(&f);
if (FAILED(hr)) {
return -1;
}
return f;
}
HRESULT CarrierFrequency(long f) {
_ASSERT(*this);
return (*this)->put_CarrierFrequency(f);
}
FECMethod InnerFEC() {
_ASSERT(*this);
FECMethod f;
HRESULT hr = (*this)->get_InnerFEC(&f);
if (FAILED(hr)) {
return BDA_FEC_METHOD_NOT_SET;
}
return f;
}
HRESULT InnerFEC(FECMethod f) {
_ASSERT(*this);
return (*this)->put_InnerFEC(f);
}
BinaryConvolutionCodeRate InnerFECRate() {
_ASSERT(*this);
BinaryConvolutionCodeRate f;
HRESULT hr = (*this)->get_InnerFECRate(&f);
if (FAILED(hr)) {
return BDA_BCC_RATE_NOT_SET;
}
return f;
}
HRESULT InnerFECRate(BinaryConvolutionCodeRate f) {
_ASSERT(*this);
return (*this)->put_InnerFECRate(f);
}
FECMethod OuterFEC() {
_ASSERT(*this);
FECMethod f;
HRESULT hr = (*this)->get_OuterFEC(&f);
if (FAILED(hr)) {
return BDA_FEC_METHOD_NOT_SET;
}
return f;
}
HRESULT OuterFEC(FECMethod f) {
_ASSERT(*this);
return (*this)->put_OuterFEC(f);
}
BinaryConvolutionCodeRate OuterFECRate() {
_ASSERT(*this);
BinaryConvolutionCodeRate f;
HRESULT hr = (*this)->get_OuterFECRate(&f);
if (FAILED(hr)) {
return BDA_BCC_RATE_NOT_SET;
}
return f;
}
HRESULT OuterFECRate(BinaryConvolutionCodeRate f) {
_ASSERT(*this);
return (*this)->put_OuterFECRate(f);
}
ModulationType Modulation() {
_ASSERT(*this);
ModulationType f;
HRESULT hr = (*this)->get_Modulation(&f);
if (FAILED(hr)) {
return BDA_MOD_NOT_SET;
}
return f;
}
HRESULT Modulation(ModulationType f) {
_ASSERT(*this);
return (*this)->put_Modulation(f);
}
long SymbolRate() {
_ASSERT(*this);
long f;
HRESULT hr = (*this)->get_SymbolRate(&f);
if (FAILED(hr)) {
return -1;
}
return f;
}
HRESULT SymbolRate(long f) {
_ASSERT(*this);
return (*this)->put_SymbolRate(f);
}
};
typedef TNLocatorHelper<PQLocator> TNLocator;
template<class LOCATORTYPE> class TNATSCLocatorHelper : public TNLocatorHelper<LOCATORTYPE> {
public:
TNATSCLocatorHelper() {}
TNATSCLocatorHelper(const LOCATORTYPE &a) : TNLocatorHelper<LOCATORTYPE>(a) {}
TNATSCLocatorHelper(IUnknown *p) : TNLocatorHelper<LOCATORTYPE>(p) {}
TNATSCLocatorHelper(const TNATSCLocatorHelper<LOCATORTYPE> &a) : TNLocatorHelper<LOCATORTYPE>(a) {}
TNATSCLocatorHelper(IATSCLocator *p) : TNLocatorHelper<LOCATORTYPE>(p) {}
TNATSCLocatorHelper(const TNLocatorHelper<LOCATORTYPE> &a) : TNLocatorHelper<LOCATORTYPE>(a) {}
TNATSCLocatorHelper<LOCATORTYPE>& operator=(TNATSCLocatorHelper<LOCATORTYPE>& rhs) {
TNLocatorHelper<LOCATORTYPE>::operator=(rhs);
return *this;
}
TNATSCLocatorHelper<LOCATORTYPE>& operator=(TNLocatorHelper<LOCATORTYPE>& rhs) {
TNLocatorHelper<LOCATORTYPE>::operator=(rhs);
return *this;
}
TNATSCLocatorHelper<LOCATORTYPE>& operator=(LOCATORTYPE& rhs) {
TNLocatorHelper<LOCATORTYPE>::operator=(rhs);
return *this;
}
TNATSCLocatorHelper<LOCATORTYPE>& operator=(IATSCLocator* rhs) {
TNLocatorHelper<LOCATORTYPE>::operator=(rhs);
return *this;
}
TNATSCLocatorHelper<LOCATORTYPE>& operator=(IUnknown* rhs) {
TNLocatorHelper<LOCATORTYPE>::operator=(rhs);
return *this;
}
long PhysicalChannel() {
_ASSERT(*this);
long pc;
HRESULT hr = (*this)->get_PhysicalChannel(&pc);
if (FAILED(hr)) {
return -1;
}
return pc;
}
HRESULT PhysicalChannel(long pc) {
_ASSERT(*this);
return (*this)->put_PhysicalChannel(pc);
}
long TSID() {
_ASSERT(*this);
long pc;
HRESULT hr = (*this)->get_TSID(&pc);
if (FAILED(hr)) {
return -1;
}
return pc;
}
HRESULT TSID(long pc) {
_ASSERT(*this);
return (*this)->put_TSID(pc);
}
long ProgramNumber() {
_ASSERT(*this);
long pc;
HRESULT hr = (*this)->get_ProgramNumber(&pc);
if (FAILED(hr)) {
return -1;
}
return pc;
}
HRESULT ProgramNumber(long pc) {
_ASSERT(*this);
return (*this)->put_ProgramNumber(pc);
}
};
typedef TNATSCLocatorHelper<PQATSCLocator> TNATSCLocator;
// tune requests
template<class TUNEREQUESTTYPE, class LOCATORTYPE> class TNTuneRequestHelper : public TUNEREQUESTTYPE {
public:
TNTuneRequestHelper() {}
TNTuneRequestHelper(const TUNEREQUESTTYPE &a) : TUNEREQUESTTYPE(a) {}
TNTuneRequestHelper(IUnknown *p) : TUNEREQUESTTYPE(p) {}
TNTuneRequestHelper(const TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TUNEREQUESTTYPE(a) {}
TNTuneRequestHelper(ITuneRequest *p) : TUNEREQUESTTYPE(p) {}
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TUNEREQUESTTYPE& rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(ITuneRequest* rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IUnknown* rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
// this function creates a new instance of the base ITuneRequest* and copies
// all the values of the current ITuneRequest and sets this to the new one
// this provides the value semantics needed by the network providers
void Clone() {
PQTuneRequest t;
HRESULT hr = (*this)->Clone(&t);
if (FAILED(hr) || !t) {
Release(); // clone failed, clear ourselves
return;
}
TUNEREQUESTTYPE::operator=(t);
}
PQTuningSpace TuningSpace() {
_ASSERT(*this);
PQTuningSpace ts;
HRESULT hr = (*this)->get_TuningSpace(&ts);
if (FAILED(hr)) {
return PQTuningSpace();
}
return ts;
}
LOCATORTYPE Locator() {
_ASSERT(*this);
PQLocator pc;
HRESULT hr = (*this)->get_Locator(&pc);
if (FAILED(hr)) {
return PQLocator().p;
}
return pc.p;
}
HRESULT Locator(LOCATORTYPE& pc) {
_ASSERT(*this);
return (*this)->put_Locator(pc);
}
};
typedef TNTuneRequestHelper<PQTuneRequest, PQLocator> TNTuneRequest;
template<class TUNEREQUESTTYPE, class LOCATORTYPE> class TNChannelTuneRequestHelper : public TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> {
public:
TNChannelTuneRequestHelper() {}
TNChannelTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNChannelTuneRequestHelper(IChannelTuneRequest *p) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNChannelTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNChannelTuneRequestHelper(const TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNChannelTuneRequestHelper(const TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
template<class TR, class LOC> TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNTuneRequestHelper<TR, LOC>& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(TUNEREQUESTTYPE(rhs));
return *this;
}
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TUNEREQUESTTYPE& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IChannelTuneRequest* rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IUnknown* rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
long Channel() {
_ASSERT(*this);
long c;
HRESULT hr = (*this)->get_Channel(&c);
if (FAILED(hr)) {
return -1;
}
return c;
}
HRESULT Channel(long c) {
_ASSERT(*this);
return (*this)->put_Channel(c);
}
};
typedef TNChannelTuneRequestHelper<PQChannelTuneRequest, PQLocator> TNChannelTuneRequest;
template<class TUNEREQUESTTYPE, class LOCATORTYPE> class TNATSCChannelTuneRequestHelper : public TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> {
public:
TNATSCChannelTuneRequestHelper() {}
TNATSCChannelTuneRequestHelper(const TNTuneRequest &a) : TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNATSCChannelTuneRequestHelper(IATSCChannelTuneRequest *p) : TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNATSCChannelTuneRequestHelper(IUnknown *p) : TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNATSCChannelTuneRequestHelper(const TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNATSCChannelTuneRequestHelper(const TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& rhs) {
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
template<class TR, class LOC>TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNTuneRequestHelper<TR, LOC>& rhs) {
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(TR(rhs));
return *this;
}
TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TUNEREQUESTTYPE& rhs) {
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNATSCChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IATSCChannelTuneRequest *rhs) {
TNChannelTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IUnknown* rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
long MinorChannel() {
_ASSERT(*this);
long mc;
HRESULT hr = (*this)->get_MinorChannel(&mc);
if (FAILED(hr)) {
return -1;
}
return mc;
}
HRESULT MinorChannel(long mc) {
_ASSERT(*this);
return (*this)->put_MinorChannel(mc);
}
};
typedef TNATSCChannelTuneRequestHelper<PQATSCChannelTuneRequest, PQATSCLocator> TNATSCChannelTuneRequest;
template<class TUNEREQUESTTYPE, class LOCATORTYPE> class TNDVBTuneRequestHelper : public TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> {
public:
TNDVBTuneRequestHelper() {}
TNDVBTuneRequestHelper(const TNTuneRequest &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNDVBTuneRequestHelper(IDVBTuneRequest *p) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNDVBTuneRequestHelper(IUnknown *p) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(p) {}
TNDVBTuneRequestHelper(const TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNDVBTuneRequestHelper(const TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE> &a) : TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>(a) {}
TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
template<class TR, class LOC> TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TNTuneRequestHelper<TR, LOC>& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(TUNEREQUESTTYPE(rhs));
return *this;
}
TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(TUNEREQUESTTYPE& rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IDVBTuneRequest* rhs) {
TNTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>::operator=(rhs);
return *this;
}
TNDVBTuneRequestHelper<TUNEREQUESTTYPE, LOCATORTYPE>& operator=(IUnknown* rhs) {
TUNEREQUESTTYPE::operator=(rhs);
return *this;
}
long ONID() {
_ASSERT(*this);
long c;
HRESULT hr = (*this)->get_ONID(&c);
if (FAILED(hr)) {
return -1;
}
return c;
}
HRESULT ONID(long c) {
_ASSERT(*this);
return (*this)->put_ONID(c);
}
long TSID() {
_ASSERT(*this);
long c;
HRESULT hr = (*this)->get_TSID(&c);
if (FAILED(hr)) {
return -1;
}
return c;
}
HRESULT TSID(long c) {
_ASSERT(*this);
return (*this)->put_TSID(c);
}
long SID() {
_ASSERT(*this);
long c;
HRESULT hr = (*this)->get_SID(&c);
if (FAILED(hr)) {
return -1;
}
return c;
}
HRESULT SID(long c) {
_ASSERT(*this);
return (*this)->put_SID(c);
}
};
typedef TNDVBTuneRequestHelper<PQDVBTuneRequest, PQLocator> TNDVBTuneRequest;
}; // namespace
#ifndef NO_DEFAULT_BDATUNINGMODEL_NAMESPACE
using namespace BDATuningModel;
#endif
#endif
// end of file - tune.h