/********************************************************************
** File Name: al_sbtvd_subtitle.h
**
** File Description: This file provide the APIs for SBSUB module
**
** Copyright(c) 2008 Sunplus Technologies - All Rights Reserved
**
** History Information Description
** Date						Author					Modification
**
********************************************************************/
#ifndef __AL_SBTVD_SUBTITLE_H__
#define __AL_SBTVD_SUBTITLE_H__
/********************************************************************
	Including Files
********************************************************************/
#include "al_basictypes.h"
/********************************************************************
	Macros
********************************************************************/
#define MAX_SBSUB_NUM		32	/*total length is 8 bits, every char is 8 bits.*/

/********************************************************************
	Type definitions
********************************************************************/
typedef struct _AL_SBSUB_pid_info_t {
	al_uint16 wPid;
} AL_SBSUBPidInfo_t;

/********************************************************************
	Extern Global Functions
********************************************************************/

/**
* @brief subtitle start function.
*
* @param Index user selects subtitle number on the subtitle menu, and using index, the special
* subtitle descriptor information will be gotten from subtitle descriptor buffer.
*
* @return AL_SUCCESS if starting is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_Start(al_int Index);

/**
* @brief subtitle stop function.
*
* @param al_void.
*
* @return AL_SUCCESS if stoping is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_Stop(al_void);

/**
* @brief subtitle reset function.
*
* The buffer that stores subtitle descriptor information is static buffer, so
* it needs be reset with following initialization or a programe change.
*
* @param al_void.
*
* @return AL_SUCCESS if reseting is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_Reset(al_void);

/**
* @brief the function can get the valid subtitle descriptor total number.
*
* Before the subtitle module starts to work, it needs get the subtitle descpritor
* total number. if the total number is more than 0, the subtitle module will start
* to work. otherwise stop to work.
*
* @param *GetTotalNum get the dvb subtitle total number.
*
* @return AL_SUCCESS if getting total number is successful, AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_GetTotalNum(al_uint32 *GetTotalNum);


/**
* @brief the function can get the parsed subtitle descriptor information.
*
* After creating the subtitle menu with pressing subtitle key, the subtitle menu
* with all subtitle types will be shown on the screen. So when displayed information
* is inited, the parsed subtitle descriptor information will be gotten.
*
* @note Index value is less than the total subtitle descriptor number.
*
* @param Index using the index can get special subtitle descriptor information from
* the buffer.
*
* @param *SubtitleDescInfo it will store the gotten subtitle descriptor information.
*
* @return AL_SUCCESS if getting subtitle descriptor information is successful,
* AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_GetDescInfo(al_int Index, AL_SBSUBPidInfo_t *SubtitleDescInfo);

/**
* @brief the function can get the subtitle start status.
*
* @param* None.
*
* @return AL_SUCCESS if getting subtitle start flag is true,
* AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_GetStartFlag(void);

/**
* @brief the function can set subtitle display window freezed or not.
*
* After the video is freezed with pressing freeze key, if the subtitle is
* displaying on the screen, the subtitle needs be freezed. Else the
* video isn't freezed with pressing freeze key again,  if the subtitle is
* displaying on the screen, the subtitle needn't be freezed.
*
* @param FreezeStatus if freeze is true, the subtitle needs be freezed.
* Else if freeze is false, the subtitle needn't be freezed.
*
* @return AL_SUCCESS if setting freeze is successful,
* AL_FAILURE otherwise.
*/
AL_Return_t AL_SBSUB_SetFreeze(al_bool FreezeStatus);
#ifdef CONFIG_SUPPORT_PVR

AL_Return_t AI_SBSUB_GetFileTsSubInfo(al_void);
#endif

#endif /*__SPAL_SBSUB_H__*/
