diff options
author | Alex Bennee <alex@bennee.com> | 2010-07-14 15:57:06 +0100 |
---|---|---|
committer | Alex Bennee <alex@bennee.com> | 2010-07-14 15:57:06 +0100 |
commit | ba15707b292d827bdce732e7713b26fae3f75c74 (patch) | |
tree | 8159d5daa4588ade1e71b9cb8541d6438c6b80c6 /src/libmpg123/dxhead.h |
EasyTag 2.1.1
Diffstat (limited to 'src/libmpg123/dxhead.h')
-rwxr-xr-x | src/libmpg123/dxhead.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/libmpg123/dxhead.h b/src/libmpg123/dxhead.h new file mode 100755 index 0000000..bcbc66a --- /dev/null +++ b/src/libmpg123/dxhead.h @@ -0,0 +1,60 @@ +/*---- DXhead.h -------------------------------------------- + +decoder MPEG Layer III +handle Xing header + +Copyright 1998 Xing Technology Corp. +-----------------------------------------------------------*/ +/* A Xing header may be present in the ancillary + * data field of the first frame of an mp3 bitstream + * The Xing header (optionally) contains + * frames total number of audio frames in the bitstream + * bytes total number of bytes in the bitstream + * toc table of contents + + * toc (table of contents) gives seek points + * for random access + * the ith entry determines the seek point for + * i-percent duration + * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes + * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes + */ + +#define FRAMES_FLAG 0x0001 +#define BYTES_FLAG 0x0002 +#define TOC_FLAG 0x0004 +#define VBR_SCALE_FLAG 0x0008 + +#define FRAMES_AND_BYTES (FRAMES_FLAG | BYTES_FLAG) + +/* structure to receive extracted header + * toc may be NULL + */ +typedef struct +{ + int h_id; /* from MPEG header, 0=MPEG2, 1=MPEG1 */ + int samprate; /* determined from MPEG header */ + int flags; /* from Xing header data */ + int frames; /* total bit stream frames from Xing header data */ + int bytes; /* total bit stream bytes from Xing header data */ + int vbr_scale; /* encoded vbr scale from Xing header data */ + unsigned char *toc; /* pointer to unsigned char toc_buffer[100] */ + /* may be NULL if toc not desired */ +} +XHEADDATA; + +int mpg123_get_xing_header(XHEADDATA * X, unsigned char *buf); + +/* return 0=fail, 1=success + * X structure to receive header data (output) + * buf bitstream input + */ + +int mpg123_seek_point(unsigned char TOC[100], int file_bytes, float percent); + +/* return seekpoint in bytes (may be at eof if percent=100.0) + * TOC = table of contents from Xing header + * file_bytes = number of bytes in mp3 file + * percent = play time percentage of total playtime. May be + * fractional (e.g. 87.245) + */ |