#include "strmini.h"
#include "stdefs.h"
#include "hwcodec.h"
#include "mpaudio.h"
#include "ls220.h"
#include "video.h"
#include "audio.h"

#ifdef ORIG
	static BYTE tBuf[4096];
	static BYTE hBuf[4] = {0x00, 0x00, 0x01, 0xB1};
	void NEARAPI Ac3SPIReadBack(BYTE command, short numresult, BYTE *result); 
#endif

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecOpen(ULONG Base, BYTE FARPTR *DmaBuf, DWORD adr1)
{
BOOL Found=FALSE;	
	
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecOpen - base = 0x%lx\n",Base);
	#endif
	LUXInit(Base);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecClose(void)
{
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecClose\n");
	#endif
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecPlay()
{
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecPlay - calling LUXVideoPlay\n");
	#endif
	LUXVideoPlay(1000);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecReset(void)
{
	#ifdef DBG
		DbgPrint("HwCodecReset\n");
	#endif
	return;
}

///////////////////////////////////////////////////////////

void HwCodecAudioReset(void)
{
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecAudioReset\n");
	#endif
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecPause(void)
{
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecPause - calling LUXVideoPause, LUXAudioPause\n");
	#endif

	LUXVideoPause();
	LUXAudioPause();
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecSeek(void)
{
	#ifdef DBG
		DbgPrint("HwCodecSeek - calling LUXVideoAfterSeek, LUXAudioStop, LUXAudioAfterSeek, LUXAudioPlay\n");
	#endif

	LUXVideoAfterSeek();
	LUXAudioStop();
	LUXAudioAfterSeek();
	LUXAudioPlay(1000);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecProcessDiscontinuity(void)
{
	#ifdef DBG
		DbgPrint("luxdvd : HwCodecProcessDiscontinuity - calling LUXVideoAfterSeek, LUXAudioStop, LUXAudioPlay\n");
	#endif

	LUXVideoAfterSeek();
	LUXAudioStop();
	LUXAudioAfterSeek();
	LUXAudioPlay(1000);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecFlushBuffer(void)
{
	#ifdef DBG
		DbgPrint("HwCodecFlushBuffer\n");
	#endif
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecStop(void)
{
	#ifdef DBG
		DbgPrint("HwCodecStop - calling LUXVideoStop, LUXAudioStop\n");
	#endif

	LUXVideoStop();
	LUXAudioStop();
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

UINT HwCodecSendVideo(BYTE FARPTR *pPacket, BYTE *p, DWORD uLen, DWORD pts, BOOL b_scr)
{
	return 0;
}

/////////////////////////////////////////////////////////////////////////////

UINT HwCodecSendAudio(BYTE *pPacket, BYTE *p, DWORD uLen, DWORD pts, BOOL b_scr)
{
   return 0;
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecInterrupt(void)
{
BOOL	bRet = FALSE;

	bRet = TRUE;
	return bRet;
}

/////////////////////////////////////////////////////////////////////////////

void FARAPI HwCodecSetFourByThree()
{
	#ifdef DBG
		DbgPrint("HwCodecSetFourByThree\n");
	#endif
	return;
}

/////////////////////////////////////////////////////////////////////////////

void FARAPI	HwCodecSetSixteenByNine()
{
	#ifdef DBG
		DbgPrint("HwCodecSetSixteenByNine\n");
	#endif
	return;
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecEnableIRQ()
{
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecDisableIRQ()
{
}

/////////////////////////////////////////////////////////////////////////////

BOOL HwCodecAc3BypassMode(BOOL on)
{
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecAudioPlay()
{
	#ifdef DBG
		DbgPrint("HwCodecAudioPlay - LUXAudioPlay()\n");
	#endif
	LUXAudioPlay(1000);
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecAudioPause()
{
	#ifdef DBG
		DbgPrint("HwCodecAudioPause - LUXAudioPause()\n");
	#endif
	LUXAudioPause();
}

/////////////////////////////////////////////////////////////////////////////

void HwCodecAudioStop()
{
	#ifdef DBG
		DbgPrint("HwCodecAudioStop - LUXAudioStop()\n");
	#endif
	LUXAudioStop();
}

