📄 drvmvd.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 + -