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

📄 drvrld.c

📁 mstar 776 开发的车载dvd
💻 C
字号:
////////////////////////////////////////////////////////////////////////////////
//
// 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.
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
///@file drvRLD.c
///@Driver interface of Jupiter run-length decoder
///
///@author MStarSemi Inc.
///
///
///
////////////////////////////////////////////////////////////////////////////////

#define DRVRLD_C
//*****************************************************************************
// 			Header Files
//*****************************************************************************
#include "drvRLD.h"

//*****************************************************************************
//  		Macro					
//*****************************************************************************

//*****************************************************************************
//      	Enums
//*****************************************************************************

//*****************************************************************************
//      	Structures
//*****************************************************************************

//*****************************************************************************
//          Functions                                                
//*****************************************************************************
void MDrv_STRLD_Start()
{
    MDrv_WriteByte(STRLD_CTRL, 0x01);
}	


void MDrv_STRLD_Reset()
{	
//    U16 i, j;

    MDrv_WriteByte(STRLD_CTRL, 0x80);
/*
    for (i = 0; i < 255; i++)
    {
        j = i;
    }
*/
    MDrv_WriteByte(STRLD_CTRL, 0x0);
}


BOOLEAN MDrv_STRLD_SetOutputFormat(U8 u8Value)
{
    if ((u8Value != 0x02) && (u8Value != 0x04) && (u8Value != 0x08))
        return FALSE;

    MDrv_WriteByte(STRLD_OUTPUT_FORMAT, u8Value);

    return TRUE;
}


BOOLEAN MDrv_STRLD_SetEnlargeRate(U8 u8Value)
{
    // 1 ~ 7
    if (( u8Value < 1) || ( u8Value> 7))
    {
        printf("\nBG in drvRLD\n");
        return FALSE;
    }

    MDrv_WriteByte(STRLD_ENLARGE_RATE, u8Value);

    return TRUE;
}


void MDrv_STRLD_SetTransparentKey(U8 u8Value)
{
    MDrv_WriteByte(STRLD_TRNASPARENT_KEY, u8Value);	
}


void MDrv_STRLD_SetTopFieldLength(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_TOP_LEN0,u16Value);
}


void MDrv_STRLD_SetBottomFieldLength(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_BOT_LEN0,u16Value);
}


void MDrv_STRLD_SetRegionWdith(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_REGION_WIDTH0,u16Value);
}


void MDrv_STRLD_SetRegionHeight(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_REGION_HEIGHT0,u16Value);
}


void MDrv_STRLD_SetRegionPitch(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_REGION_PITCH0,u16Value);
}


void MDrv_STRLD_SetObjXOffset(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_OBJ_X_OFFSET0,u16Value);
}


void MDrv_STRL_SetObjYOffset(U16 u16Value)
{
    MDrv_Write2Byte(STRLD_OBJ_Y_OFFSET0,u16Value);
}
			

void MDrv_STRLD_SetRegionOffset(U8 u8Value)
{
    MDrv_WriteByte(STRLD_REGION_OFFSET,u8Value);
}


void MDrv_STRLD_SetRegionDepth(U8 u8Value)
{
    MDrv_WriteByte(STRLD_BITSTREAM_DEPTH,u8Value);
}


void MDrv_STRLD_SetRegionColorKeyFG(U8 u8Value)
{
    MDrv_WriteByte(STRLD_REGION_COLORKEY_FG,u8Value);
}


void MDrv_STRLD_SetRegionColorKeyBG(U8 u8Value)
{
    MDrv_WriteByte(STRLD_REGION_COLORKEY_BG,u8Value);
}


void MDrv_STRLD_SetTopFieldAddress(U32 u32Value)
{
    u32Value = u32Value / 8;
	
    MDrv_WriteByte(STRLD_TOP_ADDR0 , VARBYTE(u32Value, 3));
    MDrv_WriteByte(STRLD_TOP_ADDR1 , VARBYTE(u32Value, 2));
    MDrv_WriteByte(STRLD_TOP_ADDR2 , VARBYTE(u32Value, 1));	
    MDrv_WriteByte(STRLD_TOP_ADDR3 , VARBYTE(u32Value, 0));	
}


void MDrv_STRLD_SetBottomFieldAddress(U32 u32Value)
{
    u32Value = u32Value / 8;

    MDrv_WriteByte(STRLD_BOT_ADDR0 , VARBYTE(u32Value, 3));
    MDrv_WriteByte(STRLD_BOT_ADDR1 , VARBYTE(u32Value, 2));
    MDrv_WriteByte(STRLD_BOT_ADDR2 , VARBYTE(u32Value, 1));	
    MDrv_WriteByte(STRLD_BOT_ADDR3 , VARBYTE(u32Value, 0));	
}


void MDrv_STRLD_SetOutputAddress(U32 u32Value)
{
    u32Value = u32Value / 8;

    MDrv_WriteByte(STRLD_OUTPUT_ADDR0 , VARBYTE(u32Value, 3));
    MDrv_WriteByte(STRLD_OUTPUT_ADDR1 , VARBYTE(u32Value, 2));
    MDrv_WriteByte(STRLD_OUTPUT_ADDR2 , VARBYTE(u32Value, 1));	
    MDrv_WriteByte(STRLD_OUTPUT_ADDR3 , VARBYTE(u32Value, 0));		
}


void MDrv_STRLD_SetPatch()
{
    MDrv_WriteByte(STRLD_PATCH, 0x01);
}


U8 MDrv_STRLD_GetReturn()
{
    return MDrv_ReadByte(STRLD_RETURN);
}


void MDrv_STRLD_SetMappingTable2to4(U32 u32Value)
{
    MDrv_WriteByte(STRLD_CLUT_2TO4_0 , VARBYTE(u32Value, 3));
    MDrv_WriteByte(STRLD_CLUT_2TO4_1 , VARBYTE(u32Value, 2));
    MDrv_WriteByte(STRLD_CLUT_2TO4_2 , VARBYTE(u32Value, 1));	
    MDrv_WriteByte(STRLD_CLUT_2TO4_3 , VARBYTE(u32Value, 0));		
}


void MDrv_STRLD_SetMappingTable2to8(U32 u32Value)
{
    MDrv_WriteByte(STRLD_CLUT_2TO8_0 , VARBYTE(u32Value, 3));
    MDrv_WriteByte(STRLD_CLUT_2TO8_1 , VARBYTE(u32Value, 2));
    MDrv_WriteByte(STRLD_CLUT_2TO8_2 , VARBYTE(u32Value, 1));	
    MDrv_WriteByte(STRLD_CLUT_2TO8_3 , VARBYTE(u32Value, 0));		
}


void MDrv_STRLD_SetMappingTable4to8(U32 u32Value0, U32 u32Value1, U32 u32Value2, U32 u32Value3)
{
    MDrv_WriteByte(STRLD_CLUT_4TO8_0 , VARBYTE(u32Value0, 3));
    MDrv_WriteByte(STRLD_CLUT_4TO8_1 , VARBYTE(u32Value0, 2));
    MDrv_WriteByte(STRLD_CLUT_4TO8_2 , VARBYTE(u32Value0, 1));	
    MDrv_WriteByte(STRLD_CLUT_4TO8_3 , VARBYTE(u32Value0, 0));		

    MDrv_WriteByte(STRLD_CLUT_4TO8_4 , VARBYTE(u32Value1, 3));
    MDrv_WriteByte(STRLD_CLUT_4TO8_5 , VARBYTE(u32Value1, 2));
    MDrv_WriteByte(STRLD_CLUT_4TO8_6 , VARBYTE(u32Value1, 1));	
    MDrv_WriteByte(STRLD_CLUT_4TO8_7 , VARBYTE(u32Value1, 0));		

    MDrv_WriteByte(STRLD_CLUT_4TO8_8 , VARBYTE(u32Value2, 3));
    MDrv_WriteByte(STRLD_CLUT_4TO8_9 , VARBYTE(u32Value2, 2));
    MDrv_WriteByte(STRLD_CLUT_4TO8_a , VARBYTE(u32Value2, 1));	
    MDrv_WriteByte(STRLD_CLUT_4TO8_b , VARBYTE(u32Value2, 0));		

    MDrv_WriteByte(STRLD_CLUT_4TO8_c , VARBYTE(u32Value3, 3));
    MDrv_WriteByte(STRLD_CLUT_4TO8_d , VARBYTE(u32Value3, 2));
    MDrv_WriteByte(STRLD_CLUT_4TO8_e , VARBYTE(u32Value3, 1));	
    MDrv_WriteByte(STRLD_CLUT_4TO8_f , VARBYTE(u32Value3, 0));
}

#undef DRVRLD_C

⌨️ 快捷键说明

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