diff options
author | 2010-05-17 21:25:22 +0200 | |
---|---|---|
committer | 2010-05-17 21:25:22 +0200 | |
commit | cafa41031499e9dff3a0c4f9f30d822c981d0ce2 (patch) | |
tree | 58f37717c06a9d98e3b5c01d3b6240954598781f | |
parent | 229606b402f71bfe6c0ccd68b355f9f4172ba3d6 (diff) | |
parent | d5eeb44a9d05a1b8072fc090fe07d7a13a8bfb06 (diff) |
Merge branch 'master' into i18n
Conflicts:
plugins/gtkui/callbacks.c
plugins/gtkui/prefwin.c
-rw-r--r-- | ChangeLog | 24 | ||||
-rw-r--r-- | playlist.c | 1 | ||||
-rw-r--r-- | plugins/flac/flac.c | 33 | ||||
-rw-r--r-- | plugins/gtkui/callbacks.c | 54 | ||||
-rw-r--r-- | plugins/gtkui/ddblistview.c | 2 | ||||
-rw-r--r-- | plugins/gtkui/fileman.c | 2 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.c | 84 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.h | 3 | ||||
-rw-r--r-- | plugins/gtkui/prefwin.c | 79 | ||||
-rw-r--r-- | plugins/vorbis/vorbis.c | 8 | ||||
-rw-r--r-- | plugins/wavpack/wavpack.c | 9 | ||||
-rw-r--r-- | streamer.c | 31 | ||||
-rw-r--r-- | web/faq.txt | 73 | ||||
-rw-r--r-- | web/index.html | 254 | ||||
-rw-r--r-- | web/oldnews.html | 308 |
15 files changed, 191 insertions, 774 deletions
@@ -1,3 +1,27 @@ +version 0.4.1 + fixed search window size + better tag reader in ffmpeg plugin + reload metadata support + fixed EQ drawing unwanted current value at initialization + allow editing previous custom grouping value + increased sort speed + fixed alsa and oss plugins writing zero samples at start of tracks + fixed recover from suspend in alsa plugin + fixed md5 structure buffer overflow + added support for gtk3 (2.90), enabled with --enable-gtk3 + improved oss plugin responsiveness on pause + fixed vfs_curl crashing randomly when loading album art + ignore currently paused song when opening new file(s) from commandline + fixed playlist moving bugs + fixed memory leaks in id3v2 parser + increased maximum limit on id3v2 APIC frame size to 2MiB + added cd text support + fixed wavpack crash on corrupted files + fixed random crash when using File -> Open + added remember/restore current folder in playlist save/load dialogs + fixed reversing track order after drag-n-drop + fixed "Loop single file" mode after track was moved or deleted + removed apply button from Global Hotkeys preferences window + version 0.4.0 multiple tabbed playlists added grouping of tracks using title-formatting strings @@ -2813,6 +2813,7 @@ pl_move_items (int iter, int plt_from, playItem_t *drop_before, uint32_t *indexe plt_remove_item (playlist, it); plt_insert_item (to, drop_after, it); pl_item_unref (it); + drop_after = it; processed++; } } diff --git a/plugins/flac/flac.c b/plugins/flac/flac.c index cc4a52f0..43b1b1c0 100644 --- a/plugins/flac/flac.c +++ b/plugins/flac/flac.c @@ -44,7 +44,6 @@ typedef struct { int totalsamples; int flac_critical_error; int init_stop_decoding; - int bytesread; DB_FILE *file; // used only on insert @@ -52,13 +51,13 @@ typedef struct { DB_playItem_t *last; DB_playItem_t *it; const char *fname; + int bitrate; } flac_info_t; // callbacks FLAC__StreamDecoderReadStatus flac_read_cb (const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data) { flac_info_t *info = (flac_info_t *)client_data; size_t r = deadbeef->fread (buffer, 1, *bytes, info->file); - info->bytesread += r; *bytes = r; if (r == 0) { return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; @@ -102,16 +101,8 @@ cflac_write_callback (const FLAC__StreamDecoder *decoder, const FLAC__Frame *fra if (frame->header.blocksize == 0) { return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } - //DB_fileinfo_t *_info = info->info; - //flac_info_t *info = (flac_info_t *)_info; - int bitrate = -1; - float sec = ((float)frame->header.blocksize / frame->header.sample_rate); - if (info->bytesread != 0 && sec > 0) { - bitrate = info->bytesread / sec * 8; - } - info->bytesread = 0; - if (bitrate > 0) { - deadbeef->streamer_set_bitrate (bitrate/1000); + if (info->bitrate > 0) { + deadbeef->streamer_set_bitrate (info->bitrate); } int bufsize = BUFFERSIZE - info->remaining; int bufsamples = bufsize / (_info->channels * _info->bps / 8); @@ -148,6 +139,7 @@ cflac_metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMe _info->samplerate = metadata->data.stream_info.sample_rate; _info->channels = metadata->data.stream_info.channels; _info->bps = metadata->data.stream_info.bits_per_sample; + } static void @@ -258,6 +250,23 @@ cflac_init (DB_fileinfo_t *_info, DB_playItem_t *it) { trace ("cflac_init not a flac stream\n"); return -1; } + + // bitrate + size_t fsize = deadbeef->fgetlength (info->file); + FLAC__uint64 position; + FLAC__bool res = FLAC__stream_decoder_get_decode_position (info->decoder, &position); + if (res) { + fsize -= position; + } + FLAC__uint64 flac_totalsamples = FLAC__stream_decoder_get_total_samples (info->decoder); + float sec = flac_totalsamples / _info->samplerate; + if (sec > 0) { + info->bitrate = fsize / sec * 8 / 1000; + } + else { + info->bitrate = -1; + } + info->buffer = malloc (BUFFERSIZE); info->remaining = 0; if (it->endsample > 0) { diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 7298cdd5..4d967bc7 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -357,60 +357,6 @@ on_searchlist_realize (GtkWidget *widget, { } -char last_playlist_save_name[1024] = ""; - -void -save_playlist_as (void) { - GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Save Playlist As"), GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL); - - gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dlg), TRUE); - gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dlg), "untitled.dbpl"); - - GtkFileFilter* flt; - flt = gtk_file_filter_new (); - gtk_file_filter_set_name (flt, _("DeaDBeeF playlist files (*.dbpl)")); - gtk_file_filter_add_pattern (flt, "*.dbpl"); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt); - - if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) - { - gchar *fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); - gtk_widget_destroy (dlg); - - if (fname) { - int res = deadbeef->pl_save (fname); - if (res >= 0 && strlen (fname) < 1024) { - strcpy (last_playlist_save_name, fname); - } - g_free (fname); - } - } - else { - gtk_widget_destroy (dlg); - } -} - -void -on_playlist_save_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - if (!last_playlist_save_name[0]) { - save_playlist_as (); - } - else { - /*int res = */deadbeef->pl_save (last_playlist_save_name); - } -} - - -void -on_playlist_save_as_activate (GtkMenuItem *menuitem, - gpointer user_data) -{ - save_playlist_as (); -} - - //static GdkPixmap *seekbar_backbuf; enum diff --git a/plugins/gtkui/ddblistview.c b/plugins/gtkui/ddblistview.c index df349159..c9f4c6da 100644 --- a/plugins/gtkui/ddblistview.c +++ b/plugins/gtkui/ddblistview.c @@ -613,6 +613,7 @@ ddb_listview_list_render (DdbListview *listview, int x, int y, int w, int h) { } int idx = 0; int abs_idx = 0; + deadbeef->pl_lock (); // find 1st group DdbListviewGroup *grp = listview->groups; int grp_y = 0; @@ -690,6 +691,7 @@ ddb_listview_list_render (DdbListview *listview, int x, int y, int w, int h) { g_object_unref (gc); } } + deadbeef->pl_unlock (); draw_end (); } diff --git a/plugins/gtkui/fileman.c b/plugins/gtkui/fileman.c index 0a5fb851..23a037cb 100644 --- a/plugins/gtkui/fileman.c +++ b/plugins/gtkui/fileman.c @@ -99,6 +99,7 @@ static void open_files_worker (void *data) { GSList *lst = (GSList *)data; gtkpl_add_files (lst); + gtkui_playlist_changed (); extern GtkWidget *mainwin; DdbListview *pl = DDB_LISTVIEW (lookup_widget (mainwin, "playlist")); ddb_listview_set_cursor (pl, 0); @@ -108,6 +109,7 @@ open_files_worker (void *data) { void gtkui_open_files (struct _GSList *lst) { deadbeef->pl_clear (); + playlist_refresh (); deadbeef->thread_start (open_files_worker, lst); } diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index abdf1237..3857a7bd 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -438,9 +438,14 @@ playlistchanged_cb (gpointer none) { return FALSE; } +void +gtkui_playlist_changed (void) { + g_idle_add (playlistchanged_cb, NULL); +} + static int gtkui_on_playlistchanged (DB_event_t *ev, uintptr_t data) { - g_idle_add (playlistchanged_cb, NULL); + gtkui_playlist_changed (); return 0; } @@ -521,19 +526,92 @@ gtkui_on_outputchanged (DB_event_t *ev, uintptr_t nothing) { return 0; } +char last_playlist_save_name[1024] = ""; + +void +save_playlist_as (void) { + GtkWidget *dlg = gtk_file_chooser_dialog_new ("Save Playlist As", GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL); + + gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dlg), TRUE); + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dlg), "untitled.dbpl"); + // restore folder + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str ("filechooser.playlist.lastdir", "")); + + GtkFileFilter* flt; + flt = gtk_file_filter_new (); + gtk_file_filter_set_name (flt, "DeaDBeeF playlist files (*.dbpl)"); + gtk_file_filter_add_pattern (flt, "*.dbpl"); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt); + + int res = gtk_dialog_run (GTK_DIALOG (dlg)); + // store folder + gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); + if (folder) { + deadbeef->conf_set_str ("filechooser.playlist.lastdir", folder); + g_free (folder); + } + if (res == GTK_RESPONSE_OK) + { + gchar *fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); + gtk_widget_destroy (dlg); + + if (fname) { + int res = deadbeef->pl_save (fname); + if (res >= 0 && strlen (fname) < 1024) { + strcpy (last_playlist_save_name, fname); + } + g_free (fname); + } + } + else { + gtk_widget_destroy (dlg); + } +} + +void +on_playlist_save_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + if (!last_playlist_save_name[0]) { + save_playlist_as (); + } + else { + /*int res = */deadbeef->pl_save (last_playlist_save_name); + } +} + + +void +on_playlist_save_as_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + save_playlist_as (); +} + + void on_playlist_load_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *dlg = gtk_file_chooser_dialog_new (_("Load Playlist"), GTK_WINDOW (mainwin), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL); + // restore folder + gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dlg), deadbeef->conf_get_str ("filechooser.playlist.lastdir", "")); + GtkFileFilter* flt; flt = gtk_file_filter_new (); gtk_file_filter_set_name (flt, _("DeaDBeeF playlist files (*.dbpl)")); gtk_file_filter_add_pattern (flt, "*.dbpl"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dlg), flt); - - if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) + + int res = gtk_dialog_run (GTK_DIALOG (dlg)); + // store folder + gchar *folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER (dlg)); + if (folder) { + deadbeef->conf_set_str ("filechooser.playlist.lastdir", folder); + g_free (folder); + } + if (res == GTK_RESPONSE_OK) { gchar *fname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dlg)); gtk_widget_destroy (dlg); diff --git a/plugins/gtkui/gtkui.h b/plugins/gtkui/gtkui.h index c0c1d39a..091331a1 100644 --- a/plugins/gtkui/gtkui.h +++ b/plugins/gtkui/gtkui.h @@ -132,4 +132,7 @@ volumebar_redraw (void); void tabstrip_redraw (void); +void +gtkui_playlist_changed (void); + #endif diff --git a/plugins/gtkui/prefwin.c b/plugins/gtkui/prefwin.c index 03a2b6b1..e7ae8476 100644 --- a/plugins/gtkui/prefwin.c +++ b/plugins/gtkui/prefwin.c @@ -123,6 +123,37 @@ on_hk_slot_edited (GtkCellRendererText *renderer, gchar *path, gchar *new_text, gtk_list_store_set (store, &iter, 0, new_text, -1); } +static gboolean +add_hotkey_to_config (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { + int *counter = (int *)data; + GValue key = {0,}, value = {0,}; + gtk_tree_model_get_value (model, iter, 0, &key); + gtk_tree_model_get_value (model, iter, 1, &value); + const char *skey = g_value_get_string (&key); + const char *svalue = g_value_get_string (&value); + + char conf_name[100]; + char conf_value[100]; + snprintf (conf_name, sizeof (conf_name), "hotkeys.key%d", *counter); + (*counter)++; + snprintf (conf_value, sizeof (conf_value), "%s: %s", svalue, skey); + deadbeef->conf_set_str (conf_name, conf_value); + return FALSE; +} + +void +hotkeys_apply (GtkTreeModel *model) { + DB_plugin_t *hotkeys = deadbeef->plug_get_for_id ("hotkeys"); + if (hotkeys) { + // rebuild config + deadbeef->conf_remove_items ("hotkeys.key"); + int counter = 1; + gtk_tree_model_foreach (model, add_hotkey_to_config, &counter); + + ((DB_hotkeys_plugin_t *)hotkeys)->reset (); + } +} + void on_hk_binding_edited (GtkCellRendererAccel *accel, gchar *path, guint accel_key, GdkModifierType accel_mods, guint hardware_keycode, gpointer user_data) { GtkListStore *store = GTK_LIST_STORE (user_data); @@ -152,10 +183,9 @@ on_hk_binding_edited (GtkCellRendererAccel *accel, gchar *path, guint accel_key, const char *name = ((DB_hotkeys_plugin_t *)hotkeys)->get_name_for_keycode (accel_key); strcat (new_value, name); gtk_list_store_set (store, &iter, 1, new_value, -1); + + hotkeys_apply (GTK_TREE_MODEL (store)); } -// if (!plugs[i]) { -// return; -// } } void @@ -179,42 +209,7 @@ on_removehotkey_clicked (GtkButton *button, gpointer user_da } } } -} - -static gboolean -add_hotkey_to_config (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) { - int *counter = (int *)data; - GValue key = {0,}, value = {0,}; - gtk_tree_model_get_value (model, iter, 0, &key); - gtk_tree_model_get_value (model, iter, 1, &value); - const char *skey = g_value_get_string (&key); - const char *svalue = g_value_get_string (&value); - - char conf_name[100]; - char conf_value[100]; - snprintf (conf_name, sizeof (conf_name), "hotkeys.key%d", *counter); - (*counter)++; - snprintf (conf_value, sizeof (conf_value), "%s: %s", svalue, skey); - deadbeef->conf_set_str (conf_name, conf_value); - return FALSE; -} - -void -on_applyhotkeys_clicked (GtkButton *button, gpointer user_data) { - DB_plugin_t **plugs = deadbeef->plug_get_list (); - int i; - for (i = 0; plugs[i]; i++) { - if (plugs[i]->id && !strcmp (plugs[i]->id, "hotkeys")) { - // rebuild config - deadbeef->conf_remove_items ("hotkeys.key"); - int counter = 1; - GtkTreeModel *model = GTK_TREE_MODEL (user_data); - gtk_tree_model_foreach (model, add_hotkey_to_config, &counter); - - ((DB_hotkeys_plugin_t *)plugs[i])->reset (); - break; - } - } + hotkeys_apply (model); } void @@ -280,11 +275,6 @@ prefwin_add_hotkeys_tab (GtkWidget *prefwin) { gtk_container_add (GTK_CONTAINER (hbuttonbox3), removehotkey); GTK_WIDGET_SET_FLAGS (removehotkey, GTK_CAN_DEFAULT); - applyhotkeys = gtk_button_new_with_mnemonic (_("Apply")); - gtk_widget_show (applyhotkeys); - gtk_container_add (GTK_CONTAINER (hbuttonbox3), applyhotkeys); - GTK_WIDGET_SET_FLAGS (applyhotkeys, GTK_CAN_DEFAULT); - label66 = gtk_label_new (_("Global Hotkeys")); gtk_widget_show (label66); int npages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook2)); @@ -302,7 +292,6 @@ prefwin_add_hotkeys_tab (GtkWidget *prefwin) { g_signal_connect ((gpointer)addhotkey, "clicked", G_CALLBACK (on_addhotkey_clicked), hkstore); g_signal_connect ((gpointer)removehotkey, "clicked", G_CALLBACK (on_removehotkey_clicked), hktree); - g_signal_connect ((gpointer)applyhotkeys, "clicked", G_CALLBACK (on_applyhotkeys_clicked), hkstore); // model for hotkey slots const char *slots[] = { diff --git a/plugins/vorbis/vorbis.c b/plugins/vorbis/vorbis.c index 2b73415e..37ca2263 100644 --- a/plugins/vorbis/vorbis.c +++ b/plugins/vorbis/vorbis.c @@ -581,8 +581,8 @@ cvorbis_write_metadata (DB_playItem_t *it) { snprintf (outname, sizeof (outname), "%s.temp.ogg", it->fname); out = fopen (outname, "w+b"); - if (!fp) { - trace ("cvorbis_write_metadata: failed to open %s for writing\n", it->fname); + if (!out) { + trace ("cvorbis_write_metadata: failed to open %s for writing\n", outname); goto error; } @@ -594,7 +594,7 @@ cvorbis_write_metadata (DB_playItem_t *it) { err = 0; error: if (out) { - fclose (fp); + fclose (out); } if (state) { vcedit_clear (state); @@ -609,7 +609,7 @@ error: if (!err) { rename (outname, it->fname); } - else if (*outname) { + else if (out) { unlink (outname); } diff --git a/plugins/wavpack/wavpack.c b/plugins/wavpack/wavpack.c index 9e3abd68..e2f9e43b 100644 --- a/plugins/wavpack/wavpack.c +++ b/plugins/wavpack/wavpack.c @@ -105,8 +105,10 @@ wv_init (DB_fileinfo_t *_info, DB_playItem_t *it) { if (!info->file) { return -1; } - info->ctx = WavpackOpenFileInputEx (&wsr, info->file, NULL, NULL, OPEN_2CH_MAX/*|OPEN_WVC*/, 0); + char error[80]; + info->ctx = WavpackOpenFileInputEx (&wsr, info->file, NULL, error, OPEN_2CH_MAX/*|OPEN_WVC*/, 0); if (!info->ctx) { + fprintf (stderr, "wavpack error: %s\n", error); return -1; } _info->plugin = &plugin; @@ -226,9 +228,10 @@ wv_insert (DB_playItem_t *after, const char *fname) { if (!fp) { return NULL; } - WavpackContext *ctx = WavpackOpenFileInputEx (&wsr, fp, NULL, NULL, 0, 0); + char error[80]; + WavpackContext *ctx = WavpackOpenFileInputEx (&wsr, fp, NULL, error, 0, 0); if (!ctx) { - trace ("WavpackOpenFileInput failed"); + fprintf (stderr, "wavpack error: %s\n", error); deadbeef->fclose (fp); return NULL; } @@ -280,6 +280,19 @@ streamer_move_to_nextsong (int reason) { } int pl_order = conf_get_int ("playback.order", 0); int pl_loop_mode = conf_get_int ("playback.loop", 0); + + if (reason == 0 && pl_loop_mode == PLAYBACK_MODE_LOOP_SINGLE) { // song finished, loop mode is "loop 1 track" + int r = str_get_idx_of (playing_track); + if (r == -1) { + streamer_set_nextsong (-2, 1); + } + else { + streamer_set_nextsong (r, 1); + } + pl_global_unlock (); + return 0; + } + if (pl_order == PLAYBACK_ORDER_SHUFFLE) { // shuffle if (!curr) { // find minimal notplayed @@ -310,12 +323,6 @@ streamer_move_to_nextsong (int reason) { } else { trace ("pl_next_song: reason=%d, loop=%d\n", reason, pl_loop_mode); - if (reason == 0 && pl_loop_mode == PLAYBACK_MODE_LOOP_SINGLE) { // song finished, loop mode is "loop 1 track" - int r = str_get_idx_of (curr); - streamer_set_nextsong (r, 1); - pl_global_unlock (); - return 0; - } // find minimal notplayed above current int rating = curr->shufflerating; playItem_t *pmin = NULL; // notplayed minimum @@ -351,12 +358,6 @@ streamer_move_to_nextsong (int reason) { else if (pl_order == PLAYBACK_ORDER_LINEAR) { // linear playItem_t *it = NULL; if (curr) { - if (reason == 0 && pl_loop_mode == PLAYBACK_MODE_LOOP_SINGLE) { // loop same track - int r = str_get_idx_of (curr); - streamer_set_nextsong (r, 1); - pl_global_unlock (); - return 0; - } it = curr->next[PL_MAIN]; } if (!it) { @@ -380,12 +381,6 @@ streamer_move_to_nextsong (int reason) { return 0; } else if (pl_order == PLAYBACK_ORDER_RANDOM) { // random - if (reason == 0 && pl_loop_mode == PLAYBACK_MODE_LOOP_SINGLE && curr) { - int r = str_get_idx_of (curr); - streamer_set_nextsong (r, 1); - pl_global_unlock (); - return 0; - } int res = streamer_move_to_randomsong (); if (res == -1) { trace ("streamer_move_to_randomsong error\n"); diff --git a/web/faq.txt b/web/faq.txt deleted file mode 100644 index 1ec25b3b..00000000 --- a/web/faq.txt +++ /dev/null @@ -1,73 +0,0 @@ -Q: I have PulseAudio, and I have playback problems (noise, distortion, wrong speed, no sound, etc) - -A: Disable PulseAudio -A: Try to use OSS as pulseaudio backend - --- - -Q: I don't get it. Yes, indeed I have PulseAudio, but in Deadbeef I select ALSA output, and I get playback problems. - -A: PulseAudio tricks applications by providing ALSA-plugin that routes sound from application to PulseAudio via ALSA API. - --- - -Q: Is it planned to support PulseAudio natively? - -A: Yes. - --- - -Q: Occasionally I get following error: "alsa: snd_pcm_writei error=-32, Broken pipe". Is it bad? - -A: Ignore it. - --- - -Q: Is it planned to support multiple playlists and EQ? - -A: Yes - --- - -Q: Is it planned to make Windows and/or OSX ports? - -A: No - --- - -Q: Playlist, settings, etc are not saved if I kill X session, shut down or restart computer, etc - -A: That is not fixed yet. But it is work in progress. Please don't bother me with that unless you have a patch that fixes it. - --- - -Q: Deadbeef takes too much CPU% when playing mp3/ogg/flac. - -A: Try to reduce SRC quality in preferences window -A: Try to check "Use software ALSA resampling" box -A: See the PulseAudio questions above - --- - -Q: Deadbeef takes too much CPU% when playing APE files. - -A: That's normal. Consider switching to wavpack or flac. - --- - -Q: I have 50 ideas about what features must be added to the player!!!111oneone. Can i become idea-generator of the project, so that I tell, and developers do what I ask for? - -A: No - --- - -Q: How do I make GDB backtrace after crash or hang? - -A: Ensure that you have unstripped binary. Most packages are stripped. So you'll have to build yourself in most cases, if you haven't done so already. -Simply doing "./configure && make && sudo make install" is sufficient, but it's better to add export CFLAGS="-O0 -g". -1. install GDB -2. run "gdb deadbeef", and execute "r" command in GDB shell -3. reproduce a crash, or press ctrl+c in GDB after hang occurs -4. execute "thread 1" command, followed by "bt" command in GDB -5. repeat for at least 5 threads: thread 2<enter> bt<enter>, and so on -6. now, you can copy the output starting after 1st "bt" command into email/pastebin/textfile, etc. diff --git a/web/index.html b/web/index.html deleted file mode 100644 index 812921b6..00000000 --- a/web/index.html +++ /dev/null @@ -1,254 +0,0 @@ -<html> -<head> -<title>DeaDBeeF - Ultimate Music Player For GNU/Linux</title> -</head> -<style> - body { - background-color: #eeeeee; - } - #header { - margin: 0; - padding: 0; - } - #header li { - display: inline; - margin-left: 1em; - } - h1 { - font-variant: small-caps; - } - .post { - margin-left: 2em; - background-color: #d7d7d7; - padding: 1em; - -moz-border-radius: 3; - border-radius: 3; - border-width: 1; - border-color: #cccccc; - } - .post p { - padding: 0; - margin: 0; - } - p.date { - font-size: 80%; - margin-bottom: 0.5em; - } - #faq { - color: #ff0000; - font-size: 120%; - font-weight: bold; - } -</style> -<body> -<div style="float:right;margin:0em 0.5em;"><script type="text/javascript" src="http://www.ohloh.net/p/380374/widgets/project_users.js?style=blue"></script></div> -<div style="float:right;margin:0em 0.5em;"><a href="http://sourceforge.net/"><img src="http://sflogo.sourceforge.net/sflogo.php?group_id=272657&type=3" alt="SourceForge.net"/></a></div> -<br/> -<ul id='header'> - <li><a href="#about">About</a></li> - <li><a href="#news">News</a></li> - <!--li><a id='faq' href="faq.txt">F.A.Q.</a></li--> - <li><a href="http://sourceforge.net/apps/mediawiki/deadbeef">Wiki</a></li> - <li><a href="#license">Copying</a></li> - <li><a href="#download">Download</a></li> - <li><a href="#bugs">Reporting Bugs</a></li> - <li><a href="#developers">Developer Information</a></li> - <li><a href="#contacts">Contacts</a></li> - <li><a href="screenshots.html">Screenshots</a></li> -</ul> - -<h1 id='about'>About</h1> -<p>DeaDBeeF (as in 0xDEADBEEF) is an audio player for GNU/Linux systems with X11 (though now it also runs in plain console without X, in FreeBSD, and in OpenSolaris).</p> -<p>Main features:</p> -<ul> - <li>mp3, ogg vorbis, flac, ape, wv, wav, m4a, mpc, cd audio (and many more)</li> - <li>sid, nsf and lots of other popular chiptune formats</li> - <li>ID3v1, ID3v2.2, ID3v2.3, ID3v2.4, APEv2, xing/info tags support</li> - <li>character set detection for non-unicode id3 tags - supports cp1251 and iso8859-1</li> - <li>unicode tags are fully supported as well (both utf8 and ucs2)</li> - <li>cuesheet (.cue files) support, with charset detection (utf8/cp1251/iso8859-1)</li> - <li>tracker modules like mod, s3m, it, xm, etc</li> - <li>HVSC song length database support for sid</li> - <li>gtk2 interface with efficient custom widgets</li> - <li>no GNOME or KDE dependencies</li> - <li>minimize to tray, with scrollwheel volume control</li> - <li>drag and drop, both inside of playlist, and from filemanagers and such</li> - <li>control playback from command line</li> - <li>global hotkeys</li> - <li>multiple playlists</li> - <li>album artwork display</li> - <li>18-band graphical equalizer</li> - <li>metadata editor</li> - <li>user-customizable groups in playlists</li> - <li>user-customizable columns with flexible title formatting</li> - <li>radio and podcast support for ogg vorbis, mp3 and aac streams</li> - <li>gapless playback</li> - <li>plugin support; bundled with lots of plugins, such as global hotkeys and last.fm scrobbler; sdk is included</li> - <li>duration calculation is as precise as possible for vbr mp3 files (with and without xing/info tags)</li> - <li>was tested and works on x86, x86_64 and ppc64 architectures. should work on most modern platforms</li> -</ul> - -<h1 id="news">News</h1> - -<h2>release 0.4 is out</h2> -<div class="post"> - <p class="date">2010/05/09</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.3.3</p> - <ul> - <li>multiple tabbed playlists</li> - <li>added grouping of tracks using title-formatting strings</li> - <li>added Album Cover Art plugin</li> - <li>added EQ plugin (SuperEQ library by Naoki Shibata)</li> - <li>added basic PulseAudio support</li> - <li>added metadata editing support</li> - <li>improved global hotkeys plugin, with GUI configurator</li> - <li>colors for custom widgets are taken from GTK theme, and user-customizable</li> - <li>fixed FreeBSD compatibility problems</li> - <li>improved resampling/streaming code</li> - <li>enabled .TTA support in ffmpeg plugin</li> - <li>improved metadata readers (id3v1, id3v2, apev2)</li> - <li>improved Icy (shoutcast) protocol support</li> - <li>moved built-in decoders to their own dynamic libraries</li> - <li>now it's possible to exclude any plugin from build</li> - <li>player remembers scroll positions in playlists between sessions</li> - <li>added ability to delete selected files from disk (playlist context menu)</li> - <li>added ability to reload metadata (playlist context menu)</li> - <li>added AAC 'net streaming support (ffmpeg plugin)</li> - <li>faster search and sorting</li> - <li>added support for proxy username/password authentication</li> - <li>better recognizer of remote pls/m3u files for online radio</li> - <li>improved/fixed last.fm plugin</li> - <li>OSD notifications about track changes though any notification daemon</li> - <li>fixed gapless playback errors</li> - </ul> -</div> - -<h2>release 0.3.3 is out</h2> -<div class="post"> - <p class="date">2010/02/07</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.3.2</p> - <ul> - <li>fixed "unknown response" in command line</li> - <li>fixed winkey in global hotkeys plugin</li> - <li>fixed crash in id3v1 parser</li> - <li>fixed crash in mp3 plugin</li> - <li>fixed few bugs/problems in ALSA plugin (now works on wider range of soundcards)</li> - <li>fixed playback of multichannel FLAC files</li> - <li>fixed 24 bit wavpack playback</li> - <li>fixed duration calculation and seeking bugs in mp3 plugin</li> - <li>added support for older versions of ffmpeg</li> - <li>added OSS(3,4) support</li> - <li>experimental FreeBSD support</li> - <li>experimental OpenSolaris support</li> - <li>improved GUI dialogs</li> - <li>added new "File Number" column type</li> - <li>added new "File Name" custom column conversion</li> - <li>added option to disable nowplaying notifications in lastfm plugin</li> - <li>added support for icy metadata (title in shoutcast streams)</li> - <li>added experimental (optional) support for notifications using libnotify</li> - </ul> - <p><a href="screenshot03.png">Screenshot</a></p> -</div> - -<h2>release 0.3.2 is out</h2> -<div class="post"> - <p class="date">2010/01/12</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.3.1</p> - <ul> - <li>all GTK+ UI code is now in plugin</li> - <li>improved main menu layout in GTK UI</li> - <li>numerous memory and cpu optimizations</li> - <li>fully editable/scriptable columns with sorting</li> - <li>native look and feel of playlist widget</li> - <li>selection is synchronized between main window and search window</li> - <li>keyboard navigation in search window</li> - <li>plugins got basic GUI configuration</li> - <li>much smoother seekbar</li> - <li>compatible with more GTK theme engines</li> - <li>improved restore window geometry after minimizing to system tray</li> - <li>search window geometry is now saved and restored between sessions</li> - <li>flexible nowplaying querying support via command line</li> - <li>ALSA code moved to plugin</li> - <li>new "nullout" output plugin - good for testing, and as basis for new plugins</li> - <li>added template .c file (with comments) for making new decoder plugins</li> - <li>updated id3v2 and apev2 parsers to support more metadata types</li> - <li>id3v2.2 parser now supports unsynchronization</li> - <li>metadata viewer accessible from context menu</li> - <li>flac plugin now plays "oga" files (flac in ogg container)</li> - <li>ffmpeg plugin, adds formats: m4a (aac,alac), mpc/mp+/mpp, wma, shn, oma, ac3, vqf</li> - <li>vtx plugin using libayemu</li> - <li>adplug plugin - cmf, rol, hsc, etc (including adlib S3Ms)</li> - <li>fixed cuesheet support in mp3 and ogg plugins</li> - <li>fixed sse2 issues on i686 architecture</li> - <li>added 24-bit ape support (thanks to Rockbox project)</li> - <li>added support for custom scrobbler url to last.fm plugin (e.g. libre.fm)</li> - <li>added Play Queue funtionality to playlist (context menu)</li> - <li>added average/approximate bitrate display to statusbar</li> - <li>new "cursor follows playback" feature</li> - <li>new "stop after current track" feature</li> - <li>.dbpl extension is auto-added when saving playlist</li> - <li>improved robustness in http code (handling connection problems, etc)</li> - </ul> -</div> - -<a href="oldnews.html">News archive</a><br/> - -<h1 id="license">Copying</h1> -<pre> - Copyright (C) 2009 Alexey Yakovenko - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -</pre> - -<h1 id="download">Download</h1> -<h2>Latest version 0.4.0:</h2> -<p>source code for version 0.4.0 <a href="http://sourceforge.net/projects/deadbeef/files/deadbeef-0.4.0.tar.bz2/download">deadbeef-0.4.0.tar.bz2</a></p> -<p>or <a href="http://sourceforge.net/projects/deadbeef/files/">browse all files</a></p> -<h3>Arch Linux PKGBUILD</h3> -<p>Download from <a href="http://aur.archlinux.org/packages.php?ID=29497">AUR website</a>,</p> -<p>or if you have <a href="http://archlinux.fr/yaourt-en">Yaourt</a>, simply do «yaourt -S deadbeef»</p> -<h3>Debian and Ubuntu packages</h3> -<p>Debian Stable packages: <a href="http://sourceforge.net/projects/deadbeef/files/debian/deadbeef_0.4.0-1_i386.deb/download">i386</a>, <a href="http://sourceforge.net/projects/deadbeef/files/debian/deadbeef_0.4.0-1_amd64.deb/download">x86_64</a>, <a href="http://sourceforge.net/projects/deadbeef/files/debian/deadbeef-plugins-dev_0.4.0-1_all.deb/download">plugin sdk</a></p> -<p>Ubuntu <a href="http://launchpad.net/~alexey-smirnov/+archive/deadbeef">PPA repository</a></p> -<p>Provided by <a href="mailto:alexey.smirnov@gmx.com">Alexey Smirnov</a></p> -<h3>OpenSuse packages</h3> -<p>Download from <a href="http://software.opensuse.org/search?baseproject=ALL&p=1&q=deadbeef">openSUSE Build Service</a></p> -<p>Provided by <a href="mailto:aya.home.nsk@gmail.com">Arseny</a></p> -<p><strong><em>NOTE</em>: I have nothing to do with these packages, nor can i test them. use at your own risk</strong</p> - -<h1 id='bugs'>Reporting Bugs And Requesting Features</h1> -<p>Trackers for reporting bugs, requesting features, etc are <a href="https://sourceforge.net/projects/deadbeef/support">here</a></p> -<h1 id="developers">Developer Information</h1> -<p>How to contribute: <a href="http://contributing.appspot.com/deadbeef">http://contributing.appspot.com/deadbeef</a></p> -<p>Also, see <a href="http://sourceforge.net/projects/deadbeef">project site</a>.</p> -<h1 id='contacts'>Contacts</h1> -<p>official IRC channel (for english speaking people) is: #deadbeefplayer @ freenode</p> -<p>official jabber conference for russian speaking users is here: deadbeef-ru@conference.jabber.ru</p> -<p>email: <a href="mailto:waker@users.sourceforge.net">Alexey Yakovenko</a></p> - -<hr/> -<script type="text/javascript"> -var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); -document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); -</script> -<script type="text/javascript"> -try { -var pageTracker = _gat._getTracker("UA-3180744-2"); -pageTracker._trackPageview(); -} catch(err) {}</script> -</body> diff --git a/web/oldnews.html b/web/oldnews.html deleted file mode 100644 index e57bffa3..00000000 --- a/web/oldnews.html +++ /dev/null @@ -1,308 +0,0 @@ -<html> -<head> -<title>DeaDBeeF - Ultimate Music Player For GNU/Linux</title> -</head> -<style> - body { - background-color: #eeeeee; - } - #header { - margin: 0; - padding: 0; - } - #header li { - display: inline; - margin-left: 1em; - } - h1 { - font-variant: small-caps; - } - .post { - margin-left: 2em; - background-color: #d7d7d7; - padding: 1em; - -moz-border-radius: 3; - border-radius: 3; - border-width: 1; - border-color: #cccccc; - } - .post p { - padding: 0; - margin: 0; - } - p.date { - font-size: 80%; - margin-bottom: 0.5em; - } - #faq { - color: #ff0000; - font-size: 120%; - font-weight: bold; - } -</style> -<body> -<h2>release 0.3.1 is out</h2> -<div class="post"> - <p class="date">2009/11/29</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.3.0</p> - <ul> - <li>improved header widget drawing and gtkengines compatibility</li> - <li>fixed vfs_curl to fetch content size properly again</li> - <li>fixed rare memory leak bug in seekbar drawing</li> - <li>fixed total playtime display</li> - <li>changed buttons to use stock icons</li> - <li>implemented reading of embedded cuesheets from ape and wavpack files</li> - <li>fixed bug in filename resolving when starting from commandline</li> - <li>added possibility to open multiple files from filemanagers</li> - <li>fixed random locking/hanging in alsa module</li> - <li>loading plugins from $XDG_CONFIG_HOME/.local/lib/deadbeef/ (by <a href="mailto:alexey.smirnov@gmx.com">Alexey A. Smirnov</a>)</li> - <li>middle click on tray icon toggles pause on current track (by <a href="mailto:rotmer@gmail.com">Alex Dedul</a>)</li> - </ul> -</div> - - -<h2>release 0.3.0 is out</h2> -<div class="post"> - <p class="date">2009/11/08</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.3.2</p> - <ul> - <li>vfs plugins - for implementing http/ftp streaming, etc</li> - <li>improved mpeg (libmad) plugin - eats less memory, works faster</li> - <li>added support for icecast and shoutcast streams (mp3, ogg)</li> - <li>added support for podcasts (basically, for any files residing on http/ftp)</li> - <li>added support for opening pls and m3u files</li> - <li>improved about dialog</li> - <li>added support for Super (winkey) modifier and multimedia keys in global hotkeys plugin</li> - <li>fixed random crash in global hotkeys plugin if key combination was used elsewhere</li> - <li>improved cuesheet reader</li> - <li>added cd audio support, including cddb/freedb</li> - <li>added preferences window</li> - <li>new unified config file for everything</li> - <li>added total playtime display in statusbar</li> - <li>improved plugin build system, displays list of plugins to be built</li> - <li>custom columns (through manual config editing yet)</li> - <li>column header drag-and-drop</li> - <li>improved alsa compatibility</li> - <li>player can release sound device while not playing</li> - <li>better alsa resume after suspend support</li> - <li>support for hardware samplerate conversion (when supported by hardware)</li> - <li>support for alsa software resampling</li> - <li>improved skipping through bad files</li> - <li>fixed replaygain bugs</li> - <li>added full file path display via tooltip (optional, disabled by default)</li> - <li>statusbar shows info while paused</li> - <li>added new buffering icon while streamer loads data</li> - <li>added scrolling in playlist while dragging/selecting tracks</li> - <li>case-insensitive file filter in gtkfilechooser dialogs</li> - <li>added cursor sync between playlist and search windows</li> - <li>player saves playlist/config on SIGTERM (should improve things on shutdown)</li> - </ul> -</div> - -<h2>release 0.2.3.2 is out</h2> -<div class="post"> - <p class="date">2009/10/07</p> - <p>0.2.3 bugfix release</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.3.1</p> - <ul> - <li>added winkey (Super) modifier support to hotkeys plugin</li> - <li>added multimedia keys support to hotkeys plugin</li> - <li>added hex keycodes (as reported by xev) support to hotkeys plugin</li> - <li>fixed crashbug in playlist loader when loading playlist files from older releases</li> - <li>fixed bug in flac decoder attempting to read past end of file</li> - <li>added new workarounds for malformed cusheet files</li> - </ul> -</div> -<h2>release 0.2.3.1 is out</h2> -<div class="post"> - <p class="date">2009/10/03</p> - <p>0.2.3 bugfix release</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.3</p> - <ul> - <li>disabled debug tracing in most modules, to prevent slow-downs</li> - <li>fixed streaming bug introduced last moment before 0.2.3</li> - <li>fixed redrawing of playing status after resume from pause</li> - </ul> -</div> -<h2>release 0.2.3 is out</h2> -<div class="post"> - <p class="date">2009/10/03</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.2.2</p> - <ul> - <li>added native gapless playback which works with most decoders</li> - <li>added replaygain support</li> - <li>added wavpack plugin</li> - <li>added libsndfile plugin</li> - <li>fixed seeking in paused and stopped states</li> - <li>fixed reading of some id3v2 tags</li> - <li>changed tag reading order to APEv2->ID3v2->ID3v1</li> - <li>improved cuesheet reader</li> - <li>fixed interlocking bug in streamer (should reduce skips)</li> - </ul> -</div> -<h2>release 0.2.2.2 is out</h2> -<div class="post"> - <p class="date">2009/09/20</p> - <p>another 0.2.2 bugfix release</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.2.1</p> - <ul> - <li>fixed resume after suspend/hibernate</li> - <li>fixed cue reader regression</li> - <li>fixed another playlist drawing regression</li> - <li>fixed stutter at the start of ape tracks</li> - </ul> -</div> - -<h2>release 0.2.2.1 is out</h2> -<div class="post"> - <p class="date">2009/09/13</p> - <p>there was very unfortunate regression bug in 0.2.2, so here's quick fix</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.2</p> - <ul> - <li>fixed playlist drawing regressions encountered in 0.2.2</li> - </ul> -</div> - - -<h2>release 0.2.2 is out</h2> -<div class="post"> - <p class="date">2009/09/13</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.1</p> - <ul> - <li>fixed several build problems reported by users</li> - <li>added app icons, updated launcher script</li> - <li>proper sse2 detection and usage in ape plugin</li> - <li>reduced volumebar range to -50dB</li> - <li>horizontal scrolling in playlist</li> - <li>pango is now used for ellipsizing</li> - <li>case-insensitive search using russian, danish, french and other alphabets</li> - <li>vertical scroll is much faster now</li> - </ul> -</div> - -<h2>release 0.2.1 is out</h2> -<div class="post"> - <p class="date">2009/09/12</p> - <p><a href="#download">get it!</a></p> - <p>Changelog since 0.2.0</p> - <ul> - <li>new ape decoder - faster, doesn't crash</li> - <li>fixed APEv2 tag reader</li> - <li>fixed id3 tag reader on big-endian systems</li> - <li>player now builds without errors on big-endian systems</li> - <li>memory for HVSC song length database is now allocated on demand</li> - <li>fixed icons in system tray menu</li> - <li>fixed color detection for column header text</li> - <li>improved cuesheet reader (pregap support and better bounds checking)</li> - </ul> -</div> - -<h2>deadbeef-0.2.0 is out!</h2> -<div class='post'> -<p class='date'>2009/09/08</p> -<p><a href="#download">get it!</a></p> -<p>Changelog since 0.1.1:</p> -<p><i>please note this changelog is what most users would notice. actual changelog is 10 times bigger, and is not worth reading. i don't want to count each of 1000 bugfixes here.</i></p> -<ul> - <li>plugin API - decoder and misc plugins working, other types are work in progress</li> - <li>most decoders are in plugins now, which means that most dependencies are optional (libmad, libFLAC, etc)</li> - <li>global hotkeys plugin</li> - <li>last.fm scrobbler plugin</li> - <li>added help page (under help menu)</li> - <li>huge amount of performance tweaks (including power consumption tweaks)</li> - <li>cuesheets embedded into FLAC's vorbis comments</li> - <li>24 bit flac support</li> - <li>$XDG_CONFIG_HOME env variable support</li> - <li>APE format support through libdemac</li> - <li>launcher (.desktop) file</li> - <li>scroll follows playback (optional)</li> - <li>no more "?" when no track number in tags</li> - <li>fixed seekbar accuracy bug</li> - <li>improved cuesheet reader</li> - <li>cuesheet text charset detection (utf8, iso8859-1, cp1251)</li> - <li>improved mp3 parser (better vbr duration calc, more accurate seeking, etc)</li> - <li>fixed bug when starting files from command line using relative paths</li> - <li>fixed order/loopmode session saving</li> - <li>fixed id3v2.2 reader</li> - <li>focus/deiconify window on trayicon click</li> - <li>X button no longer minimizes to tray by default (configurable)</li> - <li>search is now accessible from menu</li> - <li>column sizes are now saved between sessions</li> - <li>select multiple folders in "add folder(s)" dialog</li> -</ul> -</div> - -<h2>tag loading/recoding policy</h2> -<div class='post'> -<p class='date'>2009/09/06</p> -<ul> - <li>id3v1 loader will always try to detect cp1251.</li> - <li>id3v2 loader will only try to detect cp1251 if encoding is not specified.</li> - <li>vorbis comment tags (both in ogg vorbis and flac files) and APE tags - (both in ape and mp3 files) must always be utf8, so no detection will be - done here.</li> - <li>id3v2 tags with encoding explicitly set to iso8859-1 will always be - loaded as iso8859-1. period.</li> - <li>id3v2 tags inserted into flac files will be ignored.</li> - <li>8bit charsets other than cp1251 and iso8859-1 (like koi8-r) are not - supported now, but might be added in the future.</li> -</ul> -</div> - -<h2>release 0.1.1 is out!</h2> -<div class='post'> -<p class='date'>2009/08/23</p> -<p>changelog:</p> -<pre> -volume control now works on dB scale -fixed bug in ogg vorbis decoder that was skipping songs -flac decoder can now ignore corrupted files to some extent -added shuffle playback mode -removed some of the unused code from build scripts -player no longer hangs if song change happened near the end of current song -playlist redraw fixed for pause/unpause -speed optimizations on playlist drawing -changed scrollwheel step to 2 rows -changed playlist drawing from cairo to gdk, to improve speed and use proper fonts -fixed server part to be started earlier, to prevent multiple instances bug -fixed several things preventing player to work on ppc64 architecture -fixed id3v2 unsynchronized frames reading -implemented basic session management, window size/position, volume, playmode are remembered across sessions -</pre> -<p><a href="#download">download</a> now!</p> -</div> - -<h2>GIT repository</h2> -<div class='post'> -<p>i pushed my git repository to sf.net on Thu Aug 20 2009</p> -<p>git version has several bugfixes/improvements over alpha release, so feel free to use it.</p> -<p><pre>git clone git://deadbeef.git.sourceforge.net/gitroot/deadbeef/deadbeef</pre></p> -</div> - -<h2>Alpha released</h2> -<div class='post'> -<p>first alpha release 0.1.0 just happened on Wed Aug 19 21:59:27 CEST 2009!</p> -<p>there was a report from a happy user that deadbeef won't compile with gtk<=2.16.</p> -<p>fix is very easy, and will be available in next release, and in git head when i have time to prepare and push it</p> -<p>thanks for understanding and happy hacking!</p> -</div> -<hr/> -<p><a href="http://sourceforge.net/">Project Web Hosted by<img src="http://sflogo.sourceforge.net/sflogo.php?group_id=272657&type=3" alt="SourceForge.net"/></a></p> -<script type="text/javascript"> -var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); -document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); -</script> -<script type="text/javascript"> -try { -var pageTracker = _gat._getTracker("UA-3180744-2"); -pageTracker._trackPageview(); -} catch(err) {}</script> -</body> |