t_env *init_env(char *av) { t_env *e; e = malloc(sizeof(t_env) * 1); e->m = init_mod(); e->f = init_frac(av); e->mlx = mlx_init(); e->f->img = mlx_new_image(e->mlx, WIN_X, WIN_Y); e->win = mlx_new_window(e->mlx, WIN_X, WIN_Y, "Fractol"); e->f->d = mlx_get_data_addr(e->f->img, &e->f->bpp, &e->f->line_size, &e->f->endian); e->t = (double)time(NULL); e->frequency = 0.1; e->iter = 16; e->color = 2; e->zx = ((CXMAX - CXMIN) / (WIN_X - 1)); e->zy = ((CYMAX - CYMIN) / (WIN_Y - 1)); return (e); }
void origin(t_env *env) { env->param = init_param(env->param->name); env->f = init_frac(env->param->name); }
/***************************************************************** * Stream initialization * \return STREAM_OK if success, STREAM_ERROR otherwise */ static int open_s(stream_t *stream,int mode, void* opts, int* file_format) { radio_priv_t* priv; float frequency=0; int i; if (strncmp("radio://",stream->url,8) != 0) return STREAM_UNSUPPORTED; if(mode != STREAM_READ) return STREAM_UNSUPPORTED; priv=calloc(1,sizeof(radio_priv_t)); if (!priv) return STREAM_ERROR; priv->radio_param=opts; #ifdef CONFIG_RADIO_CAPTURE if (priv->radio_param->capture && strncmp("capture",priv->radio_param->capture,7)==0) priv->do_capture=1; else priv->do_capture=0; #endif if (strncmp(priv->radio_param->driver,"default",7)==0) priv->driver=radio_drivers[0]; else priv->driver=NULL; mp_tmsg(MSGT_RADIO,MSGL_V,"[radio] Available drivers: "); for(i=0; radio_drivers[i]; i++) { mp_msg(MSGT_RADIO,MSGL_V,"%s, ",radio_drivers[i]->name); if(strcmp(priv->radio_param->driver,radio_drivers[i]->name)==0) priv->driver=radio_drivers[i]; } mp_msg(MSGT_RADIO,MSGL_V,"\n"); if(priv->driver) mp_msg(MSGT_RADIO, MSGL_INFO, priv->driver->info); else { mp_tmsg(MSGT_RADIO, MSGL_INFO, "[radio] Unknown driver name: %s\n",priv->radio_param->driver); close_s(stream); return STREAM_ERROR; } stream->type = STREAMTYPE_RADIO; /* using rawaudio demuxer */ *file_format = DEMUXER_TYPE_RAWAUDIO; stream->flags = STREAM_READ; priv->radio_fd=-1; stream->start_pos=0; stream->end_pos=0; stream->priv=priv; stream->close=close_s; stream->fill_buffer=fill_buffer_s; priv->radio_fd = open(priv->radio_param->device, O_RDONLY); if (priv->radio_fd < 0) { mp_tmsg(MSGT_RADIO, MSGL_ERR, "[radio] Unable to open '%s': %s\n", priv->radio_param->device, strerror(errno)); close_s(stream); return STREAM_ERROR; } mp_tmsg(MSGT_RADIO, MSGL_V, "[radio] Radio fd: %d, %s\n", priv->radio_fd,priv->radio_param->device); fcntl(priv->radio_fd, F_SETFD, FD_CLOEXEC); get_volume(priv, &priv->old_snd_volume); set_volume(priv,0); if (init_frac(priv)!=STREAM_OK) { close_s(stream); return STREAM_ERROR; }; if (parse_channels(priv,priv->radio_param->freq_channel,&frequency)!=STREAM_OK) { close_s(stream); return STREAM_ERROR; } if ((frequency<priv->rangelow)||(frequency>priv->rangehigh)) { mp_tmsg(MSGT_RADIO, MSGL_ERR, "[radio] Wrong frequency: %.2f\n",frequency); close_s(stream); return STREAM_ERROR; } else mp_tmsg(MSGT_RADIO, MSGL_INFO, "[radio] Using frequency: %.2f.\n",frequency); if(set_frequency(priv,frequency)!=STREAM_OK) { close_s(stream); return STREAM_ERROR; } if (init_audio(priv)!=STREAM_OK) { close_s(stream); return STREAM_ERROR; } #if defined(CONFIG_RADIO_CAPTURE) && defined(CONFIG_STREAM_CACHE) if(priv->do_capture) { //5 second cache if(!stream_enable_cache(stream,5*priv->audio_in.samplerate*priv->audio_in.channels* priv->audio_in.bytes_per_sample,2*priv->audio_in.samplerate*priv->audio_in.channels* priv->audio_in.bytes_per_sample,priv->audio_in.blocksize)) { mp_tmsg(MSGT_RADIO, MSGL_ERR, "[radio] Call to stream_enable_cache failed: %s\n",strerror(errno)); close_s(stream); return STREAM_ERROR; } } #endif set_volume(priv,priv->radio_param->volume); return STREAM_OK; }