📄 pe_types.h
字号:
/*****************************************************************************
******************************************************************************
** **
** Copyright (c) 2006 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 pe_types.h
*
* $Revision: 1.14 $
*
* Private data types used by the PE.
*
* @remark
* This should ONLY be included by the pe modules.
*
*/
#ifndef PE_TYPES_H
#define PE_TYPES_H
#include "pe_consumer.h"
#include "cDemux.h"
#include "spu_app.h"
#if BDROM_ENABLE
#include "pg_api.h"
#include "ig_api.h"
#include "textst_api.h"
#else
#include "directfb.h"
#endif
#include "decoder_types.h"
#define PE_QUEUE_DEPTH 8 /* the number of PE commands that can be queued */
#define PE_NUM_SEMS (PE_QUEUE_DEPTH + 1) /* one more just to be safe */
typedef struct tagICONFIGUREHANDLE
{
PE_HANDLE PEManager;
PE_ICONFIGURE_ANALOG_AUDIO AnalogAudio;
PE_ICONFIGURE_DIGITAL_AUDIO DigitalAudio;
PE_ICONFIGURE_VIDEO_FORMAT VideoFormat;
PE_ICONFIGURE_VIDEO_MUTE VideoMute;
PE_ICONFIGURE_ASPECT_RATIO AspectRatio;
USHORT Macrovision;
USHORT CGMS;
/* add platform specific params below */
Decoder* primaryDecoder;
Decoder* secondaryDecoder;
} ICONFIGUREHANDLE;
typedef struct tagISPLASHSCREENHANDLE
{
PE_HANDLE PEManager; /**< local copy of PE handle */
PE_ISPLASHSCREEN_ID SplashScreenId; /**< currently displayed splash screen */
/* add platform specific params below */
IDirectFBImageProvider *pDFBImageProvider;
} ISPLASHSCREENHANDLE;
typedef enum tagISTREAMCTRL_MESSAGE
{
PE_EXIT = 0,
PE_CONFIG,
PE_RESET,
PE_SET_GRAPHICS_MODE,
PE_ATTACH_INPUT_STREAM,
PE_DEMUX_HDDVD_VIDEO_PS,
PE_DEMUX_VIDEO_PS,
PE_DEMUX_VIDEO_TS,
PE_DEMUX_SECONDARY_VIDEO_PS,
PE_DEMUX_AUDIO_PS,
PE_DEMUX_AUDIO_TS,
PE_DEMUX_SECONDARY_AUDIO_PS,
PE_DEMUX_SUBSTITUTE_AUDIO_PS,
PE_DEMUX_SECONDARY_AUDIO_TS,
PE_DEMUX_SUBPIC_PS,
PE_DEMUX_PG_TS,
PE_DEMUX_IG_TS,
PE_DEMUX_SUBTEXT_TS,
PE_REMOVE_VIDEO,
PE_REMOVE_AUDIO,
PE_REMOVE_SUBPIC,
PE_REMOVE_PG,
PE_REMOVE_IG,
PE_REMOVE_SUBTEXT,
PE_REMOVE_SECONDARY_VIDEO,
PE_REMOVE_SECONDARY_AUDIO,
PE_REMOVE_SUBSTITUTE_AUDIO,
PE_PREFILL,
PE_STOP_STREAM,
PE_RUN,
PE_STOP,
PE_PAUSE,
PE_STILL,
PE_RESUME,
PE_FLUSH,
PE_REQUEST_DECODE_DONE,
PE_STEP,
PE_GET_STATE,
PE_GET_RATE,
PE_SET_RATE,
PE_SEND_DVD_BUTTON_CMD,
PE_SEND_HDDVD_BUTTON_CMD,
PE_SEND_IG_CMD,
PE_SET_CLOSED_CAPTION,
PE_GET_CLOSED_CAPTION,
PE_POPUP,
PE_SELECT_PAGE,
PE_SET_VID_SRC_RES,
PE_SET_VID_SRC_FRAMERATE,
PE_SET_VID_SRC_ASPECT_RATIO,
NUM_PE_COMMANDS
} ISTREAMCTRL_MESSAGE;
typedef struct tagPE_MESSAGE
{
ULONG ulMsgID;
ULONG ulSemID;
ULONG ulRetVal;
ULONG ulData0;
ULONG ulData1;
ULONG ulData2;
ULONG ulData3;
ULONG ulData4;
} PE_MESSAGE;
typedef struct tagPE_DECODERS
{
SPU_HANDLE spu;
#if BDROM_ENABLE
PG_HANDLE pg_dec;
IG_HANDLE ig_dec;
TEXTST_HANDLE st_dec;
#endif
} PE_DECODERS;
#define MAX_EVENT_CLIENTS 4
typedef struct tagISTREAMCTRLHANDLE
{
PE_HANDLE PEManager;
PE_ISTREAMCTRL_STATE SystemState;
PE_ISTREAMCTRL_STREAM_TYPE StreamType;
PE_ISTREAMCTRL_VIDEO_TYPE VideoType;
PE_ISTREAMCTRL_AUDIO_TYPE AudioType;
PE_ISTREAMCTRL_AUDIO_SAMPLING_FREQUENCY AudioSamplingFrequency;
PE_ISTREAMCTRL_AUDIO_CHANNELS AudioChannels;
PE_ISTEAMCTRL_GRAPHICS_MODE GraphicsMode;
OS_SEM_ID sendMsgSem;
int cmdTask;
int evntTask;
cStream* pMsgQ;
PVOID pMsgQPool;
cStream* pCallbackMsgQ;
PVOID pCallbackMsgQPool;
OS_SEM_ID msgQSem[PE_NUM_SEMS];
OS_SEM_ID semCountingVsync;
BOOLEAN fKillTasks;
ULONG VideoWidth;
ULONG VideoHeight;
cPEConsumer *pPEConsumer[MAX_PE_INPUTS];
/* add platform specific params below this line */
PE_DECODERS m_decoders;
IDirectFBDisplayLayer *ig_dfb_disp_layer;
IDirectFBDisplayLayer *pg_dfb_disp_layer;
} ISTREAMCTRLHANDLE;
typedef struct tagPEHANDLE
{
ICONFIGUREHANDLE* iConfigure;
ISTREAMCTRLHANDLE* iStreamCtrl;
ISPLASHSCREENHANDLE* iSplashScreen;
/* PE Event Varibles */
OS_SEM_ID eventSem;
PVOID callback;
PVOID context;
ULONG events;
/* add platform specific params below */
/* directFB display layers */
DfbExtHandle dfb_pg_graphics_layer;
DfbExtHandle dfb_ig_graphics_layer;
DfbExtHandle dfb_background_layer;
} PEHANDLE;
/* private functions only to be used by pe modules internally */
PE_STATUS peSendEvent(PE_HANDLE hPE, PE_EVENT_CODE event, PVOID pEventInfo);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -