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

📄 drvmvd.h

📁 mstar 776 开发的车载dvd
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2006-2007 MStar Semiconductor, Inc.
// All rights reserved.
//
// Unless otherwise stipulated in writing, any and all information contained
// herein regardless in any format shall remain the sole proprietary of
// MStar Semiconductor Inc. and be kept in strict confidence
// (¨MStar Confidential Information〃) by the recipient.
// Any unauthorized act including without limitation unauthorized disclosure,
// copying, use, reproduction, sale, distribution, modification, disassembling,
// reverse engineering and compiling of the contents of MStar Confidential
// Information is unlawful and strictly prohibited. MStar hereby reserves the
// rights to any and all damages, losses, costs and expenses resulting therefrom.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef DRV_MVD_H
#define DRV_MVD_H

#include "DataType.h"
#include "board.h"


#ifdef DRV_MVD_C
#define INTERFACE
#else
#define INTERFACE extern
#endif

#define DRV_VIDEO_CODE_MAXSIZE    1024*8


/////////////////////////////////////
INTERFACE void MDrv_Mvd_MVDInit ( void );
INTERFACE void MDrv_Mvd_MVDResetBuffAddr ( void );
INTERFACE BOOLEAN MDrv_Mvd_LoadCode ( void );
INTERFACE void MDrv_Mvd_PrintCode ( void );    // for debug

////////////////////////////////////////////
// MVD command for API
#define MVD_PLAY                  0x1     // Start decoding input buffer data and display the images
#define MVD_PAUSE                 0x2     // Stops the decoding process. The display will continue to show the last  picture.
#define MVD_STOP                  0x3     // Stops the decoding process.
#define MVD_CHANNEL_CHANGE        0x4     // MVD change to Channel change state

// Internal use command
#define MVD_I_MHEG_DECODE_IFRAME  0x05
#define MVD_I_MHEG_SET_FRAMEBUF   0x06
#define MVD_I_SET_BS_START        0x10    // word(64-bit) alignment
#define MVD_I_SET_BS_END          0x11    // word(64-bit) alignment
#define MVD_I_SET_FB_START        0x12    // 256 words alignment
#define MVD_I_SET_FRAMERATE       0x14
#define MVD_I_SET_BS_OVERFLOWTH   0x16    // word(64-bit) alignment
#define MVD_I_SET_BS_UNDERFLOWTH  0x17    // word(64-bit) alignment
#define MVD_I_SET_CC_BUF_START    0x20    // word(64-bit) alignment
#define MVD_I_SET_CC_BUF_SIZE     0x21    // word(64-bit) alignment
#define MVD_I_GET_WRITE_PTR       0x22
#define MVD_I_GET_PICTURE_SIZE    0x30
#define MVD_I_ASPECT_FRAMERATE    0x31
#define MVD_I_FREERUN             0x33
#define MVD_I_GET_VALID_DATA_STATUS    0x34
#define MVD_I_COMMAND_CTRL        0x40



//MVD output mode
#define MVD_OUTPUT_NORMAL         0
#define MVD_OUTPUT_DOUBLE         1
#define MVD_OUTPUT_32PULLDOWN     2



/// MVD Command arguments
typedef struct
{
    U8 Arg0;    ///< argument 0
    U8 Arg1;    ///< argument 1
    U8 Arg2;    ///< argument 2
    U8 Arg3;    ///< argument 3
}MVD_CMD_ARG;


INTERFACE BOOLEAN MDrv_Mvd_MVDCommand ( U8 u8cmd, MVD_CMD_ARG *pstCmdArg );

INTERFACE void MDrv_Mvd_SetBitStreamAddr ( U32 u32start, U32 u32end );
INTERFACE void MDrv_Mvd_SetFrameBufferAddr ( U32 u32addr );
INTERFACE void MDrv_Mvd_SetFrameRate ( U8 u8rate );

// Frame rate code - From MPEG2 Spec
#define MVD_FRAMERATE_23976        0x1
#define MVD_FRAMERATE_24000        0x2
#define MVD_FRAMERATE_25000        0x3
#define MVD_FRAMERATE_29970        0x4
#define MVD_FRAMERATE_30000        0x5
#define MVD_FRAMERATE_50000        0x6
#define MVD_FRAMERATE_59940        0x7
#define MVD_FRAMERATE_60000        0x8

typedef enum
{
    RStep_Zero = 0x00,         // Not smooth scrolling, set destination offset directly
    RStep_One,
    RStep_Two,
    RStep_Three,
    RStep_Four,
    RStep_Five,
    RStep_Six,
    RStep_None = 0xFF,         // No scrolling, set offset directly
} MVD_Scrolling_Step;

/// MVD Frame information
typedef struct
{
    U16 u16HorSize;     ///< Horizontal size
    U16 u16VerSize;     ///< Vertical size
    U16 u16FrameRate;     ///< Frame rate
    U8 u8AspectRatio;     ///< Aspect Ratio
    U8 u8Interlace;
} MVD_FRAMEINFO;

typedef struct
{
    U8 winId;
    U8 dir;
    U16 pixLines;
    U8 RStep;
    U16 rolX;
    U16 rolY;
} MVD_ScrollLineINFO;

INTERFACE void MDrv_Mvd_GetFrameInfo ( MVD_FRAMEINFO *pinfo );
INTERFACE BOOLEAN MDrv_Mvd_CheckDecodeStatus ( void );
///////////////////////////////////////
#define MVD_CC_BLACK_PIC       1
#define MVD_CC_LAST_PIC        0

INTERFACE MVD_ScrollLineINFO MVDScrollInfo;
INTERFACE void MDrv_Mvd_ResetIFrameDecode ( void );
INTERFACE BOOLEAN MDrv_Mvd_DecodeIFrame ( U32 u32FrameBufAddr, U32 u32StreamBufAddr );
INTERFACE void MDrv_Mvd_Polling ( U8 OneShot );
INTERFACE U8 MDrv_Mvd_GetFirstFrame ( void );
INTERFACE void MDrv_Mvd_MVDReset ( void );
INTERFACE void MDrv_Mvd_Play( void );
INTERFACE U8 MDrv_Mvd_GetPicCounter ( void );
INTERFACE BOOLEAN MDrv_Mvd_GetValidStreamFlag ( void );
INTERFACE U8 MDrv_Mvd_GetProgInt ( void );
INTERFACE U8 MDrv_Mvd_GetSyncStatus ( void );
INTERFACE U8 MDrv_Mvd_GetDispRdy( void );
INTERFACE void MDrv_Mvd_SetVOPDone( void );
INTERFACE U8 MDrv_Mvd_I_PIC_Found( void );
INTERFACE U8 MDrv_Mvd_GetActiveFormat( void );

//#if ( ENABLE_DTV_FREEZE_WEAK_SIGNAL == ENABLE )
INTERFACE U16 MDrv_Mvd_GetDecodeErrCnt( void );
INTERFACE void MDrv_Mvd_ResetDecodeErrCnt( void );
//#endif


INTERFACE void MDrv_Mvd_SetPlayMode(U8 bFileMode, U8 bDisablePESParsing);
INTERFACE void MDrv_Mvd_SetOverflowTH (U32 u32Threshold);
INTERFACE void MDrv_Mvd_SetUnderflowTH (U32 u32Threshold);

///////////////////////////////////////////

#undef INTERFACE
#endif

⌨️ 快捷键说明

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