?? em86xx.h.svn-base
字號:
/***************************************** Copyright 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************//** @file em86xx.h @brief interface for em86xx decoder board @author Laurent Crinon @date 2004-01-07*/#ifndef __RMEM86XXDECODER_H__#define __RMEM86XXDECODER_H__#include "rua/include/rua.h"#include "rua/include/rua_property.h"//class audioStreamConverter;struct DH_control;typedef enum{ MPEG2_PROFILE = 548, MPEG2_TRANSPORT_PROFILE, MP4_PROFILE, DIVX3_PROFILE, WMV_PROFILE,}typeVideoProfile;class RMem86xxDecoder : public RMdecoderIface{ public: RMem86xxDecoder(typeCuracaoContext *context, RMbool useHDProfile); virtual ~RMem86xxDecoder(); //#ifndef WITH_MONO// virtual RMstatus Open(typeMediaPlayer playerType, RMascii *url, RMcallback callback, void *userData);//#else// virtual RMstatus Open(typeMediaPlayer playerType, RMascii *not_used_1, void *not_used_2, void *not_used_3);//#endif//// virtual RMstatus Close(); virtual RMstatus SetDecodingVideoStream(RMuint16 StreamID); virtual RMstatus SetDecodingAudioStream(RMuint8 StreamID, RMuint8 SubStreamID); virtual RMstatus SetDecodingSubpictureStream(RMuint8 StreamID, RMuint8 SubStreamID); virtual RMstatus SetAudioParameter(typeCuracaoAudioParameters parameters, RMint8 astn); virtual RMstatus SetSubpicturePalette(RMuint8 sppal[16*4]); virtual RMstatus SubPictureHilight (RMuint16 leftb, RMuint16 topb, RMuint16 rightb, RMuint16 bottomb, RMuint32 wColor, RMuint32 wContrast); virtual RMstatus SubPictureOn (RMbool On); virtual RMstatus HilightOn (RMbool On); virtual RMstatus VideoMode (RMuint32 PTS, RMdvdVideoMode videoMode, RMbool bForce = FALSE); virtual RMstatus Flush(); virtual RMstatus WaitForEOS(RMbool audio, RMbool video, RMuint32 timeout = 30000000);// RMcssDecoder static RMstatus GetChallengeEm86xx (RMuint8 challenge[10], void *userData); static RMstatus RecordChallengeResponseEm86xx (RMuint8 response[5], void *userData); static RMstatus SendChallengeEm86xx (RMuint8 challenge[10], void *userData); static RMstatus GetChallengeResponseEm86xx (RMuint8 challenge_response[5], void *userData); static RMstatus SendDiscKeyEm86xx (RMuint8 discKey[2048], void *userData); static RMstatus SendTitleKeyEm86xx (RMuint8 titleKey[5], void *userData); static RMstatus DecryptEm86xx (RMuint8 *buffer, RMuint32 size, void *userData);// virtual CSSDecoderCallBackTableType *GetCssDecoderTable(); virtual RMstatus Pause(); virtual RMstatus Forward(RMuint32 speed, RMbool isAudioOnly); virtual RMstatus Backward(RMuint32 speed, RMbool isAudioOnly); virtual RMstatus Stop(); virtual RMstatus Play(); virtual void SendData(RMuint8 *pStart, RMuint64 PTS, RMbool isPTSAvailable, RMuint64 SCR, RMint32 FirstAccessUnitPointer, RMuint32 sampleSize, RMuint32 offset, RMSampleType type, RMbool disablePTS, RMbool setScrOnce, RMbool setVobuSPtmOnce, RMuint64 VOBU_S_PTM, RMbool copy); virtual RMuint8 *GetBuffer(RMSampleType type); virtual void ReleaseBuffer(RMSampleType type, RMuint8 *pBuf); virtual void GetPoolInfo(RMSampleType type, RMuint32 *bufferSize, RMuint32 *nbBuffer); virtual RMstatus GetSTC(RMuint64* stc); virtual RMstatus SetSTCOffset(RMuint64 offset); virtual RMstatus GetTitleKey(RMuint8 titleKey[5]); virtual void *GetRUAInstance(); virtual void *GetDCCInstance();public: virtual void SetDCCInfo(void *p); virtual void ResetDCCInfo(); virtual RMstatus SetVolume(RMuint32 value); virtual RMstatus SetBrightness(RMint8 value); virtual RMstatus SetContrast(RMuint8 value); virtual RMstatus SetSaturation(RMuint8 value); virtual RMstatus SetAudioScmsBit(typeCuracaoAudioParameters parameters); RMstatus UpdateHDCP(RMbool enable_hdcp, RMbool bforce); RMstatus UpdateEDIDInformation(struct CEA861BDataBlockCollection pDBC[], RMuint32 nb_EDID_extensions); RMstatus UpdateHDMIAudioFormat(); RMstatus SendHDMIInfoFrame(void); RMstatus UpdateHDMIVideoFormat(enum EMhwlibTVStandard TVStandard); RMstatus UpdateHDMIVideoPixelClock(enum EMhwlibTVStandard standard); virtual RMstatus UpdateOutputProtection(enum RMProtectType protect_type, RMuint32 context_value); virtual RMstatus UpdateOutputs(RMbool autoSwitch = TRUE); // virtual RMstatus SetHDComponentOut(RMuint32 standard); RMstatus UpdateDRMOPL(RMuint32 context_value); virtual RMstatus SetTVOut(RMuint32 standard, enum DCCVideoConnector connector, enum EMhwlibColorSpace color_space, RMbool bForceOutput = TRUE); virtual RMstatus GetTVOut(RMuint32 *pStandard, enum DCCVideoConnector *pConnector, enum EMhwlibColorSpace *pColorSpace); // virtual RMstatus SetTVOut(RMuint32 standard, ); // virtual RMstatus SetDVIHDMIOut(RMuint32 standard); virtual RMstatus SetDVIHDMIAutoEDID(RMbool auto_edid); // virtual RMstatus SetComponentOutFormat(enum EMhwlibComponentMode component, enum EMhwlibColorSpace color_space); virtual RMbool GetHDMIConnected(); virtual RMbool GetHDCPState(); virtual RMstatus GetTimeDisplayedFrame(RMSampleType type, RMuint64 *time); virtual RMstatus SetMacrovisionLevel(RMuint32 level); RMstatus get_stb(RMuint32 timer_number, RMuint64 *stb); RMuint32 GetFrameRate(); virtual RMstatus Step(); virtual RMstatus ResumeFromStep(); virtual RMstatus SetDualMode(enum OutputDualMode_type mode); virtual RMstatus GetDualMode(enum OutputDualMode_type *mode); virtual RMstatus SetSpdifMode(enum OutputSpdif_type mode); virtual RMstatus GetSpdifMode(enum OutputSpdif_type *mode); virtual RMstatus SetTVType(RMTvTypes tvType, EMhwlibScalingMode scalingmode); virtual RMstatus ScaleDisplay(RMuint32 scaler, RMuint16 x, RMuint16 y, RMuint16 width, RMuint16 height); virtual RMstatus GetAudioOutputChannels(RMuint8 *channels); virtual RMstatus SetAudioOutputChannels(RMuint8 channels); RMstatus SetDemuxAuxiliaryData(void *pValue, RMuint32 ValueSize); RMstatus GetXferFifoInfo(struct XferFIFOInfo_type *pInfo); RMstatus EnableSPUSurface(RMbool enable); RMstatus DisableVideoConnector(enum DCCVideoConnector *pConnector); // em86xx only RMstatus ResetDCCLeaveDisplay(); RMstatus ReenableAudio(); #ifdef WITH_MONO RMstatus Reopen(typeMediaPlayer playerType, RMbool reopen_video, RMbool reopen_audio, RMbool reopen_stc = FALSE, RMbool reopen_cc = FALSE);#endif private: void CleanallAndExit (RMbool = FALSE);// RMstatus OpenDecoder(typeVideoProfile profile,// RMbool hdtv,// RMbool dvd, // RMbool vcd,// RMbool useHwDemux,// RMuint32 video_bts_fifo_size,// RMuint32 video_xfer_fifo_buffer_count,// RMuint32 audio_bts_fifo_size,// RMuint32 audio_xfer_fifo_buffer_count,// RMbool launch_decoders);// RMstatus CloseDecoder(); RMbool DecoderStatePlaying(RMuint32 moduleId); RMstatus PlayEx(DCCVideoPlayCommand cmd); RMstatus Stop(RMbool blackFrame); RMstatus EnableScart(RMbool enable, enum DCCVideoConnector ScartConnector = DCCVideoConnector_SCART); friend void* SubtThreadEntry(void *p); friend void* PlaybackThreadEntry(void* p); private: RMuint32 m_boardNumber; RMbool m_isOSDEnabled; struct RUA *m_pInstance; // DCC struct DCC *m_pDCC; struct DCCVideoSource *m_pVideoSource; struct DCCAudioSource *m_pAudioSource; struct DCCDemuxSource *m_pDemuxSource;#ifndef NO_STCpublic: struct DCCSTCSource *m_pStcSource; private:#endif struct DemuxProgram_OutputControl_type m_demuxOutCtrl; struct CCFifo_Open_type m_CC; RMuint32 m_surfaceID; RMuint32 m_video_decoder; // moduleId RMuint32 m_audio_decoder; // moduleId RMuint32 m_audio_engine; // moduleId RMuint32 m_video_timer; // moduleId RMuint32 m_audio_timer; // moduleId RMuint32 m_hw_demux; // moduleId RMuint32 m_hw_demux_program0; // moduleId RMuint32 m_hw_demux_program1; // moduleId RMuint32 m_spu_decoder; // moduleId // NOT IMPLEMENTED BY DCC YET ... to be replace with dcc functions RMuint32 m_hw_demux_engine; RMuint32 m_demuxProfileCachedAddr; RMuint32 m_demuxProfileUncachedAddr; RMbool m_demux_profile_open; enum Demux_State_type m_demux_state; ////////////////////////////////// enum VideoDecoder_Codec_type m_video_codec; struct RUABufferPool *m_pBufferPool; struct RUABufferPool *m_pAudioBufferPool; struct RUABufferPool *m_pVideoBufferPool; struct RUABufferPool *m_pAsvBufferPool; RMbool m_needToConvertAudio;// audioStreamConverter *m_audioStreamConverter; typeCuracaoAudioParameters m_audioFormat; RMbool m_isFirstSystemTimeStamp; RMbool m_initialized; RMbool m_finished; struct SpuDecoder_Hilight_type m_hiLight; RMbool m_HighlightOn; RMbool m_SubpictureOn; RMbool m_SendTitleKey; RMbool m_audioOnly; RMbool m_videoOnly; RMint32 m_speed; RMuint8 m_AudioChannels; RMdvdVideoMode m_videoMode; // DVI / HDMI RMuint32 m_outputModule; RMbool m_bAutoModeOn; // True when a DVI connector is detected and TV is switched to DVI RMuint32 m_standard; enum DCCVideoConnector m_connector; enum EMhwlibColorSpace m_color_space; // HDMI TV usually support RGB and YUV. We HAVE to support YUV struct DH_control *m_pDH; RMbool m_bEnableHDCP; RMbool m_bHDCP_tv; // Is TV HDCP compliant? RMbool m_auto_edid; // Does user want to set the TV resolution according to EDID preferred mode? RMbool m_valid_edid; // Valid EDID found? We use preferred TV settings based on GUI when cannot read EDID. enum DH_connection m_cable; // Are we connected? We use RSEN and HPD (Receiver Sense and Hot Plug Detect) RMbool m_bHDMItv; // HDMI? (If not, DVI). TV is HDMI only if we find a CEA EDID extension ver 2.3. Below 3 masks are then meaningful. RMuint8 m_tv_basic_support; // HDMI TV supported features: Basic Audio? YUV 4:4:4? (EDID) RMuint8 m_nb_read_EPROM_attempts; // Number of attempts struct CEAShortAudioDescriptor m_tv_aud_pcm; // Audio PCM support on HDMI TV based on EDID (See TV_SUPPORT_xxx in dvi_hdmi.h) struct DH_AudioFormat m_hdmi_audio_format; struct DH_AudioInfoFrame m_hdmi_audio_info_frame; struct DH_AVIInfoFrame m_hdmi_AVI_info_frame; RMbool m_DVI_RxPresent; RMbool m_DVI_Rx; RMbool m_DVI_HPD; struct CEA861BDataBlockCollection m_DBC[8]; RMuint32 m_nDBC; RMbool m_muteOn; RMuint32 m_volume; RMint8 m_brightness; RMuint8 m_contrast; RMuint8 m_saturation; RMbool m_useHDProfile; RMTvTypes m_tvType; enum EMhwlibScalingMode m_scalingMode; struct EMhwlibBlackStripMode m_blackstrip; enum OutputDualMode_type m_dualMode; enum OutputSpdif_type m_SPDIFModeReq; enum OutputSpdif_type m_SPDIFMode; struct AudioDecoder_LpcmVobParameters_type m_LpcmVobParams; struct AudioDecoder_LpcmAobParameters_type m_LpcmAobParams; struct AudioDecoder_PcmCdaParameters_type m_PcmCdaParams; struct AudioDecoder_MpegParameters_type m_MpegParams; struct AudioDecoder_Ac3Parameters_type m_Ac3Params; struct AudioDecoder_DtsParameters_type m_DtsParams;};#endif // __RMEM86XXDECODER_H__
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -