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
00081 #ifndef MP3SPLT_MP3SPLT_H
00082
00083 #include <sys/types.h>
00084
00085 #include "version.h"
00086
00090 #define SPLT_TRUE 1
00091
00094 #define SPLT_FALSE 0
00095
00107 typedef enum {
00108 SPLT_OK = 0,
00109
00110 SPLT_OK_SPLIT = 1,
00111 SPLT_SPLITPOINT_BIGGER_THAN_LENGTH = 4,
00112 SPLT_SILENCE_OK = 5,
00113 SPLT_TIME_SPLIT_OK = 6,
00114 SPLT_NO_SILENCE_SPLITPOINTS_FOUND = 7,
00115 SPLT_OK_SPLIT_EOF = 8,
00116 SPLT_LENGTH_SPLIT_OK = 9,
00117 SPLT_TRIM_SILENCE_OK = 10,
00118
00119 SPLT_FREEDB_OK = 100,
00120 SPLT_FREEDB_FILE_OK = 101,
00121 SPLT_CDDB_OK = 102,
00122 SPLT_CUE_OK = 103,
00123 SPLT_FREEDB_MAX_CD_REACHED = 104,
00124 SPLT_AUDACITY_OK = 105,
00125
00126 SPLT_DEWRAP_OK = 200,
00127
00128 SPLT_SYNC_OK = 300,
00129 SPLT_MIGHT_BE_VBR = 301,
00130
00131 SPLT_ERR_SYNC = -300,
00132 SPLT_ERR_NO_SYNC_FOUND = -301,
00133 SPLT_ERR_TOO_MANY_SYNC_ERR = -302,
00134
00135 SPLT_OUTPUT_FORMAT_OK = 400,
00136 SPLT_OUTPUT_FORMAT_AMBIGUOUS = 401,
00137
00138 SPLT_REGEX_OK = 800,
00139
00140 SPLT_ERROR_SPLITPOINTS = -1,
00141 SPLT_ERROR_CANNOT_OPEN_FILE = -2,
00142 SPLT_ERROR_INVALID = -3,
00143 SPLT_ERROR_EQUAL_SPLITPOINTS = -5,
00144 SPLT_ERROR_SPLITPOINTS_NOT_IN_ORDER = -6,
00145 SPLT_ERROR_NEGATIVE_SPLITPOINT = -7,
00146 SPLT_ERROR_INCORRECT_PATH = -8,
00147 SPLT_ERROR_INCOMPATIBLE_OPTIONS = -10,
00148 SPLT_ERROR_INPUT_OUTPUT_SAME_FILE = -12,
00149 SPLT_ERROR_CANNOT_ALLOCATE_MEMORY = -15,
00150 SPLT_ERROR_CANNOT_OPEN_DEST_FILE = -16,
00151 SPLT_ERROR_CANT_WRITE_TO_OUTPUT_FILE = -17,
00152 SPLT_ERROR_WHILE_READING_FILE = -18,
00153 SPLT_ERROR_SEEKING_FILE = -19,
00154 SPLT_ERROR_BEGIN_OUT_OF_FILE = -20,
00155 SPLT_ERROR_INEXISTENT_FILE = -21,
00156 SPLT_SPLIT_CANCELLED = -22,
00157 SPLT_ERROR_LIBRARY_LOCKED = -24,
00158 SPLT_ERROR_STATE_NULL = -25,
00159 SPLT_ERROR_NEGATIVE_TIME_SPLIT = -26,
00160 SPLT_ERROR_CANNOT_CREATE_DIRECTORY = -27,
00161 SPLT_ERROR_CANNOT_CLOSE_FILE = -28,
00162 SPLT_ERROR_NO_PLUGIN_FOUND = -29,
00163 SPLT_ERROR_CANNOT_INIT_LIBLTDL = -30,
00164 SPLT_ERROR_CRC_FAILED = -31,
00165 SPLT_ERROR_NO_PLUGIN_FOUND_FOR_FILE = -32,
00166 SPLT_ERROR_PLUGIN_ERROR = -33,
00167 SPLT_ERROR_TIME_SPLIT_VALUE_INVALID = -34,
00168 SPLT_ERROR_LENGTH_SPLIT_VALUE_INVALID = -35,
00169 SPLT_ERROR_CANNOT_GET_TOTAL_TIME = -36,
00170 SPLT_ERROR_LIBID3 = -37,
00171 SPLT_ERROR_FAILED_BITRESERVOIR = -38,
00172
00173 SPLT_FREEDB_ERROR_INITIALISE_SOCKET = -101,
00174 SPLT_FREEDB_ERROR_CANNOT_GET_HOST = -102,
00175 SPLT_FREEDB_ERROR_CANNOT_OPEN_SOCKET = -103,
00176 SPLT_FREEDB_ERROR_CANNOT_CONNECT = -104,
00177 SPLT_FREEDB_ERROR_CANNOT_SEND_MESSAGE = -105,
00178 SPLT_FREEDB_ERROR_INVALID_SERVER_ANSWER = -106,
00179 SPLT_FREEDB_ERROR_SITE_201 = -107,
00180 SPLT_FREEDB_ERROR_SITE_200 = -108,
00181 SPLT_FREEDB_ERROR_BAD_COMMUNICATION = -109,
00182 SPLT_FREEDB_ERROR_GETTING_INFOS = -110,
00183 SPLT_FREEDB_NO_CD_FOUND = -111,
00184 SPLT_FREEDB_ERROR_CANNOT_RECV_MESSAGE = -112,
00185 SPLT_INVALID_CUE_FILE = -115,
00186 SPLT_INVALID_CDDB_FILE = -116,
00187 SPLT_FREEDB_NO_SUCH_CD_IN_DATABASE = -118,
00188 SPLT_FREEDB_ERROR_SITE = -119,
00189 SPLT_FREEDB_ERROR_CANNOT_DISCONNECT = -120,
00190 SPLT_FREEDB_ERROR_PROXY_NOT_SUPPORTED = -121,
00191 SPLT_ERROR_INTERNAL_SHEET = -122,
00192 SPLT_ERROR_INTERNAL_SHEET_TYPE_NOT_SUPPORTED = -123,
00193
00194 SPLT_DEWRAP_ERR_FILE_LENGTH = -200,
00195 SPLT_DEWRAP_ERR_VERSION_OLD = -201,
00196 SPLT_DEWRAP_ERR_NO_FILE_OR_BAD_INDEX = -202,
00197 SPLT_DEWRAP_ERR_FILE_DAMAGED_INCOMPLETE = -203,
00198 SPLT_DEWRAP_ERR_FILE_NOT_WRAPED_DAMAGED = -204,
00199
00200 SPLT_OUTPUT_FORMAT_ERROR = -400,
00201
00202 SPLT_ERROR_INEXISTENT_SPLITPOINT = -500,
00203
00204 SPLT_PLUGIN_ERROR_UNSUPPORTED_FEATURE = -600,
00205
00206 SPLT_INVALID_AUDACITY_FILE = -700,
00207
00208 SPLT_INVALID_REGEX = -800,
00209 SPLT_REGEX_NO_MATCH = -801,
00210 SPLT_REGEX_UNAVAILABLE = -802,
00211
00212 SPLT_ERROR_NO_AUTO_ADJUST_FOUND = -900,
00213
00214 SPLT_ERROR_INVALID_CODE = -1000,
00215 } splt_code;
00216
00218
00223
00231 typedef struct _splt_state splt_state;
00232
00243 splt_state *mp3splt_new_state(splt_code *error);
00244
00253 splt_code mp3splt_free_state(splt_state *state);
00254
00264 splt_code mp3splt_append_plugins_scan_dir(splt_state *state, const char *directory);
00265
00275 splt_code mp3splt_find_plugins(splt_state *state);
00276
00278
00293 char *mp3splt_get_strerror(splt_state *state, splt_code error);
00294
00296
00312 typedef enum {
00321 SPLT_OPT_PRETEND_TO_SPLIT = 1,
00329 SPLT_OPT_QUIET_MODE,
00337 SPLT_OPT_DEBUG_MODE,
00345 SPLT_OPT_SPLIT_MODE,
00353 SPLT_OPT_TAGS,
00361 SPLT_OPT_XING,
00373 SPLT_OPT_CREATE_DIRS_FROM_FILENAMES,
00381 SPLT_OPT_OUTPUT_FILENAMES,
00392 SPLT_OPT_FRAME_MODE,
00400 SPLT_OPT_AUTO_ADJUST,
00410 SPLT_OPT_INPUT_NOT_SEEKABLE,
00419 SPLT_OPT_PARAM_NUMBER_TRACKS,
00431 SPLT_OPT_PARAM_SHOTS,
00439 SPLT_OPT_PARAM_REMOVE_SILENCE,
00448 SPLT_OPT_PARAM_GAP,
00457 SPLT_OPT_ENABLE_SILENCE_LOG,
00467 SPLT_OPT_FORCE_TAGS_VERSION,
00476 SPLT_OPT_LENGTH_SPLIT_FILE_NUMBER,
00486 SPLT_OPT_REPLACE_TAGS_IN_TAGS,
00495 SPLT_OPT_OVERLAP_TIME,
00504 SPLT_OPT_SPLIT_TIME,
00515 SPLT_OPT_PARAM_THRESHOLD,
00525 SPLT_OPT_PARAM_OFFSET,
00534 SPLT_OPT_PARAM_MIN_LENGTH,
00543 SPLT_OPT_PARAM_MIN_TRACK_LENGTH,
00554 SPLT_OPT_PARAM_MIN_TRACK_JOIN,
00563 SPLT_OPT_ARTIST_TAG_FORMAT,
00572 SPLT_OPT_ALBUM_TAG_FORMAT,
00581 SPLT_OPT_TITLE_TAG_FORMAT,
00590 SPLT_OPT_COMMENT_TAG_FORMAT,
00599 SPLT_OPT_REPLACE_UNDERSCORES_TAG_FORMAT,
00608 SPLT_OPT_SET_FILE_FROM_CUE_IF_FILE_TAG_FOUND,
00618 SPLT_OPT_KEEP_SILENCE_LEFT,
00628 SPLT_OPT_KEEP_SILENCE_RIGHT,
00637 SPLT_OPT_CUE_SET_SPLITPOINT_NAMES_FROM_REM_NAME,
00645 SPLT_OPT_CUE_DISABLE_CUE_FILE_CREATED_MESSAGE,
00654 SPLT_OPT_CUE_CDDB_ADD_TAGS_WITH_KEEP_ORIGINAL_TAGS,
00662 SPLT_OPT_ID3V2_ENCODING,
00670 SPLT_OPT_INPUT_TAGS_ENCODING,
00681 SPLT_OPT_TIME_MINIMUM_THEORETICAL_LENGTH,
00690 SPLT_OPT_WARN_IF_NO_AUTO_ADJUST_FOUND,
00699 SPLT_OPT_STOP_IF_NO_AUTO_ADJUST_FOUND,
00709 SPLT_OPT_DECODE_AND_WRITE_FLAC_MD5SUM_FOR_CREATED_FILES,
00718 SPLT_OPT_HANDLE_BIT_RESERVOIR,
00719 } splt_options;
00720
00724 typedef enum {
00728 SPLT_OPTION_NORMAL_MODE,
00733 SPLT_OPTION_WRAP_MODE,
00738 SPLT_OPTION_SILENCE_MODE,
00743 SPLT_OPTION_TRIM_SILENCE_MODE,
00748 SPLT_OPTION_ERROR_MODE,
00753 SPLT_OPTION_TIME_MODE,
00757 SPLT_OPTION_LENGTH_MODE,
00758 } splt_split_mode_options;
00759
00763 typedef enum {
00767 SPLT_ID3V2_LATIN1,
00771 SPLT_ID3V2_UTF8,
00775 SPLT_ID3V2_UTF16,
00776 } splt_id3v2_encoding;
00777
00781 typedef enum {
00785 SPLT_OUTPUT_FORMAT,
00793 SPLT_OUTPUT_DEFAULT,
00798 SPLT_OUTPUT_CUSTOM
00799 } splt_output_filenames_options;
00800
00804 #define SPLT_DEFAULT_PARAM_THRESHOLD -48.0
00805
00808 #define SPLT_DEFAULT_PARAM_OFFSET 0.8
00809
00812 #define SPLT_DEFAULT_PARAM_MINIMUM_LENGTH 0.0
00813
00816 #define SPLT_DEFAULT_PARAM_MINIMUM_TRACK_LENGTH 0.0
00817
00820 #define SPLT_DEFAULT_PARAM_MIN_TRACK_JOIN 0.0
00821
00824 #define SPLT_DEFAULT_PARAM_GAP 30
00825
00828 #define SPLT_DEFAULT_PARAM_TRACKS 0
00829
00832 #define SPLT_DEFAULT_PARAM_SHOTS 25
00833
00836 #define SPLT_DEFAULT_KEEP_SILENCE_LEFT 0
00837
00840 #define SPLT_DEFAULT_KEEP_SILENCE_RIGHT 0
00841
00845 typedef enum {
00849 SPLT_TAGS_ORIGINAL_FILE,
00853 SPLT_CURRENT_TAGS,
00857 SPLT_NO_TAGS,
00861 SPLT_TAGS_FROM_FILENAME_REGEX,
00862 } splt_tags_options;
00863
00868 #define SPLT_DEFAULT_OUTPUT "@f_@mm_@ss_@h0h__@Mm_@Ss_@H0h"
00869
00874 #define SPLT_DEFAULT_CDDB_CUE_OUTPUT "@A - @n - @t"
00875
00879 #define SPLT_DEFAULT_SYNCERROR_OUTPUT "@f_error_@n"
00880
00884 #define SPLT_DEFAULT_SILENCE_OUTPUT "@f_silence_@n"
00885
00889 #define SPLT_DEFAULT_TRIM_SILENCE_OUTPUT "@f_trimmed"
00890
00896 typedef enum {
00900 SPLT_NO_CONVERSION,
00904 SPLT_TO_LOWERCASE,
00908 SPLT_TO_UPPERCASE,
00912 SPLT_TO_FIRST_UPPERCASE,
00916 SPLT_TO_WORD_FIRST_UPPERCASE
00917 } splt_str_format;
00918
00927 splt_code mp3splt_set_int_option(splt_state *state, splt_options option, int value);
00928
00937 splt_code mp3splt_set_long_option(splt_state *state, splt_options option, long value);
00938
00947 splt_code mp3splt_set_float_option(splt_state *state, splt_options option, float value);
00948
00957 int mp3splt_get_int_option(splt_state *state, splt_options option, splt_code *error);
00958
00967 long mp3splt_get_long_option(splt_state *state, splt_options option, splt_code *error);
00968
00977 float mp3splt_get_float_option(splt_state *state, splt_options option, splt_code *error);
00978
00986 splt_code mp3splt_set_oformat(splt_state *state, const char *format);
00987
00989
01003 splt_code mp3splt_set_filename_to_split(splt_state *state, const char *filename);
01004
01012 splt_code mp3splt_set_path_of_split(splt_state *state, const char *path_of_split);
01013
01025 const char *mp3splt_get_filename_to_split(splt_state *state);
01026
01039 splt_code mp3splt_set_m3u_filename(splt_state *state, const char *m3u_filename);
01040
01066 splt_code mp3splt_set_silence_log_filename(splt_state *state, const char *filename);
01067
01100 splt_code mp3splt_set_silence_full_log_filename(splt_state *state, const char *filename);
01101
01103
01115 typedef enum {
01119 SPLT_MESSAGE_INFO,
01123 SPLT_MESSAGE_WARNING,
01127 SPLT_MESSAGE_DEBUG
01128 } splt_message_type;
01129
01146 splt_code mp3splt_set_message_function(splt_state *state,
01147 void (*message_cb)(const char *message, splt_message_type type, void *cb_data), void *cb_data);
01148
01162 splt_code mp3splt_set_split_filename_function(splt_state *state,
01163 void (*file_cb)(const char *filename, void *cb_data),
01164 void *cb_data);
01165
01186 splt_code mp3splt_set_pretend_to_split_write_function(splt_state *state,
01187 void (*write_cb)(const void *ptr, size_t size, size_t nmemb, void *cb_data),
01188 void *cb_data);
01189
01194 typedef enum {
01198 SPLT_PROGRESS_PREPARE,
01202 SPLT_PROGRESS_CREATE,
01206 SPLT_PROGRESS_SEARCH_SYNC,
01211 SPLT_PROGRESS_SCAN_SILENCE
01212 } splt_progress_messages;
01213
01229 typedef struct splt_progres splt_progress;
01230
01244 splt_code mp3splt_set_progress_function(splt_state *state,
01245 void (*progress_cb)(splt_progress *p_bar, void *cb_data), void *cb_data);
01246
01250 int mp3splt_progress_get_type(const splt_progress *p_bar);
01251
01255 char *mp3splt_progress_get_filename_shorted(const splt_progress *p_bar);
01256
01260 int mp3splt_progress_get_current_split(const splt_progress *p_bar);
01261
01265 int mp3splt_progress_get_max_splits(const splt_progress *p_bar);
01266
01270 int mp3splt_progress_get_silence_found_tracks(const splt_progress *p_bar);
01271
01275 float mp3splt_progress_get_silence_db_level(const splt_progress *p_bar);
01276
01280 float mp3splt_progress_get_percent_progress(const splt_progress *p_bar);
01281
01297 splt_code mp3splt_set_silence_level_function(splt_state *state,
01298 void (*get_silence_cb)(long time, float level, void *user_data),
01299 void *user_data);
01300
01302
01313 typedef enum {
01317 SPLT_SPLITPOINT,
01322 SPLT_SKIPPOINT,
01323 } splt_type_of_splitpoint;
01324
01333 typedef struct _splt_point splt_point;
01334
01348 splt_point *mp3splt_point_new(long splitpoint_value, splt_code *error);
01349
01357 splt_code mp3splt_point_set_name(splt_point *splitpoint, const char *name);
01358
01366 splt_code mp3splt_point_set_type(splt_point *splitpoint, splt_type_of_splitpoint type);
01367
01377 splt_code mp3splt_append_splitpoint(splt_state *state, splt_point *splitpoint);
01378
01386 typedef struct _splt_points splt_points;
01387
01398 splt_points *mp3splt_get_splitpoints(splt_state *state, splt_code *error);
01399
01407 void mp3splt_points_init_iterator(splt_points *splitpoints);
01408
01419 const splt_point *mp3splt_points_next(splt_points *splitpoints);
01420
01429 long mp3splt_point_get_value(const splt_point *point);
01430
01440 splt_type_of_splitpoint mp3splt_point_get_type(const splt_point *point);
01441
01450 char *mp3splt_point_get_name(const splt_point *point);
01451
01458 splt_code mp3splt_erase_all_splitpoints(splt_state *state);
01459
01461
01471 #define SPLT_UNDEFINED_GENRE "Other"
01472
01477 #define SPLT_ID3V1_NUMBER_OF_GENRES 127
01478
01482 extern const char splt_id3v1_genres[SPLT_ID3V1_NUMBER_OF_GENRES][25];
01483
01487 typedef enum {
01488 SPLT_TAGS_TITLE = 1,
01489 SPLT_TAGS_ARTIST = 2,
01490 SPLT_TAGS_ALBUM = 3,
01491 SPLT_TAGS_YEAR = 4,
01492 SPLT_TAGS_COMMENT = 5,
01493 SPLT_TAGS_TRACK = 6,
01494 SPLT_TAGS_GENRE = 7,
01495 SPLT_TAGS_PERFORMER = 8,
01500 SPLT_TAGS_ORIGINAL = 900
01501 } splt_tag_key;
01502
01512 typedef struct _splt_tags splt_tags;
01513
01523 splt_tags *mp3splt_tags_new(splt_code *error);
01524
01544 splt_code mp3splt_tags_set(splt_tags *tags, ...);
01545
01558 splt_code mp3splt_append_tags(splt_state *state, splt_tags *tags);
01559
01564 typedef struct _splt_tags_group splt_tags_group;
01565
01576 splt_tags_group *mp3splt_get_tags_group(splt_state *state, splt_code *error);
01577
01584 splt_code mp3splt_remove_tags_of_skippoints(splt_state *state);
01585
01593 void mp3splt_tags_group_init_iterator(splt_tags_group *tags_group);
01594
01603 splt_tags *mp3splt_tags_group_next(splt_tags_group *tags_group);
01604
01608 char *mp3splt_tags_get(splt_tags *tags, splt_tag_key key);
01609
01638 int mp3splt_put_tags_from_string(splt_state *state, const char *tags, splt_code *error);
01639
01648 splt_code mp3splt_read_original_tags(splt_state *state);
01649
01656 splt_code mp3splt_erase_all_tags(splt_state *state);
01657
01671 splt_code mp3splt_set_input_filename_regex(splt_state *state, const char *regex);
01672
01682 splt_code mp3splt_set_default_comment_tag(splt_state *state, const char *default_comment_tag);
01683
01693 splt_code mp3splt_set_default_genre_tag(splt_state *state, const char *default_genre_tag);
01694
01707 splt_tags *mp3splt_parse_filename_regex(splt_state *state, splt_code *error);
01708
01716 void mp3splt_free_one_tag(splt_tags *tags);
01717
01719
01738 splt_code mp3splt_split(splt_state *state);
01739
01748 splt_code mp3splt_stop_split(splt_state *state);
01749
01761 char **mp3splt_find_filenames(splt_state *state, const char *filename,
01762 int *num_of_files_found, splt_code *error);
01763
01765
01777 typedef enum {
01778 CUE_IMPORT,
01779 CDDB_IMPORT,
01780 AUDACITY_LABELS_IMPORT,
01781 PLUGIN_INTERNAL_IMPORT
01782 } splt_import_type;
01783
01794 splt_code mp3splt_import(splt_state *state, splt_import_type type, const char *file);
01795
01801 #define SPLT_FREEDB_SEARCH_TYPE_CDDB_CGI 1
01802
01808 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB_CGI 3
01809
01815 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB 4
01816
01823 #define SPLT_FREEDB_CDDB_CGI_PORT 80
01824
01832 #define SPLT_FREEDB2_CGI_SITE "tracktype.org/~cddb/cddb.cgi"
01833
01842 typedef struct _splt_freedb_results splt_freedb_results;
01843
01851 typedef struct _splt_freedb_one_result splt_freedb_one_result;
01852
01861 splt_code mp3splt_use_proxy(splt_state *state, const char *proxy_address, int proxy_port);
01862
01874 splt_code mp3splt_use_base64_authentification(splt_state *state,
01875 const char *base64_authentification);
01876
01887 char *mp3splt_encode_in_base64(splt_state *state, const char *input, int *error);
01888
01895 void mp3splt_clear_proxy(splt_state *state);
01896
01913 splt_freedb_results *mp3splt_get_freedb_search(splt_state *state,
01914 const char *searched_string, splt_code *error,
01915 int search_type, const char *search_server, int port);
01916
01924 void mp3splt_freedb_init_iterator(splt_freedb_results *freedb_results);
01925
01936 const splt_freedb_one_result *mp3splt_freedb_next(splt_freedb_results *freedb_results);
01937
01942 int mp3splt_freedb_get_id(const splt_freedb_one_result *result);
01943
01947 const char *mp3splt_freedb_get_name(const splt_freedb_one_result *result);
01948
01952 int mp3splt_freedb_get_number_of_revisions(const splt_freedb_one_result *result);
01953
01970 splt_code mp3splt_write_freedb_file_result(splt_state *state,
01971 int disc_id, const char *output_file,
01972 int cddb_get_type, const char *cddb_get_server, int port);
01973
01975
01987 typedef enum {
01988 CUE_EXPORT
01989 } splt_export_type;
01990
02001 splt_code mp3splt_export(splt_state *state, splt_export_type type,
02002 const char *file, int stop_at_total_time);
02003
02005
02020 typedef struct _splt_wrap splt_wrap;
02021
02028 typedef struct _splt_one_wrap splt_one_wrap;
02029
02041 splt_wrap *mp3splt_get_wrap_files(splt_state *state, splt_code *error);
02042
02050 void mp3splt_wrap_init_iterator(splt_wrap *wrap);
02051
02060 const splt_one_wrap *mp3splt_wrap_next(splt_wrap *wrap);
02061
02065 char *mp3splt_wrap_get_wrapped_file(const splt_one_wrap *one_wrap);
02066
02068
02082 int mp3splt_set_silence_points(splt_state *state, splt_code *error);
02083
02090 splt_code mp3splt_set_trim_silence_points(splt_state *state);
02091
02095 char *mp3splt_get_version();
02096
02097 #ifdef __WIN32__
02098
02101 char *mp3splt_win32_utf16_to_utf8(const wchar_t *source);
02102 #endif
02103
02107 int mp3splt_check_if_directory(const char *filename);
02108
02109 #ifndef SPLT_DIRCHAR
02110 #ifdef __WIN32__
02111 #define SPLT_DIRCHAR '\\'
02112 #define SPLT_DIRSTR "\\"
02113 #else
02114
02117 #define SPLT_DIRCHAR '/'
02118
02121 #define SPLT_DIRSTR "/"
02122 #endif
02123 #endif
02124
02126
02135 typedef struct {
02139 float version;
02143 char *name;
02147 char *extension;
02151 char *upper_extension;
02152 } splt_plugin_info;
02153
02157 typedef struct _splt_original_tags splt_original_tags;
02158
02174 typedef struct {
02184 void (*splt_pl_init)(splt_state *state, splt_code *error);
02193 void (*splt_pl_end)(splt_state *state, splt_code *error);
02203 int (*splt_pl_check_plugin_is_for_file)(splt_state *state, splt_code *error);
02212 void (*splt_pl_set_plugin_info)(splt_plugin_info *information, splt_code *error);
02226 double (*splt_pl_split)(splt_state *state, const char *final_fname, double begin_point,
02227 double end_point, splt_code *error, int save_end_point);
02239 void (*splt_pl_set_original_tags)(splt_state *state, splt_code *error);
02248 void (*splt_pl_clear_original_tags)(splt_original_tags *original_tags);
02260 int (*splt_pl_scan_silence)(splt_state *state, splt_code *error);
02272 int (*splt_pl_scan_trim_silence)(splt_state *state, splt_code *error);
02281 void (*splt_pl_search_syncerrors)(splt_state *state, splt_code *error);
02293 int (*splt_pl_offset_split)(splt_state *state, const char *output_fname, off_t begin, off_t end);
02305 void (*splt_pl_dewrap)(splt_state *state, int listonly, const char *dir, splt_code *error);
02312 void (*splt_pl_import_internal_sheets)(splt_state *state, splt_code *error);
02313 } splt_plugin_func;
02314
02316
02320 #define MP3SPLT_MP3SPLT_H
02321 #endif
02322