2025-04-27 07:49:33 -04:00

271 lines
8.9 KiB
C

#ifndef __STLLAPI_H
#define __STLLAPI_H
//----------------------------------------------------------------------------
// STLLAPI.H
//----------------------------------------------------------------------------
// Description : small description of the goal of the module
//----------------------------------------------------------------------------
// Copyright SGS Thomson Microelectronics ! Version alpha ! Jan 1st, 1995
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// Include files
//----------------------------------------------------------------------------
#include "stdefs.h"
//----------------------------------------------------------------------------
// Exported Types
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// Exported Variables
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// Exported Constants
//----------------------------------------------------------------------------
#define QUANT_TAB_SIZE 64
//---- Definition of the STi35xxx memory partitioning
#define NB_ROW_OF_MB 22 // Number of Rows of Macro blocks for B
// pictures when optimmization is used
#ifdef STi3520A
#define BUF_FULL 0x480// bit buffer occupies 0x480 * 256 bytes (1.75 Mbits)
#else
#define BUF_FULL 0x380// bit buffer occupies 0x380 * 256 bytes (1.75 Mbits)
#endif
//---- PAL
#define PSZ_PAL 0x0980 // Picture size = 720*576*1.5 / 256 = 0x97E
#define BUFF_A_PAL BUF_FULL+1 //
#define BUFF_B_PAL (BUFF_A_PAL+PSZ_PAL)
#define BUFF_C_PAL (BUFF_B_PAL+PSZ_PAL)
//---- NTSC
#define PSZ_NTSC 0x07F0
#define BUFF_A_NTSC BUF_FULL+1
#define BUFF_B_NTSC (BUFF_A_NTSC+PSZ_NTSC)
#define BUFF_C_NTSC (BUFF_B_NTSC+PSZ_NTSC)
//---- OSD
#define OSD_START (BUFF_C + ((NB_ROW_OF_MB*3)/2))*32L
#define FORWARD_PRED 0
#define BACKWARD_PRED 1
/************************************/
/* definition of main start codes */
/************************************/
#define PICT 0x0000
#define USER 0xB200
#define SEQ 0xB300
#define SEQ_ERR 0xB400
#define EXT 0xB500
#define SEQ_END 0xB700
#define GOP 0xB800
/************************************/
/* definition of extension codes */
/************************************/
#define SEQ_EXT 0x10
#define SEQ_DISP 0x20
#define QUANT_EXT 0x30
#define SEQ_SCAL 0x50
#define PICT_PSV 0x70
#define PICT_COD 0x80
#define PICT_SCAL 0x90
/***********************************************/
/* definition of states of FistVsyncAfterVbv */
/***********************************************/
// FistVsyncAfterVbv is a 3 state variable
// before vbv FistVsyncAfterVbv = NOT_YET_VBV
// between vbv and following vsync FistVsyncAfterVbv = NOT_YET_VST
// after vsync following vbv FistVsyncAfterVbv = PAST_VBV_AND_VST
#define NOT_YET_VBV 0
#define NOT_YET_VST 1
#define PAST_VBV_AND_VST 2
//----------------------------------------------------------------------------
// Exported Functions
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// One line function description (same as in .C)
//----------------------------------------------------------------------------
// In :
// Out :
// InOut :
// Global :
// Return :
//----------------------------------------------------------------------------
//---- STINIT
VOID VideoInitVar(PVIDEO pVideo, U16 StreamType);
U16 VideoTestReg(PVIDEO pVideo);
U16 VideoTestMem(PVIDEO pVideo);
U16 VideoTestInt(PVIDEO pVideo);
VOID VideoReset35XX(PVIDEO pVideo, U16 StreamType);
//---- STISR
BOOLEAN VideoVideoInt(PVIDEO pVideo);
//---- STDISP
VOID VideoSetPictureSize(PVIDEO pVideo);
VOID VideoDisplayCtrl(PVIDEO pVideo);
//---- STPIPE
VOID VideoSetRecons(PVIDEO pVideo);
VOID VideoChooseField(PVIDEO pVideo);
VOID VideoVsyncRout(PVIDEO pVideo);
//---- STHEAD
VOID VideoUser(PVIDEO pVideo);
VOID VideoPictExtensionHeader(PVIDEO pVideo);
VOID VideoSequenceHeader(PVIDEO pVideo);
VOID VideoExtensionHeader(PVIDEO pVideo);
VOID VideoGopHeader(PVIDEO pVideo);
VOID VideoPictureHeader(PVIDEO pVideo);
//****************************************
// NEW : Very Low Level Routines
//****************************************
VOID VideoSetBBStart(PVIDEO pVideo, U16);
U16 VideoGetBBL(VOID);
VOID VideoSetBBStop(U16);
VOID VideoSetBBThresh(U16);
VOID VideoSetABStart( U16);
U16 VideoGetABL(VOID);
VOID VideoSetABStop(U16);
VOID VideoSetABThresh(U16);
U16 VideoBlockMove(PVIDEO pVideo, U32 SrcAddress, U32 DestAddress, U16 Size);
VOID VideoStartBlockMove(PVIDEO pVideo, U32 SrcAddress, U32 DestAddress, U32 Size);
VOID VideoCommandSkip(PVIDEO pVideo, U16 Nbpicture);
VOID VideoSetSRC(PVIDEO pVideo, U16 SrceSize, U16 DestSize);
VOID VideoLoadQuantTables(PVIDEO pVideo, BOOLEAN Intra, U8 * Table);
//**************************
// CMD , Write
//**************************
VOID VideoLaunchHeadSearch(PVIDEO pVideo);
//**************************
// CMD , Read
//**************************
U32 VideoReadCDCount(PVIDEO pVideo);
U32 VideoReadSCDCount(PVIDEO pVideo);
//**************************
// CTL register Routines
//**************************
VOID VideoEnableDecoding(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoEnableErrConc(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoPipeReset(PVIDEO pVideo);
VOID VideoSoftReset(PVIDEO pVideo );
VOID VideoEnableInterfaces(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoPreventOvf(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoSetHalfRes(PVIDEO pVideo);
VOID VideoSetFullRes(PVIDEO pVideo);
VOID VideoSelectMpeg2(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoSelect8M(PVIDEO pVideo, BOOLEAN OnOff);
//**************************
// DCF registers Routines
//**************************
VOID VideoOsdOn(PVIDEO pVideo);
VOID VideoOsdOff(PVIDEO pVideo);
VOID VideoSwitchSRC(PVIDEO pVideo);
VOID VideoSRCOn(PVIDEO pVideo);
VOID VideoSRCOff(PVIDEO pVideo);
//**************************
// DFA, DFW, DFS registers Routines
//**************************
VOID VideoInitDecodeParam(U16 dfa, U16 dfs, U16 dfw);
//**************************
// DFP registers Routines
//**************************
VOID VideoSetDFP(U16 dfp);
VOID VideoEnableDisplay(PVIDEO pVideo);
VOID VideoDisableDisplay(PVIDEO pVideo);
//**************************
// FFP, BFP, RFP registers Routines
//**************************
VOID VideoStoreRFBBuf(PVIDEO pVideo, U16 rfp, U16 ffp, U16 bfp);
//**************************
// GCF1 register Routines
//**************************
VOID VideoSetDramRefresh(PVIDEO pVideo, U16);
VOID VideoSelect20M(PVIDEO pVideo, BOOLEAN OnOff);
VOID VideoSetDFA(PVIDEO pVideo, U16);
//**************************
// GCF2 register Routines
//**************************
VOID VideoSelectSdram(VOID);
VOID VideoSelectHdram(VOID);
VOID VideoInitDisplayParam(U16 xfa, U16 xfs, U16 xfw);
//**************************
// HDF register Routines
//**************************
VOID VideoReadHeaderDataFifo(PVIDEO pVideo);
//**************************
// INS1,2 register Routines
//**************************
VOID VideoComputeInst(PVIDEO pVideo);
VOID VideoStoreINS(PVIDEO pVideo);
VOID VideoWaitDec(PVIDEO pVideo);
//**************************
// ITM, ITS register Routines
//**************************
VOID VideoMaskInt(PVIDEO pVideo);
VOID VideoRestoreInt(PVIDEO pVideo);
VOID VideoSetMask(U16 mask);
VOID VideoResetMask(U16 mask);
//**************************
// DRAM I/O
//**************************
VOID VideoSetMWP(U32);
VOID VideoSetMRP(U32);
BOOLEAN VideoMemWriteFifoEmpty(VOID);
BOOLEAN VideoMemReadFifoFull(VOID);
BOOLEAN VideoHeaderFifoEmpty(VOID);
BOOLEAN VideoBlockMoveIdle(VOID);
//**************************
// OBP / OTP init
//**************************
VOID VideoInitOEP(PVIDEO pVideo, U32 point_oep);
//**************************
// PSV register
//**************************
VOID VideoSetPSV(PVIDEO pVideo);
//**************************
// XDO, XDS, YDO, YDS
//**************************
VOID VideoSetVideoWindow(PVIDEO, U16 a, U16 b, U16 c, U16 d);
VOID VideoInitXY(PVIDEO pVideo);
VOID SetXY(PVIDEO pVideo, U16 xds, U16 yds);
//**************************
// PLL initialization
//**************************
VOID VideoInitPLL(VOID);
//**************************
// PES initialization
//**************************
VOID VideoInitPesParser(U16 StreamType);
U32 VideoReadPTS(VOID );
BOOLEAN VideoIsValidPTS(VOID );
BOOL IsChipSTi3520(VOID);
//------------------------------- End of File --------------------------------
#endif // #ifndef __STLLAPI_H