亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bmpi_16bit_decoder.c

?? bmp圖像文件解碼器的arm版本的源代碼
?? C
字號:
/*

*******************************************************************************
*
* FILE NAME:            
*   bmp_16bit_decoder.c
*
* DESCRIPTION:
*   source code for BMP decoder with 16-bit.
*
* MODULE: 
*   BMP (BitMaP) decoder.
* 

*  
*******************************************************************************
*/

/*
*******************************************************************************
* Include files
*******************************************************************************
*/

/* -- Include for BMP ressources -- */
#include "bmp_decoder_api.h"
#include "bmpi_decoder.h"



/*
*******************************************************************************
* 
* FUNCTION NAME:
*   BMPI_Decode16Bits()
*
* FUNCTION DESCRIPTION:
*   This function decodes a BMP image with 16-bit color.
*
* INPUTS:
*   pu8InputBuffer  : pointer to input buffer
*   pu8Mask         : pointer to color mask in palette
*   sImageInfo      : image information structure 
*   func            : pointer to callback function
*
* OUTPUTS:
*   psOutputBuffer  : pointer to output buffer (structure)
*   
* RETURN:
*   '0' if successful or '1' if failed.
*
* GLOBALS ACCESSED/MODIFIED:
*   < List all global variables this function accesses and/or modifies >
*
* SPECIAL NOTES:
*
*******************************************************************************
*/
OP_UINT8 BMPI_Decode16Bits
(
    OP_UINT8                    *pu8InputBuffer,
    OP_UINT8                    *pu8Mask,
    BMP_IMAGE_INFO              sImageInfo,
    OP_BOOLEAN                  func(OP_UINT16 x, OP_UINT16 y),
    IMAGE_DECODER_OUTPUT_TYPE   *psOutputBuffer
)
{
    /*-----------------------------------------------------------------------*/
    /* DECLARE LOCAL VARIABLES                                                 */
    /*-----------------------------------------------------------------------*/

    OP_UINT16   u16RedMask;             /* mask for red color */
    OP_UINT16   u16GreenMask;           /* mask for green color */
    OP_UINT16   u16BlueMask;            /* mask for blue color */
    OP_UINT16   u16RedShift;            /* shift value used in decoding red color */
    OP_UINT16   u16GreenShift;          /* shift value used in decoding green color */
    OP_UINT16   u16BlueShift;           /* shift value used in decoding blue color */
    OP_UINT16   u16RedScaling;          /* scaling value used in decoding red color */
    OP_UINT16   u16GreenScaling;        /* scaling value used in decoding green color */
    OP_UINT16   u16BlueScaling;         /* scaling value used in decoding blue color */
    OP_UINT16   u16Temp;                /* 16-bit temporary variable */
    OP_UINT32   u32NumExtraByte;        /* number of extra bytes in a line */
    OP_UINT32   u32XinvCnt;             /* inverse counter on X-axis */
    OP_UINT32   u32YinvCnt;             /* inverse counter on Y-axis */
    OP_UINT32   u32Temp;                /* 32-bit temporary variable */


    /*-----------------------------------------------------------------------*/
    /* DECODE 16-BIT COLORS                                                   */
    /*-----------------------------------------------------------------------*/

    /* determine bit masks for each color plane */
    if(sImageInfo.u32Compression == BI_RGB) /* with conventional bit masking */
    {
        u16RedMask      = 0x7c00;
        u16GreenMask    = 0x03e0;
        u16BlueMask     = 0x001f;
        u16RedShift     = 10;
        u16GreenShift   = 5;
        u16BlueShift    = 0;
        u16RedScaling   = 8;
        u16GreenScaling = 8;
        u16BlueScaling  = 8;
    }
    else                                        /* with specific bit masking */
    {
        u16RedMask   = (OP_UINT16)BMPI_ReadLittleEndianU32(pu8Mask);
        pu8Mask+=4;
        u16GreenMask = (OP_UINT16)BMPI_ReadLittleEndianU32(pu8Mask);
        pu8Mask+=4;
        u16BlueMask  = (OP_UINT16)BMPI_ReadLittleEndianU32(pu8Mask);
        BMPI_DetermineShiftScaling(u16RedMask, 
                                   &u16RedShift, 
                                   &u16RedScaling);
        BMPI_DetermineShiftScaling(u16GreenMask, 
                                   &u16GreenShift, 
                                   &u16GreenScaling);
        BMPI_DetermineShiftScaling(u16BlueMask, 
                                   &u16BlueShift, 
                                   &u16BlueScaling);
    }

    /* -- Calculate number of extra bytes in a line -- */
    u32Temp = (sImageInfo.u32ImageWidth*2) & 0x00000003;
    if ( u32Temp != 0 ) 
    {
        u32NumExtraByte = 4-u32Temp;
    }
    else
    {
        u32NumExtraByte = 0;
    }

    /* -- Extract 16-bit data in bitmap -- */
    /* vertical loop */
    u32YinvCnt = sImageInfo.u32ImageHeight;
    while(u32YinvCnt--)
    {

        /* horizontal loop */
        u32XinvCnt = sImageInfo.u32ImageWidth;
        while(u32XinvCnt--)                         /* releavant 16-bit data */
        {
            u16Temp = BMPI_ReadLittleEndianU16(pu8InputBuffer);
            pu8InputBuffer+=2;                   /* move to next 16-bit data */
            psOutputBuffer->u8Blue  = (OP_UINT8)((u16Temp & u16BlueMask) 
                >> u16BlueShift)*u16BlueScaling;
            psOutputBuffer->u8Green = (OP_UINT8)((u16Temp & u16GreenMask) 
                >> u16GreenShift)*u16GreenScaling;
            psOutputBuffer->u8Red   = (OP_UINT8)((u16Temp & u16RedMask) 
                >> u16RedShift)*u16RedScaling;
            psOutputBuffer->u8Alpha = 0xff;      /* set to opaque as default */
            psOutputBuffer++;                          /* move to next pixel */
        }
        pu8InputBuffer+=u32NumExtraByte;          /* dummy bytes are ignored */

    }


    /*-----------------------------------------------------------------------*/
    /* DECODED SUCCESSFULLY                                                  */
    /*-----------------------------------------------------------------------*/

    return(0);
}

 

/*
*******************************************************************************
* 
* FUNCTION NAME:
*   BMPI_DetermineShiftScaling()
*
* FUNCTION DESCRIPTION:
*   This function determines the shifting and scaling values used in 
*   calculating the color intensity. The shifting and scaling values
*   are derived from the input bit mask.
*
* INPUTS:
*   u16Mask  : input bit mask. 
*
* OUTPUTS:
*   u16Shift   : shift value derived from the input bit mask
*   u16Scaling : scaling value derived from input bit mask
*   
* RETURN:
*   None.
*
* GLOBALS ACCESSED/MODIFIED:
*   < List all global variables this function accesses and/or modifies >
*
* SPECIAL NOTES:
*
*******************************************************************************
*/
void BMPI_DetermineShiftScaling
(
    OP_UINT16       u16Mask, 
    OP_UINT16       *u16Shift, 
    OP_UINT16       *u16Scaling
)
{
    /*-----------------------------------------------------------------------*/
    /* DECLARE LOCAL VARIABLES                                                 */
    /*-----------------------------------------------------------------------*/

    OP_UINT16   u16Temp;                      /* 16-bit temporary variable */
 

    /*-----------------------------------------------------------------------*/
    /* INITIALIZE RETURNED PARAMETERS                                          */
    /*-----------------------------------------------------------------------*/

    *u16Shift = 0;
    *u16Scaling = 0x0080;


    /*-----------------------------------------------------------------------*/
    /* DETERMINE SHIFTING VALUE                                                 */
    /*-----------------------------------------------------------------------*/

    u16Temp = u16Mask & 0x0001;
    while( (!u16Temp) && (*u16Shift<16) )
    {
        u16Mask = (u16Mask >> 1) & 0x7fff;
        u16Temp = u16Mask & 0x0001;
        (*u16Shift)++;
    }


    /*-----------------------------------------------------------------------*/
    /* DETERMINE SCALING VALUE                                                 */
    /*-----------------------------------------------------------------------*/

    if(*u16Shift == 16)
    {
        *u16Scaling = 0;
    }
    else
    {
        u16Mask = u16Mask >> 1;
        while(u16Mask)
        {
            *u16Scaling = *u16Scaling >> 1; 
            u16Mask = u16Mask >> 1;
        }
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费在线| 国产日韩欧美不卡| 99久久777色| 日本不卡高清视频| 丝袜亚洲精品中文字幕一区| 亚洲欧美日韩国产中文在线| 综合欧美一区二区三区| 欧美成人性福生活免费看| 成人激情动漫在线观看| 日产国产欧美视频一区精品| 欧美激情一区在线观看| 91精品国产乱| 日韩一区二区三区视频| 97国产一区二区| 欧美日韩一卡二卡三卡| 欧美另类久久久品| 国产女人水真多18毛片18精品视频| 日韩精品一区二区在线观看| 精品国产1区2区3区| 久久精品一区四区| 一区二区三区四区高清精品免费观看 | 国产乱国产乱300精品| 激情综合网天天干| 日韩一区二区精品在线观看| 国产人成一区二区三区影院| 亚洲自拍偷拍av| 国产综合久久久久久久久久久久 | 欧美日韩国产精选| 国产日产精品一区| 日韩av电影免费观看高清完整版 | 日韩码欧中文字| 国产一区视频导航| 欧美人伦禁忌dvd放荡欲情| 国产亚洲精品bt天堂精选| 亚洲丰满少妇videoshd| 国产成人av电影在线观看| 欧美精品免费视频| 亚洲欧美激情视频在线观看一区二区三区 | 国产一区二区三区高清播放| 欧美性一二三区| 国产精品丝袜久久久久久app| 日韩在线观看一区二区| 99在线精品观看| 久久久久成人黄色影片| 欧美aaa在线| 欧美日韩久久不卡| 亚洲欧美电影一区二区| 国产99久久久国产精品潘金| 91精品国产综合久久久久久| 一区二区在线免费观看| 成人精品一区二区三区四区| 精品久久久久久最新网址| 午夜激情久久久| 日本高清不卡aⅴ免费网站| 国产天堂亚洲国产碰碰| 精东粉嫩av免费一区二区三区| 欧美电影影音先锋| 亚洲第一福利视频在线| 一本色道久久综合精品竹菊| 国产精品久久久久9999吃药| 国产精品一区二区不卡| 欧美精品一区二区三区高清aⅴ| 日韩精彩视频在线观看| 欧美日本国产视频| 午夜精品久久一牛影视| 欧美日韩成人在线一区| 亚洲一二三区不卡| 欧美性猛交一区二区三区精品| 中文字幕一区二区三区乱码在线| 成人免费观看av| 国产精品情趣视频| 97国产一区二区| 一区二区三区欧美| 欧美综合久久久| 亚洲一区在线视频| 欧美日韩电影在线播放| 日韩成人一级片| 欧美sm美女调教| 国模大尺度一区二区三区| 精品成人一区二区三区| 国产一区二区免费看| 国产亚洲欧美日韩俺去了| 国产高清精品久久久久| 中文字幕精品综合| av男人天堂一区| 亚洲麻豆国产自偷在线| 欧美在线综合视频| 亚洲123区在线观看| 欧美一区二区三区视频免费播放| 麻豆中文一区二区| 久久久久久夜精品精品免费| 国产二区国产一区在线观看| 国产精品久久国产精麻豆99网站| 99久久99久久免费精品蜜臀| 一区二区三区日本| 欧美一区三区四区| 国产一区二区三区不卡在线观看 | 91亚洲国产成人精品一区二三| 亚洲日本欧美天堂| 欧美性xxxxxxxx| 免费看欧美女人艹b| 久久综合久久久久88| 高清视频一区二区| 亚洲精品免费电影| 7777精品久久久大香线蕉 | 国产精品无遮挡| 日本韩国一区二区| 日韩成人dvd| 国产欧美日韩在线| 色8久久人人97超碰香蕉987| 日韩中文字幕91| 国产香蕉久久精品综合网| 91农村精品一区二区在线| 五月天中文字幕一区二区| 精品国产乱码久久| av在线不卡电影| 五月天国产精品| 欧美经典三级视频一区二区三区| 在线日韩av片| 国产真实乱对白精彩久久| 亚洲美女在线国产| 欧美精品一区二区三区一线天视频| av不卡在线播放| 亚洲成人av一区二区| 久久久www成人免费毛片麻豆| 色婷婷综合激情| 久久不见久久见中文字幕免费| 国产精品国产三级国产普通话三级 | 国产亚洲欧美激情| 欧美老女人在线| 粉嫩av亚洲一区二区图片| 偷拍一区二区三区| 国产精品成人免费精品自在线观看| 欧美丝袜丝交足nylons图片| 国产乱人伦精品一区二区在线观看| 一区二区三区免费在线观看| 国产视频视频一区| 91精选在线观看| 99国产精品久久久久| 精品一区二区三区在线观看国产| 一区二区三区在线观看动漫| 久久精品亚洲精品国产欧美| 欧美日本在线视频| 成人91在线观看| 国内成+人亚洲+欧美+综合在线| 亚洲精品视频在线观看网站| 久久免费偷拍视频| 欧美女孩性生活视频| 成人av集中营| 精品一区二区三区香蕉蜜桃| 亚洲动漫第一页| 中文字幕一区三区| 久久蜜臀精品av| 91精品国产日韩91久久久久久| 91视频在线观看免费| 国产一区欧美二区| 日韩国产高清影视| 亚洲午夜免费视频| 国产精品女主播在线观看| 26uuu另类欧美亚洲曰本| 欧美美女直播网站| 91黄色免费观看| fc2成人免费人成在线观看播放 | 欧美国产亚洲另类动漫| 日韩欧美久久久| 欧美裸体bbwbbwbbw| 在线观看免费视频综合| 99这里都是精品| www.亚洲激情.com| 成人教育av在线| 成人免费毛片片v| 国产精品一区二区黑丝| 国产一区二区视频在线| 麻豆精品久久久| 老司机一区二区| 美洲天堂一区二卡三卡四卡视频 | 欧美成人福利视频| 日韩片之四级片| 欧美mv和日韩mv的网站| 日韩欧美精品三级| 日韩精品中午字幕| 欧美一区二区三级| 日韩精品一区二区三区swag| 欧美一级二级三级蜜桃| 日韩手机在线导航| 日韩欧美国产综合| 日韩美女主播在线视频一区二区三区 | 国产精品久久久久一区 | 91久久精品网| 在线精品视频小说1| 欧美三片在线视频观看| 欧美日韩大陆在线| 日韩一区二区三区av| 精品第一国产综合精品aⅴ| 精品久久久久久久人人人人传媒 | 成人综合婷婷国产精品久久蜜臀| 国产一区二区三区免费| 成人午夜又粗又硬又大| 99九九99九九九视频精品| 一本久久精品一区二区|