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

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

?? wbmpi_decoder.c

?? wbmp圖像文件解碼器的arm版本源代碼
?? C
字號:
/*
*******************************************************************************
*
* FILE NAME:            
*   wbmpi_decoder.c
*
* DESCRIPTION:
*   Source code of all internal functions of the WBMP decoder.
*
* MODULE: 
*   WBMP (Wireless BitMaP) decoder.
* 
*  
*******************************************************************************
*/

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

#include "wbmpi_decoder.h"



/*
*******************************************************************************
* 
* FUNCTION NAME:
*   WBMPI_ReadMultiByteInteger()
*
* FUNCTION DESCRIPTION:
*   This function reads a multi-byte integer as defined in
*   "Wireless Application Environment Defined Media Type specification",
*   WAAP-237-WAEMT-20010515-a, Version 15, May 2001.
*   
*
* INPUTS:
*   pu8InputBuffer  : pointer to input buffer.
*
* OUTPUTS:
*   pu8InputBuffer  : pointer to input buffer.
*   
* RETURN:
*   u32Integer      : decoded unsigned 32-bit integer.
*
* GLOBALS ACCESSED/MODIFIED:
*   < List all global variables this function accesses and/or modifies >
*
* SPECIAL NOTES:
*
*******************************************************************************
*/
OP_UINT32 WBMPI_ReadMultiByteInteger
(
    OP_UINT8    **pu8InputBuffer
)
{

    /*-----------------------------------------------------------------------*/
    /* DECLARE LOCAL VARIABLES                                               */
    /*-----------------------------------------------------------------------*/

    OP_UINT8    u8Temp;                        /* 8-bit temporary variable */
    OP_UINT32   u32Integer;                    /* decoded unsigned 32-bit integer */ 


    /*-----------------------------------------------------------------------*/
    /* DECODE UNSIGNED 32-BIT INTEGER                                        */
    /*-----------------------------------------------------------------------*/

    u32Integer = 0;
    do
    {
        u8Temp = **pu8InputBuffer;
        (*pu8InputBuffer)++;
        u32Integer = (u32Integer << 7) | (u8Temp & 0x7f);
    }while(u8Temp & 0x80);

    return(u32Integer);

}



/*
*******************************************************************************
* 
* FUNCTION NAME:
*   WBMPI_ReadHeader()
*
* FUNCTION DESCRIPTION:
*   This function reads the header of a WBMP buffer and retrieves the
*   following information: WBMP type, image width and height.
*   
*
* INPUTS:
*   pu8InputBuffer  : pointer to input buffer.
*
* OUTPUTS:
*   pu8InputBuffer  : pointer to input buffer.
*   u16WbmpType     : WBMP image type
*   u16ImageWidth   : image width
*   pu16ImageHeight : image height
*   
* RETURN:
*   '0' if successful or '1' if failed.
*
* GLOBALS ACCESSED/MODIFIED:
*   < List all global variables this function accesses and/or modifies >
*
* SPECIAL NOTES:
*   ONLY FOR WBMP IMAGE WITH TYPE '0'
*
*******************************************************************************
*/
OP_UINT8 WBMPI_ReadHeader
(
    OP_UINT8        **pu8InputBuffer,
    OP_UINT16       *pu16WbmpType,
    OP_UINT16       *pu16ImageWidth,
    OP_UINT16       *pu16ImageHeight)
{

    /*-----------------------------------------------------------------------*/
    /* DECLARE LOCAL VARIABLES                                               */
    /*-----------------------------------------------------------------------*/

    /* -- Declare local variables -- */
    OP_UINT8    u8Temp;                          /* 8-bit temporary variable */


    /*-----------------------------------------------------------------------*/
    /* READ WBMP TYPE                                                        */
    /*-----------------------------------------------------------------------*/

    /* -- Read type from input buffer -- */
    *pu16WbmpType = (OP_UINT16)WBMPI_ReadMultiByteInteger(pu8InputBuffer);

    /* -- Return an error if type is not '0' (only supported type) -- */
    if(*pu16WbmpType != 0) 
    {
        return(1);
    }


    /*-----------------------------------------------------------------------*/
    /* READ FIXED HEADER AND EXTENSION FIELDS                                */
    /*-----------------------------------------------------------------------*/

    /* -- Read fixed-header field -- */
    u8Temp = **pu8InputBuffer;
    (*pu8InputBuffer)++;

    /* -- Return an error if extension field is present (for type '0') -- */
    if(u8Temp & 0x80) 
    {
        return(1);
    }


    /*-----------------------------------------------------------------------*/
    /* READ IMAGE WIDTH AND HEIGHT                                           */
    /*-----------------------------------------------------------------------*/

    *pu16ImageWidth  = (OP_UINT16)WBMPI_ReadMultiByteInteger(pu8InputBuffer);
    *pu16ImageHeight = (OP_UINT16)WBMPI_ReadMultiByteInteger(pu8InputBuffer);


    /*-----------------------------------------------------------------------*/
    /* HEADER WAS READ SUCCESSFULLY                                          */
    /*-----------------------------------------------------------------------*/

    return(0);

}



/*
*******************************************************************************
* 
* FUNCTION NAME:
*   WBMPI_DecodeBitmap()
*
* FUNCTION DESCRIPTION:
*   This function decodes WBMP image data with type '0'.
*   
*
* INPUTS:
*   pu8InputBuffer  : pointer to input buffer
*   u16ImageWidth   : image width
*   pu16ImageHeight : image height
*   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:
*   ONLY FOR WBMP IMAGE WITH TYPE '0'
*
*******************************************************************************
*/
OP_UINT8 WBMPI_DecodeBitmap
(
    OP_UINT8                    *pu8InputBuffer,
    OP_UINT16                   u16ImageWidth,
    OP_UINT16                   u16ImageHeight,
    OP_BOOLEAN                  func(OP_UINT16 x, OP_UINT16 y),
    IMAGE_DECODER_OUTPUT_TYPE   *psOutputBuffer)
{


    /*-----------------------------------------------------------------------*/
    /* DECLARE LOCAL VARIABLES                                               */
    /*-----------------------------------------------------------------------*/

    /* -- Declare local variables -- */
    OP_UINT8    u8NewByte;                  /* byte from input buffer */
    OP_UINT8    u8Pixel;                    /* pixel value */
    OP_UINT16   u16ColumnIndex;             /* column index */
    OP_UINT16   u16RowIndex;                /* row indexes */
    OP_UINT16   u16NumberOfByteForRow;      /* number of bytes for a row */
    OP_UINT16   u16NumberOfPixelsInByte;    /* number of pixels to decode in a byte */


    /*-----------------------------------------------------------------------*/
    /* READ IMAGE DATA ROW BY ROW                                            */
    /*-----------------------------------------------------------------------*/

    /* -- For each row */
    u16RowIndex = u16ImageHeight;
    while(u16RowIndex--)
    {

        /* -- For each column of a row -- */
        u16ColumnIndex = u16ImageWidth;

        if ( u16ImageWidth % 8 )
        {
            u16NumberOfByteForRow = (u16ImageWidth>>3) + 1;
        }
        else
        {
            u16NumberOfByteForRow = (u16ImageWidth>>3);
        }
        
        while (u16NumberOfByteForRow--)
        {
            /* read a new byte in the input buffer */
            u8NewByte = *pu8InputBuffer;
            pu8InputBuffer++;

            /* extract 8 pixels in current byte */
            if (u16ColumnIndex > 8)
            {
                u16NumberOfPixelsInByte = 8;
            }
            else
            {
                u16NumberOfPixelsInByte = u16ColumnIndex;
            }
            while (u16NumberOfPixelsInByte--)
            {
                u8Pixel = u8NewByte & 0x80;
                /* 'white' pixel --> (R,G,B,A) = (0xff, 0xff, 0xff, 0xff) */
                if(u8Pixel != 0)
                {
                    psOutputBuffer->u8Red   = 0xff;
                    psOutputBuffer->u8Green = 0xff;
                    psOutputBuffer->u8Blue  = 0xff;
                }
                /* 'black' pixel --> (R,G,B,A) = (0x00, 0x00, 0x00, 0xff)*/
                else
                {
                    psOutputBuffer->u8Red   = 0x00;
                    psOutputBuffer->u8Green = 0x00;
                    psOutputBuffer->u8Blue  = 0x00;
                }
                psOutputBuffer->u8Alpha = 0xff;
                psOutputBuffer++;
                u16ColumnIndex--;
                u8NewByte = u8NewByte << 1;
            }

        } /* end of loop on column */

    } /* end of loop on row */


    /*-----------------------------------------------------------------------*/
    /* BITMAP WAS DECODED SUCCESSFULLY                                       */
    /*-----------------------------------------------------------------------*/
    
    if ( (u16ImageWidth > 0) && (u16ImageHeight > 0) )
    {
        func((OP_UINT16)(u16ImageWidth-1),(OP_UINT16)(u16ImageHeight-1));
    }
    else
    {
        func(0,0);
    }
    return(0);

}
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美一级免费| 26uuu色噜噜精品一区| 亚洲一级电影视频| 日韩一级二级三级精品视频| 伦理电影国产精品| 亚洲天天做日日做天天谢日日欢| 欧美性大战久久久| 国产成人精品亚洲午夜麻豆| 一区二区三区欧美| 日韩色视频在线观看| jvid福利写真一区二区三区| 久久精品在这里| 秋霞成人午夜伦在线观看| 奇米精品一区二区三区四区| 国产成人av一区| 欧美日韩午夜精品| 亚洲黄色小说网站| 成人av资源在线观看| 精品国产第一区二区三区观看体验| 亚洲精品欧美在线| 成人国产一区二区三区精品| 久久伊99综合婷婷久久伊| 婷婷亚洲久悠悠色悠在线播放 | 亚洲日本在线看| 国产综合色在线| 日韩一区二区免费在线电影| 亚洲国产精品影院| 在线视频一区二区免费| 亚洲日本一区二区三区| thepron国产精品| 国产精品国产三级国产普通话蜜臀 | 亚洲一区二区四区蜜桃| 99精品黄色片免费大全| 国产精品电影院| jizzjizzjizz欧美| 日韩一区日韩二区| 91丝袜高跟美女视频| 亚洲色图19p| 91老师国产黑色丝袜在线| 国产精品剧情在线亚洲| 99久久亚洲一区二区三区青草| 国产精品美女www爽爽爽| 成人丝袜高跟foot| 国产精品高潮久久久久无| 99精品黄色片免费大全| 亚洲夂夂婷婷色拍ww47| 欧美日韩一区二区三区四区五区| 亚洲综合免费观看高清完整版| 欧美性受极品xxxx喷水| 午夜精品免费在线观看| 91麻豆精品国产91久久久久| 久久精品国产网站| 国产午夜亚洲精品午夜鲁丝片| 成人午夜免费电影| 一区二区三区在线播| 欧美军同video69gay| 极品尤物av久久免费看| 国产日韩欧美麻豆| 在线精品国精品国产尤物884a| 亚洲二区在线视频| 日韩欧美视频一区| 成av人片一区二区| 亚洲成人动漫在线免费观看| 欧美一级二级在线观看| 成人高清视频免费观看| 亚洲小说欧美激情另类| 欧美精品一区二区三区四区| 成人黄页在线观看| 亚洲福利视频一区二区| 国产三级一区二区三区| 91麻豆成人久久精品二区三区| 视频一区二区国产| 国产精品美女视频| 9191国产精品| 成人国产一区二区三区精品| 日韩高清不卡一区二区| 欧美—级在线免费片| 欧美视频一区二区三区四区| 韩国精品免费视频| 亚洲一区中文在线| 国产欧美久久久精品影院| 欧美喷潮久久久xxxxx| 国产大陆亚洲精品国产| 首页国产欧美久久| 欧美韩日一区二区三区| 日韩免费性生活视频播放| 91国内精品野花午夜精品| 国产在线视频一区二区三区| 亚洲一区二区av电影| 国产精品沙发午睡系列990531| 日韩精品在线网站| 欧美日韩综合在线| 成人美女视频在线看| 国内精品写真在线观看| 视频一区二区三区在线| 亚洲综合成人在线| **性色生活片久久毛片| 久久久99久久| 精品国产乱码久久久久久久 | 国产不卡在线一区| 人人狠狠综合久久亚洲| 亚洲欧美国产毛片在线| 国产亚洲综合色| 日韩限制级电影在线观看| 欧美视频在线一区| 91免费版在线| 成人激情校园春色| 成人高清免费在线播放| 成人激情动漫在线观看| 成人免费av资源| 国产成人夜色高潮福利影视| 激情图片小说一区| 六月丁香婷婷色狠狠久久| 婷婷综合在线观看| 婷婷六月综合网| 亚洲国产精品视频| 午夜精品在线看| 日韩高清中文字幕一区| 日韩精品一卡二卡三卡四卡无卡| 亚洲国产欧美一区二区三区丁香婷| 17c精品麻豆一区二区免费| 国产精品人人做人人爽人人添 | 亚洲精品免费看| 一区二区三区中文在线观看| 一二三区精品福利视频| 亚洲国产精品久久久男人的天堂 | 中文字幕日韩欧美一区二区三区| 国产精品久久午夜| 国产精品蜜臀在线观看| 成人欧美一区二区三区白人 | 精品一区二区三区蜜桃| 国产一本一道久久香蕉| 国产成人一区在线| 91女人视频在线观看| 在线免费观看成人短视频| 欧美日韩视频第一区| 欧美一区二区在线观看| 久久综合久久综合亚洲| 日本一二三不卡| 一区二区三区欧美亚洲| 亚洲电影第三页| 久久99深爱久久99精品| 成人丝袜高跟foot| 欧美日韩国产首页| 久久影院午夜论| 亚洲色图欧洲色图婷婷| 日韩国产欧美一区二区三区| 国产精品一二三区在线| 95精品视频在线| 91精品国产全国免费观看| 欧美国产成人在线| 亚洲高清免费视频| 国产麻豆9l精品三级站| 日本电影欧美片| 精品成人a区在线观看| 亚洲欧洲av一区二区三区久久| 婷婷中文字幕综合| 成人白浆超碰人人人人| 欧美喷潮久久久xxxxx| 国产精品三级视频| 日韩成人精品在线观看| 99久久国产综合精品女不卡| 91精品国产综合久久福利软件| 国产精品福利在线播放| 久久精品国产99国产精品| 色综合中文字幕国产| 91精品婷婷国产综合久久竹菊| 国产欧美一区二区在线| 亚洲va国产va欧美va观看| 国产91丝袜在线播放九色| 欧美乱妇20p| 亚洲同性gay激情无套| 国产在线播放一区| 欧美亚洲国产一卡| 国产精品沙发午睡系列990531| 免费xxxx性欧美18vr| 91国内精品野花午夜精品| 国产欧美日韩在线| 久久成人免费日本黄色| 欧美在线一区二区| 国产精品久久久久永久免费观看 | 99久久99久久免费精品蜜臀| 欧美大片国产精品| 午夜视黄欧洲亚洲| 在线视频你懂得一区| 中文在线资源观看网站视频免费不卡| 蜜臀av一区二区在线观看| 在线观看日韩国产| 亚洲天堂网中文字| 暴力调教一区二区三区| 国产午夜精品久久久久久免费视 | 午夜精品福利久久久| 欧美日韩一区二区三区四区五区| 亚洲丝袜美腿综合| 成人av在线观| 国产精品你懂的在线欣赏| 处破女av一区二区| 国产欧美一二三区| 国产精品小仙女| 国产三级一区二区三区|