X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mp3_afh.c;h=8d4a5416308b140b34bfc68ce707b477ce92d01d;hp=4764d3ceb8c9de0d6f07d001dc89e15fd17dc26a;hb=ae0e4594c6a0312c5b4b4c0bde86f9c12253d11b;hpb=07c25fac868f7122ca38da3cf9bf6637ba18214a diff --git a/mp3_afh.c b/mp3_afh.c index 4764d3ce..8d4a5416 100644 --- a/mp3_afh.c +++ b/mp3_afh.c @@ -200,7 +200,7 @@ static int compare_headers(struct mp3header *h1,struct mp3header *h2) * retrieve a valid frame header, and a negative return value indicates an * error. */ -static int get_header(unsigned char *map, off_t numbytes, off_t *fpos, +static int get_header(unsigned char *map, size_t numbytes, off_t *fpos, struct mp3header *header) { int fl, ret; @@ -239,7 +239,7 @@ out: * Return the length of the next frame header or zero if the end of the file is * reached. */ -static int mp3_seek_next_header(unsigned char *map, off_t numbytes, off_t *fpos) +static int mp3_seek_next_header(unsigned char *map, size_t numbytes, off_t *fpos) { int k, l = 0, first_len; struct mp3header h, h2; @@ -269,7 +269,7 @@ static int mp3_seek_next_header(unsigned char *map, off_t numbytes, off_t *fpos) return 0; } -static void mp3_get_id3(unsigned char *map, off_t numbytes, off_t *fpos) +static void mp3_get_id3(unsigned char *map, size_t numbytes, off_t *fpos) { mp3.id3_isvalid = 0; mp3.id3.title[0] = '\0'; @@ -307,7 +307,7 @@ static void mp3_get_id3(unsigned char *map, off_t numbytes, off_t *fpos) unpad(mp3.id3.comment); } -static int find_valid_start(unsigned char *map, off_t numbytes, off_t *fpos) +static int find_valid_start(unsigned char *map, size_t numbytes, off_t *fpos) { int frame_len; @@ -325,7 +325,7 @@ static int find_valid_start(unsigned char *map, off_t numbytes, off_t *fpos) return frame_len; } -static int mp3_read_info(unsigned char *map, off_t numbytes, +static int mp3_read_info(unsigned char *map, size_t numbytes, struct audio_format_info *afi) { long fl_avg = 0, freq_avg = 0, br_avg = 0; @@ -340,17 +340,24 @@ static int mp3_read_info(unsigned char *map, off_t numbytes, fpos = 0; mp3.vbr = 0; while (1) { - int freq, br, fl; + unsigned long freq, br, fl; struct timeval tmp, cct; /* current chunk time */ fpos += len; len = find_valid_start(map, numbytes, &fpos); if (len <= 0) break; - freq = header_frequency(&mp3.header); - br = header_bitrate(&mp3.header); - fl = frame_length(&mp3.header); - if (freq < 0 || br < 0 || fl < 0) + ret = header_frequency(&mp3.header); + if (ret < 0) continue; + freq = ret; + ret = header_bitrate(&mp3.header); + if (ret < 0) + continue; + br = ret; + ret = frame_length(&mp3.header); + if (ret < 0) + continue; + fl = ret; tmp.tv_sec = fl; tmp.tv_usec = 0; tv_divide(br * 125, &tmp, &cct); @@ -374,9 +381,9 @@ static int mp3_read_info(unsigned char *map, off_t numbytes, fl_avg = fl; continue; } - freq_avg += (freq - freq_avg) / (afi->chunks_total + 1); - fl_avg += (fl - fl_avg) / (afi->chunks_total + 1); - br_avg += (br - br_avg) / ((long)afi->chunks_total + 1); + freq_avg += ((long)freq - freq_avg) / ((long)afi->chunks_total + 1); + fl_avg += ((long)fl - fl_avg) / ((long)afi->chunks_total + 1); + br_avg += ((long)br - br_avg) / ((long)afi->chunks_total + 1); if (old_br != br) mp3.vbr = 1; old_br = br; @@ -404,7 +411,7 @@ err_out: /* * Read mp3 information from audio file */ -static int mp3_get_file_info(char *map, off_t numbytes, +static int mp3_get_file_info(char *map, size_t numbytes, struct audio_format_info *afi) { int ret;