# HG changeset patch # User nenolod # Date 1150516552 25200 # Node ID 01d2aa561b537f3ef660f90d5ecab16fcc957abf # Parent 7baea4fb20a49799ab0ab437adbdcf1449b91c7e [svn] - libaac: use unified fileinfo requester, since functionality is adequate (cannot save data, only read it at present) diff -r 7baea4fb20a4 -r 01d2aa561b53 ChangeLog --- a/ChangeLog Fri Jun 16 06:13:21 2006 -0700 +++ b/ChangeLog Fri Jun 16 20:55:52 2006 -0700 @@ -1,3 +1,13 @@ +2006-06-16 13:13:21 +0000 Yoshiki Yazawa + revision [1470] + - fix for alsa_mutex deadlock + - fix for alsa_mutex scope + + + Changes: Modified: + +3 -3 trunk/Plugins/Output/alsa/audio.c + + 2006-06-16 10:50:38 +0000 William Pitcock revision [1468] - if entry->tuple == NULL, then probe the file for a decoder and build the appropriate tuple for that entry diff -r 7baea4fb20a4 -r 01d2aa561b53 Plugins/Input/aac/src/Makefile.in --- a/Plugins/Input/aac/src/Makefile.in Fri Jun 16 06:13:21 2006 -0700 +++ b/Plugins/Input/aac/src/Makefile.in Fri Jun 16 20:55:52 2006 -0700 @@ -10,7 +10,7 @@ LDFLAGS += ../libfaad2/libfaad.a ../mp4ff/libmp4ff.a -lstdc++ -SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c fileinfo.c +SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c OBJECTS = ${SOURCES:.c=.o} diff -r 7baea4fb20a4 -r 01d2aa561b53 Plugins/Input/aac/src/fileinfo.c --- a/Plugins/Input/aac/src/fileinfo.c Fri Jun 16 06:13:21 2006 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,449 +0,0 @@ -/* BMP - Cross-platform multimedia player - * Copyright (C) 2003-2004 BMP development team. - * - * Based on XMMS: - * Copyright (C) 1998-2003 XMMS development team. - * - * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "audacious/util.h" -#include -#include -#include -#include "mp4ff.h" -#include "tagging.h" - -#include "m4a.xpm" - -static GtkWidget *window = NULL; -static GtkWidget *filename_entry, *id3_frame; -static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry, - *tracknum_entry, *comment_entry; -static GtkWidget *genre_combo; - -GtkWidget *vbox, *hbox, *left_vbox, *table; -GtkWidget *mpeg_frame, *mpeg_box; -GtkWidget *label, *filename_vbox; -GtkWidget *bbox; -GtkWidget *remove_id3, *cancel, *save; -GtkWidget *boxx; - -const gchar *emphasis[4]; -const gchar *bool_label[2]; - -static GList *genre_list = NULL; -static gchar *current_filename = NULL; - -#define MAX_STR_LEN 100 - -static uint32_t mp4_read_callback(void *data, void *buffer, uint32_t len) -{ - if (data == NULL || buffer == NULL) - return -1; - - return vfs_fread(buffer, 1, len, (VFSFile *) data); -} - -static uint32_t mp4_seek_callback(void *data, uint64_t pos) -{ - if (data == NULL) - return -1; - - return vfs_fseek((VFSFile *) data, pos, SEEK_SET); -} - -#if 0 -static guint -audmp4_strip_spaces(char *src, size_t n) -{ - gchar *space = NULL, /* last space in src */ - *start = src; - - while (n--) - switch (*src++) { - case '\0': - n = 0; /* breaks out of while loop */ - - src--; - break; - case ' ': - if (space == NULL) - space = src - 1; - break; - default: - space = NULL; /* don't terminate intermediate spaces */ - - break; - } - if (space != NULL) { - src = space; - *src = '\0'; - } - return src - start; -} - -static void -set_entry_tag(GtkEntry * entry, gchar * tag, gint length) -{ - gint stripped_len; - gchar *text, *text_utf8; - - stripped_len = audmp4_strip_spaces(tag, length); - text = g_strdup_printf(tag); - - if ((text_utf8 = str_to_utf8(text))) { - gtk_entry_set_text(entry, text_utf8); - g_free(text_utf8); - } - else { - gtk_entry_set_text(entry, ""); - } - - g_free(text); -} - -static void -get_entry_tag(GtkEntry * entry, gchar * tag, gint length) -{ - gchar *text = str_to_utf8(gtk_entry_get_text(entry)); - memset(tag, ' ', length); - memcpy(tag, text, strlen(text) > length ? length : strlen(text)); -} - -static void -press_save(GtkWidget * w, gpointer data) -{ - gtk_button_clicked(GTK_BUTTON(save)); -} -#endif - -static gint -genre_comp_func(gconstpointer a, gconstpointer b) -{ - return strcasecmp(a, b); -} - -static gboolean -fileinfo_keypress_cb(GtkWidget * widget, - GdkEventKey * event, - gpointer data) -{ - if (!event) - return FALSE; - - switch (event->keyval) { - case GDK_Escape: - gtk_widget_destroy(window); - break; - default: - return FALSE; - } - - return TRUE; -} - -#if 0 -static void -label_set_text(GtkWidget * label, gchar * str, ...) -{ - va_list args; - gchar tempstr[MAX_STR_LEN]; - - va_start(args, str); - g_vsnprintf(tempstr, MAX_STR_LEN, str, args); - va_end(args); - - gtk_label_set_text(GTK_LABEL(label), tempstr); -} -#endif - -static void -change_buttons(GtkObject * object) -{ - gtk_widget_set_sensitive(GTK_WIDGET(object), TRUE); -} - -void -audmp4_file_info_box(gchar * filename) -{ - gint i; - gchar *title, *filename_utf8; - VFSFile *mp4fh; - mp4ff_callback_t *mp4cb; - mp4ff_t *mp4file; - - emphasis[0] = _("None"); - emphasis[1] = _("50/15 ms"); - emphasis[2] = ""; - emphasis[3] = _("CCIT J.17"); - bool_label[0] = _("No"); - bool_label[1] = _("Yes"); - - if (!window) { - GtkWidget *pixmapwid; - GdkPixbuf *pixbuf; - PangoAttrList *attrs; - PangoAttribute *attr; - - window = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_type_hint(GTK_WINDOW(window), - GDK_WINDOW_TYPE_HINT_DIALOG); - gtk_window_set_resizable(GTK_WINDOW(window), TRUE); - gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); - g_signal_connect(G_OBJECT(window), "destroy", - G_CALLBACK(gtk_widget_destroyed), &window); - gtk_container_set_border_width(GTK_CONTAINER(window), 10); - - vbox = gtk_vbox_new(FALSE, 10); - gtk_container_add(GTK_CONTAINER(window), vbox); - - - filename_vbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(vbox), filename_vbox, FALSE, TRUE, 0); - - pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) - m4a_xpm); - pixmapwid = gtk_image_new_from_pixbuf(pixbuf); - g_object_unref(pixbuf); - gtk_misc_set_alignment(GTK_MISC(pixmapwid), 0, 0); - gtk_box_pack_start(GTK_BOX(filename_vbox), pixmapwid, FALSE, FALSE, - 0); - - label = gtk_label_new(NULL); - - attrs = pango_attr_list_new(); - - attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD); - attr->start_index = 0; - attr->end_index = -1; - pango_attr_list_insert(attrs, attr); - - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_label_set_text(GTK_LABEL(label), _("Name:")); - gtk_box_pack_start(GTK_BOX(filename_vbox), label, FALSE, FALSE, 0); - - filename_entry = gtk_entry_new(); - gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE); - gtk_box_pack_start(GTK_BOX(filename_vbox), filename_entry, TRUE, - TRUE, 0); - - hbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); - - /* tagging information */ - id3_frame = gtk_frame_new(_("Song Metadata")); - gtk_box_pack_start(GTK_BOX(vbox), id3_frame, FALSE, TRUE, 0); - - table = gtk_table_new(7, 5, FALSE); - gtk_container_set_border_width(GTK_CONTAINER(table), 5); - gtk_container_add(GTK_CONTAINER(id3_frame), table); - - label = gtk_label_new(_("Title:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, - GTK_FILL, 5, 5); - - title_entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), title_entry, 1, 6, 0, 1, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - label = gtk_label_new(_("Artist:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, - GTK_FILL, 5, 5); - - artist_entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 6, 1, 2, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - label = gtk_label_new(_("Album:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, - GTK_FILL, 5, 5); - - album_entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), album_entry, 1, 6, 2, 3, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - label = gtk_label_new(_("Comment:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, - GTK_FILL, 5, 5); - - comment_entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 6, 3, 4, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - label = gtk_label_new(_("Year:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL, - GTK_FILL, 5, 5); - - year_entry = gtk_entry_new(); - gtk_entry_set_width_chars(GTK_ENTRY(year_entry),4); - gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 4, 5, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - label = gtk_label_new(_("Track number:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, GTK_FILL, - GTK_FILL, 5, 5); - - tracknum_entry = gtk_entry_new(); - gtk_widget_set_usize(tracknum_entry, 40, -1); - gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - pango_attr_list_unref(attrs); - - label = gtk_label_new(_("Genre:")); - gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); - gtk_label_set_attributes(GTK_LABEL(label), attrs); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL, - GTK_FILL, 5, 5); - - genre_combo = gtk_combo_new(); - gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), - FALSE); - if (!genre_list) { - for (i = 0; i < GENRE_MAX; i++) - genre_list = - g_list_prepend(genre_list, - (gchar *) audmp4_id3_genres[i]); - genre_list = g_list_prepend(genre_list, ""); - genre_list = g_list_sort(genre_list, genre_comp_func); - } - gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo), genre_list); - - gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 6, 5, 6, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); - - boxx = gtk_hbutton_box_new(); - gtk_hbutton_box_set_layout_default(GTK_BUTTONBOX_SPREAD); - - bbox = gtk_hbutton_box_new(); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0); - - cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE); - g_signal_connect_swapped(G_OBJECT(cancel), "clicked", - G_CALLBACK(gtk_widget_destroy), - G_OBJECT(window)); - GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); - gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0); - gtk_widget_grab_default(cancel); - - - gtk_table_set_col_spacing(GTK_TABLE(left_vbox), 1, 10); - - - g_signal_connect_swapped(G_OBJECT(title_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(artist_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(album_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(year_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(comment_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(tracknum_entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect_swapped(G_OBJECT(GTK_COMBO(genre_combo)->entry), "changed", - G_CALLBACK(change_buttons), save); - g_signal_connect(G_OBJECT(window), "key_press_event", - G_CALLBACK(fileinfo_keypress_cb), NULL); - } - - g_free(current_filename); - current_filename = g_strdup(filename); - - filename_utf8 = filename_to_utf8(filename); - - title = g_strdup_printf(_("%s - Audacious"), g_basename(filename_utf8)); - gtk_window_set_title(GTK_WINDOW(window), title); - g_free(title); - - gtk_entry_set_text(GTK_ENTRY(filename_entry), filename_utf8); - g_free(filename_utf8); - - gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1); - - gtk_entry_set_text(GTK_ENTRY(artist_entry), ""); - gtk_entry_set_text(GTK_ENTRY(album_entry), ""); - gtk_entry_set_text(GTK_ENTRY(year_entry), ""); - gtk_entry_set_text(GTK_ENTRY(tracknum_entry), ""); - gtk_entry_set_text(GTK_ENTRY(comment_entry), ""); - - gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list), - g_list_index(genre_list, "")); - - gtk_widget_set_sensitive(id3_frame, - vfs_is_writeable(filename)); - - gtk_widget_set_sensitive(GTK_WIDGET(save), FALSE); - - /* Ok! Lets set the information now. */ - - if ((mp4fh = vfs_fopen(filename, "rb")) != NULL) - { - mp4cb = g_malloc0(sizeof(mp4ff_callback_t)); - mp4cb->read = mp4_read_callback; - mp4cb->seek = mp4_seek_callback; - mp4cb->user_data = mp4fh; - - if ((mp4file = mp4ff_open_read(mp4cb)) != NULL) - { - gtk_entry_set_text(GTK_ENTRY(artist_entry), audmp4_get_artist(mp4file)); - gtk_entry_set_text(GTK_ENTRY(title_entry), audmp4_get_title(mp4file)); - gtk_entry_set_text(GTK_ENTRY(year_entry), g_strdup_printf("%d", audmp4_get_year(mp4file))); - gtk_entry_set_text(GTK_ENTRY(album_entry), audmp4_get_album(mp4file)); - mp4ff_close(mp4file); - } - - g_free(mp4cb); - vfs_fclose(mp4fh); - } - - gtk_widget_show_all(window); -} diff -r 7baea4fb20a4 -r 01d2aa561b53 Plugins/Input/aac/src/libmp4.c --- a/Plugins/Input/aac/src/libmp4.c Fri Jun 16 06:13:21 2006 -0700 +++ b/Plugins/Input/aac/src/libmp4.c Fri Jun 16 20:55:52 2006 -0700 @@ -104,7 +104,7 @@ 0, // set player window info 0, // set song title text mp4_getSongTitle, // get song title text - audmp4_file_info_box, // info box + 0, // info box 0, // to output plugin mp4_get_song_tuple, };