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

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

?? imlib2_filter.c

?? 一個很棒的視頻服務器
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include <X11/Xlib.h>#include <Imlib2.h>#include "camserv.h"#include "alpha_map.h"#include "camconfig.h"#include "video.h"#include "filter.h"#include "log.h"#define MODNAME "imlib2filter"#define MIN(x,y) (((x)<(y)) ? (x) : (y))#define MAX(x,y) (((x)>(y)) ? (x) : (y))typedef struct rand_filter_st {  Imlib_Image image;  DATA32 *img_data;  int x, y;} Imlib2Filter;/* * filter_init:        Standard filter initialization routine. * */void *filter_init( CamConfig *ccfg, char *section_name ){  Imlib2Filter *res;  const char *image_name;  char buf[ 1024 ];  int isbw, err;  isbw = camconfig_query_int( ccfg, SEC_VIDEO, VIDCONFIG_ISB_N_W, &err );  if( err ) camserv_log( MODNAME, "Config inconsistancy!  (isb_n_w)" );  if( isbw == 1 ) {    camserv_log( MODNAME, "This filter does not support B&W!" );    return NULL;  }  if( (res = malloc( sizeof( *res ))) == NULL ){    camserv_log( MODNAME, "FATAL! Couldn't allocate %d bytes", sizeof( *res ));    return NULL;  }    if( (image_name = camconfig_query_str( ccfg, section_name, "file" ))== NULL){    camserv_log( MODNAME, "FATAL!  [%s]:file not specified!", section_name  );    free( res );    return NULL;  }  strncpy( buf, image_name, sizeof( buf ) -1 );  buf[ sizeof( buf ) - 1 ] = '\0';  if( !(res->image = imlib_load_image_immediately( buf ))){    camserv_log( MODNAME, "FATAL!  Load error loading \"%s\"", buf );    free( res );    return NULL;  }  imlib_context_set_image( res->image );  res->x = camconfig_query_def_int( ccfg, section_name, "x", 0 );  res->y = camconfig_query_def_int( ccfg, section_name, "y", 0 );  res->img_data = imlib_image_get_data_for_reading_only();  return res;}/* * filter_deinit:  Standard filter deinit routine  */void filter_deinit( void *filter_dat ){  Imlib2Filter *ifilter = filter_dat;  if( !ifilter ) return;  imlib_context_set_image( ifilter->image );  imlib_free_image();  free( ifilter );}staticint image_outside_pic( int img_x, int img_y, int img_width, int img_height,		       const Video_Info *vinfo ){  if( img_x >= vinfo->width || img_y >= vinfo->height )    return 1;    if( img_x + img_width < 0 || img_y + img_height < 0 )     return 1;  return 0;}void filter_func( char *in_data, char **out_data, void *cldat, 		  const Video_Info *vinfo_in, Video_Info *vinfo_out ){  Imlib2Filter *ifilter = cldat;  unsigned char *src_cp, *dest_cp, alphaval, alphainv;  int width, height, dest_addy, src_addy, x, y;  int min_x, min_y, max_x, max_y;  /* In-place mangling */  *vinfo_out = *vinfo_in;  *out_data = in_data;    imlib_context_set_image( ifilter->image );  width = imlib_image_get_width();  height = imlib_image_get_height();  if( image_outside_pic( ifilter->x, ifilter->y, width, height, vinfo_in ))    return;  min_x = MAX( 0, ifilter->x );  min_y = MAX( 0, ifilter->y );  max_x = MIN( vinfo_in->width,  ifilter->x + width );  max_y = MIN( vinfo_in->height, ifilter->y + height );  /* Start out the source at where we are going to place the pic */  src_cp = (unsigned char *)ifilter->img_data;  src_cp += (((min_y - ifilter->y) * width) + (min_x - ifilter->x)) * 4;  /* Figure out how much we are going to add to the source pointer to get it     from the end of 1 scanline to the beginning of the next */  src_addy = (min_x - ifilter->x) + /* Beginning clipping */             (ifilter->x + width - max_x );  src_addy *= 4;    dest_cp = in_data;  dest_cp += ((min_y * vinfo_in->width) + min_x) * 3;  /* Figure out the destination addy, which will be at MOST vinfo->width,     and at LEAST 0 */  dest_addy = (vinfo_in->width - max_x + min_x) * 3;  for( y=min_y; y< max_y; y++ ){    for( x= min_x; x< max_x; x++ ){      alphaval   = *(src_cp + 3);      alphainv = 255 - alphaval;      *(dest_cp + 0) = alpha_map[ alphaval ][*(src_cp + 2)] +	               alpha_map[ alphainv ][*(dest_cp + 0)];      *(dest_cp + 1) = alpha_map[ alphaval ][*(src_cp + 1)] +	               alpha_map[ alphainv ][*(dest_cp + 1)];      *(dest_cp + 2) = alpha_map[ alphaval ][*(src_cp + 0)] +	               alpha_map[ alphainv ][*(dest_cp + 2)];      dest_cp += 3;      src_cp += 4;    }    dest_cp += dest_addy;    src_cp  += src_addy;  }}void filter_validation(){  Filter_Init_Func init = filter_init;  Filter_Deinit_Func deinit = filter_deinit;  Filter_Func_Func func = filter_func;  if( init != NULL && deinit != NULL && func != NULL ) return;}/* * modinfo_query:  Routine to return information about the variables *                 accessed by this particular module. * * Return values:  Returns a malloced ModInfo structure, for which *                 the caller must free, or NULL on failure. */ModInfo *modinfo_query(){  ModInfo *res;  if( (res = modinfo_create( 3 )) == NULL )    return NULL;  modinfo_varname_set( res, 0, "file" );  modinfo_desc_set( res, 0, "File location of the image to import" );  res->vars[ 0 ].type = MODINFO_TYPE_STR;  modinfo_varname_set( res, 1, "x" );  modinfo_desc_set( res, 1, "X location to place the picture" );  res->vars[ 1 ].type = MODINFO_TYPE_INT;  modinfo_varname_set( res, 2, "x" );  modinfo_desc_set( res, 2, "Y location to place the picture" );  res->vars[ 2 ].type = MODINFO_TYPE_INT;  return res;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品一区二区三区嫩草| 91精品国产综合久久久蜜臀图片| 精品一区二区影视| 日韩黄色一级片| 蜜臀va亚洲va欧美va天堂| 午夜精品123| 免费高清成人在线| 美女任你摸久久| 男人操女人的视频在线观看欧美| 爽好久久久欧美精品| 日韩激情中文字幕| 精品一区二区三区在线观看国产 | 99国产欧美久久久精品| 国产成人一区在线| av资源网一区| 在线观看日产精品| 51精品国自产在线| 欧美精品一区二区三| 中文成人av在线| 一区二区三区不卡视频| 日本伊人精品一区二区三区观看方式| 亚洲成人av电影| 九色综合国产一区二区三区| 国产成人av一区| 97久久超碰国产精品| 欧美色男人天堂| 国产日韩欧美制服另类| 一个色综合网站| 久久精品免费看| 色呦呦国产精品| 欧美大胆一级视频| 中文字幕一区二区三| 日本亚洲最大的色成网站www| 激情图片小说一区| 91在线国内视频| 欧美一级一区二区| 亚洲免费观看高清| 国产精品主播直播| 欧美日韩精品免费| 国产日韩影视精品| 亚洲bt欧美bt精品| 99久久久久免费精品国产| 日韩三级视频在线观看| 国产精品剧情在线亚洲| 久久99在线观看| 欧美三级电影精品| 国产精品嫩草99a| 美女视频黄a大片欧美| 91久久久免费一区二区| 国产欧美视频一区二区三区| 天堂久久一区二区三区| 波多野结衣在线一区| 日韩亚洲欧美一区二区三区| 亚洲欧美日韩小说| 丰满亚洲少妇av| 精品免费一区二区三区| 亚洲国产sm捆绑调教视频| www.亚洲精品| 久久男人中文字幕资源站| 日本在线观看不卡视频| 欧美羞羞免费网站| 亚洲免费色视频| www.日韩在线| 中文字幕欧美日韩一区| 精品一区二区三区在线观看国产| 欧美日本视频在线| 亚洲国产欧美另类丝袜| 色综合亚洲欧洲| 天堂一区二区在线免费观看| 91麻豆福利精品推荐| 国产精品久久福利| 99久久伊人久久99| 中文字幕免费不卡在线| 国产成人精品免费一区二区| 国产三级精品三级在线专区| 国产馆精品极品| 中文字幕高清一区| av亚洲精华国产精华精| 自拍偷在线精品自拍偷无码专区| 99久久伊人久久99| 亚洲综合丝袜美腿| 欧美日韩中字一区| 免费观看91视频大全| www国产精品av| 国产精品一卡二卡| 国产精品福利一区| 97精品电影院| 亚洲一区二区三区在线看| 欧美吞精做爰啪啪高潮| 午夜精品爽啪视频| 日韩精品一区二区三区三区免费| 精品一区二区日韩| 欧美国产综合一区二区| 91在线国产福利| 亚洲成人av在线电影| 欧美xxxx老人做受| 本田岬高潮一区二区三区| 夜夜精品浪潮av一区二区三区| 欧美日精品一区视频| 久久99这里只有精品| 国产精品不卡一区二区三区| 欧美午夜理伦三级在线观看| 日本aⅴ精品一区二区三区| 国产欧美一区二区精品仙草咪 | 91久久一区二区| 免费成人av资源网| 中文字幕一区二区三中文字幕| 91黄色免费观看| 国内精品久久久久影院色| 综合av第一页| 日韩欧美激情一区| av欧美精品.com| 美女网站视频久久| 亚洲人成在线观看一区二区| 宅男噜噜噜66一区二区66| 成人av手机在线观看| 日韩精品电影在线| 亚洲靠逼com| 久久久精品国产免大香伊 | 日韩一级完整毛片| eeuss鲁一区二区三区| 全国精品久久少妇| 亚洲一二三区不卡| 亚洲欧美综合在线精品| 日韩欧美三级在线| 欧美日韩国产一级片| 成人免费精品视频| 韩国一区二区在线观看| 日韩精品成人一区二区三区| 自拍av一区二区三区| 久久人人超碰精品| 日韩欧美高清一区| 欧美日本视频在线| 欧美在线一二三| 91视频com| 白白色亚洲国产精品| 国产一区二区导航在线播放| 日韩电影在线免费| 午夜视频一区二区三区| 亚洲老司机在线| 亚洲猫色日本管| 国产精品不卡在线| 中文字幕在线观看不卡视频| ww久久中文字幕| 久久久另类综合| 精品国产91九色蝌蚪| 26uuu欧美| 国产日韩影视精品| 中文一区二区完整视频在线观看| 精品国产一区二区三区久久久蜜月| 欧美性猛交xxxx黑人交| 91久久线看在观草草青青| 一本大道久久a久久综合婷婷| 国产69精品久久777的优势| 国产精品羞羞答答xxdd| 国产成人啪午夜精品网站男同| 黄色资源网久久资源365| 狠狠色综合播放一区二区| 国模冰冰炮一区二区| 国产在线一区二区综合免费视频| 美女视频免费一区| 国产一区二区三区四区五区美女| 国产精一品亚洲二区在线视频| 国产精品主播直播| 99久久综合国产精品| 欧美色图12p| 欧美一卡二卡在线| 久久欧美中文字幕| 国产精品入口麻豆九色| 亚洲人吸女人奶水| 首页欧美精品中文字幕| 精彩视频一区二区| 成年人国产精品| 欧美性受xxxx黑人xyx性爽| 欧美丰满高潮xxxx喷水动漫| 日韩视频一区二区三区在线播放| 久久综合久久综合亚洲| 中文字幕中文字幕在线一区 | 久久综合成人精品亚洲另类欧美| 久久综合狠狠综合久久综合88| 国产精品麻豆久久久| 夜夜精品视频一区二区| 精品一区精品二区高清| 99久久国产综合色|国产精品| 欧美日韩国产影片| 国产女人水真多18毛片18精品视频| 亚洲日本在线天堂| 老司机精品视频一区二区三区| bt欧美亚洲午夜电影天堂| 欧美一区二区视频免费观看| 国产日韩三级在线| 日本一区中文字幕| 97精品超碰一区二区三区| 91精品国产欧美一区二区18 | 91精品国产综合久久蜜臀| 国产日韩欧美a| 日韩经典中文字幕一区| 色综合久久88色综合天天| 精品国产成人在线影院 | 91精品国产综合久久福利|