⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moviesbtl_parser.h

📁 DVB软件,基于CT216软件的开发源程序.
💻 H
字号:
/**************************************************************************

        (C)Copyright Cheertek Inc. 2008,
           K000, all right reserved.

        Product : STB Firmware

****************************************************************************/
#ifndef __DVB_MOVIESBTL_PARSER_H
#define __DVB_MOVIESBTL_PARSER_H

#include "moviesbtl_convert.h"
#include "dvb_moviesbtl.h"

#define SBTL_OUTPUT_DATA_BUF_LEN	(1024 * 2)
#define SBTL_INPUT_DATA_BUF_LEN		(1024 * 1)

#define MOVIE_SPTXT_HEADER_SIZE	(0x0A)

#define MULTIPLE_FILE_NUMBER	2
#define MULTIPLE_SBTL_NUMBER	10

// follow are char EXT file supporting selection.
#define MOVIE_SPTXT_TYPE_SRT    (0x00000001)
#define MOVIE_SPTXT_TYPE_SSA    (0x00000002)
#define MOVIE_SPTXT_TYPE_ASS    (0x00000004)
#define MOVIE_SPTXT_TYPE_SUB    (0x00000008)
#define MOVIE_SPTXT_TYPE_SMI    (0x00000010)
#define MOVIE_SPTXT_TYPE_PSB    (0x00000020)

typedef enum
{
	EN_MOVIESBTL_PARSE_STATE_PARSE_FAIL,
	EN_MOVIESBTL_PARSE_STATE_START_FAIL,
	EN_MOVIESBTL_PARSE_STATE_STC_FAIL,
	EN_MOVIESBTL_PARSE_STATE_IN_TIME,
	EN_MOVIESBTL_PARSE_STATE_TIME_OUT,
	EN_MOVIESBTL_PARSE_STATE_ABORT,
	EN_MOVIESBTL_PARSE_STATE_END,
	EN_MOVIESBTL_PARSE_STATE_SAME,
	EN_MOVIESBTL_PARSE_STATE_READY
} EN_MOVIESBTL_PARSE_STATE;

// Subtitle file structure
typedef struct
{  
    u32 			                       u32SbtlDataLen; 
    u32 			                       u32SbtlFileHandle;
} MovieSbtl_Handle;

// It be used for contains the start, end PTS and subtitle string length
typedef struct tagST_MOVIE_SPTXT_HEADER
{
	u32	u32Start;
	u32	u32End;
    u8	u8ID;
	u8	u8Len;
} ST_MOVIE_SPTXT_HEADER, *PST_MOVIE_SPTXT_HEADER;

// Subtitle Buffer Info
typedef struct tagST_MOVIE_SPTXT_BUF
{
	u32	u32Addr;
	u32	u32Len;
}ST_MOVIE_SPTXT_BUF, *PST_MOVIE_SPTXT_BUF;

// Subtitle Parameters Structure by File
typedef struct
{
	MovieSbtl_Handle		*pstMovieSbtlHandle;
	PST_MOVIE_SPTXT_HEADER	pSP_HeaderPt;
	ST_MOVIE_SPTXT_BUF		Char_SP_InputInfo;
	ST_MOVIE_SPTXT_BUF		Char_SP_OutputInfo;
	EN_MOVIESBTL_ENCODE_MODE enCurEncodeMode;
	u32		au32SbtlStartTime[MULTIPLE_SBTL_NUMBER];
	u32		au32SbtlEndTime[MULTIPLE_SBTL_NUMBER];
	u32		u32ParResult_CharSP;
	u32		u32LastReadySbtl;
	u32		u32SubFilter;
	u32		u32BufferIdx;
	u16		au16SbtlString[CHAR_NUMBER];
	u8		u8DisplayIdx;
	u8		u8TimeOutIdx;
	u8		u8SbtlCount;
	bool8	b8NewStringSend;
	bool8	b8FileOpen;
	bool8	b8GetSubtitleStart;
} ST_MOVIESBTL_PARAMETER;

ST_MOVIESBTL_PARAMETER stMovSbtl_Para[MULTIPLE_FILE_NUMBER];

void MOVIE_SPTXT_SetFilter(u32 u32filter, u8 u8FileIndex);
void MOVIE_SPTXT_Initial(void);

void MovieSbtl_Start (u8 u8FileIndex);
/*! \fn void MovieSbtl_Start (u8 u8FileIndex)
\brief Read subtitle file data start.
\param u8FileIndex (Input) set subtitle file index
\return NULL
*/

bool8 MovieSbtl_SetBuffer (bool8 b8Use, u8 u8FileIndex);
/*! \fn void MovieSbtl_SetBuffer (bool8 b8Use, u8 u8FileIndex)
\brief Set subtitle buffer.
\param b8Use (Input) set buffer use(allocate) or not(free)
\param u8FileIndex (Input) subtitle file index
\return TRUE: set OK, FALSE: set Fail!
*/

EN_MOVIESBTL_PARSE_STATE MovieSbtl_CheckPTS(u8 u8FileIndex);
/*! \fn EN_MOVIESBTL_PARSE_STATE MovieSbtl_CheckPTS(u8 u8FileIndex)
\brief Check movie play PTS for subtitle play.
\param u8FileIndex (Input) subtitle file index
\return EN_MOVIESBTL_PARSE_STATE for subtitle display state
*/

void MovieSbtl_GetLangMode(u32 *pu32MaxMode, u32 *pu32CurMode);
/*! \fn void MovieSbtl_GetLangMode(u32 *pu32MaxMode, u32 *pu32CurMode)
\brief get max language number and current language number for SMI format.
\param pu32MaxMode (Output) the point to max language number
\param pu32CurMode (Output) the point to current language number
\return NONE
*/

void MovieSbtl_SetLangMode(u32 u32Mode);
/*! \fn MovieSbtl_SetLangMode(u32 u32Mode)
\brief set language number for SMI format.
\param u32Mode (Input) the language number
\return NONE
*/

void MovieSbtl_SetNextLang (bool8 b8Next);
/*! \fn MovieSbtl_SetNextLang (bool8 b8Next)
\brief set the next or previous language number for SMI format.
\param b8Next (Input) TURE: set the next language number; FALSE: set the previous language number.
\return NONE
*/

void lang_mode_reset(void);
/*! \fn lang_mode_reset(void)
\brief reset the current and max language number for SMI format.
\param NONE
\return NONE
*/

#endif // end if __DVB_MOVIESBTL_PARSER_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -