33 #ifndef MP3SPLT_MP3SPLT_H
35 #include <sys/types.h>
119 #define SPLT_MAXCD 512
122 #define SPLT_DISCIDLEN 8
126 char discid[SPLT_DISCIDLEN+1];
131 struct splt_cd discs[SPLT_MAXCD];
173 off_t *serrors_points;
183 #define SPLT_MAXOLEN 255
184 #define SPLT_OUTNUM 20
191 char output_format_digits;
192 int output_alpha_format_digits;
194 char format[SPLT_OUTNUM+1][SPLT_MAXOLEN];
252 int set_original_tags;
257 void *all_original_tags;
286 double begin_position;
393 void (*file_split)(
const char *,int);
475 #define SPLT_DEFAULT_PARAM_THRESHOLD -48.0
479 #define SPLT_DEFAULT_PARAM_OFFSET 0.8
483 #define SPLT_DEFAULT_PARAM_MINIMUM_LENGTH 0.0
487 #define SPLT_DEFAULT_PARAM_MINIMUM_TRACK_LENGTH 0.0
491 #define SPLT_DEFAULT_PARAM_GAP 30
495 #define SPLT_DEFAULT_PARAM_TRACKS 0
499 #define SPLT_DEFAULT_PARAM_SHOTS 25
527 #define SPLT_ORIGINAL_TAGS_DEFAULT "%[@o,@N=1]"
529 #define SPLT_DEFAULT_OUTPUT "@f_@mm_@ss_@hh__@Mm_@Ss_@Hh"
535 #define SPLT_DEFAULT_CDDB_CUE_OUTPUT "@A - @n - @t"
540 #define SPLT_DEFAULT_SYNCERROR_OUTPUT "@f_error_@n"
545 #define SPLT_DEFAULT_SILENCE_OUTPUT "@f_silence_@n"
550 #define SPLT_DEFAULT_TRIM_SILENCE_OUTPUT "@f_trimmed"
711 int replace_tags_in_tags;
741 char *upper_extension;
746 int (*check_plugin_is_for_file)(
void *state,
int *error);
748 void (*search_syncerrors)(
void *state,
int *error);
749 void (*dewrap)(
void *state,
int listonly,
const char *dir,
int *error);
750 void (*set_total_time)(
void *state,
int *error);
751 int (*simple_split)(
void *state,
const char *output_fname, off_t begin, off_t end);
752 double (*split)(
void *state,
const char *final_fname,
double begin_point,
753 double end_point,
int *error,
int save_end_point);
754 int (*scan_silence)(
void *state,
int *error);
755 int (*scan_trim_silence)(
void *state,
int *error);
756 void (*set_original_tags)(
void *state,
int *error);
758 void (*init)(
void *state,
int *error);
759 void (*end)(
void *state,
int *error);
779 int number_of_dirs_to_scan;
809 char *default_comment_tag;
810 char *default_genre_tag;
866 SPLT_SPLITPOINT_BIGGER_THAN_LENGTH = 4,
868 SPLT_TIME_SPLIT_OK = 6,
869 SPLT_NO_SILENCE_SPLITPOINTS_FOUND = 7,
870 SPLT_OK_SPLIT_EOF = 8,
871 SPLT_LENGTH_SPLIT_OK = 9,
872 SPLT_TRIM_SILENCE_OK = 10,
874 SPLT_FREEDB_OK = 100,
875 SPLT_FREEDB_FILE_OK = 101,
878 SPLT_FREEDB_MAX_CD_REACHED = 104,
879 SPLT_AUDACITY_OK = 105,
881 SPLT_DEWRAP_OK = 200,
884 SPLT_MIGHT_BE_VBR = 301,
886 SPLT_ERR_SYNC = -300,
887 SPLT_ERR_NO_SYNC_FOUND = -301,
888 SPLT_ERR_TOO_MANY_SYNC_ERR = -302,
890 SPLT_OUTPUT_FORMAT_OK = 400,
891 SPLT_OUTPUT_FORMAT_AMBIGUOUS = 401,
895 SPLT_ERROR_SPLITPOINTS = -1,
896 SPLT_ERROR_CANNOT_OPEN_FILE = -2,
897 SPLT_ERROR_INVALID = -3,
898 SPLT_ERROR_EQUAL_SPLITPOINTS = -5,
899 SPLT_ERROR_SPLITPOINTS_NOT_IN_ORDER = -6,
900 SPLT_ERROR_NEGATIVE_SPLITPOINT = -7,
901 SPLT_ERROR_INCORRECT_PATH = -8,
902 SPLT_ERROR_INCOMPATIBLE_OPTIONS = -10,
903 SPLT_ERROR_INPUT_OUTPUT_SAME_FILE = -12,
904 SPLT_ERROR_CANNOT_ALLOCATE_MEMORY = -15,
905 SPLT_ERROR_CANNOT_OPEN_DEST_FILE = -16,
906 SPLT_ERROR_CANT_WRITE_TO_OUTPUT_FILE = -17,
907 SPLT_ERROR_WHILE_READING_FILE = -18,
908 SPLT_ERROR_SEEKING_FILE = -19,
909 SPLT_ERROR_BEGIN_OUT_OF_FILE = -20,
910 SPLT_ERROR_INEXISTENT_FILE = -21,
911 SPLT_SPLIT_CANCELLED = -22,
912 SPLT_ERROR_LIBRARY_LOCKED = -24,
913 SPLT_ERROR_STATE_NULL = -25,
914 SPLT_ERROR_NEGATIVE_TIME_SPLIT = -26,
915 SPLT_ERROR_CANNOT_CREATE_DIRECTORY = -27,
916 SPLT_ERROR_CANNOT_CLOSE_FILE = -28,
917 SPLT_ERROR_NO_PLUGIN_FOUND = -29,
918 SPLT_ERROR_CANNOT_INIT_LIBLTDL = -30,
919 SPLT_ERROR_CRC_FAILED = -31,
920 SPLT_ERROR_NO_PLUGIN_FOUND_FOR_FILE = -32,
921 SPLT_ERROR_PLUGIN_ERROR = -33,
922 SPLT_ERROR_TIME_SPLIT_VALUE_INVALID = -34,
923 SPLT_ERROR_LENGTH_SPLIT_VALUE_INVALID = -35,
924 SPLT_ERROR_CANNOT_GET_TOTAL_TIME = -36,
925 SPLT_ERROR_LIBID3 = -37,
927 SPLT_FREEDB_ERROR_INITIALISE_SOCKET = -101,
928 SPLT_FREEDB_ERROR_CANNOT_GET_HOST = -102,
929 SPLT_FREEDB_ERROR_CANNOT_OPEN_SOCKET = -103,
930 SPLT_FREEDB_ERROR_CANNOT_CONNECT = -104,
931 SPLT_FREEDB_ERROR_CANNOT_SEND_MESSAGE = -105,
932 SPLT_FREEDB_ERROR_INVALID_SERVER_ANSWER = -106,
933 SPLT_FREEDB_ERROR_SITE_201 = -107,
934 SPLT_FREEDB_ERROR_SITE_200 = -108,
935 SPLT_FREEDB_ERROR_BAD_COMMUNICATION = -109,
936 SPLT_FREEDB_ERROR_GETTING_INFOS = -110,
937 SPLT_FREEDB_NO_CD_FOUND = -111,
938 SPLT_FREEDB_ERROR_CANNOT_RECV_MESSAGE = -112,
939 SPLT_INVALID_CUE_FILE = -115,
940 SPLT_INVALID_CDDB_FILE = -116,
941 SPLT_FREEDB_NO_SUCH_CD_IN_DATABASE = -118,
942 SPLT_FREEDB_ERROR_SITE = -119,
943 SPLT_FREEDB_ERROR_CANNOT_DISCONNECT = -120,
945 SPLT_DEWRAP_ERR_FILE_LENGTH = -200,
946 SPLT_DEWRAP_ERR_VERSION_OLD = -201,
947 SPLT_DEWRAP_ERR_NO_FILE_OR_BAD_INDEX = -202,
948 SPLT_DEWRAP_ERR_FILE_DAMAGED_INCOMPLETE = -203,
949 SPLT_DEWRAP_ERR_FILE_NOT_WRAPED_DAMAGED = -204,
951 SPLT_OUTPUT_FORMAT_ERROR = -400,
953 SPLT_ERROR_INEXISTENT_SPLITPOINT = -500,
955 SPLT_PLUGIN_ERROR_UNSUPPORTED_FEATURE = -600,
957 SPLT_INVALID_AUDACITY_FILE = -700,
959 SPLT_INVALID_REGEX = -800,
960 SPLT_REGEX_NO_MATCH = -801,
961 SPLT_REGEX_UNAVAILABLE = -802,
965 #define SPLT_INTERNAL_PROGRESS_RATE 1
966 #define SPLT_INTERNAL_FRAME_MODE_ENABLED 2
1010 SPLT_OPT_QUIET_MODE,
1151 SPLT_OPT_REPLACE_TAGS_IN_TAGS,
1241 SPLT_TO_FIRST_UPPERCASE,
1242 SPLT_TO_WORD_FIRST_UPPERCASE
1257 #define SPLT_UNDEFINED_GENRE "Other"
1259 #define SPLT_ID3V1_NUMBER_OF_GENRES 127
1263 static const char splt_id3v1_genres[SPLT_ID3V1_NUMBER_OF_GENRES][25] = {
1265 {
"Classic Rock"}, {
"Country"}, {
"Dance"},
1266 {
"Disco"},{
"Funk"},{
"Grunge"},{
"Hip-Hop"},{
"Jazz"},
1267 {
"Metal"},{
"New Age"},{
"Oldies"}, {
"Other"}, {
"Pop"},
1268 {
"R&B"}, {
"Rap"}, {
"Reggae"}, {
"Rock"}, {
"Techno"},
1269 {
"Industrial"}, {
"Alternative"}, {
"Ska"}, {
"Death metal"},
1270 {
"Pranks"}, {
"Soundtrack"}, {
"Euro-Techno"},
1271 {
"Ambient"}, {
"Trip-hop"}, {
"Vocal"}, {
"Jazz+Funk"},
1272 {
"Fusion"}, {
"Trance"}, {
"Classical"}, {
"Instrumental"},
1273 {
"Acid"}, {
"House"}, {
"Game"}, {
"Sound clip"}, {
"Gospel"},
1274 {
"Noise"}, {
"Alt. Rock"}, {
"Bass"}, {
"Soul"}, {
"Punk"},
1275 {
"Space"}, {
"Meditative"}, {
"Instrumental pop"},
1276 {
"Instrumental rock"}, {
"Ethnic"}, {
"Gothic"},{
"Darkwave"},
1277 {
"Techno-Industrial"},{
"Electronic"},{
"Pop-Folk"},{
"Eurodance"},
1278 {
"Dream"},{
"Southern Rock"},{
"Comedy"}, {
"Cult"},{
"Gangsta"},
1279 {
"Top 40"},{
"Christian Rap"},{
"Pop/Funk"}, {
"Jungle"},
1280 {
"Native American"},{
"Cabaret"},{
"New Wave"}, {
"Psychedelic"},
1281 {
"Rave"},{
"Showtunes"},{
"Trailer"}, {
"Lo-Fi"},{
"Tribal"},
1282 {
"Acid Punk"},{
"Acid Jazz"}, {
"Polka"}, {
"Retro"},
1283 {
"Musical"},{
"Rock & Roll"},{
"Hard Rock"},
1285 {
"Folk"}, {
"Folk-Rock"}, {
"National Folk"}, {
"Swing"},
1286 {
"Fast Fusion"}, {
"Bebob"}, {
"Latin"}, {
"Revival"},
1287 {
"Celtic"}, {
"Bluegrass"}, {
"Avantgarde"}, {
"Gothic Rock"},
1288 {
"Progressive Rock"}, {
"Psychedelic Rock"}, {
"Symphonic Rock"},
1289 {
"Slow Rock"}, {
"Big Band"}, {
"Chorus"}, {
"Easy Listening"},
1290 {
"Acoustic"}, {
"Humour"}, {
"Speech"}, {
"Chanson"}, {
"Opera"},
1291 {
"Chamber Music"}, {
"Sonata"}, {
"Symphony"}, {
"Booty Bass"},
1292 {
"Primus"}, {
"Porn Groove"}, {
"Satire"}, {
"Slow Jam"},
1293 {
"Club"}, {
"Tango"}, {
"Samba"}, {
"Folklore"}, {
"Ballad"},
1294 {
"Power Ballad"}, {
"Rhythmic Soul"}, {
"Freestyle"}, {
"Duet"},
1295 {
"Punk Rock"}, {
"Drum Solo"}, {
"A capella"}, {
"Euro-House"},
1308 #define SPLT_FREEDB_SEARCH_TYPE_CDDB_CGI 1
1312 #define SPLT_FREEDB_SEARCH_TYPE_CDDB 2
1318 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB_CGI 3
1323 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB 4
1327 #define SPLT_FREEDB_CDDB_CGI_PORT 80
1331 #define SPLT_FREEDB_CDDB_PORT 8880
1335 #define SPLT_FREEDB_CGI_SITE "freedb.org/~cddb/cddb.cgi"
1336 #define SPLT_FREEDB2_CGI_SITE "tracktype.org/~cddb/cddb.cgi"
1339 #ifndef SPLT_PACKAGE_NAME
1343 #define SPLT_PACKAGE_NAME "libmp3splt"
1345 #ifndef SPLT_PACKAGE_VERSION
1349 #define SPLT_PACKAGE_VERSION "0.7.2"
1354 #define SPLT_AUTHOR "Matteo Trotta | Munteanu Alexandru"
1355 #define SPLT_EMAIL "<mtrotta@users.sourceforge.net> | <io_fx@yahoo.fr>"
1359 #define SPLT_WEBSITE "http://mp3splt.sourceforge.net"
1363 #define MP3SPLT_LIB_GETTEXT_DOMAIN "libmp3splt"
1366 #ifndef SPLT_DIRCHAR
1368 #define SPLT_DIRCHAR '\\'
1369 #define SPLT_DIRSTR "\\"
1370 #define SPLT_NDIRCHAR '/'
1372 #define SPLT_DIRCHAR '/'
1373 #define SPLT_DIRSTR "/"
1374 #define SPLT_NDIRCHAR '\\'
1403 void mp3splt_free_state(
splt_state *state,
int *error);
1438 int mp3splt_set_m3u_filename(
splt_state *state,
const char *filename);
1439 int mp3splt_set_silence_log_filename(
splt_state *state,
const char *filename);
1450 int mp3splt_set_default_comment_tag(
splt_state *state,
const char *default_comment_tag);
1452 int mp3splt_set_default_genre_tag(
splt_state *state,
const char *default_genre_tag);
1478 void (*file_cb)(
const char *,
int));
1489 int mp3splt_set_silence_level_function(
splt_state *state,
1490 void (*get_silence_cb)(
long time,
float level,
void *user_data),
1509 long split_value,
const char *name,
int type);
1520 int *splitpoints_number,
int *error);
1536 const char *title,
const char *artist,
1537 const char *album,
const char *performer,
1538 const char *year,
const char *comment,
1539 int track,
const char *genre);
1543 int *tags_number,
int *error);
1546 int mp3splt_put_tags_from_string(
splt_state *state,
const char *tags,
1549 void mp3splt_erase_all_tags(
splt_state *state,
1555 int mp3splt_set_int_option(
splt_state *state,
int option_name,
int value);
1556 int mp3splt_set_long_option(
splt_state *state,
int option_name,
long value);
1557 int mp3splt_set_float_option(
splt_state *state,
int option_name,
float value);
1559 int mp3splt_get_int_option(
splt_state *state,
int option_name,
int *error);
1560 long mp3splt_get_long_option(
splt_state *state,
int option_name,
int *error);
1561 float mp3splt_get_float_option(
splt_state *state,
int option_name,
int *error);
1579 void mp3splt_put_cue_splitpoints_from_file(
splt_state *state,
1580 const char *cue_file,
int *error);
1583 void mp3splt_put_cddb_splitpoints_from_file(
splt_state *state,
1584 const char *cddb_file,
int *error);
1586 void mp3splt_put_audacity_labels_splitpoints_from_file(
splt_state *state,
1587 const char *file,
int *error);
1597 const char *searched_string,
1600 const char *search_server,
1603 void mp3splt_write_freedb_file_result(
splt_state *state,
1605 const char *cddb_file,
1608 const char *cddb_get_server,
1611 void mp3splt_export_to_cue(
splt_state *state,
const char *out_file,
1612 short stop_at_total_time,
int *error);
1615 const char *format_string,
int *error);
1621 int mp3splt_count_silence_points(
splt_state *state,
int *error);
1623 int mp3splt_set_silence_points(
splt_state *state,
int *error);
1624 void mp3splt_set_trim_silence_points(
splt_state *state,
int *error);
1627 void mp3splt_get_version(
char *version);
1630 char *mp3splt_get_strerror(
splt_state *state,
int error_code);
1640 int mp3splt_append_plugins_scan_dir(
splt_state *state,
char *dir);
1643 char *mp3splt_win32_utf16_to_utf8(
const wchar_t *source);
1646 char **mp3splt_find_filenames(
splt_state *state,
const char *filename,
1647 int *num_of_files_found,
int *error);
1649 int mp3splt_u_check_if_directory(
const char *fname);
1651 void mp3splt_free_one_tag(
splt_tags *tags);
1654 #define MP3SPLT_MP3SPLT_H