From: Andre Noll Date: Mon, 26 Mar 2007 12:51:03 +0000 (+0200) Subject: Merge /fml/ag-raetsch/home/maan/scm/paraslash_meins/paraslash X-Git-Tag: v0.2.16~7 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=fd7ddaebab6613627a070e8867ace2f2eb3d4cc3;hp=-c Merge /fml/ag-raetsch/home/maan/scm/paraslash_meins/paraslash Conflicts: mp3_afh.c Fix the conflict and add more detailed error message to para_mmap(). --- fd7ddaebab6613627a070e8867ace2f2eb3d4cc3 diff --combined fd.c index 1116f9e8,1116f9e8..db1825cd --- a/fd.c +++ b/fd.c @@@ -163,7 -163,7 +163,9 @@@ void *para_mmap(size_t length, int prot void *ret = mmap(NULL, length, prot, flags, fd, offset); if (ret != MAP_FAILED) return ret; -- PARA_EMERG_LOG("mmap failed: %s", strerror(errno)); ++ PARA_EMERG_LOG("mmap failed: %s\n", strerror(errno)); ++ PARA_EMERG_LOG("length: %zu, flags: %d, fd: %d, offset: %zu\n", ++ length, flags, fd, offset); exit(EXIT_FAILURE); } diff --combined mp3_afh.c index 0c8efbdc,8ca319b4..9ef5dffb --- a/mp3_afh.c +++ b/mp3_afh.c @@@ -28,11 -28,8 +28,8 @@@ * Johannes Overmann */ - #include "server.cmdline.h" #include "server.h" - #include "vss.h" #include "error.h" - #include "fd.h" #include "string.h" /** \cond some defines and structs which are only used in this file */ @@@ -72,8 -69,6 +69,6 @@@ struct mp3info int id3_isvalid; struct id3tag id3; int vbr; - long unsigned br_average; - int freq; }; /** \endcond */ @@@ -116,9 -111,18 +111,18 @@@ static const char *header_mode(struct m return mode_text[h->mode]; } + static int header_channels(struct mp3header *h) + { + if (h->mode > 3) + return 0; + if (h->mode < 3) + return 2; + return 1; + } + static int header_bitrate(struct mp3header *h) { - if (h->layer > 3 || h->bitrate > 14) + if (!h->layer || h->layer > 3 || h->bitrate > 14 || !h->bitrate) return -E_HEADER_BITRATE; return mp3info_bitrate[h->version & 1][3 - h->layer][h->bitrate - 1]; } @@@ -144,14 -148,14 +148,14 @@@ static void write_info_str(struct audio int v = mp3.id3_isvalid; snprintf(afi->info_string, MMD_INFO_SIZE, - "audio_file_info1:%lu x %lums, %lu kbit/s (%cbr) %i KHz %s\n" + "audio_file_info1:%lu x %lums, %u kbit/s (%cbr) %i KHz %s\n" "audio_file_info2:%s, by %s\n" "audio_file_info3:A: %s, Y: %s, C: %s\n", afi->chunks_total, tv2ms(&afi->chunk_tv), - mp3.br_average, + afi->bitrate, mp3.vbr? 'v' : 'c', - mp3.freq / 1000, + afi->frequency / 1000, header_mode(&mp3.header), v && *mp3.id3.title? mp3.id3.title : "(title tag not set)", v && *mp3.id3.artist? mp3.id3.artist : "(artist tag not set)", @@@ -335,7 -339,6 +339,6 @@@ static int mp3_read_info(unsigned char mp3_get_id3(map, numbytes, &fpos); fpos = 0; mp3.vbr = 0; - mp3.freq = 0; while (1) { int freq, br, fl; struct timeval tmp, cct; /* current chunk time */ @@@ -382,8 -385,9 +385,9 @@@ if (!afi->chunks_total || !freq_avg || !br_avg) goto err_out; afi->chunk_table[afi->chunks_total] = numbytes - 1; - mp3.br_average = br_avg; - mp3.freq = freq_avg; + afi->bitrate = br_avg; + afi->frequency = freq_avg; + afi->channels = header_channels(&mp3.header); afi->seconds_total = (tv2ms(&total_time) + 500) / 1000; tv_divide(afi->chunks_total, &total_time, &afi->chunk_tv); PARA_DEBUG_LOG("%lu chunks, each %lums\n", afi->chunks_total,