#include "server.cmdline.h"
#include "server.h"
#include "afs.h"
-#include "gcc-compat.h"
#include "error.h"
+#include "fd.h"
/** \cond some defines and structs which are only used in this file */
};
static int frame_size_index[] = {24000, 72000, 72000};
-static char *mode_text[] = {"stereo", "joint stereo", "dual channel", "mono", "invalid"};
+static const char *mode_text[] = {"stereo", "joint stereo", "dual channel", "mono", "invalid"};
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)
{
return frequencies[h->version][h->freq];
}
-static char *header_mode(struct mp3header *h)
+static const char *header_mode(struct mp3header *h)
{
if (h->mode > 4)
h->mode = 4; /* invalid */
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);
- tv_scale(10, &af->chunk_tv, &af->eof_tv);
+ 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;
}
return chunk_size;
}
-static char *mp3_read_chunk(__unused long unsigned chunk_num, ssize_t *len)
+static char *mp3_read_chunk(__a_unused long unsigned chunk_num, ssize_t *len)
{
*len = mp3_read_next_chunk();
if (*len <= 0)
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;
}