Remove some useless code and variables in the area of metadata parsing. Bump codec API.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29438 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
883ff8507e
commit
41658bd07a
5 changed files with 22 additions and 24 deletions
|
@ -75,12 +75,12 @@
|
||||||
#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
|
#define CODEC_ENC_MAGIC 0x52454E43 /* RENC */
|
||||||
|
|
||||||
/* increase this every time the api struct changes */
|
/* increase this every time the api struct changes */
|
||||||
#define CODEC_API_VERSION 37
|
#define CODEC_API_VERSION 38
|
||||||
|
|
||||||
/* update this to latest version if a change to the api struct breaks
|
/* update this to latest version if a change to the api struct breaks
|
||||||
backwards compatibility (and please take the opportunity to sort in any
|
backwards compatibility (and please take the opportunity to sort in any
|
||||||
new function which are "waiting" at the end of the function table) */
|
new function which are "waiting" at the end of the function table) */
|
||||||
#define CODEC_MIN_API_VERSION 37
|
#define CODEC_MIN_API_VERSION 38
|
||||||
|
|
||||||
/* codec return codes */
|
/* codec return codes */
|
||||||
enum codec_status {
|
enum codec_status {
|
||||||
|
|
|
@ -221,7 +221,6 @@ struct mp3entry {
|
||||||
char* grouping;
|
char* grouping;
|
||||||
int discnum;
|
int discnum;
|
||||||
int tracknum;
|
int tracknum;
|
||||||
int version;
|
|
||||||
int layer;
|
int layer;
|
||||||
int year;
|
int year;
|
||||||
unsigned char id3version;
|
unsigned char id3version;
|
||||||
|
@ -233,7 +232,6 @@ struct mp3entry {
|
||||||
unsigned long first_frame_offset; /* Byte offset to first real MP3 frame.
|
unsigned long first_frame_offset; /* Byte offset to first real MP3 frame.
|
||||||
Used for skipping leading garbage to
|
Used for skipping leading garbage to
|
||||||
avoid gaps between tracks. */
|
avoid gaps between tracks. */
|
||||||
unsigned long vbr_header_pos;
|
|
||||||
unsigned long filesize; /* without headers; in bytes */
|
unsigned long filesize; /* without headers; in bytes */
|
||||||
unsigned long length; /* song length in ms */
|
unsigned long length; /* song length in ms */
|
||||||
unsigned long elapsed; /* ms played */
|
unsigned long elapsed; /* ms played */
|
||||||
|
@ -241,7 +239,7 @@ struct mp3entry {
|
||||||
int lead_trim; /* Number of samples to skip at the beginning */
|
int lead_trim; /* Number of samples to skip at the beginning */
|
||||||
int tail_trim; /* Number of samples to remove from the end */
|
int tail_trim; /* Number of samples to remove from the end */
|
||||||
|
|
||||||
/* Added for Vorbis */
|
/* Added for Vorbis, used by mp4 parser as well. */
|
||||||
unsigned long samples; /* number of samples in track */
|
unsigned long samples; /* number of samples in track */
|
||||||
|
|
||||||
/* MP3 stream specific info */
|
/* MP3 stream specific info */
|
||||||
|
|
|
@ -100,10 +100,9 @@ static int getsonglength(int fd, struct mp3entry *entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
entry->bitrate = info.bitrate;
|
entry->bitrate = info.bitrate;
|
||||||
entry->frequency = info.frequency;
|
entry->frequency = info.frequency;
|
||||||
entry->version = info.version;
|
entry->layer = info.layer;
|
||||||
entry->layer = info.layer;
|
|
||||||
switch(entry->layer) {
|
switch(entry->layer) {
|
||||||
#if CONFIG_CODEC==SWCODEC
|
#if CONFIG_CODEC==SWCODEC
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -149,8 +148,6 @@ static int getsonglength(int fd, struct mp3entry *entry)
|
||||||
|
|
||||||
memcpy(entry->toc, info.toc, sizeof(info.toc));
|
memcpy(entry->toc, info.toc, sizeof(info.toc));
|
||||||
|
|
||||||
entry->vbr_header_pos = info.vbr_header_pos;
|
|
||||||
|
|
||||||
/* Update the seek point for the first playable frame */
|
/* Update the seek point for the first playable frame */
|
||||||
entry->first_frame_offset = bytecount;
|
entry->first_frame_offset = bytecount;
|
||||||
logf("First frame is at %lx", entry->first_frame_offset);
|
logf("First frame is at %lx", entry->first_frame_offset);
|
||||||
|
|
|
@ -142,8 +142,10 @@ static bool mp3headerinfo(struct mp3info *info, unsigned long header)
|
||||||
if (info->layer == 3)
|
if (info->layer == 3)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
/* Rockbox: not used
|
||||||
info->protection = (header & PROTECTION_MASK) ? true : false;
|
info->protection = (header & PROTECTION_MASK) ? true : false;
|
||||||
|
*/
|
||||||
|
|
||||||
/* Bitrate */
|
/* Bitrate */
|
||||||
bitindex = (header & BITRATE_MASK) >> 12;
|
bitindex = (header & BITRATE_MASK) >> 12;
|
||||||
info->bitrate = bitrate_table[info->version][info->layer][bitindex];
|
info->bitrate = bitrate_table[info->version][info->layer][bitindex];
|
||||||
|
@ -187,14 +189,15 @@ static bool mp3headerinfo(struct mp3info *info, unsigned long header)
|
||||||
info->ft_num = 1000 * info->ft_den * info->frame_samples / info->frequency;
|
info->ft_num = 1000 * info->ft_den * info->frame_samples / info->frequency;
|
||||||
|
|
||||||
info->channel_mode = (header & CHANNELMODE_MASK) >> 6;
|
info->channel_mode = (header & CHANNELMODE_MASK) >> 6;
|
||||||
|
/* Rockbox: not used
|
||||||
info->mode_extension = (header & MODE_EXT_MASK) >> 4;
|
info->mode_extension = (header & MODE_EXT_MASK) >> 4;
|
||||||
info->emphasis = header & EMPHASIS_MASK;
|
info->emphasis = header & EMPHASIS_MASK;
|
||||||
|
*/
|
||||||
VDEBUGF( "Header: %08lx, Ver %d, lay %d, bitr %d, freq %ld, "
|
VDEBUGF( "Header: %08lx, Ver %d, lay %d, bitr %d, freq %ld, "
|
||||||
"chmode %d, mode_ext %d, emph %d, bytes: %d time: %d/%d\n",
|
"chmode %d, bytes: %d time: %d/%d\n",
|
||||||
header, info->version, info->layer+1, info->bitrate,
|
header, info->version, info->layer+1, info->bitrate,
|
||||||
info->frequency, info->channel_mode, info->mode_extension,
|
info->frequency, info->channel_mode,
|
||||||
info->emphasis, info->frame_size, info->ft_num, info->ft_den);
|
info->frame_size, info->ft_num, info->ft_den);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,8 +408,9 @@ int get_mp3file_info(int fd, struct mp3info *info)
|
||||||
/* DEBUGF("Xing/Info header\n"); */
|
/* DEBUGF("Xing/Info header\n"); */
|
||||||
|
|
||||||
/* Remember where in the file the Xing header is */
|
/* Remember where in the file the Xing header is */
|
||||||
|
/* Rockbox: not used
|
||||||
info->vbr_header_pos = lseek(fd, 0, SEEK_CUR) - info->frame_size;
|
info->vbr_header_pos = lseek(fd, 0, SEEK_CUR) - info->frame_size;
|
||||||
|
*/
|
||||||
/* We want to skip the Xing frame when playing the stream */
|
/* We want to skip the Xing frame when playing the stream */
|
||||||
bytecount += info->frame_size;
|
bytecount += info->frame_size;
|
||||||
|
|
||||||
|
@ -420,7 +424,10 @@ int get_mp3file_info(int fd, struct mp3info *info)
|
||||||
return -5;
|
return -5;
|
||||||
|
|
||||||
/* Is it a VBR file? */
|
/* Is it a VBR file? */
|
||||||
info->is_vbr = info->is_xing_vbr = !memcmp(vbrheader, "Xing", 4);
|
info->is_vbr = !memcmp(vbrheader, "Xing", 4);
|
||||||
|
/* Rockbox: not used
|
||||||
|
info->is_xing_vbr = info->is_vbr;
|
||||||
|
*/
|
||||||
|
|
||||||
if (vbrheader[7] & VBR_FRAMES_FLAG) /* Is the frame count there? */
|
if (vbrheader[7] & VBR_FRAMES_FLAG) /* Is the frame count there? */
|
||||||
{
|
{
|
||||||
|
@ -506,7 +513,9 @@ int get_mp3file_info(int fd, struct mp3info *info)
|
||||||
|
|
||||||
/* Yes, it is a FhG VBR file */
|
/* Yes, it is a FhG VBR file */
|
||||||
info->is_vbr = true;
|
info->is_vbr = true;
|
||||||
|
/* Rockbox: not used
|
||||||
info->is_vbri_vbr = true;
|
info->is_vbri_vbr = true;
|
||||||
|
*/
|
||||||
info->has_toc = false; /* We don't parse the TOC (yet) */
|
info->has_toc = false; /* We don't parse the TOC (yet) */
|
||||||
|
|
||||||
info->byte_count = bytes2int(vbrheader[10], vbrheader[11],
|
info->byte_count = bytes2int(vbrheader[10], vbrheader[11],
|
||||||
|
|
|
@ -30,27 +30,21 @@ struct mp3info {
|
||||||
/* Standard MP3 frame header fields */
|
/* Standard MP3 frame header fields */
|
||||||
int version;
|
int version;
|
||||||
int layer;
|
int layer;
|
||||||
bool protection;
|
|
||||||
int bitrate;
|
int bitrate;
|
||||||
long frequency;
|
long frequency;
|
||||||
int padding;
|
int padding;
|
||||||
int channel_mode;
|
int channel_mode;
|
||||||
int mode_extension;
|
|
||||||
int emphasis;
|
|
||||||
int frame_size; /* Frame size in bytes */
|
int frame_size; /* Frame size in bytes */
|
||||||
int frame_samples; /* Samples per frame */
|
int frame_samples;/* Samples per frame */
|
||||||
int ft_num; /* Numerator of frametime in milliseconds */
|
int ft_num; /* Numerator of frametime in milliseconds */
|
||||||
int ft_den; /* Denominator of frametime in milliseconds */
|
int ft_den; /* Denominator of frametime in milliseconds */
|
||||||
|
|
||||||
bool is_vbr; /* True if the file is VBR */
|
bool is_vbr; /* True if the file is VBR */
|
||||||
bool has_toc; /* True if there is a VBR header in the file */
|
bool has_toc; /* True if there is a VBR header in the file */
|
||||||
bool is_xing_vbr; /* True if the VBR header is of Xing type */
|
|
||||||
bool is_vbri_vbr; /* True if the VBR header is of VBRI type */
|
|
||||||
unsigned char toc[100];
|
unsigned char toc[100];
|
||||||
unsigned long frame_count; /* Number of frames in the file (if VBR) */
|
unsigned long frame_count; /* Number of frames in the file (if VBR) */
|
||||||
unsigned long byte_count; /* File size in bytes */
|
unsigned long byte_count; /* File size in bytes */
|
||||||
unsigned long file_time; /* Length of the whole file in milliseconds */
|
unsigned long file_time; /* Length of the whole file in milliseconds */
|
||||||
unsigned long vbr_header_pos;
|
|
||||||
int enc_delay; /* Encoder delay, fetched from LAME header */
|
int enc_delay; /* Encoder delay, fetched from LAME header */
|
||||||
int enc_padding; /* Padded samples added to last frame. LAME header */
|
int enc_padding; /* Padded samples added to last frame. LAME header */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue