comparison src/flacng/plugin.c @ 1255:37598c8f4425

- Add flac_is_our_fd()
author Ralf Ertzinger <ralf@skytale.net>
date Thu, 12 Jul 2007 22:34:44 +0200
parents 626f78ff2439
children 574ee15195f3
comparison
equal deleted inserted replaced
1248:0e0f73fed025 1255:37598c8f4425
55 NULL, 55 NULL,
56 NULL, 56 NULL,
57 flac_get_song_tuple, // get a tuple 57 flac_get_song_tuple, // get a tuple
58 NULL, 58 NULL,
59 NULL, // write a tuple back to a file as a tag 59 NULL, // write a tuple back to a file as a tag
60 /* flac_is_our_fd */ NULL, // version of is_our_file which is handed an FD 60 flac_is_our_fd, // version of is_our_file which is handed an FD
61 flac_fmts // vector of fileextensions allowed by the plugin 61 flac_fmts // vector of fileextensions allowed by the plugin
62 }; 62 };
63 63
64 InputPlugin *flac_iplist[] = { &flac_ip, NULL }; 64 InputPlugin *flac_iplist[] = { &flac_ip, NULL };
65 65
173 _LEAVE; 173 _LEAVE;
174 } 174 }
175 175
176 /* --- */ 176 /* --- */
177 177
178 gboolean flac_is_our_file(gchar* filename) { 178 gboolean flac_is_our_fd(gchar* filename, VFSFile* fd) {
179 179
180 _ENTER; 180 _ENTER;
181 181
182 if (!plugin_initialized) { 182 if (!plugin_initialized) {
183 _ERROR("Plugin not initialized!"); 183 _ERROR("Plugin not initialized!");
184 _LEAVE FALSE; 184 _LEAVE FALSE;
185 } 185 }
186 186
187 _DEBUG("Testing file: %s", filename); 187 _DEBUG("Testing file: %s", filename);
188 188
189 if (FALSE == read_metadata(filename, test_decoder, test_info)) { 189 if (FALSE == read_metadata(fd, test_decoder, test_info)) {
190 _DEBUG("File not handled by this plugin!"); 190 _DEBUG("File not handled by this plugin!");
191 _LEAVE FALSE; 191 _LEAVE FALSE;
192 } 192 }
193 193
194 /* 194 /*
201 201
202 /* 202 /*
203 * If we get here, the file is supported by FLAC. 203 * If we get here, the file is supported by FLAC.
204 * The stream characteristics have been filled in by 204 * The stream characteristics have been filled in by
205 * the metadata callback. 205 * the metadata callback.
206 * We can close the stream now. 206 * Do not close the stream, though.
207 */ 207 */
208
209 vfs_fclose(test_info->input_stream);
210 test_info->input_stream = NULL; 208 test_info->input_stream = NULL;
211 209
212 210
213 _DEBUG("Stream encoded at %d Hz, %d bps, %d channels", 211 _DEBUG("Stream encoded at %d Hz, %d bps, %d channels",
214 test_info->stream.samplerate, 212 test_info->stream.samplerate,
236 _DEBUG("Accepting file %s", filename); 234 _DEBUG("Accepting file %s", filename);
237 235
238 reset_info(test_info); 236 reset_info(test_info);
239 237
240 _LEAVE TRUE; 238 _LEAVE TRUE;
239 }
240
241 /* --- */
242
243 gboolean flac_is_our_file(gchar* filename) {
244
245 VFSFile* fd;
246 gboolean ret;
247
248 _ENTER;
249
250 _DEBUG("Testing file: %s", filename);
251 /*
252 * Open the file
253 */
254 if (NULL == (fd = vfs_fopen(filename, "rb"))) {
255 _ERROR("Could not open file for reading! (%s)", filename);
256 _LEAVE FALSE;
257 }
258
259 ret = flac_is_our_fd(filename, fd);
260
261 vfs_fclose(fd);
262
263 _LEAVE ret;
241 } 264 }
242 265
243 /* --- */ 266 /* --- */
244 267
245 void squeeze_audio(gint32* src, void* dst, guint count, guint src_res, guint dst_res) { 268 void squeeze_audio(gint32* src, void* dst, guint count, guint src_res, guint dst_res) {
528 551
529 /* --- */ 552 /* --- */
530 553
531 void flac_play_file (InputPlayback* input) { 554 void flac_play_file (InputPlayback* input) {
532 555
556 VFSFile* fd;
533 gint l; 557 gint l;
534 558
535 _ENTER; 559 _ENTER;
536 560
537 if (!plugin_initialized) { 561 if (!plugin_initialized) {
543 * This will end a currently running decoder thread 567 * This will end a currently running decoder thread
544 */ 568 */
545 input->playing = FALSE; 569 input->playing = FALSE;
546 xmms_usleep(20000); 570 xmms_usleep(20000);
547 571
548 if (FALSE == read_metadata(input->filename, main_decoder, main_info)) { 572 /*
573 * Open the file
574 */
575 if (NULL == (fd = vfs_fopen(filename, "rb"))) {
576 _ERROR("Could not open file for reading! (%s)", filename);
577 _LEAVE;
578 }
579
580 if (FALSE == read_metadata(fd, main_decoder, main_info)) {
549 _ERROR("Could not prepare file for playing!"); 581 _ERROR("Could not prepare file for playing!");
550 _LEAVE; 582 _LEAVE;
551 } 583 }
552 584
553 /* 585 /*