00001
00007 #ifndef INC_MP3_MPEG_H
00008 #define INC_MP3_MPEG_H
00009
00010 #include <stddef.h>
00011
00012
00013
00017 typedef struct mp3_frame_t
00018 {
00020 unsigned int emphasis : 2;
00022 unsigned int original : 1;
00024 unsigned int copyright : 1;
00026 unsigned int mode : 2;
00028 unsigned int channel : 2;
00030 unsigned int private : 1;
00032 unsigned int padding : 1;
00034 unsigned int samplerate : 2;
00036 unsigned int bitrate : 4;
00038 unsigned int crc : 1;
00040 #define MP3_LAYER_1 3
00041
00042 #define MP3_LAYER_2 2
00043
00044 #define MP3_LAYER_3 1
00045
00046 unsigned int layer : 2;
00048 #define MP3_VER_1 3
00049
00050 #define MP3_VER_2 2
00051
00052 #define MP3_VER_2_5 0
00053
00054 unsigned int version : 2;
00056 unsigned int magic : 11;
00057 } mp3_frame;
00058
00059
00066 ptrdiff_t mp3_next_frame(char *buffer, const size_t len);
00067
00073 unsigned int mp3_bitrate(mp3_frame *frame);
00074
00080 unsigned int mp3_samplerate(mp3_frame *frame);
00081
00088 unsigned int mp3_length(mp3_frame *frame, const unsigned long filesize);
00089
00090 #endif