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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pngvcrd.c

?? linux下的一款播放器
?? 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.5 - October 3, 2002 * For conditions of distribution and use, see copyright notice in png.h * Copyright (c) 1998-2002 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) {       /* this should have happened in png_init_mmx_flags() already */       png_warning(png_ptr, "asm_flags may not have been initialized");       png_mmx_support();   }   if (mask == 0xff)   {      png_memcpy(row, png_ptr->row_buf + 1,       (png_size_t)((png_ptr->width * png_ptr->row_info.pixel_depth + 7) >> 3));   }   /* 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 ((png_ptr->asm_flags & PNG_ASM_FLAG_MMX_READ_COMBINE_ROW)                /* && mmx_supported */ )            {               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                  dec        ecx                  jnz        secondloop8end8:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区资源| 国产日本欧洲亚洲| 懂色av中文一区二区三区| 亚洲人成小说网站色在线| 欧美电影免费提供在线观看| 91欧美一区二区| 国产福利一区二区三区在线视频| 亚洲风情在线资源站| 国产欧美一区二区在线| 91麻豆精品国产91久久久久久| 91浏览器在线视频| 国产sm精品调教视频网站| 日本不卡一二三| 亚洲电影你懂得| 亚洲欧美日韩在线不卡| 国产欧美日韩在线视频| 欧美电视剧在线观看完整版| 在线免费观看日韩欧美| 99精品国产99久久久久久白柏| 国产精品一区免费视频| 久久国产精品第一页| 天堂蜜桃91精品| 亚洲美女屁股眼交| 亚洲欧美在线aaa| 国产欧美精品一区二区色综合朱莉| 日韩色在线观看| 欧美丰满少妇xxxbbb| 欧美日韩在线直播| 色伊人久久综合中文字幕| 99久久777色| 99久久99久久精品免费看蜜桃| 国产69精品久久久久毛片| 国产呦萝稀缺另类资源| 麻豆91在线观看| 九色|91porny| 国产成人在线电影| 国产成人免费视频一区| 国产成人一区二区精品非洲| 国产福利91精品| 成人午夜精品一区二区三区| 国产福利电影一区二区三区| 大尺度一区二区| 成人午夜大片免费观看| 不卡影院免费观看| 91麻豆免费观看| 欧美亚洲另类激情小说| 欧美日韩精品福利| 日韩丝袜美女视频| 欧美精品一区二区不卡| 国产色产综合色产在线视频| 国产精品欧美综合在线| 中文字幕日本乱码精品影院| 亚洲品质自拍视频网站| 亚洲高清视频中文字幕| 免费精品视频最新在线| 国内精品嫩模私拍在线| 粉嫩在线一区二区三区视频| 99久久99久久精品免费看蜜桃| 91福利区一区二区三区| 3atv在线一区二区三区| 久久亚洲春色中文字幕久久久| 久久精品日产第一区二区三区高清版 | 91久久精品国产91性色tv| 在线观看日韩国产| 91精品国产综合久久蜜臀| 精品国产91乱码一区二区三区| 久久久高清一区二区三区| 中文字幕一区av| 亚洲午夜久久久| 黄色日韩网站视频| 91蜜桃视频在线| 日韩一区二区三区电影| 国产亚洲欧美激情| 夜夜嗨av一区二区三区网页| 秋霞电影网一区二区| 国产精品白丝jk白祙喷水网站 | 一本久久a久久精品亚洲| 色999日韩国产欧美一区二区| 欧美放荡的少妇| 国产日韩一级二级三级| 亚洲一区二区免费视频| 国模无码大尺度一区二区三区| 99国产欧美另类久久久精品| 69精品人人人人| 中文字幕制服丝袜成人av| 天堂久久久久va久久久久| 国产成人免费在线| 91精品欧美一区二区三区综合在| 日本一区二区三区四区 | 久久97超碰国产精品超碰| www.视频一区| 日韩一本二本av| 最新日韩av在线| 久久超碰97人人做人人爱| 在线精品视频一区二区三四| 久久精品亚洲国产奇米99| 婷婷开心久久网| 一本一道久久a久久精品| 2019国产精品| 日韩精品一卡二卡三卡四卡无卡| youjizz国产精品| 精品福利二区三区| 亚洲mv在线观看| 色屁屁一区二区| 国产精品美女久久久久av爽李琼 | 亚洲欧洲日产国码二区| 麻豆91在线看| 欧美高清视频不卡网| 日韩毛片精品高清免费| 国内久久精品视频| 欧美一区二区三区在| 亚洲成人激情av| 色诱视频网站一区| 成人欧美一区二区三区| 国产精品亚洲一区二区三区在线| 日韩视频一区二区三区在线播放 | fc2成人免费人成在线观看播放| 91精品福利在线一区二区三区| 亚洲日本在线天堂| 成人激情图片网| 欧美韩日一区二区三区四区| 韩国成人精品a∨在线观看| 欧美一区二区三区成人| 亚洲午夜免费视频| 欧美日韩一区二区三区四区| 亚洲女同ⅹxx女同tv| 床上的激情91.| 中文字幕av一区 二区| 国产精品亚洲专一区二区三区| 久久亚洲捆绑美女| 国产精品中文字幕一区二区三区| 欧美va亚洲va| 国产中文一区二区三区| 欧美大度的电影原声| 久久精品国内一区二区三区 | 日韩美女视频一区二区| 99精品在线免费| 亚洲裸体xxx| 93久久精品日日躁夜夜躁欧美| 中文字幕一区三区| 99久久99久久精品国产片果冻 | 激情综合色丁香一区二区| 日韩免费看的电影| 国产在线播放一区| 亚洲国产精品高清| 色综合久久综合网97色综合| 亚洲综合一区二区三区| 欧美高清性hdvideosex| 精品影视av免费| 国产精品色呦呦| 一本一道久久a久久精品| 亚洲成av人片| 精品少妇一区二区三区在线播放| 国产一区二三区| 国产精品美女久久久久久久久久久 | 欧美美女bb生活片| 美国十次综合导航| 国产三级欧美三级| 91丨porny丨国产| 亚洲午夜久久久久久久久电影网| 7777精品伊人久久久大香线蕉| 裸体在线国模精品偷拍| 国产欧美日韩卡一| 欧美亚日韩国产aⅴ精品中极品| 日本成人中文字幕| 欧美韩日一区二区三区| 一本大道久久a久久精品综合| 天堂午夜影视日韩欧美一区二区| 欧美成人官网二区| 99九九99九九九视频精品| 亚洲成人av中文| 久久精品男人天堂av| 色综合久久久久久久久久久| 男男视频亚洲欧美| 国产精品久久精品日日| 91精品国产福利| 成人av在线网站| 日本免费新一区视频| 国产精品视频第一区| 91精品国产欧美日韩| www.日本不卡| 秋霞影院一区二区| 中文字幕视频一区| 欧美成人一级视频| 色噜噜狠狠色综合中国| 裸体一区二区三区| 亚洲免费伊人电影| 日韩免费观看高清完整版在线观看| 99久久国产免费看| 久久精品国产亚洲aⅴ| 亚洲欧美电影一区二区| 久久新电视剧免费观看| 欧美日韩亚洲丝袜制服| 成人午夜激情视频| 九九视频精品免费| 亚洲成人av福利| 亚洲理论在线观看| 国产精品视频你懂的| 精品三级在线看| 欧美精选午夜久久久乱码6080|