h->mode = 4; /* invalid */
return mode_text[h->mode];
}
+
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];
}
return 0;
}
-/**
+/*
* get next MP3 frame header.
*
- * \param stream to read the header from
- * \param header structure that gets filled in by get_header()
- *
- * \return On success, the header frame length is returned. A return value of
- * zero means that we did not retrieve a valid frame header, and a negative
- * return value indicates an error.
+ * On success, the header frame length is returned and the given header
+ * structure that is filled in. A return value of zero means that we did not
+ * 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,
struct mp3header *header)
return ret;
}
-/**
+/*
* find the next mp3 header
*
- * \return On success, the length of the next frame header. If the end of the
- * file was reached, the function returns zero. On errors, a negative value is
- * returned.
- *
+ * 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)
{
struct mp3header h, h2;
long valid_start = 0;
- while (1) {
- while ((*fpos)++ < numbytes && map[*fpos] != 0xff)
- ;
- if (*fpos >= numbytes)
- return 0;
+ for (; *fpos < numbytes; (*fpos)++) {
+ if (map[*fpos] != 0xff)
+ continue;
valid_start = *fpos;
first_len = get_header(map, numbytes, fpos, &h);
if (first_len <= 0)
return first_len;
}
}
+ return 0;
}
static void mp3_get_id3(unsigned char *map, off_t numbytes, off_t *fpos)
/*
* Read mp3 information from audio file
*/
-static int mp3_get_file_info(FILE *file, char *map, off_t numbytes,
+static int mp3_get_file_info(char *map, off_t numbytes,
struct audio_format_info *afi)
{
int ret;