static char * ngx_http_vod_hls_merge_loc_conf( ngx_conf_t *cf, ngx_http_vod_loc_conf_t *base, ngx_http_vod_hls_loc_conf_t *conf, ngx_http_vod_hls_loc_conf_t *prev) { ngx_conf_merge_value(conf->absolute_master_urls, prev->absolute_master_urls, 1); ngx_conf_merge_value(conf->absolute_index_urls, prev->absolute_index_urls, 1); ngx_conf_merge_value(conf->absolute_iframe_urls, prev->absolute_iframe_urls, 0); ngx_conf_merge_str_value(conf->master_file_name_prefix, prev->master_file_name_prefix, "master"); ngx_conf_merge_str_value(conf->m3u8_config.index_file_name_prefix, prev->m3u8_config.index_file_name_prefix, "index"); ngx_conf_merge_str_value(conf->iframes_file_name_prefix, prev->iframes_file_name_prefix, "iframes"); ngx_conf_merge_str_value(conf->m3u8_config.segment_file_name_prefix, prev->m3u8_config.segment_file_name_prefix, "seg"); ngx_conf_merge_str_value(conf->m3u8_config.encryption_key_file_name, prev->m3u8_config.encryption_key_file_name, "encryption"); ngx_conf_merge_str_value(conf->m3u8_config.encryption_key_format, prev->m3u8_config.encryption_key_format, ""); ngx_conf_merge_str_value(conf->m3u8_config.encryption_key_format_versions, prev->m3u8_config.encryption_key_format_versions, ""); if (conf->encryption_key_uri == NULL) { conf->encryption_key_uri = prev->encryption_key_uri; } ngx_conf_merge_value(conf->muxer_config.interleave_frames, prev->muxer_config.interleave_frames, 0); ngx_conf_merge_value(conf->muxer_config.align_frames, prev->muxer_config.align_frames, 1); ngx_conf_merge_value(conf->muxer_config.output_id3_timestamps, prev->muxer_config.output_id3_timestamps, 0); ngx_conf_merge_uint_value(conf->encryption_method, prev->encryption_method, HLS_ENC_NONE); m3u8_builder_init_config( &conf->m3u8_config, base->segmenter.max_segment_duration, conf->encryption_method); if (conf->encryption_method != HLS_ENC_NONE && base->secret_key == NULL && !base->drm_enabled) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "\"vod_secret_key\" must be set when \"vod_hls_encryption_method\" is not none"); return NGX_CONF_ERROR; } return NGX_CONF_OK; }
static char * ngx_http_vod_hls_merge_loc_conf( ngx_conf_t *cf, ngx_http_vod_loc_conf_t *base, ngx_http_vod_hls_loc_conf_t *conf, ngx_http_vod_hls_loc_conf_t *prev) { ngx_conf_merge_value(conf->absolute_master_urls, prev->absolute_master_urls, 1); ngx_conf_merge_value(conf->absolute_index_urls, prev->absolute_index_urls, 1); ngx_conf_merge_value(conf->absolute_iframe_urls, prev->absolute_iframe_urls, 0); ngx_conf_merge_str_value(conf->master_file_name_prefix, prev->master_file_name_prefix, "master"); ngx_conf_merge_str_value(conf->m3u8_config.index_file_name_prefix, prev->m3u8_config.index_file_name_prefix, "index"); ngx_conf_merge_str_value(conf->iframes_file_name_prefix, prev->iframes_file_name_prefix, "iframes"); ngx_conf_merge_str_value(conf->m3u8_config.segment_file_name_prefix, prev->m3u8_config.segment_file_name_prefix, "seg"); ngx_conf_merge_str_value(conf->m3u8_config.encryption_key_file_name, prev->m3u8_config.encryption_key_file_name, "encryption"); m3u8_builder_init_config( &conf->m3u8_config, base->segmenter.max_segment_duration); return NGX_CONF_OK; }