#ifndef COMMON_H
#define COMMON_H

#ifndef IGNORE
#define IGNORE(x) x=x;
#endif

#include <stdint.h>

/***********************************************************************
*
*  Global Definitions
*
***********************************************************************/

// General Definitions
#define 	SBLIMIT 		32
#define 	SSLIMIT 		18
#define 	SBSLIMIT 		576

// MPEG Header Definitions - ID Bit Values
#define 	MPEG_AUDIO_ID		1
#define		MPEG_PHASE2_LSF		0

// MPEG Header Definitions - Mode Values
#define         MPG_MD_STEREO           0
#define         MPG_MD_JOINT_STEREO     1
#define         MPG_MD_DUAL_CHANNEL     2
#define         MPG_MD_MONO             3

// MPEG Header Definitions - Mode Extention bits
#define         MPG_MD_Intensity	1
#define         MPG_MD_MS_Stereo	2

/***********************************************************************
*
*  Global Type Definitions
*
***********************************************************************/

typedef struct
{
	int16_t* start;
	int16_t* free;
	int16_t* data;
	int16_t* last;
	uint32_t size;
} sndbuf;

/* Header Information Structure */
typedef struct
{
	int		version;
	int		lay;
	int		error_protection;
	int		bitrate_index;
	int		samplerate_index;
	int		padding;
	int		extension;
	int		mode;
	int		mode_ext;
	int		copyright;
	int		original;
	int		emphasis;
	// Interpreting some Frame Parameters
	int		channels;
	int		bitrate;
	int		samplerate;
	int		samplesPerFrame;
	int		bytesInFrame;
} frame_params;

typedef struct
{
	int32_t  version;
	uint32_t layer;
	uint32_t bitrate;
	uint32_t samplerate;
	uint32_t channels;
	uint32_t vbr_frames;
} mp3info;

#endif
