//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//
//
// 	MODULE  : ZAC3.H
//	PURPOSE : Zoran AC3 related
//	AUTHOR  : JBS Yadawa
// 	CREATED :  7/20/96
//
//	REVISION HISTORY :
//
//	Copyright (C) 1996 SGS-THOMSON Microelectronics
//
//
//	DATE     :
//
//	COMMENTS :
//
//
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


#ifndef __ZAC3_H__
#define __ZAC3_H__

#include "stdefs.h"

#define	AC3_AC3		0x85
#define AC3_CFG		0x82
#define	AC3_PLAY		0x8A
#define AC3_MUTE		0x8B
#define	AC3_UNMUTE	0x89
#define	AC3_STOP		0x8C
#define	AC3_STOPF	0x8D
#define	AC3_STAT		0x8E
#define	AC3_NOP		0x80
#define	AC3_VER		0x81

typedef enum tagAc3State {
	ac3PowerUp = 0,
	ac3Startup,
	ac3Playing,
	ac3Paused,
	ac3Stopped,
	ac3Starving,
	ac3ErrorRecover,
} AC3STATE;

typedef struct tagAc3 {
	AC3STATE state;
	DWORD		pts;
	BOOL		starving;
	DWORD		starvationCount;
	DWORD		status;
	BOOL		ac3Data;
	DWORD		errorCount;
}AC3, FARPTR *PAC3;

PAC3 	Ac3Open(void);
BOOL 	Ac3InitDecoder(void);
BOOL 	Ac3Boot(void);
BOOL 	FARAPI Ac3SendData(BYTE FARPTR *Data, DWORD Size);
DWORD 	Ac3GetPTS(void);
BOOL 	Ac3Pause(void);
BOOL 	Ac3Play(void);
BOOL 	Ac3Close(void);
BOOL 	Ac3SetNormalMode(void);
BOOL 	Ac3SetBypassMode(void);
void 	Ac3Reset(void);
void 	Ac3CheckStatus(void);
BOOL 	Ac3Stop(void);

#endif // __ZAC3_H__