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

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

?? pngvcrd.c

?? linux syslinux source code
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* pngvcrd.c - mixed C/assembler version of utilities to read a PNG file * * For Intel x86 CPU and Microsoft Visual C++ compiler * * libpng version 1.2.8 - December 3, 2004 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2004 Glenn Randers-Pehrson * Copyright (c) 1998, Intel Corporation * * Contributed by Nirav Chhatrapati, Intel Corporation, 1998 * Interface to libpng contributed by Gilles Vollant, 1999 * * * In png_do_read_interlace() in libpng versions 1.0.3a through 1.0.4d, * a sign error in the post-MMX cleanup code for each pixel_depth resulted * in bad pixels at the beginning of some rows of some images, and also * (due to out-of-range memory reads and writes) caused heap corruption * when compiled with MSVC 6.0.  The error was fixed in version 1.0.4e. * * [png_read_filter_row_mmx_avg() bpp == 2 bugfix, GRR 20000916] * * [runtime MMX configuration, GRR 20010102] * */#define PNG_INTERNAL#include "png.h"#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && defined(PNG_USE_PNGVCRD)static int mmx_supported=2;int PNGAPIpng_mmx_support(void){  int mmx_supported_local = 0;  _asm {    push ebx          //CPUID will trash these    push ecx    push edx    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack into eax    mov ecx, eax      //Make another copy of Eflag in ecx    xor eax, 0x200000 //Toggle ID bit in Eflag [i.e. bit(21)]    push eax          //Save modified Eflag back to stack    popfd             //Restored modified value back to Eflag reg    pushfd            //Save Eflag to stack    pop eax           //Get Eflag from stack    push ecx          // save original Eflag to stack    popfd             // restore original Eflag    xor eax, ecx      //Compare the new Eflag with the original Eflag    jz NOT_SUPPORTED  //If the same, CPUID instruction is not supported,                      //skip following instructions and jump to                      //NOT_SUPPORTED label    xor eax, eax      //Set eax to zero    _asm _emit 0x0f   //CPUID instruction  (two bytes opcode)    _asm _emit 0xa2    cmp eax, 1        //make sure eax return non-zero value    jl NOT_SUPPORTED  //If eax is zero, mmx not supported    xor eax, eax      //set eax to zero    inc eax           //Now increment eax to 1.  This instruction is                      //faster than the instruction "mov eax, 1"    _asm _emit 0x0f   //CPUID instruction    _asm _emit 0xa2    and edx, 0x00800000  //mask out all bits but mmx bit(24)    cmp edx, 0        // 0 = mmx not supported    jz  NOT_SUPPORTED // non-zero = Yes, mmx IS supported    mov  mmx_supported_local, 1  //set return value to 1NOT_SUPPORTED:    mov  eax, mmx_supported_local  //move return value to eax    pop edx          //CPUID trashed these    pop ecx    pop ebx  }  //mmx_supported_local=0; // test code for force don't support MMX  //printf("MMX : %u (1=MMX supported)\n",mmx_supported_local);  mmx_supported = mmx_supported_local;  return mmx_supported_local;}/* Combines the row recently read in with the previous row.   This routine takes care of alpha and transparency if requested.   This routine also handles the two methods of progressive display   of interlaced images, depending on the mask value.   The mask value describes which pixels are to be combined with   the row.  The pattern always repeats every 8 pixels, so just 8   bits are needed.  A one indicates the pixel is to be combined; a   zero indicates the pixel is to be skipped.  This is in addition   to any alpha or transparency value associated with the pixel.  If   you want all pixels to be combined, pass 0xff (255) in mask.  *//* Use this routine for x86 platform - uses faster MMX routine if machine   supports MMX */void /* PRIVATE */png_combine_row(png_structp png_ptr, png_bytep row, int mask){#ifdef PNG_USE_LOCAL_ARRAYS   const int png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};#endif   png_debug(1,"in png_combine_row_asm\n");   if (mmx_supported == 2) {#if !defined(PNG_1_0_X)       /* this should have happened in png_init_mmx_flags() already */       png_warning(png_ptr, "asm_flags may not have been initialized");#endif       png_mmx_support();   }   if (mask == 0xff)   {      png_memcpy(row, png_ptr->row_buf + 1,       (png_size_t)PNG_ROWBYTES(png_ptr->row_info.pixel_depth,       png_ptr->width));   }   /* GRR:  add "else if (mask == 0)" case?    *       or does png_combine_row() not even get called in that case? */   else   {      switch (png_ptr->row_info.pixel_depth)      {         case 1:         {            png_bytep sp;            png_bytep dp;            int s_inc, s_start, s_end;            int m;            int shift;            png_uint_32 i;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {                s_start = 0;                s_end = 7;                s_inc = 1;            }            else#endif            {                s_start = 7;                s_end = 0;                s_inc = -1;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  int value;                  value = (*sp >> shift) & 0x1;                  *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 2:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 6;               s_inc = 2;            }            else#endif            {               s_start = 6;               s_end = 0;               s_inc = -2;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0x3;                  *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 4:         {            png_bytep sp;            png_bytep dp;            int s_start, s_end, s_inc;            int m;            int shift;            png_uint_32 i;            int value;            sp = png_ptr->row_buf + 1;            dp = row;            m = 0x80;#if defined(PNG_READ_PACKSWAP_SUPPORTED)            if (png_ptr->transformations & PNG_PACKSWAP)            {               s_start = 0;               s_end = 4;               s_inc = 4;            }            else#endif            {               s_start = 4;               s_end = 0;               s_inc = -4;            }            shift = s_start;            for (i = 0; i < png_ptr->width; i++)            {               if (m & mask)               {                  value = (*sp >> shift) & 0xf;                  *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff);                  *dp |= (png_byte)(value << shift);               }               if (shift == s_end)               {                  shift = s_start;                  sp++;                  dp++;               }               else                  shift += s_inc;               if (m == 1)                  m = 0x80;               else                  m >>= 1;            }            break;         }         case 8:         {            png_bytep srcptr;            png_bytep dstptr;            png_uint_32 len;            int m;            int diff, unmask;            __int64 mask0=0x0102040810204080;#if !defined(PNG_1_0_X)            if ((png_ptr->asm_flags & PNG_ASM_FLAG_MMX_READ_COMBINE_ROW)                /* && mmx_supported */ )#else            if (mmx_supported)#endif            {               srcptr = png_ptr->row_buf + 1;               dstptr = row;               m = 0x80;               unmask = ~mask;               len  = png_ptr->width &~7;  //reduce to multiple of 8               diff = png_ptr->width & 7;  //amount lost               _asm               {                  movd       mm7, unmask   //load bit pattern                  psubb      mm6,mm6       //zero mm6                  punpcklbw  mm7,mm7                  punpcklwd  mm7,mm7                  punpckldq  mm7,mm7       //fill register with 8 masks                  movq       mm0,mask0                  pand       mm0,mm7       //nonzero if keep byte                  pcmpeqb    mm0,mm6       //zeros->1s, v versa                  mov        ecx,len       //load length of line (pixels)                  mov        esi,srcptr    //load source                  mov        ebx,dstptr    //load dest                  cmp        ecx,0         //lcr                  je         mainloop8endmainloop8:                  movq       mm4,[esi]                  pand       mm4,mm0                  movq       mm6,mm0                  pandn      mm6,[ebx]                  por        mm4,mm6                  movq       [ebx],mm4                  add        esi,8         //inc by 8 bytes processed                  add        ebx,8                  sub        ecx,8         //dec by 8 pixels processed                  ja         mainloop8mainloop8end:                  mov        ecx,diff                  cmp        ecx,0                  jz         end8                  mov        edx,mask                  sal        edx,24        //make low byte the high bytesecondloop8:                  sal        edx,1         //move high bit to CF                  jnc        skip8         //if CF = 0                  mov        al,[esi]                  mov        [ebx],alskip8:                  inc        esi                  inc        ebx

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产麻豆国产自产在线 | 亚洲国产精品久久久男人的天堂 | 色999日韩国产欧美一区二区| 国产一区二区网址| 日韩中文字幕亚洲一区二区va在线| 亚洲另类一区二区| 亚洲一区二区精品3399| 日韩伦理电影网| 一区二区在线观看免费视频播放 | 欧美精品123区| 欧美一级久久久久久久大片| 欧美理论片在线| 日韩一区二区在线观看视频| 欧美变态tickling挠脚心| 精品毛片乱码1区2区3区| 久久久久久久久久久电影| 欧美国产精品劲爆| 亚洲老司机在线| 香蕉乱码成人久久天堂爱免费| 婷婷中文字幕一区三区| 久久精工是国产品牌吗| 国产成人免费高清| 在线日韩国产精品| 精品日韩一区二区| 国产精品久久777777| 亚洲激情自拍偷拍| 美国毛片一区二区三区| 高清视频一区二区| 欧美在线小视频| 2020日本不卡一区二区视频| 综合激情成人伊人| 日本不卡视频在线观看| 国产成人免费视频网站 | 欧美亚洲国产bt| 欧美大肚乱孕交hd孕妇| 国产精品久久久一本精品| 亚洲夂夂婷婷色拍ww47| 韩国毛片一区二区三区| 在线欧美日韩精品| 久久久噜噜噜久噜久久综合| 一级做a爱片久久| 国产麻豆视频精品| 欧美伦理电影网| 国产精品国产精品国产专区不蜜| 午夜影院久久久| av动漫一区二区| 精品精品欲导航| 亚洲一二三专区| 成人aaaa免费全部观看| 欧美成人精品福利| 一区二区三区中文字幕电影| 国产精品69久久久久水密桃| 精品视频在线看| 亚洲欧美偷拍另类a∨色屁股| 久久99久久99精品免视看婷婷 | 毛片av一区二区| 精品视频色一区| 亚洲欧美日韩在线不卡| 成人激情免费视频| 久久久亚洲午夜电影| 蜜臀av性久久久久蜜臀aⅴ四虎| 日本久久电影网| 亚洲国产高清aⅴ视频| 狠狠色丁香久久婷婷综| 91精品国产综合久久久久久漫画 | 99视频精品免费视频| 欧美精品一区二区三区很污很色的| 天天综合日日夜夜精品| 色综合天天狠狠| 国产精品丝袜黑色高跟| 国产91丝袜在线观看| 久久人人爽人人爽| 国产福利不卡视频| 中文字幕av在线一区二区三区| 精品一区二区国语对白| 26uuu色噜噜精品一区二区| 九九在线精品视频| 久久精品一区二区三区av| 国产伦精品一区二区三区视频青涩| 日韩精品最新网址| 国产资源在线一区| 久久久一区二区三区捆绑**| 丁香一区二区三区| 亚洲天堂久久久久久久| 欧美性色欧美a在线播放| 亚洲一区视频在线观看视频| 欧美性感一类影片在线播放| 婷婷国产在线综合| 欧美xxxxxxxxx| 国产成人高清在线| 亚洲色图制服诱惑| 欧美日韩精品一区二区天天拍小说 | 欧美片网站yy| 久久99久久99| 国产精品福利一区二区| 色噜噜狠狠色综合欧洲selulu| 亚洲午夜激情网站| 精品国产制服丝袜高跟| 国产91丝袜在线观看| 一区二区三区免费在线观看| 欧美顶级少妇做爰| 国产成人在线视频播放| 一卡二卡欧美日韩| 精品国一区二区三区| 91丨九色丨蝌蚪富婆spa| 性久久久久久久| 久久久久久久精| 在线看不卡av| 国产自产v一区二区三区c| 亚洲视频免费在线观看| 91精品在线免费观看| 国产呦精品一区二区三区网站| 中文字幕永久在线不卡| 欧美一区二区福利视频| 不卡的av电影| 日韩国产在线观看| 亚洲人成精品久久久久| 26uuu国产在线精品一区二区| 色婷婷国产精品久久包臀| 国产一区二区精品久久| 午夜不卡av在线| 综合色天天鬼久久鬼色| www日韩大片| 91精品国产色综合久久| 一本到不卡精品视频在线观看| 久久aⅴ国产欧美74aaa| 一区二区三区四区不卡视频 | 成人av电影观看| 麻豆精品在线播放| 亚洲成a人在线观看| 国产精品成人免费精品自在线观看| 欧美一区二区福利视频| 欧美久久一区二区| 91蝌蚪porny| 国产91精品免费| 国产麻豆精品视频| 久久99久久久欧美国产| 午夜精品久久久久久久久久| 一区二区三区在线免费播放| 中文字幕在线观看不卡| 国产精品美女久久久久久久网站| 精品理论电影在线| 欧美成人伊人久久综合网| 在线播放日韩导航| 欧美日韩高清一区二区三区| 欧美伊人精品成人久久综合97 | 国产精品久久久久久一区二区三区| 日韩欧美视频在线| 在线不卡免费av| 4438成人网| 91精品黄色片免费大全| 91精品国产乱| 日韩一级黄色片| 日韩精品一区二区三区在线观看 | 欧美乱熟臀69xxxxxx| 欧美人妖巨大在线| 欧美日韩日日骚| 欧美日韩国产另类一区| 欧美挠脚心视频网站| 91精品国产黑色紧身裤美女| 日韩欧美一级二级三级| 欧美不卡一区二区| 久久久久97国产精华液好用吗| 国产亚洲一区二区在线观看| 久久精品一区二区三区av| 中文无字幕一区二区三区| 亚洲国产精品高清| 亚洲三级免费电影| 亚洲综合色丁香婷婷六月图片| 一区二区三区欧美视频| 五月天欧美精品| 经典三级视频一区| 成人精品鲁一区一区二区| 色婷婷精品久久二区二区蜜臀av| 欧美性受xxxx| 欧美精品一区二区三区蜜桃 | 亚洲在线成人精品| 日日欢夜夜爽一区| 国产成人综合亚洲91猫咪| av不卡一区二区三区| 欧美日韩www| 久久精品日产第一区二区三区高清版| 久久久www成人免费毛片麻豆| 一区免费观看视频| 日韩精品视频网| 丁香六月综合激情| 欧美裸体一区二区三区| 欧美经典一区二区三区| 一区二区三区日韩精品视频| 日韩成人一区二区三区在线观看| 国产精品亚洲视频| 欧美日韩国产色站一区二区三区| 久久久久久久精| 亚洲不卡在线观看| www.亚洲人| 精品福利av导航| 五月天网站亚洲| 99久久国产综合精品女不卡| 日韩精品一区二区三区在线观看 | 日本视频中文字幕一区二区三区|