void compositor_init_imagetexture(GF_Compositor *compositor, GF_Node *node) { GF_TextureHandler *txh; GF_SAFEALLOC(txh, GF_TextureHandler); gf_sc_texture_setup(txh, compositor, node); txh->update_texture_fcnt = imagetexture_update; gf_node_set_private(node, txh); gf_node_set_callback_function(node, imagetexture_destroy); txh->flags = 0; if (gf_node_get_tag(txh->owner)!=TAG_MPEG4_CacheTexture) { if (((M_ImageTexture*)node)->repeatS) txh->flags |= GF_SR_TEXTURE_REPEAT_S; if (((M_ImageTexture*)node)->repeatT) txh->flags |= GF_SR_TEXTURE_REPEAT_T; } else { const char *url; u32 i, count; M_CacheTexture*ct = (M_CacheTexture*)node; if (!ct->image.buffer) return; if (ct->repeatS) txh->flags |= GF_SR_TEXTURE_REPEAT_S; if (ct->repeatT) txh->flags |= GF_SR_TEXTURE_REPEAT_T; /*locate existing cache*/ url = gf_scene_get_service_url( gf_node_get_graph(node) ); count = gf_cfg_get_section_count(compositor->user->config); for (i=0; i<count; i++) { const char *opt; const char *name = gf_cfg_get_section_name(compositor->user->config, i); if (strncmp(name, "@cache=", 7)) continue; opt = gf_cfg_get_key(compositor->user->config, name, "serviceURL"); if (!opt || stricmp(opt, url)) continue; opt = gf_cfg_get_key(compositor->user->config, name, "cacheName"); if (opt && ct->cacheURL.buffer && !stricmp(opt, ct->cacheURL.buffer)) { opt = gf_cfg_get_key(compositor->user->config, name, "cacheFile"); if (opt) gf_delete_file((char*)opt); gf_cfg_del_section(compositor->user->config, name); break; } } } }
static void dc_create_configuration(CmdData *cmd_data) { u32 i; GF_Config *conf = cmd_data->conf; u32 sec_count = gf_cfg_get_section_count(conf); if (!sec_count) { gf_cfg_set_key(conf, "v1", "type", "video"); gf_cfg_set_key(conf, "a1", "type", "audio"); sec_count = gf_cfg_get_section_count(conf); } for (i=0; i<sec_count; i++) { char value[GF_MAX_PATH]; const char *section_name = gf_cfg_get_section_name(conf, i); const char *section_type = gf_cfg_get_key(conf, section_name, "type"); if (strcmp(section_type, "video") == 0) { if (!gf_cfg_get_key(conf, section_name, "bitrate")) { if (cmd_data->video_data_conf.bitrate == -1) cmd_data->video_data_conf.bitrate = DEFAULT_VIDEO_BITRATE; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.bitrate); gf_cfg_set_key(conf, section_name, "bitrate", value); } if (!gf_cfg_get_key(conf, section_name, "framerate")) { if (cmd_data->video_data_conf.framerate == -1) cmd_data->video_data_conf.framerate = DEFAULT_VIDEO_FRAMERATE; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.framerate); gf_cfg_set_key(conf, section_name, "framerate", value); } if (!gf_cfg_get_key(conf, section_name, "width")) { if (cmd_data->video_data_conf.width == -1) cmd_data->video_data_conf.width = DEFAULT_VIDEO_WIDTH; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.width); gf_cfg_set_key(conf, section_name, "width", value); } if (!gf_cfg_get_key(conf, section_name, "height")) { if (cmd_data->video_data_conf.height == -1) cmd_data->video_data_conf.height = DEFAULT_VIDEO_HEIGHT; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.height); gf_cfg_set_key(conf, section_name, "height", value); } if (!gf_cfg_get_key(conf, section_name, "crop_x")) { if (cmd_data->video_data_conf.crop_x == -1) cmd_data->video_data_conf.crop_x = 0; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.crop_x); gf_cfg_set_key(conf, section_name, "crop_x", value); } if (!gf_cfg_get_key(conf, section_name, "crop_y")) { if (cmd_data->video_data_conf.crop_y == -1) cmd_data->video_data_conf.crop_y = 0; snprintf(value, sizeof(value), "%d", cmd_data->video_data_conf.crop_y); gf_cfg_set_key(conf, section_name, "crop_y", value); } if (!gf_cfg_get_key(conf, section_name, "codec")) gf_cfg_set_key(conf, section_name, "codec", DEFAULT_VIDEO_CODEC); } if (strcmp(section_type, "audio") == 0) { if (!gf_cfg_get_key(conf, section_name, "bitrate")) { if (cmd_data->audio_data_conf.bitrate == -1) cmd_data->audio_data_conf.bitrate = DEFAULT_AUDIO_BITRATE; snprintf(value, sizeof(value), "%d", cmd_data->audio_data_conf.bitrate); gf_cfg_set_key(conf, section_name, "bitrate", value); } if (!gf_cfg_get_key(conf, section_name, "samplerate")) { if (cmd_data->audio_data_conf.samplerate == -1) cmd_data->audio_data_conf.samplerate = DEFAULT_AUDIO_SAMPLERATE; snprintf(value, sizeof(value), "%d", cmd_data->audio_data_conf.samplerate); gf_cfg_set_key(conf, section_name, "samplerate", value); } if (!gf_cfg_get_key(conf, section_name, "channels")) { if (cmd_data->audio_data_conf.channels == -1) cmd_data->audio_data_conf.channels = DEFAULT_AUDIO_CHANNELS; snprintf(value, sizeof(value), "%d", cmd_data->audio_data_conf.channels); gf_cfg_set_key(conf, section_name, "channels", value); } if (!gf_cfg_get_key(conf, section_name, "codec")) gf_cfg_set_key(conf, section_name, "codec", DEFAULT_AUDIO_CODEC); } } }
int dc_read_switch_config(CmdData *cmd_data) { u32 i; int src_number; char start_time[4096], end_time[4096]; time_t now_t = time(NULL); struct tm start_tm = *localtime(&now_t); struct tm end_tm = *localtime(&now_t); GF_Config *conf = cmd_data->switch_conf; u32 sec_count = gf_cfg_get_section_count(conf); dc_task_init(&cmd_data->task_list); if (sec_count == 0) { return 0; } for (i = 0; i < sec_count; i++) { const char *section_name = gf_cfg_get_section_name(conf, i); const char *section_type = gf_cfg_get_key(conf, section_name, "type"); if (strcmp(section_type, "video") == 0) { VideoDataConf *video_data_conf = gf_malloc(sizeof(VideoDataConf)); strcpy(video_data_conf->source_id, section_name); strcpy(video_data_conf->filename, gf_cfg_get_key(conf, section_name, "source")); strcpy(start_time, gf_cfg_get_key(conf, section_name, "start")); parse_time(start_time, &start_tm); video_data_conf->start_time = mktime(&start_tm); strcpy(end_time, gf_cfg_get_key(conf, section_name, "end")); parse_time(end_time, &end_tm); video_data_conf->end_time = mktime(&end_tm); gf_list_add(cmd_data->vsrc, (void *) video_data_conf); src_number = gf_list_count(cmd_data->vsrc); dc_task_add(&cmd_data->task_list, src_number, video_data_conf->source_id, video_data_conf->start_time, video_data_conf->end_time); } else if (strcmp(section_type, "audio") == 0) { AudioDataConf *audio_data_conf = gf_malloc(sizeof(AudioDataConf)); strcpy(audio_data_conf->source_id, section_name); strcpy(audio_data_conf->filename, gf_cfg_get_key(conf, section_name, "source")); strcpy(start_time, gf_cfg_get_key(conf, section_name, "start")); parse_time(start_time, &start_tm); audio_data_conf->start_time = mktime(&start_tm); strcpy(end_time, gf_cfg_get_key(conf, section_name, "end")); parse_time(end_time, &end_tm); audio_data_conf->end_time = mktime(&end_tm); gf_list_add(cmd_data->asrc, (void *) audio_data_conf); } else { fprintf(stdout, "Switch source configuration file: type %s is not supported.\n", section_type); } } fprintf(stdout, "\33[34m\33[1m"); fprintf(stdout, "Sources:\n"); for (i=0; i<gf_list_count(cmd_data->vsrc); i++) { VideoDataConf *video_data_conf = gf_list_get(cmd_data->vsrc, i); strftime(start_time, 20, "%Y-%m-%d %H:%M:%S", localtime(&video_data_conf->start_time)); strftime(end_time, 20, "%Y-%m-%d %H:%M:%S", localtime(&video_data_conf->end_time)); fprintf(stdout, " id:%s\tsource:%s\tstart:%s\tend:%s\n", video_data_conf->source_id, video_data_conf->filename, start_time, end_time); } for (i=0; i<gf_list_count(cmd_data->asrc); i++) { AudioDataConf *audio_data_conf = gf_list_get(cmd_data->asrc, i); strftime(start_time, 20, "%Y-%m-%d %H:%M:%S", localtime(&audio_data_conf->start_time)); strftime(end_time, 20, "%Y-%m-%d %H:%M:%S", localtime(&audio_data_conf->end_time)); fprintf(stdout, " id:%s\tsource:%s\tstart:%s\tend:%s\n", audio_data_conf->source_id, audio_data_conf->filename, start_time, end_time); } fprintf(stdout, "\33[0m"); fflush(stdout); return 0; }
int dc_read_configuration(CmdData *cmd_data) { const char *opt; u32 i; GF_Config *conf = cmd_data->conf; u32 sec_count = gf_cfg_get_section_count(conf); for (i=0; i<sec_count; i++) { const char *section_name = gf_cfg_get_section_name(conf, i); const char *section_type = gf_cfg_get_key(conf, section_name, "type"); if (strcmp(section_type, "video") == 0) { VideoDataConf *video_data_conf; GF_SAFEALLOC(video_data_conf, VideoDataConf); strcpy(video_data_conf->filename, section_name); opt = gf_cfg_get_key(conf, section_name, "codec"); if (!opt) opt = DEFAULT_VIDEO_CODEC; strcpy(video_data_conf->codec, opt); opt = gf_cfg_get_key(conf, section_name, "bitrate"); video_data_conf->bitrate = opt ? atoi(opt) : DEFAULT_VIDEO_BITRATE; opt = gf_cfg_get_key(conf, section_name, "framerate"); video_data_conf->framerate = opt ? atoi(opt) : DEFAULT_VIDEO_FRAMERATE; opt = gf_cfg_get_key(conf, section_name, "height"); video_data_conf->height = opt ? atoi(opt) : DEFAULT_VIDEO_HEIGHT; opt = gf_cfg_get_key(conf, section_name, "width"); video_data_conf->width = opt ? atoi(opt) : DEFAULT_VIDEO_WIDTH; opt = gf_cfg_get_key(conf, section_name, "crop_x"); video_data_conf->crop_x = opt ? atoi(opt) : 0; opt = gf_cfg_get_key(conf, section_name, "crop_y"); video_data_conf->crop_x = opt ? atoi(opt) : 0; opt = gf_cfg_get_key(conf, section_name, "custom"); video_data_conf->custom = opt ? gf_strdup(opt) : NULL; gf_list_add(cmd_data->video_lst, (void *) video_data_conf); } else if (strcmp(section_type, "audio") == 0) { AudioDataConf *audio_data_conf; GF_SAFEALLOC(audio_data_conf, AudioDataConf); strcpy(audio_data_conf->filename, section_name); opt = gf_cfg_get_key(conf, section_name, "codec"); if (!opt) opt = DEFAULT_AUDIO_CODEC; strcpy(audio_data_conf->codec, opt); opt = gf_cfg_get_key(conf, section_name, "bitrate"); audio_data_conf->bitrate = opt ? atoi(opt) : DEFAULT_AUDIO_BITRATE; opt = gf_cfg_get_key(conf, section_name, "samplerate"); audio_data_conf->samplerate = opt ? atoi(opt) : DEFAULT_AUDIO_SAMPLERATE; opt = gf_cfg_get_key(conf, section_name, "channels"); audio_data_conf->channels = opt ? atoi(opt) : DEFAULT_AUDIO_CHANNELS; opt = gf_cfg_get_key(conf, section_name, "custom"); audio_data_conf->custom = opt ? gf_strdup(opt) : NULL; gf_list_add(cmd_data->audio_lst, (void *) audio_data_conf); } else { fprintf(stderr, "Configuration file: type %s is not supported.\n", section_type); } } fprintf(stdout, "\33[34m\33[1m"); fprintf(stdout, "Configurations:\n"); for (i=0; i<gf_list_count(cmd_data->video_lst); i++) { VideoDataConf *video_data_conf = gf_list_get(cmd_data->video_lst, i); fprintf(stdout, " id:%s\tres:%dx%d\tvbr:%d\n", video_data_conf->filename, video_data_conf->width, video_data_conf->height, video_data_conf->bitrate/*, video_data_conf->framerate, video_data_conf->codec*/); } for (i=0; i<gf_list_count(cmd_data->audio_lst); i++) { AudioDataConf *audio_data_conf = gf_list_get(cmd_data->audio_lst, i); fprintf(stdout, " id:%s\tabr:%d\n", audio_data_conf->filename, audio_data_conf->bitrate/*, audio_data_conf->samplerate, audio_data_conf->channels,audio_data_conf->codec*/); } fprintf(stdout, "\33[0m"); fflush(stdout); return 0; }
int dc_read_configuration(CmdData * p_cmdd) { int i; GF_Config * p_conf = p_cmdd->p_conf; int i_sec_count = gf_cfg_get_section_count(p_conf); if (i_sec_count == 0) { gf_cfg_set_key(p_conf, "v1.mp4", "type", "video"); gf_cfg_set_key(p_conf, "v1.mp4", "bitrate", "400000"); // gf_cfg_set_key(p_conf, "v1.mp4", "framerate", "25"); gf_cfg_set_key(p_conf, "v1.mp4", "width", "640"); gf_cfg_set_key(p_conf, "v1.mp4", "height", "480"); // gf_cfg_set_key(p_conf, "v1.mp4", "codec", "libx264"); gf_cfg_set_key(p_conf, "a1.mp4", "type", "audio"); gf_cfg_set_key(p_conf, "a1.mp4", "bitrate", "200000"); // gf_cfg_set_key(p_conf, "a1.mp4", "samplerate", "48000"); // gf_cfg_set_key(p_conf, "a1.mp4", "channels", "2"); // gf_cfg_set_key(p_conf, "a1.mp4", "codec", "aac"); i_sec_count = 2; } for (i = 0; i < i_sec_count; i++) { const char * psz_sec_name = gf_cfg_get_section_name(p_conf, i); const char * psz_type = gf_cfg_get_key(p_conf, psz_sec_name, "type"); if (strcmp(psz_type, "video") == 0) { VideoData * p_vconf = malloc(sizeof(VideoData)); strcpy(p_vconf->psz_name, psz_sec_name); // strcpy(p_vconf->psz_codec, // gf_cfg_get_key(p_conf, psz_sec_name, "codec")); p_vconf->i_bitrate = atoi( gf_cfg_get_key(p_conf, psz_sec_name, "bitrate")); // p_vconf->i_framerate = atoi( // gf_cfg_get_key(p_conf, psz_sec_name, "framerate")); p_vconf->i_height = atoi( gf_cfg_get_key(p_conf, psz_sec_name, "height")); p_vconf->i_width = atoi( gf_cfg_get_key(p_conf, psz_sec_name, "width")); gf_list_add(p_cmdd->p_video_lst, (void *) p_vconf); } else if (strcmp(psz_type, "audio") == 0) { AudioData * p_aconf = malloc(sizeof(AudioData)); strcpy(p_aconf->psz_name, psz_sec_name); // strcpy(p_aconf->psz_codec, // gf_cfg_get_key(p_conf, psz_sec_name, "codec")); p_aconf->i_bitrate = atoi( gf_cfg_get_key(p_conf, psz_sec_name, "bitrate")); // p_aconf->i_samplerate = atoi( // gf_cfg_get_key(p_conf, psz_sec_name, "samplerate")); // p_aconf->i_channels = atoi( // gf_cfg_get_key(p_conf, psz_sec_name, "channels")); gf_list_add(p_cmdd->p_audio_lst, (void *) p_aconf); } else { printf("Configuration file: type %s is not supported.\n", psz_type); } } printf("\33[34m\33[1m"); printf("Configurations:\n"); for (i = 0; i < gf_list_count(p_cmdd->p_video_lst); i++) { VideoData * p_vconf = gf_list_get(p_cmdd->p_video_lst, i); printf(" id:%s\tres:%dx%d\tvbr:%d\n", p_vconf->psz_name, p_vconf->i_width, p_vconf->i_height, p_vconf->i_bitrate/*, p_vconf->i_framerate, p_vconf->psz_codec*/); } for (i = 0; i < gf_list_count(p_cmdd->p_audio_lst); i++) { AudioData * p_aconf = gf_list_get(p_cmdd->p_audio_lst, i); printf(" id:%s\tabr:%d\n", p_aconf->psz_name, p_aconf->i_bitrate/*, p_aconf->i_samplerate, p_aconf->i_channels,p_aconf->psz_codec*/); } printf("\33[0m"); fflush(stdout); return 0; }