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

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

?? filter.c

?? 一個很棒的視頻服務器
?? C
字號:
/*  camserv - An internet streaming picture application * *  Copyright (C) 1999-2002  Jon Travis (jtravis@p00p.org) * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "ltdl.h"#include "log.h"#include "camconfig.h"#include "filter.h"#include "video.h"#define MODNAME  "filter"struct filter_st {  char section_name[ MAX_SECTION_NAME + 1 ];  Filter_Init_Func filter_init;  Filter_Deinit_Func filter_deinit;  Filter_Func_Func filter_func;  ModInfo_QueryFunc modinfo_func;  void *filter_cldat;};/* * filter_list_init:  Initialize the filter list.  This routine will *                    loop through all of the filters and notify them *                    all that they need to initialize (in addition to *                    storing returned clientdata information from the *                    filter module) * * Arguments:         filters = Filter list as returned by filter_setup *                    ccfg    = Camera configuration */void filter_list_init( Filter *filters, CamConfig *ccfg ){  int i;  if( filters == NULL ) return;  for( i=0; filters[ i ].filter_init != NULL; i++ ){    void *fres;    fres = filters[ i ].filter_init( ccfg, filters[ i ].section_name );    filters[ i ].filter_cldat = fres;  }}/* * filter_list_deinit:  Deinitialize all of the filters in the filter list. * * Arguments:           filters = Filter list as returned by filter_setup */void filter_list_deinit( Filter *filters ){  int i;  for( i=0; filters[ i ].filter_init != NULL; i++ ){    filters[ i ].filter_deinit( filters[ i ].filter_cldat );  }}/* * filter_list_process:  Process picture information through all of the *                       filters.  The filters may change the composition *                       of the picture, the size of it, etc.  It is required *                       that the locations for storing the pictures be at  *                       least as big as the maximum picture size. * * Arguments:            filters = Filter list to pass the pictures through *                       picture = Input picture to filter *                       final_pic_out = Location to place final picture *                       vinfo = Information about 'picture' *                       out_vinfo = Information about 'final_pic_out' */void filter_list_process( Filter *filters, char *picture, char *final_pic_out,			  const Video_Info *vinfo, Video_Info *out_vinfo ){  Video_Info last_vinfo;  char *last_out;  int i;  last_out = picture;  last_vinfo = *vinfo;  for( i=0; filters[ i ].filter_init != NULL; i++ ){    char *outdata;    Video_Info outvinfo;    int is_last_filter;    is_last_filter = (filters[ i + 1 ].filter_init == NULL ? 1 : 0);    if( is_last_filter )      outdata = final_pic_out;    else      outdata = NULL;    filters[ i ].filter_func( last_out, &outdata, filters[ i ].filter_cldat,			      &last_vinfo, &outvinfo );    last_out = outdata;    last_vinfo = outvinfo;  }  if( last_out != final_pic_out ){    memmove( final_pic_out, last_out, last_vinfo.nbytes );  }  *out_vinfo = last_vinfo;}/* * filter_setup:  Attempt to use filter information from the cam config to *                load the filter libraries. *                 * Arugments:     ccfg = Camera configuration *                reserr = Err result.  == 0 on no error, 1 if an error occured *           * Return values:  reserr should be checked for error results.  The return *                 value is filter information to be passed into other filter_ *                 commands. */Filter *filter_setup( CamConfig *ccfg, int *reserr ){  int err, nfilters, i;  const char *val;  char key[ 1024 ];  lt_dlhandle dlhandle;  Filter *filters;  nfilters = camconfig_query_int( ccfg, SEC_FILTERS, "num_filters", &err );  if( err ) {    *reserr = 0;    return NULL;  }  if( (filters = malloc( sizeof( *filters ) * (nfilters+1) )) == NULL ){    camserv_log( MODNAME, "Error allocating memory for filter storage!" );    *reserr = 1;    return NULL;  }  for( i=0; i< nfilters; i++ ){    sprintf( key, "filter%d_section", i );    if( (val = camconfig_query_str( ccfg, SEC_FILTERS, key )) == NULL ){      camserv_log( MODNAME, "[%s]:%s key/val pair not "		   "found in cfg file", SEC_FILTERS, key );      *reserr = 1;      free( filters );      return NULL;    }    strncpy( key, val, sizeof( key ) - 1 );    key[ sizeof( key ) - 1 ] = '\0';    if( (val = camconfig_query_str( ccfg, key, "path" )) == NULL ){      camserv_log( MODNAME, "[%s]:path key/val pair not found in cfg file!",		   key );      *reserr = 1;      free( filters );      return NULL;    }    camserv_log( MODNAME, "Loading filter [%s]", key );    if( lt_dlinit() ) {      camserv_log( MODNAME, lt_dlerror());      *reserr = 1;      free( filters );      return NULL;    }    if( (dlhandle = lt_dlopen( val )) == NULL ){      camserv_log( MODNAME, "filter%d: %s", i,  lt_dlerror());      lt_dlexit();      *reserr = 1;      free( filters );      return NULL;    }    strncpy( filters[ i ].section_name, key, 	     sizeof( filters[ i ].section_name ) - 1 );    filters[ i ].section_name[ sizeof( filters[ i ].section_name ) - 1 ] ='\0';    if( !(filters[ i ].filter_init = lt_dlsym( dlhandle, "filter_init" ))){      camserv_log( MODNAME, "filter%d: %s", i, lt_dlerror() );      lt_dlclose( dlhandle );      lt_dlexit();      *reserr = 1;      free( filters );      return NULL;    }    if( !(filters[ i ].filter_deinit = lt_dlsym( dlhandle, "filter_deinit" ))){      camserv_log( MODNAME, "filter%d: %s", i, lt_dlerror() );      lt_dlclose( dlhandle );      lt_dlexit();      *reserr = 1;      free( filters );      return NULL;    }    if( !(filters[ i ].filter_func = lt_dlsym( dlhandle, "filter_func" ))){      camserv_log( MODNAME, "filter%d: %s", i, lt_dlerror() );      lt_dlclose( dlhandle );      lt_dlexit();      *reserr = 1;      free( filters );      return NULL;    }    if( !(filters[ i ].modinfo_func = lt_dlsym( dlhandle, "modinfo_query" ))){      camserv_log( MODNAME, "filter%d: %s", i, lt_dlerror() );      lt_dlclose( dlhandle );      lt_dlexit();      *reserr = 1;      free( filters );      return NULL;    }    filters[ i ].filter_cldat = NULL;  }  filters[ nfilters ].filter_init = NULL;  /* Sentinal */  *reserr = 0;  return filters;}void filter_destroy( Filter *filter_list ){  free( filter_list );}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂一区二区在线| 精品一区二区三区的国产在线播放| 国产v日产∨综合v精品视频| 在线播放视频一区| 亚洲国产精品欧美一二99| 一区二区在线电影| www.色精品| 国产精品对白交换视频 | 亚洲福中文字幕伊人影院| 94色蜜桃网一区二区三区| 国产欧美精品一区二区色综合| 狠狠色丁香久久婷婷综合_中| 日韩视频永久免费| 麻豆成人久久精品二区三区红| 欧美男同性恋视频网站| 午夜久久电影网| 欧美精品一二三四| 日日摸夜夜添夜夜添国产精品 | 成人激情av网| 国产精品看片你懂得| 99久久综合精品| 中文字幕在线一区| 99麻豆久久久国产精品免费优播| 欧美国产亚洲另类动漫| 成人动漫视频在线| 17c精品麻豆一区二区免费| 91偷拍与自偷拍精品| 亚洲视频狠狠干| 91久久免费观看| 亚洲午夜免费福利视频| 欧美理论在线播放| 青草av.久久免费一区| 精品国产髙清在线看国产毛片| 六月丁香婷婷久久| 国产亚洲精品超碰| 成人国产电影网| 亚洲免费在线观看| 欧美视频一二三区| 毛片一区二区三区| 国产午夜亚洲精品午夜鲁丝片 | 色综合 综合色| 亚洲第一搞黄网站| 欧美成人激情免费网| 国产精品69久久久久水密桃| 亚洲欧洲在线观看av| 欧美丝袜丝交足nylons图片| 日本在线不卡一区| 国产日韩欧美电影| 色婷婷综合久久久中文一区二区 | 亚洲激情六月丁香| 欧美一区三区二区| 国产精品一区二区在线播放| ●精品国产综合乱码久久久久| 精品视频一区二区不卡| 黄色日韩网站视频| 日韩一区有码在线| 6080yy午夜一二三区久久| 国产一区二区三区四| 亚洲视频一区在线| 欧美无砖专区一中文字| 热久久免费视频| 精品国产乱码久久久久久图片| 久久99精品久久只有精品| 国产日产欧美一区| 在线免费观看视频一区| 免费高清视频精品| 国产日韩v精品一区二区| 色系网站成人免费| 日韩成人免费看| 久久精品亚洲一区二区三区浴池 | 懂色av中文字幕一区二区三区 | 久久久国产一区二区三区四区小说| 久久国产人妖系列| 亚洲黄色性网站| 日韩精品最新网址| 成人禁用看黄a在线| 亚洲国产精品一区二区www在线| 欧美成人一区二区三区片免费| 国产成人在线影院| 亚洲一区电影777| 精品国产乱码久久久久久图片| 99re视频精品| 午夜电影一区二区| 久久这里只有精品首页| 在线日韩国产精品| 国产永久精品大片wwwapp| 国产精品久久久久永久免费观看 | 国产一区二区三区在线观看免费视频| 久久久www成人免费毛片麻豆| 91精品福利视频| 狠狠狠色丁香婷婷综合久久五月| 日韩一区在线播放| 欧美刺激午夜性久久久久久久| 99国产欧美另类久久久精品 | 久久精品视频网| 91黄色免费版| 久久91精品久久久久久秒播| 亚洲一区二区高清| 久久久久国色av免费看影院| 欧美日韩精品系列| 丁香五精品蜜臀久久久久99网站| 久久99在线观看| 亚洲精品少妇30p| 2020日本不卡一区二区视频| 欧美日免费三级在线| 成人av在线观| 久99久精品视频免费观看| 一区二区高清免费观看影视大全| 久久免费视频一区| 欧美日韩综合不卡| 丁香六月久久综合狠狠色| 秋霞国产午夜精品免费视频| 亚洲免费在线播放| 国产清纯白嫩初高生在线观看91| 欧美日韩一区中文字幕| 国产一区二区网址| 久国产精品韩国三级视频| 午夜伦欧美伦电影理论片| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 亚洲综合一二区| 中文字幕乱码亚洲精品一区| 精品国产乱码久久久久久久久| 欧美另类高清zo欧美| 欧美在线小视频| 91色九色蝌蚪| 成人影视亚洲图片在线| 视频一区二区不卡| 亚洲一区二区欧美日韩| 亚洲精品免费一二三区| 欧美国产综合色视频| 久久免费视频一区| 久久综合色天天久久综合图片| 欧美一区二区精品在线| 欧洲视频一区二区| 欧美亚洲动漫制服丝袜| 欧美三级视频在线| 欧美自拍偷拍午夜视频| 色呦呦日韩精品| 波多野结衣欧美| 国产福利精品一区二区| 国产一区美女在线| 激情五月婷婷综合网| 麻豆91在线观看| 免费看精品久久片| 蜜桃精品视频在线观看| 午夜视频久久久久久| 一二三四社区欧美黄| 亚洲另类在线视频| 亚洲精品中文字幕乱码三区| 亚洲免费观看高清完整| 亚洲欧美乱综合| 亚洲色大成网站www久久九九| 亚洲视频免费在线观看| 日本一二三不卡| 亚洲美女在线一区| 亚洲综合区在线| 亚洲一区二区美女| 日韩中文字幕1| 蜜桃av一区二区在线观看| 奇米精品一区二区三区在线观看| 五月激情六月综合| 美国十次了思思久久精品导航| 另类小说综合欧美亚洲| 狠狠色丁香九九婷婷综合五月| 国产一区二区久久| 成人在线一区二区三区| 91丝袜高跟美女视频| 色94色欧美sute亚洲线路一久| 欧美日韩在线播放| 日韩欧美一区二区在线视频| 日韩免费高清av| 久久网这里都是精品| 国产婷婷一区二区| 中文字幕一区二区视频| 综合婷婷亚洲小说| 日韩av电影天堂| 国产一区二区三区在线观看免费视频 | 午夜精品久久久久久久| 日本视频免费一区| 国产在线看一区| 成人综合婷婷国产精品久久蜜臀| 国产黑丝在线一区二区三区| 成人性生交大片免费看视频在线 | 国产不卡视频在线播放| 91免费看片在线观看| 欧美日韩国产影片| 欧美精品一区二区三区蜜桃 | 91麻豆精品一区二区三区| 欧美日韩国产精选| 精品欧美一区二区在线观看| 国产欧美精品在线观看| 亚洲激情网站免费观看| 免费人成精品欧美精品| 高清视频一区二区| 91麻豆swag| 欧美高清hd18日本| 久久久精品人体av艺术| 亚洲综合久久久久| 精品亚洲porn| 日本韩国精品在线|