#ifndef MID_MHEG5_H #define MID_MHEG5_H //#include //#include //#include #define MHEG5APP_RESET_AVC (1<<0) // reset AV control related. #define MHEG5APP_RESET_SIQ (1<<1) // reset siquery, after reset siquery, the PAT/PMT must be callback to MHEG5 again before launching MHEG5 #define MHEG5APP_RESET_SIQ_PART (1<<2) //reset siquery partially, due to trigger from Voyager. #define MHEG5APP_RESET_IR (1<<3) // reset IR mapping for MHEG5. #define MHEG5APP_STATUS_APP(flag) (flag & 0xFF000000) #define MHEG5APP_STATUS_APP_OFF (0 << 24) // MHEG5 application support off #define MHEG5APP_STATUS_APP_ON (1 << 24) // MHEG5 application support on #define MHEG5APP_STATUS_MID(flag) (flag & 0x00FF0000) #define MHEG5APP_STATUS_MID_OFF (0 << 16) // MHEG5 middleware off #define MHEG5APP_STATUS_MID_ON (1 << 16) // MHEG5 middleware on #define MHEG5APP_STATUS_MID_PAUSE (2 << 16) // MHEG5 middleware pause #define MHEG5APP_STATUS_AVKEEP_ON (16 << 16)//av keep running #define MHEG5APP_STATUS_AVKEEP_OFF (0 << 16)//no specified state #define MHEG5APP_STATUS_DSM(flag) (flag & 0x0000FF00) #define MHEG5APP_STATUS_DSM_OFF (0 << 8) // MHEG5 DSM-CC applicaton off #define MHEG5APP_STATUS_DSM_ON (1 << 8) // MHEG5 DSM-CC application on #define MHEG5APP_STATUS_OSD(flag) (flag & 0x000000FF) #define MHEG5APP_STATUS_OSD_OFF 0 // MHEG5 OSD occupied off #define MHEG5APP_STATUS_OSD_ON 1 // MHEG5 OSD occupied on #define MHEG5APP_STATUS_OSD_UPDATED 2 // MHEG5 OSD occupied on and has updated. #define MHEG5APP_INIT_OK 0 // MHEG5 app init succeeded #define MHEG5APP_INIT_FAILED (-1) // MHEG5 app init failed in MHEG5 stack #define MHEG5APP_INIT_NOBONDING (-2) // MHEG5 app init failed due to IC no bonding #define MHEG5APP_PID_CODEC(pid, codec) (((unsigned int)pid & 0xFFFF) | ((unsigned int)codec << 16)) #define MHEG5APP_PID(pid_codec) (pid_codec&0xFFFF) #define MHEG5APP_CODEC(pid_codec) (pid_codec>>16) #define MHEG5APP_SUBT_HIDE_NOTIFY_ONLY (0) // used for notify the current subt show/hide status to User App #define MHEG5APP_SUBT_HIDE_MAIN_APP (1<<0) // subtitle hide request from User App #define MHEG5APP_SUBT_HIDE_DSMCC_APP (1<<1) // subtitle hide request from DSM-CC App #define MHEG5APP_SUBT_HIDE_VPP_SCALE (1<<2) // subtitle hide request VPP scaling #define MHEG5APP_SUBT_HIDE_VPP_POSITION (1<<3) // subtitle hide request VPP position offset #define MHEG5APP_SUBT_HIDE_VID_PAUSE (1<<4) //subtitle hide request when video pause typedef struct _Mheg5AppDateTime_s { /* Examples show the values that should be set to indicate the 1st February, * 2003 at 45 seconds past 1:23 PM. */ /* Year, including century. * e.g. 2003 */ unsigned int year; /* Month number from 1 to 12, representing January to December * e.g. 2 */ unsigned int month; /* Day of the current month, from 1 to 31 * e.g. 1 */ unsigned int day; /* Hour in 24 hour format, in the range 0 to 23 * e.g. 13 */ unsigned int hour; /* Minute, in the range 0 to 59 * e.g. 23 */ unsigned int minute; /* Second in the range 0 to 59 * e.g. 45 */ unsigned int second; }MHEG5APP_DateTime_t; typedef struct _Mheg5AppTvAspect_s { // declare in drv_display but application should include mid_display.h. unsigned int dis_aspect; // SCALING_WIDE_MODE_16X9, SCALING_WIDE_MODE_4X3, SCALING_WIDE_MODE_PHXPV unsigned int ps_mode; // NONE, LETTERBOX, PANSCAN }MHEG5APP_TvAspect_t; typedef struct _Mheg5AppDvbLocator_s { unsigned short original_network_id; unsigned short transport_stream_id; unsigned short service_id; }MHEG5APP_DvbLocator_t; typedef struct { unsigned int len; unsigned char * data; } MHEG5APP_String_t; typedef struct { MHEG5APP_DvbLocator_t locator; unsigned int start_date_mjd; MHEG5APP_DateTime_t start_time; MHEG5APP_DateTime_t duration; MHEG5APP_String_t event_name; MHEG5APP_String_t event_text; unsigned char event_rating; unsigned char content_classify; BOOLEAN free_CA_mode; } MHEG5APP_EventDetails_t; typedef enum _Mheg5AppCallbackType_e { // callback for notification // notify at the first OSD update after call MHEG5APP_Start(...) // parameter : None. MHEG5APP_NOTIFY_OSD_UPDATE = 0, // notify MHEG5 tuner new index behavior with parameter Normal(real program change) // or Quiet(internal program change of MHEG5 DSM-CC applicaiton) // parameter : FALSE means "normal", this is real program change. // : TURE means "quiet", this is internal program change of MHEG5 DSM-CC application. MHEG5APP_NOTIFY_TUNE_INFO_SWITCH, // notify MHEG5 tuner new index(normal program change) // parameter : pointer to the structure MHEG5APP_DvbLocator_t MHEG5APP_NOTIFY_TUNE_NEW_INDEX, // notify MHEG5 PMT listener parsed // parameter : TRUE means has boot carousel for booting DSM-CC application // : FALSE means no boot carousel for booting DSM-CC application MHEG5APP_NOTIFY_PMT_LISTENED, // to notify audio control command // parameter : 0 for AUDIO_NONE // : 1 for AUDIO_MHEG // : 2 for AUDIO_USER MHEG5APP_NOTIFY_AUDIO_CONTROL, // to notify DSM-CC application started ot stopped // parameter : 0 for stopped // : non-zero for started MHEG5APP_NOTIFY_DSM_APPLICATION, // to notify application MHEG5 specified the scene aspect ratio, // the application should dynamic disable special zoom mode when specified mode is required. // parameter : 0 for scene aspect ratio 16:9 specified. // : 1 for scene asepct ratio 4:3 specified. // : 2 for not specified. MHEG5APP_NOTIF_SCENE_ASPECT_RATIO, // to notify ICS playback has started. // parameter: Pointer to the PE handle MHEG5APP_NOTIF_ICS_PLAY_START, // to nofity ICS playback has stopped. // parameter: None MHEG5APP_NOTIF_ICS_PLAY_STOP, // to notify ICS subtitle visible control // parameter : TRUE means visible. // FALSE means not visible. MHEG5APP_NOTIF_ICS_SUBTITLE_VISIBLE, // to notify ICS PFG (PromptForGuidance) control // parameter: TRUE means to show. // FALSE means to hide MHEG5APP_NOTIFY_ICS_PFG, // to notify APP that Boot Carousel information is changed, // application should restart mheg // parameter: None MHEG5APP_NOTIFY_BOOT_CAROUSEL_CHANGE, // callback for command // to get dvb time // parameter : pointer to the structure MHEG5APP_DateTime_t MHEG5APP_COMMD_GET_TIME = 100, // to get the user setting of TV output aspect ratio // parameter : pointer to the structure MHEG5APP_TvAspect_t MHEG5APP_COMMD_GET_ASPECT, // to get the user setting of prefer audio language // parameter : pointer to a 4 bytes charaters array. MHEG5APP_COMMD_GET_PREFER_AUDIO_LANG, MHEG5APP_NOTIFY_AUDIO_VOLUME_CONTROL, #ifdef CONFIG_CIPLUS_SUPPORT //by changhong@20120927 for ci+1.3 MHEG5APP_NOTIFY_MHEG5_CI_APPLICATION_STOP, MHEG5APP_NOTIFY_MHEG5_CI_APPLICATION_START, MHEG5APP_NOTIFY_SUPPRESS_MHEG_GRAPHICS, #endif //freeviewNZ /PVR //parameter: pointer of the structure MH5PVR_BOOK_PARA_t MHEG5APP_COMMD_PVR_BOOK, MHEG5APP_COMMD_PVR_CANCEL, MHEG5APP_COMMD_PVR_BOOKLIST, MHEG5APP_NOTIFY_SET_PARENT_PROG_HANDLE, #ifdef CONFIG_SUPPORT_MHEG5_AU MHEG5APP_COMMAND_GET_NOW_EVENT, MHEG5APP_COMMAND_GET_NEXT_EVENT, #endif MHEG5APP_CALLBK_TYPE_MAX, }MHEG5APP_CallbkType_e; typedef enum { MHEG5_AUDIO_STARTED, MHEG5_AUDIO_STOPPED, MHEG5_AUDIO_SAMPLE_STOPPED, } MHEG5_AUDIO_PLAYBACK_STATUS; typedef enum { MHEG5APP_KEYPRESS_UP, MHEG5APP_KEYPRESS_DOWN, MHEG5APP_KEYPRESS_LEFT, MHEG5APP_KEYPRESS_RIGHT, MHEG5APP_KEYPRESS_0, MHEG5APP_KEYPRESS_1, MHEG5APP_KEYPRESS_2, MHEG5APP_KEYPRESS_3, MHEG5APP_KEYPRESS_4, MHEG5APP_KEYPRESS_5, MHEG5APP_KEYPRESS_6, MHEG5APP_KEYPRESS_7, MHEG5APP_KEYPRESS_8, MHEG5APP_KEYPRESS_9, MHEG5APP_KEYPRESS_SELECT, MHEG5APP_KEYPRESS_CANCEL, MHEG5APP_KEYPRESS_RED, MHEG5APP_KEYPRESS_GREEN, MHEG5APP_KEYPRESS_YELLOW, MHEG5APP_KEYPRESS_BLUE, MHEG5APP_KEYPRESS_TEXT, MHEG5APP_KEYPRESS_INFO, MHEG5APP_KEYPRESS_EPG, MHEG5APP_KEYPRESS_HELP, MHEG5APP_KEYPRESS_RECORD, MHEG5APP_KEYPRESS_STOP, MHEG5APP_KEYPRESS_PLAY, MHEG5APP_KEYPRESS_PAUSE, MHEG5APP_KEYPRESS_SKIP_FWD, MHEG5APP_KEYPRESS_SKIP_BACK, MHEG5APP_KEYPRESS_FAST_FWD, MHEG5APP_KEYPRESS_REWIND, MHEG5APP_KEYPRESS_PLAY_PAUSE } MHEG5APP_KEYPRESS_e; typedef enum { MHEG5APP_AUDIO_NONE, // No audio should be presented MHEG5APP_AUDIO_MHEG, // Audio service identified by mheg5 engine should be presented. MHEG5APP_AUDIO_USER // User's own selection of audio should be presented. } MHEG5APP_AUDIO_CONTROL_e; typedef enum __E_APPMMI_SMG { APPMMI_SMG_NONE = 2, APPMMI_SMG_TRUE = 1, APPMMI_SMG_FALSE = 0, } E_APPMMI_SMG; // a callback function to notify/get some information to/from application // return nonzero means successful typedef int (*iMh5AppCallback)(MHEG5APP_CallbkType_e eCallbkType, void* pParam); /******************************************************************************* *@begin * NAME: MHEG5APP_Init * * MHEG5 application init function. * * Returns : * MHEG5APP_INIT_OK (0) - Success * MHEG5APP_INIT_FAILED (-1) - MHEG5 app init failed in MHEG5 stack * MHEG5APP_INIT_NOBONDING (-2) - MHEG5 app init failed due to IC no bonding * * Parameter Flow Description * ------------------------------------------------------------------------------ * None. * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ int MHEG5APP_Init(void); /******************************************************************************* *@begin * NAME: MHEG5APP_RegistCallback * * register callback function for application. * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * pfCallback IN callback function * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ void MHEG5APP_RegistCallback(iMh5AppCallback pfCallback); /******************************************************************************* *@begin * NAME: MHEG5APP_Start * * start MHEG5 application. * * Returns : * 1 - start success * 0 - start fail * * Parameter Flow Description * ------------------------------------------------------------------------------ * fReset IN bit value of MHEG5APP_RESET_XXX, can be conbination of * MHEG5APP_RESET_AVC * MHEG5APP_RESET_SIQ * MHEG5APP_RESET_SIQ_PART * MHEG5APP_RESET_IR * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ unsigned char MHEG5APP_Start(int fReset); /******************************************************************************* *@begin * NAME: MHEG5APP_Stop * * stop MHEG5 application. * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * fReset IN bit value of MHEG5APP_RESET_XXX, can be conbination of * MHEG5APP_RESET_AVC * MHEG5APP_RESET_SIQ * MHEG5APP_RESET_SIQ_PART * MHEG5APP_RESET_IR * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ void MHEG5APP_Stop(int fReset); /******************************************************************************* *@begin * NAME: MHEG5APP_IrKeyPress * * pass the ir key to mheg5 engine. * * Returns : * 1 - key is accept * 0 - key is not accept * * Parameter Flow Description * ------------------------------------------------------------------------------ * rx IN MHEG5 key code * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ unsigned char MHEG5APP_IrKeyPress(MHEG5APP_KEYPRESS_e rx); /******************************************************************************* *@begin * NAME: MHEG5APP_GetMh5Status * * get MHEG5 application status. * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * pfStatus OUT bit value of conbination of follows * MHEG5APP_STATUS_APP_OFF * MHEG5APP_STATUS_APP_ON * MHEG5APP_STATUS_MID_OFF * MHEG5APP_STATUS_MID_ON * MHEG5APP_STATUS_MID_PAUSE * MHEG5APP_STATUS_AVKEEP_ON * MHEG5APP_STATUS_AVKEEP_OFF * MHEG5APP_STATUS_DSM_OFF * MHEG5APP_STATUS_DSM_ON * MHEG5APP_STATUS_OSD_OFF * MHEG5APP_STATUS_OSD_ON * MHEG5APP_STATUS_OSD_UPDATED * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ void MHEG5APP_GetMh5Status(int *pfStatus); /******************************************************************************* *@begin * NAME: MHEG5APP_NotifyAVPIDChange * * notify MHEG5 video/audio pid change. * * Returns : * 0 - not handled * 1 - handled * * Parameter Flow Description * ------------------------------------------------------------------------------ * pVidPidCodec IN * pAudPidCodec IN * pusPCRPID IN * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ unsigned char MHEG5APP_NotifyAVPIDChange(unsigned int *pVidPidCodec, unsigned int *pAudPidCodec, unsigned short *pusPCRPID); /******************************************************************************* *@begin * NAME: MHEG5APP_AddSubtHideStatus * * add subtitle hide status. * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * nHideStatus IN bit conbination of follows * MHEG5APP_SUBT_HIDE_NOTIFY_ONLY * MHEG5APP_SUBT_HIDE_MAIN_APP * MHEG5APP_SUBT_HIDE_DSMCC_APP * MHEG5APP_SUBT_HIDE_VPP_SCALE * MHEG5APP_SUBT_HIDE_VPP_POSITION * MHEG5APP_SUBT_HIDE_VID_PAUSE * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ void MHEG5APP_AddSubtHideStatus(unsigned int nHideStatus); /******************************************************************************* *@begin * NAME: MHEG5APP_RemoveSubtHideStatus * * remove subtitle hide status. * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * nHideStatus IN bit conbination of follows * MHEG5APP_SUBT_HIDE_NOTIFY_ONLY * MHEG5APP_SUBT_HIDE_MAIN_APP * MHEG5APP_SUBT_HIDE_DSMCC_APP * MHEG5APP_SUBT_HIDE_VPP_SCALE * MHEG5APP_SUBT_HIDE_VPP_POSITION * MHEG5APP_SUBT_HIDE_VID_PAUSE * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ void MHEG5APP_RemoveSubtHideStatus(unsigned int nHideStatus); BOOLEAN MHEG5APP_GetSubtHideStatus(void); /******************************************************************************* *@begin * NAME: MHEG5APP_GetMh5VideoStatus * * * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * bActive OUT status of video of mheg5 * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * None. * *@end *******************************************************************************/ unsigned char MHEG5APP_GetMh5VideoStatus(BOOLEAN *bActive); /******************************************************************************* *@begin * NAME: MHEG5APP_GetAudioStatus * * * Returns : * None * * Parameter Flow Description * ------------------------------------------------------------------------------ * None. * * Externals Flow Usage * ------------------------------------------------------------------------------ * peStatus. * * Additional information: * None. * *@end *******************************************************************************/ BOOLEAN MHEG5APP_GetAudioStatus(MHEG5APP_AUDIO_CONTROL_e *peStatus); /******************************************************************************* *@begin * NAME: MHEG5APP_NotifyAudioStatus * * Notify mheg5 app that current audio status * * Returns : none * * Parameter Flow Description * ------------------------------------------------------------------------------ * nStatus IN MHEG5_AUDIO_STARTED if audio is started * MHEG5_AUDIO_STOPPED if audio is stopped * * Additional information: * *@end *******************************************************************************/ void MHEG5APP_NotifyAudioStatus(MHEG5_AUDIO_PLAYBACK_STATUS nStatus); /******************************************************************************* *@begin * NAME: MHEG5APP_SetOSDFreeze * * Freeze OSD * * Returns : None. * * Parameter Flow Description * ------------------------------------------------------------------------------ * bIsFreeze IN TRUE if freeze, otherwise FALSE * * Additional information: * *@end *******************************************************************************/ void MHEG5APP_SetOSDFreeze(BOOLEAN bIsFreeze); /******************************************************************************* *@begin * NAME: MHEG5APP_GetOSDFreeze * * Get OSD Freeze status * * Returns : TRUE if freeze, otherwise FALSE * * Parameter Flow Description * ------------------------------------------------------------------------------ * None. * * Additional information: * *@end *******************************************************************************/ BOOLEAN MHEG5APP_GetOSDFreeze(void); #if 0 /******************************************************************************* *@begin * NAME: MHEG5APP_SetOSDSize * * Set size of MHEG5 OSD * * Returns : void * * Parameter Flow Description * ------------------------------------------------------------------------------ * RegWidth IN width * RegHeight IN height * * Additional information: * *@end *******************************************************************************/ void MHEG5APP_SetOSDSize(unsigned short RegWidth, unsigned short RegHeight); #endif /******************************************************************************* *@begin * NAME: MHEG5APP_GetOSDSize * * Get size of MHEG5 OSD * * Returns : void * * Parameter Flow Description * ------------------------------------------------------------------------------ * pRegWidth OUT pointer of width * pRegHeight OUT pointer of height * * Additional information: * *@end *******************************************************************************/ void MHEG5APP_GetOSDSize(unsigned short *pRegWidth, unsigned short *pRegHeight); /******************************************************************************* *@begin * NAME: MHEG5APP_NotifyVideoPrefChanged * Notifies the MHEG5 component when the video preferences change * (i.e. change the decoder format conversation). * * Note that this event is not generated when the broadcast video changes * aspect ratio, nor when a change affects only display format conversion. * * This is a non-blocking function. * * Returns : none * * Parameter Flow Description * ------------------------------------------------------------------------------ * None. * * Externals Flow Usage * ------------------------------------------------------------------------------ * None. * * Additional information: * * This notification is used to generate the VideoPrefChanged EngineEvent. See * section 3.8 of reference [1]. * *@end *******************************************************************************/ void MHEG5APP_NotifyVideoPrefChanged(void); /***************************************************************************** * Function Name: MID_DTVMHEG_GetAppMMISMG * Description: Suppress MHEG graphics. * Added for test 4.2 in CI+ 1.3 extension test suite. * Parameters: * Returns: SMG value from AppMMI ****************************************************************************/ E_APPMMI_SMG MID_DTVMHEG_GetAppMMISMG(void); /***************************************************************************** * Function Name: MHEG5OSD_DisplayEnable * Description: Turn on or off the MHEG OSD. * Added for test 4.2 in CI+ 1.3 extension test suite. * Parameters: Enable to turn it on, otherwise Turn it off. * Returns: ****************************************************************************/ void MHEG5OSD_DisplayEnable(BOOLEAN enable); void MHEG5APP_PromptForGuidance(BOOLEAN show); void MHEG5_ICS_Init(void); void MHEG5_ICS_Uninit(void); BOOLEAN MHEG5_ICS_IsRunning(void); void MHEG5_ICS_SetPrefSubtLang(char *primaryLang, char *secondaryLang); void MHEG5_ICS_SetPrefAudioLang(char *primaryLang, char *secondaryLang); void MHEG5_ICS_SetSubtitle(BOOLEAN isVisible); void MHEG5_ICS_SetAudioDescPref(BOOLEAN pref); void MHEG5_ICS_NotifyGuidanceResponse(BOOLEAN result); BOOLEAN MHEG5_ICS_IsGuidanceAwaitingResponse(void); char* MHEG5_ICS_GetPFGRestrictionMsg(void); void MHEG5_ICS_SetPinStatus(BOOLEAN enable); void MHEG5_SetAudioDescPref(BOOLEAN pref); void MHEG5_SetSubtitlePref(BOOLEAN pref); BOOLEAN MHEG5APP_IsFullscreenVideo(void); #endif //MID_MHEG5_H