36 |
36 |
#include <audacious/plugin.h>
|
37 |
37 |
#include <audacious/audtag.h>
|
38 |
38 |
|
|
39 |
#include <stdio.h>
|
|
40 |
|
39 |
41 |
/* Define to read all frame headers when calculating file length */
|
40 |
42 |
/* #define FULL_SCAN */
|
41 |
43 |
|
... | ... | |
284 |
286 |
|
285 |
287 |
set_format (ctx.decoder);
|
286 |
288 |
|
|
289 |
printf ("trying to play %s\n", filename);
|
287 |
290 |
if (mpg123_open_handle (ctx.decoder, file) < 0)
|
288 |
291 |
{
|
289 |
292 |
OPEN_ERROR:
|
... | ... | |
321 |
324 |
|
322 |
325 |
if (! aud_input_open_audio (FMT_FLOAT, ctx.rate, ctx.channels))
|
323 |
326 |
{
|
|
327 |
printf ("open_audio error\n");
|
324 |
328 |
error = TRUE;
|
325 |
329 |
goto cleanup;
|
326 |
330 |
}
|
327 |
331 |
|
328 |
|
while (! aud_input_check_stop ())
|
|
332 |
int total_bytes_written = 0;
|
|
333 |
|
|
334 |
printf ("entering play loop\n");
|
|
335 |
while (1)
|
329 |
336 |
{
|
|
337 |
if (aud_input_check_stop ())
|
|
338 |
{
|
|
339 |
printf ("stopped manually\n");
|
|
340 |
break;
|
|
341 |
}
|
|
342 |
|
330 |
343 |
int seek = aud_input_check_seek ();
|
331 |
344 |
|
332 |
345 |
if (seek >= 0)
|
333 |
346 |
{
|
|
347 |
printf ("seeking to %d\n", seek);
|
334 |
348 |
if (mpg123_seek (ctx.decoder, (int64_t) seek * ctx.rate / 1000, SEEK_SET) < 0)
|
335 |
349 |
print_mpg123_error (filename, ctx.decoder);
|
336 |
350 |
|
... | ... | |
360 |
374 |
if (! outbuf_size && (ret = mpg123_read (ctx.decoder, (void *) outbuf,
|
361 |
375 |
sizeof outbuf, & outbuf_size)) < 0)
|
362 |
376 |
{
|
|
377 |
printf ("mpg123_read returned %d\n", ret);
|
|
378 |
printf ("total bytes written: %d\n", total_bytes_written);
|
363 |
379 |
if (ret == MPG123_DONE || ret == MPG123_ERR_READER)
|
364 |
380 |
break;
|
365 |
381 |
|
... | ... | |
375 |
391 |
{
|
376 |
392 |
error_count = 0;
|
377 |
393 |
|
|
394 |
total_bytes_written += outbuf_size;
|
378 |
395 |
aud_input_write_audio (outbuf, outbuf_size);
|
379 |
396 |
outbuf_size = 0;
|
380 |
397 |
}
|
381 |
398 |
}
|
382 |
399 |
|
383 |
400 |
cleanup:
|
|
401 |
printf ("playback done\n");
|
384 |
402 |
mpg123_delete(ctx.decoder);
|
385 |
403 |
if (ctx.tu)
|
386 |
404 |
tuple_unref (ctx.tu);
|