00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "splt.h"
00034
00035 extern int global_debug;
00036
00037 void splt_o_set_options_default_values(splt_state *state)
00038 {
00039 state->options.split_mode = SPLT_OPTION_NORMAL_MODE;
00040 state->options.tags = SPLT_CURRENT_TAGS;
00041 state->options.xing = SPLT_TRUE;
00042 state->options.output_filenames = SPLT_OUTPUT_DEFAULT;
00043 state->options.quiet_mode = SPLT_FALSE;
00044 state->options.pretend_to_split = SPLT_FALSE;
00045 state->options.option_frame_mode = SPLT_FALSE;
00046 state->options.split_time = 6000;
00047 state->options.overlap_time = 0;
00048 state->options.option_auto_adjust = SPLT_FALSE;
00049 state->options.option_input_not_seekable = SPLT_FALSE;
00050 state->options.create_dirs_from_filenames = SPLT_FALSE;
00051 state->options.parameter_threshold = SPLT_DEFAULT_PARAM_THRESHOLD;
00052 state->options.parameter_offset = SPLT_DEFAULT_PARAM_OFFSET;
00053 state->options.parameter_number_tracks = SPLT_DEFAULT_PARAM_TRACKS;
00054 state->options.parameter_minimum_length = SPLT_DEFAULT_PARAM_MINIMUM_LENGTH;
00055 state->options.parameter_min_track_length = SPLT_DEFAULT_PARAM_MINIMUM_TRACK_LENGTH;
00056
00057 state->options.artist_tag_format = SPLT_NO_CONVERSION;
00058 state->options.album_tag_format = SPLT_NO_CONVERSION;
00059 state->options.title_tag_format = SPLT_NO_CONVERSION;
00060 state->options.comment_tag_format = SPLT_NO_CONVERSION;
00061 state->options.replace_underscores_tag_format = SPLT_FALSE;
00062 state->options.set_file_from_cue_if_file_tag_found = SPLT_FALSE;
00063
00064 state->options.parameter_remove_silence = SPLT_FALSE;
00065 state->options.parameter_gap = SPLT_DEFAULT_PARAM_GAP;
00066 state->options.remaining_tags_like_x = -1;
00067 state->options.auto_increment_tracknumber_tags = 0;
00068 state->options.enable_silence_log = SPLT_FALSE;
00069 state->options.force_tags_version = 0;
00070 state->options.length_split_file_number = 1;
00071 state->options.replace_tags_in_tags = SPLT_FALSE;
00072 }
00073
00074 void splt_o_set_option(splt_state *state, int option_name, const void *data)
00075 {
00076 switch (option_name)
00077 {
00078 case SPLT_OPT_DEBUG_MODE:
00079 global_debug = *((int *)data);
00080 break;
00081 case SPLT_OPT_QUIET_MODE:
00082 state->options.quiet_mode = *((int *)data);
00083 break;
00084 case SPLT_OPT_PRETEND_TO_SPLIT:
00085 state->options.pretend_to_split = *((int *)data);
00086 break;
00087 case SPLT_OPT_OUTPUT_FILENAMES:
00088 state->options.output_filenames = *((int *)data);
00089 break;
00090 case SPLT_OPT_SPLIT_MODE:
00091 state->options.split_mode = *((int *)data);
00092 break;
00093 case SPLT_OPT_TAGS:
00094 state->options.tags = *((int *)data);
00095 break;
00096 case SPLT_OPT_XING:
00097 state->options.xing = *((int *)data);
00098 break;
00099 case SPLT_OPT_CREATE_DIRS_FROM_FILENAMES:
00100 state->options.create_dirs_from_filenames = *((int *)data);
00101 break;
00102 case SPLT_OPT_FRAME_MODE:
00103 state->options.option_frame_mode = *((int *)data);
00104 break;
00105 case SPLT_OPT_AUTO_ADJUST:
00106 state->options.option_auto_adjust = *((int *)data);
00107 break;
00108 case SPLT_OPT_INPUT_NOT_SEEKABLE:
00109 state->options.option_input_not_seekable = *((int *)data);
00110 break;
00111 case SPLT_OPT_PARAM_NUMBER_TRACKS:
00112 state->options.parameter_number_tracks = *((int *)data);
00113 break;
00114 case SPLT_OPT_PARAM_REMOVE_SILENCE:
00115 state->options.parameter_remove_silence = *((int *)data);
00116 break;
00117 case SPLT_OPT_PARAM_GAP:
00118 state->options.parameter_gap = *((int *)data);
00119 break;
00120 case SPLT_OPT_ALL_REMAINING_TAGS_LIKE_X:
00121 state->options.remaining_tags_like_x = *((int *)data);
00122 break;
00123 case SPLT_OPT_AUTO_INCREMENT_TRACKNUMBER_TAGS:
00124 state->options.auto_increment_tracknumber_tags = *((int *)data);
00125 break;
00126 case SPLT_OPT_ENABLE_SILENCE_LOG:
00127 state->options.enable_silence_log = *((int *)data);
00128 break;
00129 case SPLT_OPT_FORCE_TAGS_VERSION:
00130 state->options.force_tags_version = *((int *)data);
00131 break;
00132 case SPLT_OPT_LENGTH_SPLIT_FILE_NUMBER:
00133 state->options.length_split_file_number = *((int *)data);
00134 break;
00135 case SPLT_OPT_REPLACE_TAGS_IN_TAGS:
00136 state->options.replace_tags_in_tags = *((int *)data);
00137 break;
00138
00139 case SPLT_OPT_OVERLAP_TIME:
00140 state->options.overlap_time = *((long *)data);
00141 break;
00142
00143 case SPLT_OPT_SPLIT_TIME:
00144 state->options.split_time = *((float *)data);
00145 break;
00146 case SPLT_OPT_PARAM_THRESHOLD:
00147 state->options.parameter_threshold = *((float *)data);
00148 break;
00149 case SPLT_OPT_PARAM_OFFSET:
00150 state->options.parameter_offset = *((float *)data);
00151 break;
00152 case SPLT_OPT_PARAM_MIN_LENGTH:
00153 state->options.parameter_minimum_length = *((float *)data);
00154 break;
00155 case SPLT_OPT_PARAM_MIN_TRACK_LENGTH:
00156 state->options.parameter_min_track_length = *((float *)data);
00157 break;
00158 case SPLT_OPT_ARTIST_TAG_FORMAT:
00159 state->options.artist_tag_format = *((int *)data);
00160 break;
00161 case SPLT_OPT_ALBUM_TAG_FORMAT:
00162 state->options.album_tag_format = *((int *)data);
00163 break;
00164 case SPLT_OPT_TITLE_TAG_FORMAT:
00165 state->options.title_tag_format = *((int *)data);
00166 break;
00167 case SPLT_OPT_COMMENT_TAG_FORMAT:
00168 state->options.comment_tag_format = *((int *)data);
00169 break;
00170 case SPLT_OPT_REPLACE_UNDERSCORES_TAG_FORMAT:
00171 state->options.replace_underscores_tag_format = *((int *)data);
00172 break;
00173 case SPLT_OPT_SET_FILE_FROM_CUE_IF_FILE_TAG_FOUND:
00174 state->options.set_file_from_cue_if_file_tag_found = *((int *)data);
00175 break;
00176 default:
00177 splt_e_error(SPLT_IERROR_INT,__func__, option_name, NULL);
00178 break;
00179 }
00180 }
00181
00182 void splt_o_set_int_option(splt_state *state, int option_name, int value)
00183 {
00184 splt_o_set_option(state, option_name, &value);
00185 }
00186
00187 void splt_o_set_long_option(splt_state *state, int option_name, long value)
00188 {
00189 splt_o_set_option(state, option_name, &value);
00190 }
00191
00192 void splt_o_set_float_option(splt_state *state, int option_name, float value)
00193 {
00194 splt_o_set_option(state, option_name, &value);
00195 }
00196
00197 static void *splt_o_get_option(splt_state *state, int option_name)
00198 {
00199 switch (option_name)
00200 {
00201 case SPLT_OPT_QUIET_MODE:
00202 return &state->options.quiet_mode;
00203 case SPLT_OPT_PRETEND_TO_SPLIT:
00204 return &state->options.pretend_to_split;
00205 case SPLT_OPT_OUTPUT_FILENAMES:
00206 return &state->options.output_filenames;
00207 case SPLT_OPT_SPLIT_MODE:
00208 return &state->options.split_mode;
00209 case SPLT_OPT_TAGS:
00210 return &state->options.tags;
00211 case SPLT_OPT_XING:
00212 return &state->options.xing;
00213 case SPLT_OPT_CREATE_DIRS_FROM_FILENAMES:
00214 return &state->options.create_dirs_from_filenames;
00215 case SPLT_OPT_FRAME_MODE:
00216 return &state->options.option_frame_mode;
00217 case SPLT_OPT_AUTO_ADJUST:
00218 return &state->options.option_auto_adjust;
00219 case SPLT_OPT_INPUT_NOT_SEEKABLE:
00220 return &state->options.option_input_not_seekable;
00221 case SPLT_OPT_PARAM_NUMBER_TRACKS:
00222 return &state->options.parameter_number_tracks;
00223 case SPLT_OPT_PARAM_REMOVE_SILENCE:
00224 return &state->options.parameter_remove_silence;
00225 case SPLT_OPT_PARAM_GAP:
00226 return &state->options.parameter_gap;
00227 case SPLT_OPT_ALL_REMAINING_TAGS_LIKE_X:
00228 return &state->options.remaining_tags_like_x;
00229 case SPLT_OPT_AUTO_INCREMENT_TRACKNUMBER_TAGS:
00230 return &state->options.auto_increment_tracknumber_tags;
00231 case SPLT_OPT_ENABLE_SILENCE_LOG:
00232 return &state->options.enable_silence_log;
00233 case SPLT_OPT_FORCE_TAGS_VERSION:
00234 return &state->options.force_tags_version;
00235 case SPLT_OPT_LENGTH_SPLIT_FILE_NUMBER:
00236 return &state->options.length_split_file_number;
00237 case SPLT_OPT_REPLACE_TAGS_IN_TAGS:
00238 return &state->options.replace_tags_in_tags;
00239 case SPLT_OPT_OVERLAP_TIME:
00240 return &state->options.overlap_time;
00241 case SPLT_OPT_SPLIT_TIME:
00242 return &state->options.split_time;
00243 case SPLT_OPT_PARAM_THRESHOLD:
00244 return &state->options.parameter_threshold;
00245 case SPLT_OPT_PARAM_OFFSET:
00246 return &state->options.parameter_offset;
00247 case SPLT_OPT_PARAM_MIN_LENGTH:
00248 return &state->options.parameter_minimum_length;
00249 case SPLT_OPT_PARAM_MIN_TRACK_LENGTH:
00250 return &state->options.parameter_min_track_length;
00251 case SPLT_OPT_ARTIST_TAG_FORMAT:
00252 return &state->options.artist_tag_format;
00253 case SPLT_OPT_ALBUM_TAG_FORMAT:
00254 return &state->options.album_tag_format;
00255 case SPLT_OPT_TITLE_TAG_FORMAT:
00256 return &state->options.title_tag_format;
00257 case SPLT_OPT_COMMENT_TAG_FORMAT:
00258 return &state->options.comment_tag_format;
00259 case SPLT_OPT_REPLACE_UNDERSCORES_TAG_FORMAT:
00260 return &state->options.replace_underscores_tag_format;
00261 case SPLT_OPT_SET_FILE_FROM_CUE_IF_FILE_TAG_FOUND:
00262 return &state->options.set_file_from_cue_if_file_tag_found;
00263 default:
00264 splt_e_error(SPLT_IERROR_INT,__func__, option_name, NULL);
00265 break;
00266 }
00267
00268 return NULL;
00269 }
00270
00271 int splt_o_get_int_option(splt_state *state, int option_name)
00272 {
00273 return *((int *)splt_o_get_option(state, option_name));
00274 }
00275
00276 long splt_o_get_long_option(splt_state *state, int option_name)
00277 {
00278 return *((long *)splt_o_get_option(state, option_name));
00279 }
00280
00281 float splt_o_get_float_option(splt_state *state, int option_name)
00282 {
00283 return *((float *)splt_o_get_option(state, option_name));
00284 }
00285
00286 void splt_o_set_ioptions_default_values(splt_state *state)
00287 {
00288 state->iopts.library_locked = SPLT_FALSE;
00289 state->iopts.messages_locked = SPLT_FALSE;
00290 state->iopts.current_refresh_rate = SPLT_DEFAULT_PROGRESS_RATE;
00291 state->iopts.frame_mode_enabled = SPLT_FALSE;
00292 state->iopts.new_filename_path = NULL;
00293 }
00294
00295 void splt_o_iopts_free(splt_state *state)
00296 {
00297 if (state->iopts.new_filename_path)
00298 {
00299 free(state->iopts.new_filename_path);
00300 state->iopts.new_filename_path = NULL;
00301 }
00302 }
00303
00304 void splt_o_set_iopt(splt_state *state, int type, int value)
00305 {
00306 switch (type)
00307 {
00308 case SPLT_INTERNAL_FRAME_MODE_ENABLED:
00309 state->iopts.frame_mode_enabled = value;
00310 break;
00311 case SPLT_INTERNAL_PROGRESS_RATE:
00312 state->iopts.current_refresh_rate = value;
00313 break;
00314 default:
00315 break;
00316 }
00317 }
00318
00319 int splt_o_get_iopt(splt_state *state, int type)
00320 {
00321 switch (type)
00322 {
00323 case SPLT_INTERNAL_FRAME_MODE_ENABLED:
00324 return state->iopts.frame_mode_enabled;
00325 break;
00326 case SPLT_INTERNAL_PROGRESS_RATE:
00327 return state->iopts.current_refresh_rate;
00328 break;
00329 default:
00330 break;
00331 }
00332
00333 return 0;
00334 }
00335
00336 void splt_o_set_default_iopts(splt_state *state)
00337 {
00338 splt_o_set_iopt(state, SPLT_INTERNAL_FRAME_MODE_ENABLED,SPLT_FALSE);
00339 splt_o_set_iopt(state, SPLT_INTERNAL_PROGRESS_RATE,0);
00340 splt_t_set_new_filename_path(state, NULL, NULL);
00341 }
00342
00343 int splt_o_library_locked(splt_state *state)
00344 {
00345 return state->iopts.library_locked;
00346 }
00347
00348 void splt_o_lock_library(splt_state *state)
00349 {
00350 state->iopts.library_locked = SPLT_TRUE;
00351 }
00352
00353 void splt_o_unlock_library(splt_state *state)
00354 {
00355 state->iopts.library_locked = SPLT_FALSE;
00356 }
00357
00358 int splt_o_messages_locked(splt_state *state)
00359 {
00360 return state->iopts.messages_locked;
00361 }
00362
00363 void splt_o_lock_messages(splt_state *state)
00364 {
00365 state->iopts.messages_locked = SPLT_TRUE;
00366 }
00367
00368 void splt_o_unlock_messages(splt_state *state)
00369 {
00370 state->iopts.messages_locked = SPLT_FALSE;
00371 }
00372