void lwan_init_with_config(struct lwan *l, const struct lwan_config *config) { /* Load defaults */ memset(l, 0, sizeof(*l)); memcpy(&l->config, config, sizeof(*config)); l->config.listener = dup_or_null(l->config.listener); l->config.config_file_path = dup_or_null(l->config.config_file_path); /* Initialize status first, as it is used by other things during * their initialization. */ lwan_status_init(l); /* These will only print debugging messages. Debug messages are always * printed if we're on a debug build, so the quiet setting will be * respected. */ lwan_job_thread_init(); lwan_tables_init(); try_setup_from_config(l, config); lwan_response_init(l); /* Continue initialization as normal. */ lwan_status_debug("Initializing lwan web server"); l->n_cpus = get_number_of_cpus(); if (!l->config.n_threads) { l->thread.count = l->n_cpus; if (l->thread.count == 1) l->thread.count = 2; } else if (l->config.n_threads > 3 * l->n_cpus) { l->thread.count = (short unsigned int)(l->n_cpus * 3); lwan_status_warning("%d threads requested, but only %d online CPUs; " "capping to %d threads", l->config.n_threads, l->n_cpus, 3 * l->n_cpus); } else if (l->config.n_threads > 63) { l->thread.count = 64; lwan_status_warning("%d threads requested, but max 64 supported", l->config.n_threads); } else { l->thread.count = l->config.n_threads; } rlim_t max_open_files = setup_open_file_count_limits(); allocate_connections(l, (size_t)max_open_files); l->thread.max_fd = (unsigned)max_open_files / (unsigned)l->thread.count; lwan_status_info("Using %d threads, maximum %d sockets per thread", l->thread.count, l->thread.max_fd); signal(SIGPIPE, SIG_IGN); lwan_readahead_init(); lwan_thread_init(l); lwan_socket_init(l); lwan_http_authorize_init(); lwan_fd_watch_init(l); }
static void banner(void) { printf("mdrotor v0.1 ("); #ifdef __SSE2__ printf("SSE2:%s ", cpu_has_sse2() ? "yes" : "no"); #endif printf("nCPU:%d)\n", get_number_of_cpus()); }
void lwan_init_with_config(lwan_t *l, const lwan_config_t *config) { /* Load defaults */ memset(l, 0, sizeof(*l)); memcpy(&l->config, config, sizeof(*config)); /* Initialize status first, as it is used by other things during * their initialization. */ lwan_status_init(l); /* These will only print debugging messages. Debug messages are always * printed if we're on a debug build, so the quiet setting will be * respected. */ lwan_job_thread_init(); lwan_tables_init(); lwan_module_init(l); /* Load the configuration file. */ if (config == &default_config) { if (!setup_from_config(l)) lwan_status_warning("Could not read config file, using defaults"); /* `quiet` key might have changed value. */ lwan_status_init(l); } lwan_response_init(l); /* Continue initialization as normal. */ lwan_status_debug("Initializing lwan web server"); if (!l->config.n_threads) { l->thread.count = get_number_of_cpus(); if (l->thread.count == 1) l->thread.count = 2; } else { l->thread.count = l->config.n_threads; } rlim_t max_open_files = setup_open_file_count_limits(); allocate_connections(l, (size_t)max_open_files); l->thread.max_fd = (unsigned)max_open_files / (unsigned)l->thread.count; lwan_status_info("Using %d threads, maximum %d sockets per thread", l->thread.count, l->thread.max_fd); signal(SIGPIPE, SIG_IGN); lwan_thread_init(l); lwan_socket_init(l); lwan_http_authorize_init(); }
inline bool CvCapture_FFMPEG::open( const char* _filename ) { icvInitFFMPEG_internal(); unsigned i; bool valid = false; close(); AVDictionary *opts = 0; av_dict_set(&opts, "rtsp_transport", "tcp", 0); //av_dict_set(&opts, "reorder_queue_size", "500", 0); //av_dict_set(&opts, "buffer_size", "1024000", 0); ic = avformat_alloc_context(); ic->interrupt_callback.callback = interrupt_cb; ic->interrupt_callback.opaque = this; #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0) int err = avformat_open_input(&ic, _filename, NULL, &opts); #else int err = av_open_input_file(&ic, _filename, NULL, 0, NULL); #endif if (err < 0) { CV_WARN("Error opening file"); goto exit_func; } err = #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(53, 3, 0) avformat_find_stream_info(ic, NULL); #else av_find_stream_info(ic); #endif if (err < 0) { CV_WARN("Could not find codec parameters"); goto exit_func; } for(i = 0; i < ic->nb_streams; i++) { #if LIBAVFORMAT_BUILD > 4628 AVCodecContext *enc = ic->streams[i]->codec; #else AVCodecContext *enc = &ic->streams[i]->codec; #endif #ifdef FF_API_THREAD_INIT avcodec_thread_init(enc, get_number_of_cpus()); #else enc->thread_count = get_number_of_cpus(); #endif #if LIBAVFORMAT_BUILD < CALC_FFMPEG_VERSION(53, 2, 0) #define AVMEDIA_TYPE_VIDEO CODEC_TYPE_VIDEO #endif if( AVMEDIA_TYPE_VIDEO == enc->codec_type && video_stream < 0) { AVCodec *codec = avcodec_find_decoder(enc->codec_id); if (!codec || #if LIBAVCODEC_VERSION_INT >= ((53<<16)+(8<<8)+0) avcodec_open2(enc, codec, NULL) #else avcodec_open(enc, codec) #endif < 0) goto exit_func; video_stream = i; video_st = ic->streams[i]; picture = avcodec_alloc_frame(); rgb_picture.data[0] = (uint8_t*)malloc( avpicture_get_size( PIX_FMT_RGB24, enc->width, enc->height )); avpicture_fill( (AVPicture*)&rgb_picture, rgb_picture.data[0], PIX_FMT_RGB24, enc->width, enc->height ); frame.width = enc->width; frame.height = enc->height; frame.cn = 3; frame.step = rgb_picture.linesize[0]; frame.data = rgb_picture.data[0]; break; } } if(video_stream >= 0) valid = true; exit_func: if( !valid ) close(); return valid; }