/* * NAME: timer->abs() * DESCRIPTION: return the absolute value of a timer */ mad_timer_t mad_timer_abs(mad_timer_t timer) { if (mad_timer_sign(timer) < 0) mad_timer_negate(&timer); return timer; }
/* * NAME: get_time() * DESCRIPTION: parse a time value or die */ static mad_timer_t get_time(char const *str, int positive, char const *name) { mad_timer_t time; if (parse_time(&time, str) == -1) die(_("invalid %s specification \"%s\""), name, str); if (positive && mad_timer_sign(time) <= 0) die(_("%s must be positive"), name); return time; }
/* * NAME: main() * DESCRIPTION: program entry point */ int main(int argc, char *argv[]) { struct player player; int result = 0; argv0 = argv[0]; /* ensure binary standard I/O */ # if defined(_WIN32) _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); # endif /* internationalization support */ # if defined(ENABLE_NLS) setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); # endif /* initialize and get options */ player_init(&player); # if !defined(__CYGWIN__) /* Cygwin support for this is currently buggy */ /* check for default tty control */ if (isatty(STDIN_FILENO)) player.options |= PLAYER_OPTION_TTYCONTROL; # endif get_options(argc, argv, &player); /* main processing */ if (player.verbosity >= 0) ver_banner(stderr); if (player.options & PLAYER_OPTION_CROSSFADE) { if (!(player.options & PLAYER_OPTION_GAP)) warn(_("cross-fade ignored without gap")); else if (mad_timer_sign(player.gap) >= 0) warn(_("cross-fade ignored without negative gap")); } if (player.output.replay_gain & PLAYER_RGAIN_ENABLED) { if (player.options & PLAYER_OPTION_IGNOREVOLADJ) warn(_("volume adjustment ignored with Replay Gain enabled")); else player.options |= PLAYER_OPTION_IGNOREVOLADJ; } if ((player.options & PLAYER_OPTION_SHOWTAGSONLY) && player.repeat != 1) { warn(_("ignoring repeat")); player.repeat = 1; } /* make stop time absolute */ if (player.options & PLAYER_OPTION_TIMED) mad_timer_add(&player.global_stop, player.global_start); /* get default audio output module */ if (player.output.command == 0 && !(player.options & PLAYER_OPTION_SHOWTAGSONLY)) player.output.command = audio_output(0); # if defined(EXPERIMENTAL) if (external_mix) { player.options |= PLAYER_OPTION_EXTERNALMIX; player.output.command = 0; } if (experimental) player.options |= PLAYER_OPTION_EXPERIMENTAL; # endif /* run the player */ if (player_run(&player, argc - optind, (char const **) &argv[optind]) == -1) result = 4; /* finish up */ player_finish(&player); return result; }