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

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

?? fs2.c

?? MPEG2 PLAYER in linux
?? C
字號:
/* * fs2.c -- * *      Procedures dealing with Floyd-Steinberg dithering with 2 error *      values propagated. * *//* * Copyright (c) 1995 The Regents of the University of California. * All rights reserved. *  * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement is * hereby granted, provided that the above copyright notice and the following * two paragraphs appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */#include "video.h"#include "dither.h"#include "fs2.h"#include "proto.h"#ifdef __STDC__#include <stdlib.h>#else#include <malloc.h>	/* member of stdlib.h included in header.h */#endif/* Structures for precomputed error propogation values. */static FS2DithVal lum_index[256];static FS2DithVal cr_index[256];static FS2DithVal cb_index[256];/* *-------------------------------------------------------------- * * InitFS2Dither -- * *	Initializes structures for precomputed 2 error f-s dithering. *      The value field of the structure contains the pixel component  *      of the particular channel in question. Thus the addition of *      the value field of a structure in the luminance index, a  *      structure in the Cr index, and a structure in the Cb index will *      yeild a color number. This color number can then be transformed *      into a pixel value to be displayed. Each channel can then be *      processed (i.e. dithered) separately, with the results being *      added up and remapped to yield a final pixel value. * * Results: *	None. * * Side effects: *      None. * *-------------------------------------------------------------- */void InitFS2Dither(){  int i;  /* For each possible pixel value, precompute propogated error and     store in array.  */    for (i=0; i<256; i++) {    lum_index[i].value = (i * LUM_RANGE) / 256;    lum_index[i].e1 = (i-lum_values[lum_index[i].value]) / 2;    lum_index[i].e3 = (i - lum_values[lum_index[i].value]) - lum_index[i].e1;    lum_index[i].value *= LUM_BASE;    cr_index[i].value = (i * CR_RANGE) / 256;     cr_index[i].e1 = (i - cr_values[cr_index[i].value]) / 2;    cr_index[i].e3 = (i - cr_values[cr_index[i].value]) - cr_index[i].e1 ;    cr_index[i].value *= CR_BASE;    cb_index[i].value = (i * CB_RANGE) / 256;     cb_index[i].e1 = (i - cb_values[cb_index[i].value]) / 2;    cb_index[i].e3 = (i - cb_values[cb_index[i].value]) - cb_index[i].e1;    cb_index[i].value *= CB_BASE;  }}/* *-------------------------------------------------------------- * * DitherImage -- * *	Converts lum, cr, cb image planes into fixed colormap *      space. * * Results: *	the display plane is replaced by 8-bit colormap space *      image. * * Side effects: *      Hopefully, none. * *-------------------------------------------------------------- */void FS2DitherImage(lum, cr, cb, disp, rows, cols)     unsigned char *lum, *cr, *cb, *disp;     int rows, cols;{  static char *cur_row_error, *next_row_error;  static int first = 1;  char  *cur_row_err_mark, *next_row_err_mark;  char *temp;  int i, j, pixsum, c_cols;  unsigned char *cur_row, *channel, *dest_row;  FS2DithVal *chan_index;  /* Allocate error arrays. */  if (first) {    cur_row_error = (char *) malloc((unsigned int) cols+2);    next_row_error = (char *) malloc((unsigned int) cols+2);    first = 0;  }  /* Initialize error arrays. */  memset(cur_row_error, 0, cols+2);  memset(next_row_error, 0, cols+2);  /* Use luminance values first. */  /* For each two rows, do... */  for(i=0; i<rows; i+=2) {    /* Establish pointer to current source and destination rows. */    cur_row = lum + (i*cols);    dest_row = disp + (i*cols);    /* Establish pointers to error arrays. */    cur_row_err_mark = cur_row_error + 1;    next_row_err_mark = next_row_error + 1;        /* For each column within first row do... */    for (j=0; j<cols; j++) {      /* Calculate pixel value with error. */      pixsum = *cur_row + *cur_row_err_mark;      /* Bounds check. */      if (pixsum < 0) pixsum = 0;      else if (pixsum > 255) pixsum = 255;      /* Establish dest value, propogate errors. */      *dest_row = lum_index[pixsum].value;      *(cur_row_err_mark+1) += lum_index[pixsum].e1;       *next_row_err_mark += lum_index[pixsum].e3;       /* Advance pointers. */      cur_row++;      dest_row++;      cur_row_err_mark++;      next_row_err_mark++;    }    /* Switch error arrays, so next row errors are now current row errors, and       vice versa.     */    temp = cur_row_error;    cur_row_error = next_row_error;    next_row_error = temp;    /* Reset next row errors. */    memset(next_row_error, 0, cols+2);     /* Establish pointers for second row. This one will be processed right to       left to establish serpantine motion.    */    cur_row += cols-1;    dest_row += cols-1;    cur_row_err_mark = cur_row_error + cols;    next_row_err_mark = next_row_error + cols;    /* Process each column... */    for (j=0; j<cols; j++) {      pixsum = *cur_row + *cur_row_err_mark;      if (pixsum < 0) pixsum = 0;      else if (pixsum > 255) pixsum = 255;            *dest_row = lum_index[pixsum].value;      *(cur_row_err_mark-1) += lum_index[pixsum].e1;       *next_row_err_mark += lum_index[pixsum].e3;             cur_row--;      dest_row--;      cur_row_err_mark--;      next_row_err_mark--;    }    /* Switch error arrays. */    temp = cur_row_error;    cur_row_error = next_row_error;    next_row_error = temp;    /* Reset next row errors. */    memset(next_row_error, 0, cols+2);   }  /* Reset error arrays. */  memset(cur_row_error, 0, cols+2);     /* Establish column length divided by two. */  c_cols = cols >> 1;  /* Set channel to Cr. Use Cr index. */  channel = cr;  chan_index = cr_index;   repeat:  /* Process each row of chrominance data... */  for (i=0; i < rows; i+=2) {    /* Establish pointers. */    cur_row = channel + ((i>>1)*c_cols);    dest_row = disp + (i*cols);    cur_row_err_mark = cur_row_error+1;    next_row_err_mark = next_row_error+1;    /* For each column in row... */    for (j=0; j<cols; j++) {      int p_val;      /* Get pixel value as twos bit complement. */      p_val = *cur_row;      /* Add error term. */      pixsum = *cur_row_err_mark + p_val;      /* Bounds check. */      if (pixsum < 0) pixsum = 0;      else if (pixsum > 255) pixsum = 255;      /* Increment dest value. */      *dest_row += chan_index[pixsum].value;      /* Propogate error values. */      *(cur_row_err_mark+1) += chan_index[pixsum].e1;       *next_row_err_mark += chan_index[pixsum].e3;       /* If count is odd, advance source pointer (Cr and Cb channels are 2:1 	 subsampled.      */      if (j&1) cur_row++;      /* Advance destination and error pointers. */      dest_row++;      cur_row_err_mark++;      next_row_err_mark++;    }    /* Switch error arrays. */    temp = cur_row_error;    cur_row_error = next_row_error;    next_row_error = temp;    /* Reset next row errors. */    memset(next_row_error, 0, cols+2);    /* Re-establish pointers. */    cur_row += c_cols-1;    dest_row += cols-1;    cur_row_err_mark = cur_row_error+cols;    next_row_err_mark = next_row_error+cols;    /* Process second row right to left. */    for (j=0; j<cols; j++) {      int p_val;      /* Get source value as twos bit complement. */      p_val = *cur_row;      /* Add error. */      pixsum = *cur_row_err_mark + p_val;      /* Bounds check. */      if (pixsum < 0) pixsum = 0;      else if (pixsum > 255) pixsum = 255;      /* Increment dest value. */      *dest_row += chan_index[pixsum].value;      /* Propogate errors. */      *(cur_row_err_mark-1) += chan_index[pixsum].e1;       *next_row_err_mark += chan_index[pixsum].e3;       /* If column counters is odd, decrement source pointer. */      if (j&1) cur_row--;      /* Decrement dest and error pointers. */      dest_row--;      cur_row_err_mark--;      next_row_err_mark--;    }    /* Switch error arrays. */    temp = cur_row_error;    cur_row_error = next_row_error;    next_row_error = temp;    /* Reinitialize next row errors. */    memset(next_row_error, 0, cols+2);  }  /* If Cr channel completed, set channel to Cb and Cb index and repeat. */  if (channel == cr) {    channel = cb;    chan_index = cb_index;    memset(cur_row_error, 0, cols+2);    goto repeat;  }  /* Establish pointer to start of display frame. */  dest_row = disp;  /* Transform all display values to pixel values. */  for (i=0; i<rows; i++) {    for (j=0; j<cols; j++) {      *dest_row =  pixel[*dest_row];      dest_row++;    }  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜不卡av免费| 国产视频视频一区| 天天综合色天天综合色h| 欧美三片在线视频观看| 免费在线看一区| 日韩精品在线看片z| 九九九久久久精品| 国产欧美精品日韩区二区麻豆天美| 国产高清在线精品| 国产精品久久久久久亚洲毛片| 一本色道**综合亚洲精品蜜桃冫| 亚洲sss视频在线视频| 日韩视频在线观看一区二区| 国产精品66部| 一区二区三区四区在线播放| 日韩亚洲欧美高清| 国产黄色精品网站| 亚洲激情在线播放| 日韩免费视频一区| 国产a久久麻豆| 香蕉成人啪国产精品视频综合网| 精品精品国产高清一毛片一天堂| 国产成人99久久亚洲综合精品| 一区二区视频在线看| 91精品国产综合久久久久久| 国产精品一区二区久久精品爱涩| 亚洲伊人伊色伊影伊综合网| 日韩你懂的在线观看| 99热在这里有精品免费| 日韩精品亚洲专区| 中文字幕一区二区不卡| 日韩亚洲欧美一区| 色婷婷综合久久久久中文 | 欧美精品国产精品| 国产一区二区调教| 一区二区三区中文字幕在线观看| 精品成人免费观看| 欧美亚洲一区二区三区四区| 国产成人精品综合在线观看 | 色综合久久六月婷婷中文字幕| 石原莉奈在线亚洲二区| 国产精品女同一区二区三区| 69成人精品免费视频| 成人久久久精品乱码一区二区三区| 亚洲成a人v欧美综合天堂下载| 久久免费电影网| 欧美丰满少妇xxxxx高潮对白| 成人手机在线视频| 蜜臀av亚洲一区中文字幕| 亚洲另类中文字| 日本一二三不卡| 欧美成人r级一区二区三区| 欧美视频日韩视频| 99久久免费精品| 国产盗摄视频一区二区三区| 青娱乐精品视频在线| 亚洲成人三级小说| 亚洲乱码中文字幕| 国产精品丝袜黑色高跟| 日韩精品一区二区在线| 欧美人妇做爰xxxⅹ性高电影 | 欧美三级中文字幕| 99精品国产一区二区三区不卡| 国产一区二区视频在线播放| 麻豆精品蜜桃视频网站| 奇米色777欧美一区二区| 依依成人综合视频| 亚洲男人的天堂一区二区| 中文字幕国产一区| 国产精品国产三级国产aⅴ入口| 国产色综合久久| www欧美成人18+| 精品国产精品网麻豆系列| 91精品国模一区二区三区| 欧美日本国产一区| 欧美一级专区免费大片| 69久久99精品久久久久婷婷| 欧美绝品在线观看成人午夜影视| 欧美三级电影一区| 欧美挠脚心视频网站| 精品视频免费在线| 欧美猛男男办公室激情| 5566中文字幕一区二区电影| 欧美一区二区三区啪啪| 日韩一区国产二区欧美三区| 日韩一二三区视频| 久久在线免费观看| 中文字幕av资源一区| 亚洲婷婷综合色高清在线| 亚洲嫩草精品久久| 亚洲成人在线观看视频| 日韩成人精品在线观看| 九九**精品视频免费播放| 国产一区二区免费视频| 成人激情动漫在线观看| 97精品电影院| 欧美日韩一区二区在线观看| 日韩欧美亚洲一区二区| 2017欧美狠狠色| 国产精品久久久久久久久免费丝袜| 中文字幕一区二区5566日韩| 一区二区三区精品在线观看| 免费成人av在线| 国产69精品久久久久毛片| 色猫猫国产区一区二在线视频| 欧美夫妻性生活| 国产亚洲精品资源在线26u| 中文字幕一区二区三区在线观看| 亚洲综合色丁香婷婷六月图片| 日韩不卡一区二区| 国产超碰在线一区| 欧美午夜电影网| 久久午夜电影网| 有坂深雪av一区二区精品| 婷婷亚洲久悠悠色悠在线播放| 国产一区二区三区免费播放| gogo大胆日本视频一区| 欧美高清性hdvideosex| 国产精品日产欧美久久久久| 亚洲国产日韩在线一区模特| 国产美女在线精品| 91福利视频在线| 精品国产不卡一区二区三区| 亚洲欧美日韩久久精品| 国模娜娜一区二区三区| 色综合色综合色综合色综合色综合 | 麻豆精品视频在线| 91丨国产丨九色丨pron| 日韩精品一区二区三区在线播放| 国产精品网站在线观看| 日韩成人伦理电影在线观看| 91在线无精精品入口| 精品国免费一区二区三区| 一区二区高清在线| 成人免费不卡视频| 日韩网站在线看片你懂的| 一区二区国产视频| 高清av一区二区| 日韩一级高清毛片| 亚洲大片免费看| 97久久精品人人做人人爽| 26uuu精品一区二区| 日韩激情一二三区| 一本大道久久a久久综合| 欧美激情一区二区三区全黄| 九色|91porny| 日韩三级视频在线观看| 偷拍日韩校园综合在线| 91国内精品野花午夜精品| 亚洲国产岛国毛片在线| 国产精品自拍毛片| 日韩欧美一级在线播放| 日日骚欧美日韩| 欧美日韩久久久久久| 中文成人av在线| 国产精品亚洲人在线观看| 日韩精品专区在线影院重磅| 日本视频一区二区| 91精品国产综合久久精品图片| 亚洲欧美aⅴ...| 一本一本大道香蕉久在线精品| 国产精品大尺度| 风间由美一区二区三区在线观看 | 国产人妖乱国产精品人妖| 精品一区二区三区不卡| 精品乱码亚洲一区二区不卡| 青青草97国产精品免费观看无弹窗版| 欧美日韩不卡视频| 天天色 色综合| 欧美午夜视频网站| 亚洲一区精品在线| 欧美视频一区二区| 亚洲成人激情社区| 91麻豆精品国产91久久久久久久久| 亚洲影院在线观看| 91精品国产综合久久久久久| 免费不卡在线观看| 久久亚区不卡日本| 成人激情av网| 亚洲综合丝袜美腿| 欧美日韩国产高清一区二区三区 | av网站免费线看精品| 中文字幕一区二区三中文字幕| 91在线一区二区| 亚洲v精品v日韩v欧美v专区| 欧美一区二区三区影视| 久久疯狂做爰流白浆xx| 国产情人综合久久777777| 成人精品国产免费网站| 中文字幕欧美一| 欧美亚洲高清一区二区三区不卡| 丝袜美腿成人在线| 久久丝袜美腿综合| av在线播放一区二区三区| 一区二区三区四区不卡在线| 欧美一卡2卡3卡4卡| 成人小视频在线| 亚洲电影一区二区| 精品欧美一区二区三区精品久久| 国产99久久久国产精品免费看 |