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

📄 psl_types.h

📁 这是DVD中伺服部分的核心代码
💻 H
字号:
/*****************************************************************************
******************************************************************************
**                                                                          **
**  Copyright (c) 2005 Videon Central, Inc.                                 **
**  All rights reserved.                                                    **
**                                                                          **
**  The computer program contained herein contains proprietary information  **
**  which is the property of Videon Central, Inc.  The program may be used  **
**  and/or copied only with the written permission of Videon Central, Inc.  **
**  or in accordance with the terms and conditions stipulated in the        **
**  agreement/contract under which the programs have been supplied.         **
**                                                                          **
******************************************************************************
*****************************************************************************/
/**
 * @file psl_types.h
 *
 * $Revision: 1.6 $ 
 *
 * Private data types shared by all modules of the PSL.
 *
 */

#ifndef PSL_TYPES_H
#define PSL_TYPES_H

#ifdef __cplusplus
extern "C" {
#endif

#include "vdvd_types.h"
#include "deal_general.h"
#include "osapi.h"

/* Language names */
static const char LANGUAGE_CONST[140][18] =
{
    "English",      "French",   "Spanish",
    "Italian",  "German",       "Dutch",    "Portuguese",
    "Chinese",  "Japanese",     "Thai",     "Swedish",
    "No",       "Danish",       "Finnish",  "Hebrew",
    "Others",   "Afar",         "Ab",       "Afrikaans",
    "Amharic",  "Arabic",       "Assamese", "Aymara",
    "Az",       "Bashkir",      "Be",       "Bulgarian",
    "Bihari",   "Bislama",      "Bengali",  "Tibetan",
    "Breton",   "Catalan",      "Corsican", "Czech",
    "Welsh",    "Bhutani",      "Greek",    "Esperanto",
    "Estonian", "Basque",       "Persian",  "Fiji",
    "Faroese",  "Frisian",      "Irish",    "Gd",
    "Galician", "Guarani",      "Gujarati", "Hausa",
    "Hindi",    "Croatian",     "Hungarian","Armenian",
    "Ia",       "Ie",           "Inupiak",  "In",
    "Icelandic","Yiddish",      "Javanese", "Georgian",
    "Kazakh",   "Kl",           "Km",       "Kannada",
    "Korean",   "Kashmiri",     "Kurdish",  "Kirghiz",
    "Latin",    "Lingala",      "Laothian", "Lt",
    "Latvian",  "Malagasy",     "Maori",    "Mk",
    "Ml",       "Mn",           "Mo",       "Marathi",
    "Malay",    "Maltese",      "Burmese",  "Nauru",
    "Nepali",   "Occitan",      "Oromo",    "Oriya",
    "Punjabi",  "Polish",       "Pashto",   "Portuguese",
    "Quechua",  "Rm",           "Kirundi",  "Romanian",
    "Russian",  "Rw",           "Sanskrit", "Sindhi",
    "Sangro",   "Sh",           "Si",       "Slovak",
    "Slovenian","Samoan",       "Shona",    "Somali",
    "Albanian", "Serbian",      "Siswati",  "Sesotho",
    "Su",       "Swahili",      "Tamil",    "Telugu",
    "Tajik",    "Tigrinya",     "Turkmen",  "Tagalog",
    "Setswana", "Tonga",        "Turkish",  "Tsonga",
    "Tatar",    "Twi",          "Ukrainian","Urdu",
    "Uzbek",    "Vi",           "Volapuk",  "Wolof",
    "Xhosa",    "Yoruba",       "Zulu"
};
   
/* User generated commands */
typedef enum
{
    PSL_USER_CMD_POWER = 0,
    PSL_USER_CMD_PLAY,
    PSL_USER_CMD_STOP,
    PSL_USER_CMD_PAUSE_ON,
    PSL_USER_CMD_PAUSE_OFF,
    PSL_USER_CMD_EJECT,
    PSL_USER_CMD_DIGIT,
    PSL_USER_CMD_UP,
    PSL_USER_CMD_DOWN,
    PSL_USER_CMD_LEFT,
    PSL_USER_CMD_RIGHT,
    PSL_USER_CMD_SELECT,
    PSL_USER_CMD_SKIP_NEXT,
    PSL_USER_CMD_SKIP_PREV,
    PSL_USER_CMD_FWD_PLAY,
    PSL_USER_CMD_BWD_PLAY,
    PSL_USER_CMD_STEP_FWD,
    PSL_USER_CMD_VOL_UP,
    PSL_USER_CMD_VOL_DOWN,
    PSL_USER_CMD_VOL_MUTE,
    PSL_USER_CMD_REPEAT,
    PSL_USER_CMD_REPEAT_AB,
    PSL_USER_CMD_ANGLE,
    PSL_USER_CMD_AUDIO,
    PSL_USER_CMD_MENU,
    PSL_USER_CMD_TITLE,
    PSL_USER_CMD_CHAPTER_SEARCH,
    PSL_USER_CMD_TITLE_SEARCH,
    PSL_USER_CMD_TIME_SEARCH,
    PSL_USER_CMD_SUBTITLE,
    PSL_USER_CMD_PARENTAL_PLAY,
    PSL_USER_CMD_STILL_OFF
} PSL_USER_CMD;

/* Possible interfaces */
typedef enum
{
    PSL_INTERFACE_NONE         = 0x00,      /* No interface */
    PSL_INTERFACE_TIMEDISPLAY  = 0x01,      /* Time Display */
    PSL_INTERFACE_STATUS       = 0x02,      /* Status menu */
    PSL_INTERFACE_SETUP        = 0x04,      /* Setup Menu */
    PSL_INTERFACE_PARENTAL     = 0x08,      /* Parental prohibit */
    PSL_INTERFACE_CDDA         = 0x10,      /* CDDA Display */
    PSL_INTERFACE_ICON         = 0x20,      /* Icon */
    PSL_INTERFACE_INFO         = 0x40       /* Info message */
} PSL_INTERFACE;

/* Button types */
typedef enum
{
    PSL_BUTTON_TAB,
    PSL_BUTTON_LABEL,
    PSL_BUTTON_SETTING,
    PSL_BUTTON_OPTION,
    PSL_BUTTON_PWD,
    PSL_BUTTON_EXIT
} PSL_BUTTON_TYPE;
 
/* Time display modes */
typedef enum
{ 
    PSL_TIME_CHAPTER = 0,                   /* Time into chapter */
    PSL_TIME_CHAPTER_REMAIN,                /* Time remaining in chapter */
    PSL_TIME_TITLE,                         /* Time into title */
    PSL_TIME_TITLE_REMAIN                   /* Time remaining in title */
} PSL_TIME_MODE;

/* Status modes */
typedef enum
{
    PSL_STATUS_MODE_NONE = 0,
    PSL_STATUS_MODE_SUBTITLE,
    PSL_STATUS_MODE_AUDIO,
    PSL_STATUS_MODE_ANGLE,
    PSL_STATUS_MODE_REPEAT,
    PSL_STATUS_MODE_SEARCH_TITLE,
    PSL_STATUS_MODE_SEARCH_CHAPTER, 
    PSL_STATUS_MODE_SEARCH_TIME_HOUR,
    PSL_STATUS_MODE_SEARCH_TIME_MIN,
    PSL_STATUS_MODE_SEARCH_TIME_SEC,
    PSL_STATUS_MODE_CHAPTER_SKIP
} PSL_STATUS_MODE;

/* Icon */
typedef struct tagPSL_ICON
{
    ULONG   ulX;
    ULONG   ulY;
    PVOID   pvImage;
} PSL_ICON;

/* Icon data */
typedef struct tagPSL_ICON_DATA
{
    PSL_ICON        *pActiveIcon;
    DEAL_HANDLE     hDeal;
    OS_TIMER_ID     Timer;
} PSL_ICON_DATA;

/* OSD Button */
typedef struct tagPSL_BUTTON
{
    ULONG               ulX;              /* X-coord for button */
    ULONG               ulY;              /* Y-coord for button */
    BOOLEAN             fSelected;        /* Set when button is selected */
    PSL_BUTTON_TYPE     tButtonType;      /* Button type */
    PVOID               pDataFunction;    /* Function pointer that gets fired when button is pressed */
    ULONG               ulInfo;           /* Parameter passed to function when button is pressed */
    PVOID               pvButtonDrawInfo; /* Information used to draw the button */
    USHORT              usNumSubButtons;  /* Number of sub-buttons for this button */
    tagPSL_BUTTON       *pSubButton;      /* List of sub-buttons */
    tagPSL_BUTTON       *pLeftButton;     /* Pointer to button to jump to when left is pressed */
    tagPSL_BUTTON       *pRightButton;    /* Pointer to button to jump to when right is pressed */
    tagPSL_BUTTON       *pAboveButton;    /* Pointer to button to jump to when up is pressed */
    tagPSL_BUTTON       *pBelowButton;    /* Pointer to button to jump to when down is pressed */
    tagPSL_BUTTON       *pSelectButton;   /* Pointer to button to jump to when select is pressed */
} PSL_BUTTON;

/* Status information */
typedef struct tagPSL_STATUS_INFO
{
    USHORT              usTitle;                    /* title number */
    USHORT              usChapter;                  /* chapter number */
    ULONG               ulTime;                     /* time in sec */
    USHORT              usTimeHour;                 /* hour setting for time search */
    USHORT              usTimeMin;                  /* min setting for time search */
    USHORT              usTimeSec;                  /* sec setting for time search */
    USHORT              usPlayStatus;               /* play status */
    USHORT              tTimeMode;                  /* Mode to display time in */
    USHORT              usSubtitleLang;             /* subtitle language code */
    USHORT              usSubtitleStream;           /* subtitle stream */
    USHORT              usAvailableSubtitleStreams; /* number of subtitle streams available */
    USHORT              usAngleNumber;              /* angle number */
    USHORT              usAvailableAngles;          /* number of angles available */
    USHORT              usAudioStream;              /* audio stream number */
    USHORT              usAvailableAudioStreams;    /* number of audio streams available */
} PSL_STATUS_INFO;

/* Status display */
typedef struct tagPSL_STATUS_DISPLAY
{
    USHORT              usNumberOfDisplays; /* Number of displays in the menu */
    USHORT              usCurrentDisplay;   /* Current display of status menu */
    USHORT              *pusNumButtons;     /* Number of buttons in each display */
    PSL_BUTTON          **pButton;          /* Pointer to table of buttons used for status menu */
    OS_TIMER_ID         Timer;              /* Timer to update the time continuously */
    PSL_STATUS_INFO     StatusInfo;         /* Available status information */
    DEAL_HANDLE         hDeal;              /* Handle to DEAL that the status menu uses */
} PSL_STATUS_DISPLAY;

/* Status Menu */
typedef struct tagPSL_STATUS_MENU
{
    USHORT              usNumberOfModes;    /* Number of status modes in the menu */
    PSL_STATUS_INFO     StatusInfo;         /* Status information */
    PSL_STATUS_MODE     tCurrentMode;       /* Current status mode */
    USHORT              *pusNumButtons;     /* Number of buttons in each mode */
    PSL_BUTTON          **pButton;          /* Pointer to table of buttons used for status menu */
    OS_TIMER_ID         Timer;              /* Timer for menu to timeout */
    DEAL_HANDLE         hDeal;              /* Handle to DEAL that the status menu uses */
} PSL_STATUS_MENU;

/* Setup Menu */
typedef struct tagPSL_SETUP_MENU
{
    USHORT          usNumberOfTabs;     /* Number of tabs in the menu */
    PSL_BUTTON      *pTab;              /* List of menu tabs */
    PSL_BUTTON      *pActiveTab;        /* Pointer to active tab in the menu */
    PSL_BUTTON      *pActiveButton;     /* Pointer to active button in the menu */
    DEAL_HANDLE     hDeal;              /* Handle to DEAL that the menu uses */
} PSL_SETUP_MENU;

/* Parental Control Data */
typedef struct tagPSL_PARENTAL_CONTROL
{
    USHORT      usMode;
    PSL_BUTTON  Button[2];
} PSL_PARENTAL_CONTROL;

/**
 * PSL Handle, shared by all modules of the PSL
 */
typedef struct tagPSL_HANDLE
{
    VDVD_USER_CONFIG        user_config;
    ULONG                   ulActiveInterface;
    DEAL_HANDLE             hDeal;
    OS_TIMER_ID             Timer;
    PSL_SETUP_MENU          *pSetupMenu;    
    PSL_STATUS_MENU         *pStatusMenu;    
    PSL_STATUS_DISPLAY      *pStatusDisplay;
    PSL_STATUS_DISPLAY      *pCddaGui; 
    PSL_ICON_DATA           *pIconData;
    PSL_PARENTAL_CONTROL    *pParentalControl;
    BOOLEAN                 powerState;
    OS_SEM_ID               sem_synch;
} PSL_HANDLE;

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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