next up previous contents index
Next: FMPQueryInterface Up: General functions Previous: FMPPlay   Contents   Index

FMPProperty

This function allows the user to get hardware-specific settings - see Realmagic HWLrc0.

DWORD FMPProperty(DWORD dwFlags, DWORD dwPropSet, DWORD dwPropId, DWORD dwPropFlags, void* pPropData, DWORD dwPropSizeIn, DWORD* pdwPropSizeOut);

Arguments
DWORD dwFlags - flags to specify set or get function - see rm84cmn.h
DWORD dwPropSet - property set - see PROPERTY_SETS enumeration in rm84cmn.h
DWORD dwPropId - property identifier - see enumerations in rm84cmn.h
DWORD dwPropFlags - reserved for future use
void* pPropData - pointer to buffer data used to pass the information. Usually the buffer is a DWORD but there are few exceptions - see rm84cmn.h.
DWORD dwPropSizeIn - size of buffer in bytes - see rm84cmn.h
DWORD* pdwPropSizeOut - pointer to DWORD. It can be NULL. If it is not NULL, receives the necessary buffer size for the specific property.

FMPProperty dwFlags are:

KSPROPERTY_TYPE_GET
KSPROPERTY_TYPE_SET

Different types of property sets are:

typedef enum{
REGISTRY_COMMON_SET=1, // registry set common for all board versions
REGISTRY_HDTV_SET,     // registry set used only for hdtv mode
REGISTRY_VGAVENDOR_SET,// registry set used mostly for digital overlay
SCANCONVERTER_SET,     // property set to access the scan converter
EEPROM_SET,            // property set to access the scan converter
BOARDINFO_SET,         // property set to access general properties of the board
VIDEO_SET,             // property set to access video properties of the board
AUDIO_SET,             // property set to access audio properties of the board
PROPERTY_MAX_SET       // property set to maximum
}PROPERTY_SETS;

REGISTRY_COMMON_SET use DWORD. ID of property sets are:

typedef enum{
eTvOut,
eTvMR0,
eDoHwReset,
eDisableSpdifOutputInReset,
eActiveVideoWidthNtsc,
eActiveVideoWidthPal,
eForcedProgressiveSourceOff,
eForcedProgressiveAlways,
eNtscPalFrameDrop,
eVGAForcedInterlaced,
eAudioOutput,
eVolumeRight,
eVolumeLeft,
eDacType,
eAudioDacBitsPerSample,
eDoAudioLater,
eBrightness,
eContrast,
eSaturation,
eTvBrightness,
eTvContrast,
eTvSaturation,
eDResBitsPerPixel,
eDResScreenWidth,
eDResScreenHeight,
ePreviousHFreq,
eTotalPixelsPerLine,
eAcpiEnable,
eDecoderIsSlave,
eZoomEnable,
eWindowTvEnable,
eWindowHdtvEnable,
eOsdVideoIndependent,
eMaximumDvclk,
eCommonRegMax
}REGISTRY_COMMON;

REGISTRY_HDTV set uses DWORD

typedef enum{
eHdtvHFreq,
eHdtvVFreq,
eHdtvVideoWidth,
eHdtvVideoHeight,
eHdtvHSyncTotal,
eHdtvPreHSync,
eHdtvHSyncActive,
eHdtvPostHSync,
eHdtvVSyncTotal,
eHdtvPreVSync,
eHdtvVSyncActive,
eHdtvPostVSync,
eHdtvPixelFreq,
eHdtvInterlaced,
eHdtvRegMax
}REGISTRY_HDTV;

REGISTRY_VGA_VENDOR set uses DWORD

typedef enum{
eInvertField,
eVmi_16bits,
eCcir_656,
eSyncEnable,
eVip20,
eVgaVendorRegMax
}REGISTRY_VGA_VENDOR;

SCANCONVERTER set uses DWORD, few exceptions apply.

typedef enum{
escAccessRegister,     // uses RM_WRITE
escResetDefault,
escBrightness,
escContrast,
escSaturation,
escSharpness,
escFlicker,
escChromaFilter,
escLumaFilter,
escNtscPedestal,
escMacrovision,
escTvStandard,
escOutputFormat,
escScart,
escHwOutputHorzOffsShadow,
escHwOutputVertOffsShadow,
escTVPixels,
escTVLines,
escHorizontalPositionOffset,
escVerticalPositionOffset,
escHorizontalScaleStep,
escVerticalScaleStep,
escHorizontalPanPosition,
escVerticalPanPosition,
escZoom,
escScanConverterMax
}SCANCONVERTER;

EEPROM_SET use DWORD, few exceptions apply.

typedef enum{
eEepromAccess, // uses RM_WRITE
eEepromMax
}EEPROM;

BOARDINFO_SET uses DWORD.

typedef enum{
ebiDeviceId,
ebiSubId,
ebiVersion,
ebiAPMState,
ebiPIOAccess, //access to PIO - danger - GET changes PIO in input, SET changes PIO in output
eBoardInfoMax
}BOADDINFO;

VIDEO_SET uses DWORD

typedef enum{
evMax
}VIDEO_ENUM;

AUDIO_SET uses DWORD

typedef enum{
eAudioFineVcxo,
eAudioPllCoef,
eaMax
}AUDIO_ENUM;

Return value
Zero if successful. Otherwise returns an error code.

Remarks
Here is a small sample code for usage:

DWORD get_TvBrightness(short *pVal)

{
DWORD sizeOut, fVal;

if (pVal == NULL)
return NOTGOOD;

$//$Get the focus TV output to new standard

if (FMPProperty (KSPROPERTY_TYPE_GET, SCANCONVERTER_SET, escBrightness, 0, &fVal,
sizeof(fVal), &sizeOut) == OK){
if(sizeOut != sizeof(fVal))
return NOTGOOD;
$*$pVal = (short) fVal;
}
else{
*pVal = BRT_RESET;
return NOTGOOD;
}
return OK;
}

Figure 1.53: FMPProperty Operating Systems and Streaming Models
\begin{figure}\centering\begin{tabular}{\vert l\vert c\vert c\vert c\vert c\vert...
...& $\bullet$& $\bullet$& $\bullet$& $\bullet$\\
\hline
\end{tabular}\end{figure}


next up previous contents index
Next: FMPQueryInterface Up: General functions Previous: FMPPlay   Contents   Index
Realmagic Build 2001-12-07