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

📄 pe_types.h

📁 这是DVD中伺服部分的核心代码
💻 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 + -