libmp3splt  0.9.1
Lossless library for splitting audio formats like mp3, ogg vorbis and FLAC.
mp3splt.h
Go to the documentation of this file.
1 /**********************************************************
2  *
3  * libmp3splt -- library based on mp3splt v2.1c,
4  * for mp3/ogg splitting without decoding
5  *
6  * Copyright (c) 2002-2005 M. Trotta - <mtrotta@users.sourceforge.net>
7  * Copyright (c) 2005-2013 Alexandru Munteanu - m@ioalex.net
8  *
9  * And others ... see the AUTHORS file provided with libmp3splt source.
10  *
11  * http://mp3splt.sourceforge.net
12  *
13  *********************************************************/
14 
15 /**********************************************************
16  *
17  * This program is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU General Public License
19  * as published by the Free Software Foundation; either version 2
20  * of the License, or (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
30  * USA.
31  *
32  *********************************************************/
33 
81 #ifndef MP3SPLT_MP3SPLT_H
82 
83 #include <sys/types.h>
84 
85 #include "version.h"
86 
90 #define SPLT_TRUE 1
91 
94 #define SPLT_FALSE 0
95 
107 typedef enum {
108  SPLT_OK = 0,
109 
110  SPLT_OK_SPLIT = 1,
111  SPLT_SPLITPOINT_BIGGER_THAN_LENGTH = 4,
112  SPLT_SILENCE_OK = 5,
113  SPLT_TIME_SPLIT_OK = 6,
114  SPLT_NO_SILENCE_SPLITPOINTS_FOUND = 7,
115  SPLT_OK_SPLIT_EOF = 8,
116  SPLT_LENGTH_SPLIT_OK = 9,
117  SPLT_TRIM_SILENCE_OK = 10,
118 
119  SPLT_FREEDB_OK = 100,
120  SPLT_FREEDB_FILE_OK = 101,
121  SPLT_CDDB_OK = 102,
122  SPLT_CUE_OK = 103,
123  SPLT_FREEDB_MAX_CD_REACHED = 104,
124  SPLT_AUDACITY_OK = 105,
125 
126  SPLT_DEWRAP_OK = 200,
127 
128  SPLT_SYNC_OK = 300,
129  SPLT_MIGHT_BE_VBR = 301,
130 
131  SPLT_ERR_SYNC = -300,
132  SPLT_ERR_NO_SYNC_FOUND = -301,
133  SPLT_ERR_TOO_MANY_SYNC_ERR = -302,
134 
135  SPLT_OUTPUT_FORMAT_OK = 400,
136  SPLT_OUTPUT_FORMAT_AMBIGUOUS = 401,
137 
138  SPLT_REGEX_OK = 800,
139 
140  SPLT_ERROR_SPLITPOINTS = -1,
141  SPLT_ERROR_CANNOT_OPEN_FILE = -2,
142  SPLT_ERROR_INVALID = -3,
143  SPLT_ERROR_EQUAL_SPLITPOINTS = -5,
144  SPLT_ERROR_SPLITPOINTS_NOT_IN_ORDER = -6,
145  SPLT_ERROR_NEGATIVE_SPLITPOINT = -7,
146  SPLT_ERROR_INCORRECT_PATH = -8,
147  SPLT_ERROR_INCOMPATIBLE_OPTIONS = -10,
148  SPLT_ERROR_INPUT_OUTPUT_SAME_FILE = -12,
149  SPLT_ERROR_CANNOT_ALLOCATE_MEMORY = -15,
150  SPLT_ERROR_CANNOT_OPEN_DEST_FILE = -16,
151  SPLT_ERROR_CANT_WRITE_TO_OUTPUT_FILE = -17,
152  SPLT_ERROR_WHILE_READING_FILE = -18,
153  SPLT_ERROR_SEEKING_FILE = -19,
154  SPLT_ERROR_BEGIN_OUT_OF_FILE = -20,
155  SPLT_ERROR_INEXISTENT_FILE = -21,
156  SPLT_SPLIT_CANCELLED = -22,
157  SPLT_ERROR_LIBRARY_LOCKED = -24,
158  SPLT_ERROR_STATE_NULL = -25,
159  SPLT_ERROR_NEGATIVE_TIME_SPLIT = -26,
160  SPLT_ERROR_CANNOT_CREATE_DIRECTORY = -27,
161  SPLT_ERROR_CANNOT_CLOSE_FILE = -28,
162  SPLT_ERROR_NO_PLUGIN_FOUND = -29,
163  SPLT_ERROR_CANNOT_INIT_LIBLTDL = -30,
164  SPLT_ERROR_CRC_FAILED = -31,
165  SPLT_ERROR_NO_PLUGIN_FOUND_FOR_FILE = -32,
166  SPLT_ERROR_PLUGIN_ERROR = -33,
167  SPLT_ERROR_TIME_SPLIT_VALUE_INVALID = -34,
168  SPLT_ERROR_LENGTH_SPLIT_VALUE_INVALID = -35,
169  SPLT_ERROR_CANNOT_GET_TOTAL_TIME = -36,
170  SPLT_ERROR_LIBID3 = -37,
171 
172  SPLT_FREEDB_ERROR_INITIALISE_SOCKET = -101,
173  SPLT_FREEDB_ERROR_CANNOT_GET_HOST = -102,
174  SPLT_FREEDB_ERROR_CANNOT_OPEN_SOCKET = -103,
175  SPLT_FREEDB_ERROR_CANNOT_CONNECT = -104,
176  SPLT_FREEDB_ERROR_CANNOT_SEND_MESSAGE = -105,
177  SPLT_FREEDB_ERROR_INVALID_SERVER_ANSWER = -106,
178  SPLT_FREEDB_ERROR_SITE_201 = -107,
179  SPLT_FREEDB_ERROR_SITE_200 = -108,
180  SPLT_FREEDB_ERROR_BAD_COMMUNICATION = -109,
181  SPLT_FREEDB_ERROR_GETTING_INFOS = -110,
182  SPLT_FREEDB_NO_CD_FOUND = -111,
183  SPLT_FREEDB_ERROR_CANNOT_RECV_MESSAGE = -112,
184  SPLT_INVALID_CUE_FILE = -115,
185  SPLT_INVALID_CDDB_FILE = -116,
186  SPLT_FREEDB_NO_SUCH_CD_IN_DATABASE = -118,
187  SPLT_FREEDB_ERROR_SITE = -119,
188  SPLT_FREEDB_ERROR_CANNOT_DISCONNECT = -120,
189  SPLT_FREEDB_ERROR_PROXY_NOT_SUPPORTED = -121,
190  SPLT_ERROR_INTERNAL_SHEET = -122,
191  SPLT_ERROR_INTERNAL_SHEET_TYPE_NOT_SUPPORTED = -123,
192 
193  SPLT_DEWRAP_ERR_FILE_LENGTH = -200,
194  SPLT_DEWRAP_ERR_VERSION_OLD = -201,
195  SPLT_DEWRAP_ERR_NO_FILE_OR_BAD_INDEX = -202,
196  SPLT_DEWRAP_ERR_FILE_DAMAGED_INCOMPLETE = -203,
197  SPLT_DEWRAP_ERR_FILE_NOT_WRAPED_DAMAGED = -204,
198 
199  SPLT_OUTPUT_FORMAT_ERROR = -400,
200 
201  SPLT_ERROR_INEXISTENT_SPLITPOINT = -500,
202 
203  SPLT_PLUGIN_ERROR_UNSUPPORTED_FEATURE = -600,
204 
205  SPLT_INVALID_AUDACITY_FILE = -700,
206 
207  SPLT_INVALID_REGEX = -800,
208  SPLT_REGEX_NO_MATCH = -801,
209  SPLT_REGEX_UNAVAILABLE = -802,
210 
211  SPLT_ERROR_NO_AUTO_ADJUST_FOUND = -900,
212 } splt_code;
213 
215 
220 
228 typedef struct _splt_state splt_state;
229 
241 
251 
261 splt_code mp3splt_append_plugins_scan_dir(splt_state *state, const char *directory);
262 
273 
275 
290 char *mp3splt_get_strerror(splt_state *state, splt_code error);
291 
293 
309 typedef enum {
707 } splt_options;
708 
712 typedef enum {
747 
751 typedef enum {
765 
769 typedef enum {
788 
792 #define SPLT_DEFAULT_PARAM_THRESHOLD -48.0
793 
796 #define SPLT_DEFAULT_PARAM_OFFSET 0.8
797 
800 #define SPLT_DEFAULT_PARAM_MINIMUM_LENGTH 0.0
801 
804 #define SPLT_DEFAULT_PARAM_MINIMUM_TRACK_LENGTH 0.0
805 
808 #define SPLT_DEFAULT_PARAM_MIN_TRACK_JOIN 0.0
809 
812 #define SPLT_DEFAULT_PARAM_GAP 30
813 
816 #define SPLT_DEFAULT_PARAM_TRACKS 0
817 
820 #define SPLT_DEFAULT_PARAM_SHOTS 25
821 
824 #define SPLT_DEFAULT_KEEP_SILENCE_LEFT 0
825 
828 #define SPLT_DEFAULT_KEEP_SILENCE_RIGHT 0
829 
833 typedef enum {
851 
856 #define SPLT_DEFAULT_OUTPUT "@f_@mm_@ss_@h0h__@Mm_@Ss_@H0h"
857 
862 #define SPLT_DEFAULT_CDDB_CUE_OUTPUT "@A - @n - @t"
863 
867 #define SPLT_DEFAULT_SYNCERROR_OUTPUT "@f_error_@n"
868 
872 #define SPLT_DEFAULT_SILENCE_OUTPUT "@f_silence_@n"
873 
877 #define SPLT_DEFAULT_TRIM_SILENCE_OUTPUT "@f_trimmed"
878 
884 typedef enum {
906 
915 splt_code mp3splt_set_int_option(splt_state *state, splt_options option, int value);
916 
925 splt_code mp3splt_set_long_option(splt_state *state, splt_options option, long value);
926 
935 splt_code mp3splt_set_float_option(splt_state *state, splt_options option, float value);
936 
945 int mp3splt_get_int_option(splt_state *state, splt_options option, splt_code *error);
946 
955 long mp3splt_get_long_option(splt_state *state, splt_options option, splt_code *error);
956 
965 float mp3splt_get_float_option(splt_state *state, splt_options option, splt_code *error);
966 
974 splt_code mp3splt_set_oformat(splt_state *state, const char *format);
975 
977 
991 splt_code mp3splt_set_filename_to_split(splt_state *state, const char *filename);
992 
1000 splt_code mp3splt_set_path_of_split(splt_state *state, const char *path_of_split);
1001 
1013 const char *mp3splt_get_filename_to_split(splt_state *state);
1014 
1027 splt_code mp3splt_set_m3u_filename(splt_state *state, const char *m3u_filename);
1028 
1054 splt_code mp3splt_set_silence_log_filename(splt_state *state, const char *filename);
1055 
1088 splt_code mp3splt_set_silence_full_log_filename(splt_state *state, const char *filename);
1089 
1091 
1103 typedef enum {
1117 
1135  void (*message_cb)(const char *message, splt_message_type type, void *cb_data), void *cb_data);
1136 
1151  void (*file_cb)(const char *filename, void *cb_data),
1152  void *cb_data);
1153 
1175  void (*write_cb)(const void *ptr, size_t size, size_t nmemb, void *cb_data),
1176  void *cb_data);
1177 
1182 typedef enum {
1201 
1217 typedef struct splt_progres splt_progress;
1218 
1233  void (*progress_cb)(splt_progress *p_bar, void *cb_data), void *cb_data);
1234 
1238 int mp3splt_progress_get_type(const splt_progress *p_bar);
1239 
1244 
1249 
1254 
1259 
1264 
1269 
1286  void (*get_silence_cb)(long time, float level, void *user_data),
1287  void *user_data);
1288 
1290 
1301 typedef enum {
1312 
1321 typedef struct _splt_point splt_point;
1322 
1336 splt_point *mp3splt_point_new(long splitpoint_value, splt_code *error);
1337 
1345 splt_code mp3splt_point_set_name(splt_point *splitpoint, const char *name);
1346 
1355 
1366 
1374 typedef struct _splt_points splt_points;
1375 
1387 
1395 void mp3splt_points_init_iterator(splt_points *splitpoints);
1396 
1407 const splt_point *mp3splt_points_next(splt_points *splitpoints);
1408 
1417 long mp3splt_point_get_value(const splt_point *point);
1418 
1429 
1438 char *mp3splt_point_get_name(const splt_point *point);
1439 
1447 
1449 
1459 #define SPLT_UNDEFINED_GENRE "Other"
1460 
1465 #define SPLT_ID3V1_NUMBER_OF_GENRES 127
1466 
1470 extern const char splt_id3v1_genres[SPLT_ID3V1_NUMBER_OF_GENRES][25];
1471 
1475 typedef enum {
1476  SPLT_TAGS_TITLE = 1,
1477  SPLT_TAGS_ARTIST = 2,
1478  SPLT_TAGS_ALBUM = 3,
1479  SPLT_TAGS_YEAR = 4,
1480  SPLT_TAGS_COMMENT = 5,
1481  SPLT_TAGS_TRACK = 6,
1482  SPLT_TAGS_GENRE = 7,
1483  SPLT_TAGS_PERFORMER = 8,
1489 } splt_tag_key;
1490 
1500 typedef struct _splt_tags splt_tags;
1501 
1512 
1533 
1547 
1552 typedef struct _splt_tags_group splt_tags_group;
1553 
1565 
1573 
1582 
1592 
1596 char *mp3splt_tags_get(splt_tags *tags, splt_tag_key key);
1597 
1626 int mp3splt_put_tags_from_string(splt_state *state, const char *tags, splt_code *error);
1627 
1637 
1645 
1659 splt_code mp3splt_set_input_filename_regex(splt_state *state, const char *regex);
1660 
1670 splt_code mp3splt_set_default_comment_tag(splt_state *state, const char *default_comment_tag);
1671 
1681 splt_code mp3splt_set_default_genre_tag(splt_state *state, const char *default_genre_tag);
1682 
1696 
1704 void mp3splt_free_one_tag(splt_tags *tags);
1705 
1707 
1727 
1737 
1749 char **mp3splt_find_filenames(splt_state *state, const char *filename,
1750  int *num_of_files_found, splt_code *error);
1751 
1753 
1765 typedef enum {
1766  CUE_IMPORT,
1767  CDDB_IMPORT,
1768  AUDACITY_LABELS_IMPORT,
1769  PLUGIN_INTERNAL_IMPORT
1771 
1782 splt_code mp3splt_import(splt_state *state, splt_import_type type, const char *file);
1783 
1789 #define SPLT_FREEDB_SEARCH_TYPE_CDDB_CGI 1
1790 
1796 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB_CGI 3
1797 
1803 #define SPLT_FREEDB_GET_FILE_TYPE_CDDB 4
1804 
1811 #define SPLT_FREEDB_CDDB_CGI_PORT 80
1812 
1820 #define SPLT_FREEDB2_CGI_SITE "tracktype.org/~cddb/cddb.cgi"
1821 
1830 typedef struct _splt_freedb_results splt_freedb_results;
1831 
1839 typedef struct _splt_freedb_one_result splt_freedb_one_result;
1840 
1849 splt_code mp3splt_use_proxy(splt_state *state, const char *proxy_address, int proxy_port);
1850 
1863  const char *base64_authentification);
1864 
1875 char *mp3splt_encode_in_base64(splt_state *state, const char *input, int *error);
1876 
1883 void mp3splt_clear_proxy(splt_state *state);
1884 
1902  const char *searched_string, splt_code *error,
1903  int search_type, const char *search_server, int port);
1904 
1913 
1925 
1931 
1935 const char *mp3splt_freedb_get_name(const splt_freedb_one_result *result);
1936 
1941 
1959  int disc_id, const char *output_file,
1960  int cddb_get_type, const char *cddb_get_server, int port);
1961 
1963 
1975 typedef enum {
1976  CUE_EXPORT
1978 
1990  const char *file, int stop_at_total_time);
1991 
1993 
2008 typedef struct _splt_wrap splt_wrap;
2009 
2016 typedef struct _splt_one_wrap splt_one_wrap;
2017 
2030 
2039 
2049 
2053 char *mp3splt_wrap_get_wrapped_file(const splt_one_wrap *one_wrap);
2054 
2056 
2070 int mp3splt_set_silence_points(splt_state *state, splt_code *error);
2071 
2079 
2083 char *mp3splt_get_version();
2084 
2085 #ifdef __WIN32__
2086 
2089 char *mp3splt_win32_utf16_to_utf8(const wchar_t *source);
2090 #endif
2091 
2095 int mp3splt_check_if_directory(const char *filename);
2096 
2097 #ifndef SPLT_DIRCHAR
2098 #ifdef __WIN32__
2099 #define SPLT_DIRCHAR '\\'
2100 #define SPLT_DIRSTR "\\"
2101 #else
2102 
2105 #define SPLT_DIRCHAR '/'
2106 
2109 #define SPLT_DIRSTR "/"
2110 #endif
2111 #endif
2112 
2114 
2123 typedef struct {
2127  float version;
2131  char *name;
2135  char *extension;
2141 
2145 typedef struct _splt_original_tags splt_original_tags;
2146 
2162 typedef struct {
2172  void (*splt_pl_init)(splt_state *state, splt_code *error);
2181  void (*splt_pl_end)(splt_state *state, splt_code *error);
2191  int (*splt_pl_check_plugin_is_for_file)(splt_state *state, splt_code *error);
2200  void (*splt_pl_set_plugin_info)(splt_plugin_info *information, splt_code *error);
2214  double (*splt_pl_split)(splt_state *state, const char *final_fname, double begin_point,
2215  double end_point, splt_code *error, int save_end_point);
2227  void (*splt_pl_set_original_tags)(splt_state *state, splt_code *error);
2236  void (*splt_pl_clear_original_tags)(splt_original_tags *original_tags);
2248  int (*splt_pl_scan_silence)(splt_state *state, splt_code *error);
2260  int (*splt_pl_scan_trim_silence)(splt_state *state, splt_code *error);
2269  void (*splt_pl_search_syncerrors)(splt_state *state, splt_code *error);
2281  int (*splt_pl_offset_split)(splt_state *state, const char *output_fname, off_t begin, off_t end);
2293  void (*splt_pl_dewrap)(splt_state *state, int listonly, const char *dir, splt_code *error);
2300  void (*splt_pl_import_internal_sheets)(splt_state *state, splt_code *error);
2302 
2304 
2308 #define MP3SPLT_MP3SPLT_H
2309 #endif
2310 
struct _splt_wrap splt_wrap
Structure containg the wrapped filenames found inside the input filename.
Definition: mp3splt.h:2008
splt_code mp3splt_stop_split(splt_state *state)
Stop the main split process.
Structure containing plugin information, like the version, the name and file extension.
Definition: mp3splt.h:2123
Pretend to split the file, without actually creating output files.
Definition: mp3splt.h:318
int mp3splt_get_int_option(splt_state *state, splt_options option, splt_code *error)
Returns the value of an int option from the state.
const splt_freedb_one_result * mp3splt_freedb_next(splt_freedb_results *freedb_results)
Returns the next freedb result from the freedb_results.
Keep the tags issued from CDDB, CUE, tracktype.org or set by the user with mp3splt_append_tags.
Definition: mp3splt.h:841
char * mp3splt_get_strerror(splt_state *state, splt_code error)
Returns the error message of the error.
splt_code mp3splt_find_plugins(splt_state *state)
Finds the plugins in the plugins directories.
splt_code mp3splt_write_freedb_file_result(splt_state *state, int disc_id, const char *output_file, int cddb_get_type, const char *cddb_get_server, int port)
Downloads the CDDB file of the disc_id and writes it to a file.
splt_code mp3splt_set_silence_log_filename(splt_state *state, const char *filename)
Log filename for the SPLT_OPTION_SILENCE_MODE split mode that will be created.
float version
Plugin version.
Definition: mp3splt.h:2127
char * mp3splt_encode_in_base64(splt_state *state, const char *input, int *error)
Encode the input in base64.
const splt_one_wrap * mp3splt_wrap_next(splt_wrap *wrap)
Returns the next wrapped file from the wrap.
Keep the input "as is" without further change.
Definition: mp3splt.h:888
char * upper_extension
File extension handled by the plugin as uppercase.
Definition: mp3splt.h:2139
Number of files to be created when splitting by equal time length with SPLT_OPTION_LENGTH_MODE.
Definition: mp3splt.h:473
splt_code mp3splt_set_message_function(splt_state *state, void(*message_cb)(const char *message, splt_message_type type, void *cb_data), void *cb_data)
Register callback function used to send text messages to the client.
splt_tags * mp3splt_tags_new(splt_code *error)
Creates a new tags structure.
splt_code mp3splt_use_proxy(splt_state *state, const char *proxy_address, int proxy_port)
Use proxy when accessing the internet.
Info message.
Definition: mp3splt.h:1107
The default output; depends of the type of the split.
Definition: mp3splt.h:781
UTF-16 encoding for ID3v2 tags.
Definition: mp3splt.h:763
Do not set any tags.
Definition: mp3splt.h:845
float mp3splt_progress_get_silence_db_level(const splt_progress *p_bar)
int mp3splt_progress_get_max_splits(const splt_progress *p_bar)
struct _splt_point splt_point
Structure defining one splitpoint.
Definition: mp3splt.h:1321
Convert all characters of the input to uppercase.
Definition: mp3splt.h:896
splt_code mp3splt_set_default_comment_tag(splt_state *state, const char *default_comment_tag)
Default comment tag when using SPLT_TAGS_FROM_FILENAME_REGEX and no comment found.
The time to auto-adjust before and after splitpoint when having the SPLT_OPT_AUTO_ADJUST option...
Definition: mp3splt.h:445
splt_code mp3splt_remove_tags_of_skippoints(splt_state *state)
Removes all the tags of the state for the skippoints.
struct splt_progres splt_progress
Structure containing all information needed to display a progress bar.
Definition: mp3splt.h:1217
Minimum number of silence seconds to be considered a valid splitpoint.
Definition: mp3splt.h:531
splt_output_filenames_options
Values for the SPLT_OPT_OUTPUT_FILENAMES option.
Definition: mp3splt.h:769
Output or not a message that the CUE file has been created.
Definition: mp3splt.h:642
Defines the encoding of the input tags - used only for generating ID3V2 tags.
Definition: mp3splt.h:667
Trim silence detection split mode.
Definition: mp3splt.h:731
splt_tags_group * mp3splt_get_tags_group(splt_state *state, splt_code *error)
Returns all the tags of the state.
splt_code mp3splt_use_base64_authentification(splt_state *state, const char *base64_authentification)
Use proxy with base64 authentification.
splt_code mp3splt_free_state(splt_state *state)
Free the memory of the state.
Splitpoint used only to end the previous segment.
Definition: mp3splt.h:1310
Warning message.
Definition: mp3splt.h:1111
splt_points * mp3splt_get_splitpoints(splt_state *state, splt_code *error)
Returns all the splitpoints of the state.
splt_tags * mp3splt_parse_filename_regex(splt_state *state, splt_code *error)
Parse the filename provided with mp3splt_set_filename_to_split using regex provided by mp3splt_set_in...
int mp3splt_progress_get_silence_found_tracks(const splt_progress *p_bar)
Normal split mode - using splitpoints provided with mp3splt_append_splitpoint.
Definition: mp3splt.h:716
Replace underscores with space when setting tags from filename regex with SPLT_TAGS_FROM_FILENAME_REG...
Definition: mp3splt.h:596
Output format of the artist extracted from filename when using SPLT_TAGS_FROM_FILENAME_REGEX.
Definition: mp3splt.h:560
If SPLT_TRUE, stop with error when no auto-adjust silence is found when using the SPLT_OPT_AUTO_ADJUS...
Definition: mp3splt.h:696
int mp3splt_freedb_get_id(const splt_freedb_one_result *result)
Returns the ID of the result.
int mp3splt_freedb_get_number_of_revisions(const splt_freedb_one_result *result)
Returns the number of revisions of the result.
Wrap split mode - split the files created with mp3wrap or albumwrap.
Definition: mp3splt.h:721
Convert the first character of each word to uppercase.
Definition: mp3splt.h:904
splt_code mp3splt_set_silence_level_function(splt_state *state, void(*get_silence_cb)(long time, float level, void *user_data), void *user_data)
Register callback function that is called when looking for silence detection.
const splt_point * mp3splt_points_next(splt_points *splitpoints)
Returns the next splitpoint from the splitpoints.
splt_code mp3splt_set_split_filename_function(splt_state *state, void(*file_cb)(const char *filename, void *cb_data), void *cb_data)
Register callback function that is called when an output file is created.
int mp3splt_set_silence_points(splt_state *state, splt_code *error)
Scan for silence and set silence splitpoints in the state.
splt_export_type
Type of the export.
Definition: mp3splt.h:1975
struct _splt_tags splt_tags
Structure containing the tags for one output file.
Definition: mp3splt.h:1500
Synchronisation error split mode (mp3 only).
Definition: mp3splt.h:736
splt_code mp3splt_append_plugins_scan_dir(splt_state *state, const char *directory)
Appends an additional directory where plugins are searched.
The type of the split.
Definition: mp3splt.h:342
Defines the encoding of the ID3V2 tags.
Definition: mp3splt.h:659
UTF-8 encoding for ID3v2 tags.
Definition: mp3splt.h:759
void mp3splt_free_one_tag(splt_tags *tags)
Free the memory of one splt_tags.
Minimum number of seconds to be considered a valid track.
Definition: mp3splt.h:540
#define SPLT_ID3V1_NUMBER_OF_GENRES
Number of ID3v1 genres.
Definition: mp3splt.h:1465
If we return debug messages or not.
Definition: mp3splt.h:334
Output format of the comment extracted from filename when using SPLT_TAGS_FROM_FILENAME_REGEX.
Definition: mp3splt.h:587
Enables or disables replacing tags in tags.
Definition: mp3splt.h:483
Defines how the output filenames are created.
Definition: mp3splt.h:378
splt_code mp3splt_set_input_filename_regex(splt_state *state, const char *regex)
Defines the regex that will be used for SPLT_TAGS_FROM_FILENAME_REGEX.
For mp3 files, if we write the Xing header.
Definition: mp3splt.h:358
splt_point * mp3splt_point_new(long splitpoint_value, splt_code *error)
Creates a new splitpoint with the splitpoint_value.
char * mp3splt_get_version()
Returns the version of libmp3splt.
splt_code mp3splt_set_filename_to_split(splt_state *state, const char *filename)
Sets the input filename to split.
splt_code mp3splt_split(splt_state *state)
Executes the main split process.
splt_split_mode_options
Split mode.
Definition: mp3splt.h:712
char * mp3splt_progress_get_filename_shorted(const splt_progress *p_bar)
struct _splt_points splt_points
Structure containing several splt_point.
Definition: mp3splt.h:1374
The desired number of shots when having a SPLT_OPTION_SILENCE_MODE or SPLT_OPTION_TRIM_SILENCE_MODE s...
Definition: mp3splt.h:428
Create an indefinite number of smaller files with a fixed time length specified by SPLT_OPT_SPLIT_TIM...
Definition: mp3splt.h:741
char * mp3splt_point_get_name(const splt_point *point)
Returns the name of the splitpoint point.
char * extension
File extension handled by the plugin.
Definition: mp3splt.h:2135
Searching for synchronisation errors - when using SPLT_OPTION_ERROR_MODE.
Definition: mp3splt.h:1194
splt_message_type
Type of the message sent to the client.
Definition: mp3splt.h:1103
The threshold level (dB) to be considered as silence.
Definition: mp3splt.h:512
Silence detection split mode.
Definition: mp3splt.h:726
char * name
Plugin name.
Definition: mp3splt.h:2131
splt_progress_messages
Type of messages sent to the client using the callback registered with mp3splt_set_progress_function...
Definition: mp3splt.h:1182
float mp3splt_get_float_option(splt_state *state, splt_options option, splt_code *error)
Returns the value of a float option from the state.
Keep the tags of the original input file.
Definition: mp3splt.h:837
When importing a cue file, use the REM NAME comment for each TRACK to set the splitpoint names instea...
Definition: mp3splt.h:634
When adding cue or cddb tags, keep the option SPLT_TAGS_ORIGINAL.
Definition: mp3splt.h:651
void mp3splt_points_init_iterator(splt_points *splitpoints)
Initialisation of the iterator for use with mp3splt_points_next.
const char * mp3splt_freedb_get_name(const splt_freedb_one_result *result)
Returns the name of the result.
splt_code mp3splt_set_oformat(splt_state *state, const char *format)
Set the output format when using SPLT_OUTPUT_FORMAT.
int mp3splt_check_if_directory(const char *filename)
Returns SPLT_TRUE if filename is a directory.
splt_code mp3splt_append_splitpoint(splt_state *state, splt_point *splitpoint)
Append a new splitpoint to the state.
splt_tags_options
Values for the SPLT_OPT_TAGS option.
Definition: mp3splt.h:833
The desired number of tracks when having a SPLT_OPTION_SILENCE_MODE split.
Definition: mp3splt.h:416
Offset of cutpoint inside the silence part when having a SPLT_OPTION_SILENCE_MODE or SPLT_OPT_AUTO_AD...
Definition: mp3splt.h:522
For mp3 files, force to use the frame mode or not.
Definition: mp3splt.h:389
splt_code mp3splt_erase_all_tags(splt_state *state)
Erase all the tags from the state.
Use this to set original tags.
Definition: mp3splt.h:1488
Debug message.
Definition: mp3splt.h:1115
float mp3splt_progress_get_percent_progress(const splt_progress *p_bar)
splt_code mp3splt_set_float_option(splt_state *state, splt_options option, float value)
Sets the value of a float option in the state.
splt_options
Split options.
Definition: mp3splt.h:309
splt_tag_key
Key tags useful with mp3splt_append_tags.
Definition: mp3splt.h:1475
If quiet return less messages and don't do mp3 CRC check.
Definition: mp3splt.h:326
splt_wrap * mp3splt_get_wrap_files(splt_state *state, splt_code *error)
Returns the wrapped files found from the input filename set with mp3splt_set_filename_to_split.
If SPLT_TRUE, decode flac frames before writing them in the output file and compute the md5sum to be ...
Definition: mp3splt.h:706
splt_code mp3splt_set_silence_full_log_filename(splt_state *state, const char *filename)
Full log filename for the SPLT_OPTION_SILENCE_MODE split mode that will be created.
For mp3 files, tags version to be written in output files.
Definition: mp3splt.h:464
splt_code mp3splt_import(splt_state *state, splt_import_type type, const char *file)
Import splitpoints from the file having the type into the state.
Output format of the title extracted from filename when using SPLT_TAGS_FROM_FILENAME_REGEX.
Definition: mp3splt.h:578
char * mp3splt_wrap_get_wrapped_file(const splt_one_wrap *one_wrap)
Returns the wrapped file from one_wrap.
long mp3splt_point_get_value(const splt_point *point)
Returns the time value of the splitpoint point.
splt_import_type
Type of the import.
Definition: mp3splt.h:1765
const char * mp3splt_get_filename_to_split(splt_state *state)
Returns the filename to be split from the state.
struct _splt_freedb_results splt_freedb_results
Structure containing the freedb search results.
Definition: mp3splt.h:1830
splt_code mp3splt_tags_set(splt_tags *tags,...)
Set tags values in the tags.
struct _splt_original_tags splt_original_tags
Structure containing the original tags of the input file.
Definition: mp3splt.h:2145
If this option is SPLT_TRUE, we create directories from the output filenames without parsing for ille...
Definition: mp3splt.h:370
splt_freedb_results * mp3splt_get_freedb_search(splt_state *state, const char *searched_string, splt_code *error, int search_type, const char *search_server, int port)
Search on the internet for the searched_string and returns the results.
When using the SPLT_OPT_PARAM_REMOVE_SILENCE, this option allows you to keep some number of seconds o...
Definition: mp3splt.h:625
splt_state * mp3splt_new_state(splt_code *error)
Creates a new splt_state structure.
If we use silence detection to auto-adjust splitpoints.
Definition: mp3splt.h:397
splt_code mp3splt_read_original_tags(splt_state *state)
Parses the original tags from the input file and stores them for the future split.
splt_tags * mp3splt_tags_group_next(splt_tags_group *tags_group)
Returns the next tags from the tags_group.
Libmp3splt plugin API.
Definition: mp3splt.h:2162
The names of the splitpoints provided by mp3splt_append_splitpoint are used to generate the output fi...
Definition: mp3splt.h:786
splt_type_of_splitpoint mp3splt_point_get_type(const splt_point *point)
Returns the type of the splitpoint point.
int mp3splt_put_tags_from_string(splt_state *state, const char *tags, splt_code *error)
Fill the state with tags parsed from the tags string.
splt_code mp3splt_set_path_of_split(splt_state *state, const char *path_of_split)
Sets the output directory where the split files will be created.
splt_code mp3splt_point_set_name(splt_point *splitpoint, const char *name)
Sets the name on the splitpoint.
char ** mp3splt_find_filenames(splt_state *state, const char *filename, int *num_of_files_found, splt_code *error)
Recursive search of all the filenames matching the loaded plugins.
int mp3splt_progress_get_type(const splt_progress *p_bar)
splt_code mp3splt_set_progress_function(splt_state *state, void(*progress_cb)(splt_progress *p_bar, void *cb_data), void *cb_data)
Register callback function called to keep track of the current progress.
Creating the output file.
Definition: mp3splt.h:1190
Used to remove silence between the split tracks when having a SPLT_OPTION_SILENCE_MODE split...
Definition: mp3splt.h:436
Defines the minimum theoretical time length to be created when using SPLT_OPTION_TIME_MODE.
Definition: mp3splt.h:678
What tags to put in the output split files.
Definition: mp3splt.h:350
struct _splt_one_wrap splt_one_wrap
Structure containing one wrapped file All members are private.
Definition: mp3splt.h:2016
struct _splt_freedb_one_result splt_freedb_one_result
Structure containing only one freedb result.
Definition: mp3splt.h:1839
Convert all characters of the input to lowercase.
Definition: mp3splt.h:892
Convert just the first character to uppercase.
Definition: mp3splt.h:900
Split in SPLT_OPT_LENGTH_SPLIT_FILE_NUMBER pieces of equal time length.
Definition: mp3splt.h:745
long mp3splt_get_long_option(splt_state *state, splt_options option, splt_code *error)
Returns the value of a long option from the state.
splt_code mp3splt_append_tags(splt_state *state, splt_tags *tags)
Append the tags in the state.
Preparing to split a song.
Definition: mp3splt.h:1186
splt_code mp3splt_point_set_type(splt_point *splitpoint, splt_type_of_splitpoint type)
Sets the name on the splitpoint.
splt_code mp3splt_set_m3u_filename(splt_state *state, const char *m3u_filename)
Output filename for a M3U file that will be created in the output path.
Latin1 (ISO-8859-1) encoding for ID3v2 tags.
Definition: mp3splt.h:755
Minimum number of seconds to be considered a valid track.
Definition: mp3splt.h:551
void mp3splt_tags_group_init_iterator(splt_tags_group *tags_group)
Initialisation of the iterator for use with mp3splt_tags_group_next.
splt_code mp3splt_erase_all_splitpoints(splt_state *state)
Erase all splitpoints from the state.
Time to be added to each end splitpoint in order to overlap the resulting files (in hundreths of seco...
Definition: mp3splt.h:492
Time of the output files for the SPLT_OPTION_TIME_MODE split (in hundreths of seconds).
Definition: mp3splt.h:501
int mp3splt_progress_get_current_split(const splt_progress *p_bar)
char * mp3splt_tags_get(splt_tags *tags, splt_tag_key key)
Returns the value of key from the tags.
If SPLT_TRUE, raise a warning when no auto-adjust silence is found when using the SPLT_OPT_AUTO_ADJUS...
Definition: mp3splt.h:687
struct _splt_tags_group splt_tags_group
Structure containing a group of tags.
Definition: mp3splt.h:1552
splt_code mp3splt_set_default_genre_tag(splt_state *state, const char *default_genre_tag)
Default genre tag when using SPLT_TAGS_FROM_FILENAME_REGEX and no genre found.
void mp3splt_freedb_init_iterator(splt_freedb_results *freedb_results)
Initialisation of the iterator for use with mp3splt_freedb_next.
When importing CUE files, sets the filename to split as the FILE CUE tag value if specified...
Definition: mp3splt.h:605
struct _splt_state splt_state
Main structure used in libmp3splt.
Definition: mp3splt.h:228
void mp3splt_clear_proxy(splt_state *state)
Clears the proxy data from the state.
splt_code mp3splt_set_int_option(splt_state *state, splt_options option, int value)
Sets the value of an int option in the state.
splt_code mp3splt_set_long_option(splt_state *state, splt_options option, long value)
Sets the value of a long option in the state.
When using the SPLT_OPT_PARAM_REMOVE_SILENCE, this option allows you to keep some number of seconds o...
Definition: mp3splt.h:615
void mp3splt_wrap_init_iterator(splt_wrap *wrap)
Initialisation of the iterator for use with mp3splt_wrap_next.
Sets tags from filename using regular expression provided by mp3splt_set_input_filename_regex.
Definition: mp3splt.h:849
splt_id3v2_encoding
Values for the SPLT_OPT_ID3V2_ENCODING.
Definition: mp3splt.h:751
const char splt_id3v1_genres[SPLT_ID3V1_NUMBER_OF_GENRES][25]
ID3v1 genres.
splt_code
Confirmation and error codes.
Definition: mp3splt.h:107
splt_code mp3splt_set_pretend_to_split_write_function(splt_state *state, void(*write_cb)(const void *ptr, size_t size, size_t nmemb, void *cb_data), void *cb_data)
Register callback function that is called when SPLT_OPT_PRETEND_TO_SPLIT is SPLT_TRUE.
splt_type_of_splitpoint
Type of the splitpoint.
Definition: mp3splt.h:1301
splt_code mp3splt_export(splt_state *state, splt_export_type type, const char *file, int stop_at_total_time)
Export splitpoints from the state into the file saved as type.
If the input is not seekable.
Definition: mp3splt.h:407
Enables or disables writing the log file containing splitpoints found with silence detection...
Definition: mp3splt.h:454
splt_code mp3splt_set_trim_silence_points(splt_state *state)
Scan for silence and set silence trim splitpoints in the state.
Regular splitpoint.
Definition: mp3splt.h:1305
splt_str_format
Values for SPLT_OPT_ARTIST_TAG_FORMAT, SPLT_OPT_ALBUM_TAG_FORMAT, SPLT_OPT_TITLE_TAG_FORMAT and SPLT_...
Definition: mp3splt.h:884
Output filename format specified by mp3splt_set_oformat.
Definition: mp3splt.h:773
Scanning for silence - when using SPLT_OPTION_SILENCE_MODE, SPLT_OPT_AUTO_ADJUST, mp3splt_set_silence...
Definition: mp3splt.h:1199
Output format of the album extracted from filename when using SPLT_TAGS_FROM_FILENAME_REGEX.
Definition: mp3splt.h:569