#include "server.cmdline.h"
#include "server.h"
#include "afs.h"
+#include "afh.h"
#include "error.h"
+#include "fd.h"
/** \cond some defines and structs which are only used in this file */
static struct mp3info mp3;
static char mp3buf[8192];
static int chunk_size;
-static struct audio_format *af;
-
-static __must_check int para_fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
- size_t res = fread(ptr, size, nmemb, stream);
- if (res == nmemb)
- return size * nmemb;
- if (feof(stream))
- return 0;
- return -E_FREAD;
-}
+static struct audio_format_handler *af;
static int header_frequency(struct mp3header *h)
{
int v = mp3.id3_isvalid;
snprintf(info_str, MMD_INFO_SIZE,
- "audio_file_info1:%d x %lu, %lu kbit/s (%cbr) %i KHz %s\n"
+ "audio_file_info1:%d x %lums, %lu kbit/s (%cbr) %i KHz %s\n"
"audio_file_info2:%s, by %s\n"
"audio_file_info3:A: %s, Y: %s, C: %s\n",
mp3.frames,
- af->chunk_tv.tv_usec,
+ tv2ms(&af->chunk_tv),
mp3.br_average,
mp3.vbr? 'v' : 'c',
mp3.freq / 1000,
mp3.seconds = (tv2ms(&total_time) + 500) / 1000;
tv_divide(fcount, &total_time, &af->chunk_tv);
rewind(mp3.file);
- PARA_DEBUG_LOG("chunk_time: %lu\n", af->chunk_tv.tv_usec);
+ PARA_DEBUG_LOG("chunk_time: %lums\n", tv2ms(&af->chunk_tv));
tv_scale(30, &af->chunk_tv, &af->eof_tv);
PARA_DEBUG_LOG("eof timeout: %lu\n", tv2ms(&af->eof_tv));
return 1;
mp3.file = NULL;
}
-void mp3_init(void *p)
+static const char* mp3_suffixes[] = {"mp3", NULL};
+void mp3_init(struct audio_format_handler *p)
{
af = p;
af->get_file_info = mp3_get_file_info;
/* eof_tv gets overwritten in mp3_get_file_info() */
af->eof_tv.tv_sec = 0;
af->eof_tv.tv_usec = 100 * 1000;
+ af->suffixes = mp3_suffixes;
}