X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/2f5322348cd909291084a0499218b58c2ce74ce7..28e9141a9e7e4a30e6cd384ada7c87edab7d8efb:/plugins/tracklength-ogg.c diff --git a/plugins/tracklength-ogg.c b/plugins/tracklength-ogg.c new file mode 100644 index 0000000..c5c90c6 --- /dev/null +++ b/plugins/tracklength-ogg.c @@ -0,0 +1,47 @@ +/* + * This file is part of DisOrder. + * Copyright (C) 2004, 2005, 2007 Richard Kettlewell + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +/** @file plugins/tracklength-ogg.c + * @brief Compute track lengths for OGG files + */ +#include "tracklength.h" +#include + +long tl_ogg(const char *path) { + OggVorbis_File vf; + FILE *fp = 0; + double length; + + if(!path) goto error; + if(!(fp = fopen(path, "rb"))) goto error; + if(ov_open(fp, &vf, 0, 0)) goto error; + fp = 0; + length = ov_time_total(&vf, -1); + ov_clear(&vf); + return ceil(length); +error: + if(fp) fclose(fp); + return -1; +} + +/* +Local Variables: +c-basic-offset:2 +comment-column:40 +fill-column:79 +End: +*/