annotate src/psf2/plugin.c @ 2753:be414d015fec

Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
author William Pitcock <nenolod@atheme.org>
date Tue, 01 Jul 2008 00:22:25 -0500
parents cd2d2118fdee
children 2cbc458d8286
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
1 /*
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
2 Audio Overload SDK - main driver. for demonstration only, not user friendly!
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
3
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
4 Copyright (c) 2007-2008 R. Belmont and Richard Bannister.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
5
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
6 All rights reserved.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
7
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
8 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
9
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
10 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
11 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
12 * Neither the names of R. Belmont and Richard Bannister nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
13
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
15 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
16 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
17 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
18 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
19 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
20 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
21 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
22 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
23 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
25 */
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
26
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
27 #include <stdio.h>
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
28 #include <stdlib.h>
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
29 #include <string.h>
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
30
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
31 #include <audacious/plugin.h>
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
32
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
33 #include "ao.h"
2744
af1338519322 Plugin works kinda, but stopping after track ends isn't done yet.
William Pitcock <nenolod@atheme.org>
parents: 2742
diff changeset
34 #include "corlett.h"
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
35 #include "eng_protos.h"
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
36
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
37 /* file types */
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
38 static uint32 type;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
39
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
40 static struct
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
41 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
42 uint32 sig;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
43 char *name;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
44 int32 (*start)(uint8 *, uint32);
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
45 int32 (*stop)(void);
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
46 int32 (*command)(int32, int32);
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
47 uint32 rate;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
48 } types[] = {
2744
af1338519322 Plugin works kinda, but stopping after track ends isn't done yet.
William Pitcock <nenolod@atheme.org>
parents: 2742
diff changeset
49 { 0x50534602, "Sony PlayStation 2 (.psf2)", psf2_start, psf2_stop, psf2_command, 60 },
af1338519322 Plugin works kinda, but stopping after track ends isn't done yet.
William Pitcock <nenolod@atheme.org>
parents: 2742
diff changeset
50 { 0xffffffff, "", NULL, NULL, NULL, 0 }
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
51 };
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
52
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
53 static char *path;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
54
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
55 /* ao_get_lib: called to load secondary files */
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
56 int ao_get_lib(char *filename, uint8 **buffer, uint64 *length)
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
57 {
2747
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
58 guchar *filebuf;
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
59 gsize size;
2746
aa2e0f33f55d use aud_vfs_file_get_contents().
William Pitcock <nenolod@atheme.org>
parents: 2744
diff changeset
60 char buf[PATH_MAX];
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
61
2746
aa2e0f33f55d use aud_vfs_file_get_contents().
William Pitcock <nenolod@atheme.org>
parents: 2744
diff changeset
62 snprintf(buf, PATH_MAX, "%s/%s", dirname(path), filename);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
63
2747
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
64 aud_vfs_file_get_contents(buf, (gchar **) &filebuf, &size);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
65
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
66 *buffer = filebuf;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
67 *length = (uint64)size;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
68
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
69 return AO_SUCCESS;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
70 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
71
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
72 static gint seek = 0;
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
73
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
74 Tuple *psf2_tuple(gchar *filename)
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
75 {
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
76 Tuple *t;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
77 corlett_t *c;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
78 guchar *buf;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
79 gsize sz;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
80
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
81 aud_vfs_file_get_contents(filename, (gchar **) &buf, &sz);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
82
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
83 if (!buf)
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
84 return NULL;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
85
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
86 if (corlett_decode(buf, sz, NULL, NULL, &c) != AO_SUCCESS)
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
87 return NULL;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
88
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
89 t = aud_tuple_new_from_filename(filename);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
90
2752
cd2d2118fdee Fix length calculation to include fades.
William Pitcock <nenolod@atheme.org>
parents: 2751
diff changeset
91 aud_tuple_associate_int(t, FIELD_LENGTH, NULL, c->inf_length ? psfTimeToMS(c->inf_length) + psfTimeToMS(c->inf_fade) : -1);
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
92 aud_tuple_associate_string(t, FIELD_ARTIST, NULL, c->inf_artist);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
93 aud_tuple_associate_string(t, FIELD_ALBUM, NULL, c->inf_game);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
94 aud_tuple_associate_string(t, -1, "game", c->inf_game);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
95 aud_tuple_associate_string(t, FIELD_TITLE, NULL, c->inf_title);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
96 aud_tuple_associate_string(t, FIELD_COPYRIGHT, NULL, c->inf_copy);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
97 aud_tuple_associate_string(t, FIELD_QUALITY, NULL, "sequenced");
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
98 aud_tuple_associate_string(t, FIELD_CODEC, NULL, "PlayStation2 Audio");
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
99 aud_tuple_associate_string(t, -1, "console", "PlayStation 2");
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
100
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
101 free(c);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
102 g_free(buf);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
103
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
104 return t;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
105 }
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
106
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
107 gchar *psf2_title(gchar *filename, gint *length)
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
108 {
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
109 gchar *title = NULL;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
110 Tuple *tuple = psf2_tuple(filename);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
111
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
112 if (tuple != NULL)
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
113 {
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
114 title = aud_tuple_formatter_make_title_string(tuple, aud_get_gentitle_format());
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
115 *length = aud_tuple_get_int(tuple, FIELD_LENGTH, NULL);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
116 aud_tuple_free(tuple);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
117 }
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
118 else
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
119 {
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
120 title = g_path_get_basename(filename);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
121 *length = -1;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
122 }
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
123
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
124 return title;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
125 }
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
126
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
127 void psf2_play(InputPlayback *data)
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
128 {
2747
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
129 guchar *buffer;
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
130 gsize size;
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
131 uint32 filesig;
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
132 gint length;
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
133 gchar *title = psf2_title(data->filename, &length);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
134
2746
aa2e0f33f55d use aud_vfs_file_get_contents().
William Pitcock <nenolod@atheme.org>
parents: 2744
diff changeset
135 path = g_strdup(data->filename);
2747
ead11a126bdd clean up warnings.
William Pitcock <nenolod@atheme.org>
parents: 2746
diff changeset
136 aud_vfs_file_get_contents(data->filename, (gchar **) &buffer, &size);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
137
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
138 // now try to identify the file
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
139 type = 0;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
140 filesig = buffer[0]<<24 | buffer[1]<<16 | buffer[2]<<8 | buffer[3];
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
141 while (types[type].sig != 0xffffffff)
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
142 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
143 if (filesig == types[type].sig)
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
144 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
145 break;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
146 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
147 else
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
148 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
149 type++;
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
150 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
151 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
152
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
153 // now did we identify it above or just fall through?
2738
d0011cde16b7 blah blah blah
William Pitcock <nenolod@atheme.org>
parents: 2737
diff changeset
154 if (types[type].sig == 0xffffffff)
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
155 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
156 printf("ERROR: File is unknown, signature bytes are %02x %02x %02x %02x\n", buffer[0], buffer[1], buffer[2], buffer[3]);
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
157 free(buffer);
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
158 return;
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
159 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
160
2738
d0011cde16b7 blah blah blah
William Pitcock <nenolod@atheme.org>
parents: 2737
diff changeset
161 if (psf2_start(buffer, size) != AO_SUCCESS)
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
162 {
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
163 free(buffer);
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
164 printf("ERROR: Engine rejected file!\n");
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
165 return;
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
166 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
167
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
168 data->output->open_audio(FMT_S16_NE, 44100, 2);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
169
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
170 data->set_params(data, title, length, 44100*2*2*8, 44100, 2);
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
171
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
172 data->playing = TRUE;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
173 data->set_pb_ready(data);
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
174
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
175 for (;;)
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
176 {
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
177 psf2_execute(data);
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
178
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
179 if (seek)
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
180 {
2753
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
181 data->eof = FALSE;
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
182 data->output->flush(seek);
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
183
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
184 psf2_command(COMMAND_RESTART, 0);
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
185 psf2_seek(seek);
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
186
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
187 seek = 0;
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
188 continue;
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
189 }
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
190
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
191 psf2_stop();
2750
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
192
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
193 data->output->buffer_free();
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
194 data->output->buffer_free();
2750
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
195
2751
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
196 while (data->eof && data->output->buffer_playing())
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
197 g_usleep(10000);
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
198
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
199 data->output->close_audio();
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
200
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
201 break;
533d73cfa1ff Finalize event loop for the playback thread; the plugin is now done except for seeking.
William Pitcock <nenolod@atheme.org>
parents: 2750
diff changeset
202 }
2750
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
203
2748
fe0d1cff2cd0 memory leak cleanups.
William Pitcock <nenolod@atheme.org>
parents: 2747
diff changeset
204 g_free(buffer);
2746
aa2e0f33f55d use aud_vfs_file_get_contents().
William Pitcock <nenolod@atheme.org>
parents: 2744
diff changeset
205 g_free(path);
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
206 g_free(title);
2750
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
207
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
208 data->playing = FALSE;
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
209 }
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
210
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
211 void psf2_update(unsigned char *buffer, long count, InputPlayback *playback)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
212 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
213 const int mask = ~((((16 / 8) * 2)) - 1);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
214
2750
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
215 if (buffer == NULL)
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
216 {
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
217 playback->playing = FALSE;
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
218 playback->eof = TRUE;
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
219
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
220 return;
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
221 }
6319a15e7243 Plugin is mostly usable now.
William Pitcock <nenolod@atheme.org>
parents: 2749
diff changeset
222
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
223 while (count > 0)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
224 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
225 int t = playback->output->buffer_free() & mask;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
226 if (t > count)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
227 playback->pass_audio(playback, FMT_S16_NE, 2, count, buffer, NULL);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
228 else
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
229 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
230 if (t)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
231 playback->pass_audio(playback, FMT_S16_NE, 2, t, buffer, NULL);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
232
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
233 g_usleep((count-t)*1000*5/441/2);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
234 }
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
235 count -= t;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
236 buffer += t;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
237 }
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
238
2753
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
239 if (seek)
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
240 {
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
241 if (psf2_seek(seek))
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
242 {
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
243 playback->output->flush(seek);
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
244 seek = 0;
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
245 }
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
246 else
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
247 {
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
248 playback->eof = TRUE;
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
249 return;
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
250 }
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
251 }
2737
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
252 }
62cc6d667119 Import a bunch of stuff for new psf2 plugin.
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
253
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
254 void psf2_Stop(InputPlayback *playback)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
255 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
256 playback->playing = FALSE;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
257 }
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
258
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
259 void psf2_pause(InputPlayback *playback, short p)
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
260 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
261 playback->output->pause(p);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
262 }
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
263
2749
290357060cdb More work on tuples.
William Pitcock <nenolod@atheme.org>
parents: 2748
diff changeset
264 int psf2_is_our_fd(gchar *filename, VFSFile *file)
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
265 {
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
266 gchar magic[4];
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
267 aud_vfs_fread(magic, 1, 4, file);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
268
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
269 if (!memcmp(magic, "PSF\x02", 4))
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
270 return 1;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
271
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
272 return 0;
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
273 }
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
274
2753
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
275 void psf2_Seek(InputPlayback *playback, int time)
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
276 {
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
277 seek = time * 1000;
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
278 }
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
279
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
280 gchar *psf2_fmts[] = { "psf2", "minipsf2", NULL };
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
281
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
282 InputPlugin psf2_ip =
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
283 {
2753
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
284 .description = "PSF2 Audio Plugin",
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
285 .play_file = psf2_play,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
286 .stop = psf2_Stop,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
287 .pause = psf2_pause,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
288 .seek = psf2_Seek,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
289 .get_song_tuple = psf2_tuple,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
290 .is_our_file_from_vfs = psf2_is_our_fd,
be414d015fec Implement seeking (you can seek forward), it crashes when you seek backwards though :(.
William Pitcock <nenolod@atheme.org>
parents: 2752
diff changeset
291 .vfs_extensions = psf2_fmts,
2742
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
292 };
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
293
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
294 InputPlugin *psf2_iplist[] = { &psf2_ip, NULL };
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
295
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
296 DECLARE_PLUGIN(psf2, NULL, NULL, psf2_iplist, NULL, NULL, NULL, NULL, NULL);
fd5373830ac1 Initial plugin. Don't use this unless you like aud to use 100% cpu.
William Pitcock <nenolod@atheme.org>
parents: 2741
diff changeset
297