annotate audacious/input.c @ 1938:1d9c1026d9f8 trunk

[svn] - DoubleSize support. This has bugs, the most notable one being that DoubleSize only works right if you restart the player. The second bug is rather obvious too. No osmosis skinengine. No TinyPlayer. Classic-esque skinengine only. This is because the doublesize algorithm hates you and wants you to go die in a fire.
author nenolod
date Sun, 05 Nov 2006 04:43:16 -0800
parents c186ee9524ed
children c2a63f41d8c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1 /* BMP - Cross-platform multimedia player
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
2 * Copyright (C) 2003-2004 BMP development team.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
3 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
4 * Based on XMMS:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
5 * Copyright (C) 1998-2003 XMMS development team.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
6 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
10 * (at your option) any later version.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
11 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
15 * GNU General Public License for more details.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
16 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
1459
705d4c089fce [svn] Fix postal code.
chainsaw
parents: 1458
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
20 */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
21
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
22 #ifdef HAVE_CONFIG_H
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
23 # include "config.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
24 #endif
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
25
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
26 #include <glib.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
27 #include <glib/gi18n.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
28 #include <gtk/gtk.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
29 #include <string.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
30
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
31 #include "fft.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
32 #include "input.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
33 #include "main.h"
1653
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
34 #include "mainwin.h"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
35 #include "output.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
36 #include "util.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
37 #include "visualization.h"
538
e4e897d20791 [svn] remove libaudcore, we never did anything with it
nenolod
parents: 355
diff changeset
38 #include "playback.h"
1653
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
39 #include "widgets/widgetcore.h"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
40 #include "pluginenum.h"
1755
3434eb44b304 [svn] - version bump to 1.2.0-rc2
nenolod
parents: 1672
diff changeset
41 #include "titlestring.h"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
42
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
43 #include "libaudacious/util.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
44 #include "libaudacious/xentry.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
45
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
46 G_LOCK_DEFINE_STATIC(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
47
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
48 struct _VisNode {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
49 gint time;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
50 gint nch;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
51 gint length; /* number of samples per channel */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
52 gint16 data[2][512];
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
53 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
54
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
55 typedef struct _VisNode VisNode;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
56
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
57
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
58 InputPluginData ip_data = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
59 NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
60 NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
61 FALSE,
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 538
diff changeset
62 FALSE,
890
ed26947bbf57 [svn] Gapless support. This comes with a few caveats, that I will mention here:
nenolod
parents: 625
diff changeset
63 FALSE,
1273
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
64 FALSE,
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 538
diff changeset
65 NULL
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
66 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
67
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
68 static GList *vis_list = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
69
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
70 gchar *input_info_text = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
71
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
72 InputPlugin *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
73 get_current_input_plugin(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
74 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
75 return ip_data.current_input_plugin;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
76 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
77
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
78 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
79 set_current_input_plugin(InputPlugin * ip)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
80 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
81 ip_data.current_input_plugin = ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
82 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
83
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
84 GList *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
85 get_input_list(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
86 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
87 return ip_data.input_list;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
88 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
89
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
90
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
91 gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
92 input_is_enabled(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
93 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
94 gchar *basename = g_path_get_basename(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
95 gint enabled;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
96
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
97 enabled = GPOINTER_TO_INT(g_hash_table_lookup(plugin_matrix, basename));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
98 g_free(basename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
99
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
100 return enabled;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
101 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
102
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
103 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
104 disabled_iplugins_foreach_func(const gchar * name,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
105 gboolean enabled,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
106 GString * list)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
107 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
108 g_return_if_fail(list != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
109
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
110 if (enabled)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
111 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
112
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
113 if (list->len > 0)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
114 g_string_append(list, ":");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
115
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
116 g_string_append(list, name);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
117 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
118
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
119 gchar *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
120 input_stringify_disabled_list(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
121 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
122 GString *disabled_list;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
123
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
124 disabled_list = g_string_new("");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
125 g_hash_table_foreach(plugin_matrix,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
126 (GHFunc) disabled_iplugins_foreach_func,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
127 disabled_list);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
128
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
129 return g_string_free(disabled_list, FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
130 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
131
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
132 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
133 free_vis_data(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
134 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
135 G_LOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
136 g_list_foreach(vis_list, (GFunc) g_free, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
137 g_list_free(vis_list);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
138 vis_list = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
139 G_UNLOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
140 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
141
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
142 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
143 convert_to_s16_ne(AFormat fmt, gpointer ptr, gint16 * left,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
144 gint16 * right, gint nch, gint max)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
145 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
146 gint16 *ptr16;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
147 guint16 *ptru16;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
148 guint8 *ptru8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
149 gint i;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
150
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
151 switch (fmt) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
152 case FMT_U8:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
153 ptru8 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
154 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
155 for (i = 0; i < max; i++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
156 left[i] = ((*ptru8++) ^ 128) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
157 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
158 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
159 left[i] = ((*ptru8++) ^ 128) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
160 right[i] = ((*ptru8++) ^ 128) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
161 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
162 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
163 case FMT_S8:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
164 ptru8 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
165 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
166 for (i = 0; i < max; i++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
167 left[i] = (*ptru8++) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
168 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
169 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
170 left[i] = (*ptru8++) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
171 right[i] = (*ptru8++) << 8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
172 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
173 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
174 case FMT_U16_LE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
175 ptru16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
176 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
177 for (i = 0; i < max; i++, ptru16++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
178 left[i] = GUINT16_FROM_LE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
179 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
180 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
181 left[i] = GUINT16_FROM_LE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
182 ptru16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
183 right[i] = GUINT16_FROM_LE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
184 ptru16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
185 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
186 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
187 case FMT_U16_BE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
188 ptru16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
189 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
190 for (i = 0; i < max; i++, ptru16++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
191 left[i] = GUINT16_FROM_BE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
192 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
193 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
194 left[i] = GUINT16_FROM_BE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
195 ptru16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
196 right[i] = GUINT16_FROM_BE(*ptru16) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
197 ptru16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
198 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
199 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
200 case FMT_U16_NE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
201 ptru16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
202 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
203 for (i = 0; i < max; i++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
204 left[i] = (*ptru16++) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
205 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
206 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
207 left[i] = (*ptru16++) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
208 right[i] = (*ptru16++) ^ 32768;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
209 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
210 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
211 case FMT_S16_LE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
212 ptr16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
213 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
214 for (i = 0; i < max; i++, ptr16++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
215 left[i] = GINT16_FROM_LE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
216 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
217 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
218 left[i] = GINT16_FROM_LE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
219 ptr16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
220 right[i] = GINT16_FROM_LE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
221 ptr16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
222 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
223 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
224 case FMT_S16_BE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
225 ptr16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
226 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
227 for (i = 0; i < max; i++, ptr16++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
228 left[i] = GINT16_FROM_BE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
229 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
230 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
231 left[i] = GINT16_FROM_BE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
232 ptr16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
233 right[i] = GINT16_FROM_BE(*ptr16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
234 ptr16++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
235 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
236 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
237 case FMT_S16_NE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
238 ptr16 = ptr;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
239 if (nch == 1)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
240 for (i = 0; i < max; i++)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
241 left[i] = (*ptr16++);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
242 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
243 for (i = 0; i < max; i++) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
244 left[i] = (*ptr16++);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
245 right[i] = (*ptr16++);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
246 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
247 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
248 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
249 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
250
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
251 InputVisType
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
252 input_get_vis_type()
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
253 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
254 return INPUT_VIS_OFF;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
255 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
256
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
257 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
258 input_add_vis(gint time, guchar * s, InputVisType type)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
259 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
260 g_warning("plugin uses obsoleted input_add_vis()");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
261 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
262
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
263 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
264 input_add_vis_pcm(gint time, AFormat fmt, gint nch, gint length, gpointer ptr)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
265 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
266 VisNode *vis_node;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
267 gint max;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
268
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
269 max = length / nch;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
270 if (fmt == FMT_U16_LE || fmt == FMT_U16_BE || fmt == FMT_U16_NE ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
271 fmt == FMT_S16_LE || fmt == FMT_S16_BE || fmt == FMT_S16_NE)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
272 max /= 2;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
273 max = CLAMP(max, 0, 512);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
274
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
275 vis_node = g_new0(VisNode, 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
276 vis_node->time = time;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
277 vis_node->nch = nch;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
278 vis_node->length = max;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
279 convert_to_s16_ne(fmt, ptr, vis_node->data[0], vis_node->data[1], nch,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
280 max);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
281
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
282 G_LOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
283 vis_list = g_list_append(vis_list, vis_node);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
284 G_UNLOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
285 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
286
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
287 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
288 input_dont_show_warning(GtkObject * object, gpointer user_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
289 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
290 *((gboolean *) user_data) =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
291 !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(object));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
292 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
293
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
294
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
295 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
296 input_show_unplayable_files(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
297 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
298 static GtkWidget *dialog = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
299 static GtkListStore *store = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
300
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
301 const gchar *markup =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
302 N_("<b><big>Unable to play files.</big></b>\n\n"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
303 "The following files could not be played. Please check that:\n"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
304 "1. they are accessible.\n"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
305 "2. you have enabled the media plugins required.");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
306
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
307 GtkTreeIter iter;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
308
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
309 gchar *filename_utf8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
310
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
311 if (!dialog) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
312 GtkWidget *vbox, *check;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
313 GtkWidget *expander;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
314 GtkWidget *scrolled, *treeview;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
315 GtkCellRenderer *renderer;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
316
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
317 dialog =
1653
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
318 gtk_message_dialog_new_with_markup(GTK_WINDOW(mainwin),
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
319 GTK_DIALOG_DESTROY_WITH_PARENT,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
320 GTK_MESSAGE_ERROR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
321 GTK_BUTTONS_OK,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
322 _(markup));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
323
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
324 vbox = gtk_vbox_new(FALSE, 6);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
325
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
326 check = gtk_check_button_new_with_label
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
327 (_("Don't show this warning anymore"));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
328
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
329 expander = gtk_expander_new_with_mnemonic(_("Show more _details"));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
330
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
331 scrolled = gtk_scrolled_window_new(NULL, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
332 gtk_container_add(GTK_CONTAINER(expander), scrolled);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
333
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
334 store = gtk_list_store_new(1, G_TYPE_STRING);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
335
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
336 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
337 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
338 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
339 treeview);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
340
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
341 renderer = gtk_cell_renderer_text_new();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
342 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
343 -1, _("Filename"),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
344 renderer,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
345 "text", 0,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
346 NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
347
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
348 vbox = GTK_DIALOG(dialog)->vbox;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
349 gtk_box_pack_start(GTK_BOX(vbox), check, FALSE, FALSE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
350 gtk_box_pack_start(GTK_BOX(vbox), expander, TRUE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
351
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
352 g_signal_connect(dialog, "response",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
353 G_CALLBACK(gtk_widget_destroy),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
354 dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
355 g_signal_connect(dialog, "destroy",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
356 G_CALLBACK(gtk_widget_destroyed),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
357 &dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
358 g_signal_connect(check, "clicked",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
359 G_CALLBACK(input_dont_show_warning),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
360 &cfg.warn_about_unplayables);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
361
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
362 gtk_widget_show_all(dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
363 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
364
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
365 gtk_window_present(GTK_WINDOW(dialog));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
366
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
367 filename_utf8 = filename_to_utf8(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
368 gtk_list_store_append(store, &iter);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
369 gtk_list_store_set(store, &iter, 0, filename_utf8, -1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
370 g_free(filename_utf8);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
371 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
372
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
373
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
374 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
375 input_file_not_playable(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
376 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
377 if (cfg.warn_about_unplayables)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
378 input_show_unplayable_files(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
379 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
380
355
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
381 /*
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
382 * input_check_file()
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
383 *
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
384 * Inputs:
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
385 * filename to check recursively against input plugins
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
386 * whether or not to show an error
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
387 *
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
388 * Outputs:
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
389 * pointer to input plugin which can handle this file
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
390 * otherwise, NULL
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
391 *
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
392 * (the previous code returned a boolean of whether or not we can
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
393 * play the file... even WORSE for performance)
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
394 *
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
395 * Side Effects:
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
396 * various input plugins open the file and probe it
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
397 * -- this can have very ugly effects performance wise on streams
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
398 *
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
399 * --nenolod, Dec 31 2005
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
400 */
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
401 InputPlugin *
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
402 input_check_file(const gchar * filename, gboolean show_warning)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
403 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
404 GList *node;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
405 InputPlugin *ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
406 gchar *filename_proxy;
1486
c32478314967 [svn] - do virtual playlists properly in 1.2
nenolod
parents: 1459
diff changeset
407 gint ret = 1;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
408
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
409 filename_proxy = g_strdup(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
410
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
411 for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
412 ip = INPUT_PLUGIN(node->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
413 if (ip && input_is_enabled(ip->filename) &&
1486
c32478314967 [svn] - do virtual playlists properly in 1.2
nenolod
parents: 1459
diff changeset
414 (ret = ip->is_our_file(filename_proxy)) > 0) {
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
415 g_free(filename_proxy);
355
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
416 return ip;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
417 }
1765
c186ee9524ed [svn] - enforce the ret = -1 == silent failure rule
nenolod
parents: 1755
diff changeset
418 else if (ret <= -1)
c186ee9524ed [svn] - enforce the ret = -1 == silent failure rule
nenolod
parents: 1755
diff changeset
419 break;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
420 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
421
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
422 g_free(filename_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
423
1486
c32478314967 [svn] - do virtual playlists properly in 1.2
nenolod
parents: 1459
diff changeset
424 if (show_warning && !(ret <= -1)) {
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
425 input_file_not_playable(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
426 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
427
355
1c701dfe5098 [svn] Cache the decoder used for each PlaylistEntry. This reduces the amount
nenolod
parents: 284
diff changeset
428 return NULL;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
429 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
430
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
431
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
432 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
433 input_set_eq(gint on, gfloat preamp, gfloat * bands)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
434 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
435 if (!ip_data.playing)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
436 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
437
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
438 if (!get_current_input_plugin())
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
439 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
440
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
441 if (get_current_input_plugin()->set_eq)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
442 get_current_input_plugin()->set_eq(on, preamp, bands);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
443 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
444
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
445 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
446 input_get_song_info(const gchar * filename, gchar ** title, gint * length)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
447 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
448 InputPlugin *ip = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
449 BmpTitleInput *input;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
450 GList *node;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
451 gchar *tmp = NULL, *ext;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
452 gchar *filename_proxy;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
453
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
454 g_return_if_fail(filename != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
455 g_return_if_fail(title != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
456 g_return_if_fail(length != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
457
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
458 filename_proxy = g_strdup(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
459
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
460 for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
461 ip = INPUT_PLUGIN(node->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
462 if (input_is_enabled(ip->filename) && ip->is_our_file(filename_proxy))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
463 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
464 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
465
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
466 if (ip && node && ip->get_song_info) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
467 ip->get_song_info(filename_proxy, &tmp, length);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
468 *title = str_to_utf8(tmp);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
469 g_free(tmp);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
470 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
471 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
472 input = bmp_title_input_new();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
473
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
474 tmp = g_strdup(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
475 if ((ext = strrchr(tmp, '.')))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
476 *ext = '\0';
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
477
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
478 input->file_name = g_path_get_basename(tmp);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
479 input->file_ext = ext ? ext + 1 : NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
480 input->file_path = tmp;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
481
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
482 if ((tmp = xmms_get_titlestring(xmms_get_gentitle_format(), input))) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
483 (*title) = str_to_utf8(tmp);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
484 g_free(tmp);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
485 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
486 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
487 (*title) = filename_to_utf8(input->file_name);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
488 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
489
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
490 (*length) = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
491
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
492 bmp_title_input_free(input);
1588
15d92c51bde6 [svn] - modified time (mtime) has been introduced into tuple
yaz
parents: 1547
diff changeset
493 input = NULL;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
494 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
495
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
496 g_free(filename_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
497 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
498
1231
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
499 TitleInput *
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
500 input_get_song_tuple(const gchar * filename)
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
501 {
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
502 InputPlugin *ip = NULL;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
503 TitleInput *input;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
504 GList *node;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
505 gchar *tmp = NULL, *ext;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
506 gchar *filename_proxy;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
507
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
508 if (filename == NULL)
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
509 return NULL;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
510
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
511 filename_proxy = g_strdup(filename);
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
512
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
513 for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
514 ip = INPUT_PLUGIN(node->data);
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
515 if (input_is_enabled(ip->filename) && ip->is_our_file(filename_proxy))
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
516 break;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
517 }
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
518
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
519 if (ip && node && ip->get_song_tuple)
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
520 input = ip->get_song_tuple(filename_proxy);
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
521 else {
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
522 input = bmp_title_input_new();
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
523
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
524 tmp = g_strdup(filename);
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
525 if ((ext = strrchr(tmp, '.')))
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
526 *ext = '\0';
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
527
1235
7918849bad3e [svn] - more sanity for input_get_song_tuple()
nenolod
parents: 1231
diff changeset
528 input->track_name = NULL;
7918849bad3e [svn] - more sanity for input_get_song_tuple()
nenolod
parents: 1231
diff changeset
529 input->length = -1;
7918849bad3e [svn] - more sanity for input_get_song_tuple()
nenolod
parents: 1231
diff changeset
530 input_get_song_info(filename, &input->track_name, &input->length);
1231
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
531 input->file_name = g_path_get_basename(tmp);
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
532 input->file_ext = ext ? ext + 1 : NULL;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
533 input->file_path = tmp;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
534 }
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
535
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
536 return input;
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
537 }
502b369314c1 [svn] - InputPlugin class:
nenolod
parents: 890
diff changeset
538
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
539 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
540 input_general_file_info_box(const gchar * filename, InputPlugin * ip)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
541 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
542 GtkWidget *window, *vbox;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
543 GtkWidget *label, *filename_hbox, *filename_entry;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
544 GtkWidget *bbox, *cancel;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
545
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
546 gchar *title, *fileinfo, *basename, *iplugin;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
547 gchar *filename_utf8;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
548
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
549 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
550 gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
551 gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
552
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
553 basename = g_path_get_basename(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
554 fileinfo = filename_to_utf8(basename);
257
256b3acc87d4 [svn] Properly report Audacious instead of XMMS or BMP in all places. Patch by laci; closes bug #379.
chainsaw
parents: 0
diff changeset
555 title = g_strdup_printf(_("audacious: %s"), fileinfo);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
556
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
557 gtk_window_set_title(GTK_WINDOW(window), title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
558
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
559 g_free(title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
560 g_free(fileinfo);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
561 g_free(basename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
562
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
563 gtk_container_set_border_width(GTK_CONTAINER(window), 10);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
564
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
565 vbox = gtk_vbox_new(FALSE, 10);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
566 gtk_container_add(GTK_CONTAINER(window), vbox);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
567
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
568 filename_hbox = gtk_hbox_new(FALSE, 5);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
569 gtk_box_pack_start(GTK_BOX(vbox), filename_hbox, FALSE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
570
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
571 label = gtk_label_new(_("Filename:"));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
572 gtk_box_pack_start(GTK_BOX(filename_hbox), label, FALSE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
573
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
574 filename_entry = xmms_entry_new();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
575 filename_utf8 = filename_to_utf8(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
576
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
577 gtk_entry_set_text(GTK_ENTRY(filename_entry), filename_utf8);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
578 gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
579 gtk_box_pack_start(GTK_BOX(filename_hbox), filename_entry, TRUE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
580
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
581 g_free(filename_utf8);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
582
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
583 if (ip)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
584 if (ip->description)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
585 iplugin = ip->description;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
586 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
587 iplugin = ip->filename;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
588 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
589 iplugin = _("No input plugin recognized this file");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
590
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
591 title = g_strdup_printf(_("Input plugin: %s"), iplugin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
592
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
593 label = gtk_label_new(title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
594 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
595 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
596 g_free(title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
597 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
598
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
599 bbox = gtk_hbutton_box_new();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
600 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
601 gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
602
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
603 cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
604 g_signal_connect_swapped(G_OBJECT(cancel), "clicked",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
605 GTK_SIGNAL_FUNC(gtk_widget_destroy),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
606 GTK_OBJECT(window));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
607 GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
608 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
609
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
610 gtk_widget_show_all(window);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
611 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
612
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
613 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
614 input_file_info_box(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
615 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
616 GList *node;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
617 InputPlugin *ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
618 gchar *filename_proxy;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
619
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
620 filename_proxy = g_strdup(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
621
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
622 for (node = get_input_list(); node != NULL; node = g_list_next(node)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
623 ip = INPUT_PLUGIN(node->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
624 if (input_is_enabled(ip->filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
625 && ip->is_our_file(filename_proxy)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
626 if (ip->file_info_box)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
627 ip->file_info_box(filename_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
628 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
629 input_general_file_info_box(filename, ip);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
630
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
631 g_free(filename_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
632 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
633 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
634 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
635
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
636 input_general_file_info_box(filename, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
637 g_free(filename_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
638 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
639
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
640 GList *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
641 input_scan_dir(const gchar * path)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
642 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
643 GList *node, *result = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
644 InputPlugin *ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
645 gchar *path_proxy;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
646
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
647 g_return_val_if_fail(path != NULL, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
648
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
649 if (*path == '/')
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
650 while (path[1] == '/')
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
651 path++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
652
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
653 path_proxy = g_strdup(path);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
654
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
655 for (node = get_input_list(); node; node = g_list_next(node)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
656 ip = INPUT_PLUGIN(node->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
657
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
658 if (!ip)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
659 continue;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
660
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
661 if (!ip->scan_dir)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
662 continue;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
663
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
664 if (!input_is_enabled(ip->filename))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
665 continue;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
666
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
667 if ((result = ip->scan_dir(path_proxy)))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
668 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
669 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
670
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
671 g_free(path_proxy);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
672
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
673 return result;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
674 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
675
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
676 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
677 input_get_volume(gint * l, gint * r)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
678 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
679 *l = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
680 *r = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
681 if (bmp_playback_get_playing()) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
682 if (get_current_input_plugin() &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
683 get_current_input_plugin()->get_volume) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
684 get_current_input_plugin()->get_volume(l, r);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
685 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
686 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
687 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
688 output_get_volume(l, r);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
689 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
690
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
691 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
692 input_set_volume(gint l, gint r)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
693 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
694 if (bmp_playback_get_playing()) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
695 if (get_current_input_plugin() &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
696 get_current_input_plugin()->set_volume) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
697 get_current_input_plugin()->set_volume(l, r);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
698 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
699 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
700 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
701 output_set_volume(l, r);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
702 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
703
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
704 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
705 input_update_vis(gint time)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
706 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
707 GList *node;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
708 VisNode *vis = NULL, *visnext = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
709 gboolean found = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
710
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
711 G_LOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
712 node = vis_list;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
713 while (g_list_next(node) && !found) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
714 visnext = g_list_next(node)->data;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
715 vis = node->data;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
716
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
717 if (vis->time >= time)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
718 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
719
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
720 vis_list = g_list_delete_link(vis_list, node);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
721
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
722 if (visnext->time >= time) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
723 found = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
724 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
725 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
726 g_free(vis);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
727 node = vis_list;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
728 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
729 G_UNLOCK(vis_mutex);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
730
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
731 if (found) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
732 vis_send_data(vis->data, vis->nch, vis->length);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
733 g_free(vis);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
734 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
735 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
736 vis_send_data(NULL, 0, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
737 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
738
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
739
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
740 gchar *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
741 input_get_info_text(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
742 {
1653
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
743 return g_strdup(input_info_text);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
744 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
745
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
746 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
747 input_set_info_text(const gchar * text)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
748 {
1653
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
749 g_free(input_info_text);
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
750 input_info_text = g_strdup(text);
a6e6d3500c13 [svn] - revert back to r2216
nenolod
parents: 1649
diff changeset
751 mainwin_set_info_text();
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
752 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
753
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
754 void
1273
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
755 input_set_status_buffering(gboolean status)
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
756 {
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
757 if (!bmp_playback_get_playing())
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
758 return;
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
759
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
760 if (!get_current_input_plugin())
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
761 return;
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
762
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
763 ip_data.buffering = status;
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
764
1672
600efc52c645 [svn] - be careful about referencing a NULL widget (e.g. headless/serveronly mode crashes on streams, bug #562)
nenolod
parents: 1653
diff changeset
765 g_return_if_fail(mainwin_playstatus != NULL);
600efc52c645 [svn] - be careful about referencing a NULL widget (e.g. headless/serveronly mode crashes on streams, bug #562)
nenolod
parents: 1653
diff changeset
766
600efc52c645 [svn] - be careful about referencing a NULL widget (e.g. headless/serveronly mode crashes on streams, bug #562)
nenolod
parents: 1653
diff changeset
767 if (ip_data.buffering == TRUE && mainwin_playstatus != NULL && mainwin_playstatus->ps_status == STATUS_STOP)
1273
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
768 mainwin_playstatus->ps_status = STATUS_PLAY;
1672
600efc52c645 [svn] - be careful about referencing a NULL widget (e.g. headless/serveronly mode crashes on streams, bug #562)
nenolod
parents: 1653
diff changeset
769
1273
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
770 playstatus_set_status_buffering(mainwin_playstatus, ip_data.buffering);
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
771 }
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
772
3b990c26fc46 [svn] - Support for the buffer indicator in playpaus.png that was apparently
nhjm449
parents: 1235
diff changeset
773 void
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
774 input_about(gint index)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
775 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
776 InputPlugin *ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
777
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
778 ip = g_list_nth(ip_data.input_list, index)->data;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
779 if (ip && ip->about)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
780 ip->about();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
781 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
782
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
783 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
784 input_configure(gint index)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
785 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
786 InputPlugin *ip;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
787
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
788 ip = g_list_nth(ip_data.input_list, index)->data;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
789 if (ip && ip->configure)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
790 ip->configure();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
791 }