You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.3 KiB
102 lines
2.3 KiB
/*
|
|
stores information after we found a header.
|
|
Copyright (C) 2000 Martin Vogt
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation.
|
|
|
|
For more information look at the file COPYRIGHT in this package
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __MPEGHEADERINFO_H
|
|
#define __MPEGHEADERINFO_H
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define _FREQUENCY_44100 0
|
|
#define _FREQUENCY_48000 1
|
|
#define _FREQUENCY_32000 2
|
|
|
|
#define _MODE_FULLSTEREO 0
|
|
#define _MODE_JOINT 1
|
|
#define _MODE_DUAL 2
|
|
#define _MODE_SINGLE 3
|
|
|
|
#define _VERSION_1 0
|
|
#define _VERSION_2 1
|
|
|
|
|
|
#define MAXSUBBAND 32
|
|
#define SCALEBLOCK 12
|
|
|
|
|
|
|
|
class MpegAudioHeader {
|
|
|
|
int protection;
|
|
int layer;
|
|
int version;
|
|
int padding;
|
|
int frequency;
|
|
int frequencyHz;
|
|
int bitrateindex;
|
|
int extendedmode;
|
|
int mode;
|
|
int inputstereo;
|
|
int channelbitrate;
|
|
int tableindex;
|
|
int subbandnumber;
|
|
int stereobound;
|
|
int framesize;
|
|
int layer3slots;
|
|
int lmpeg25;
|
|
unsigned char header[4];
|
|
|
|
public:
|
|
MpegAudioHeader();
|
|
~MpegAudioHeader();
|
|
|
|
int parseHeader(unsigned char* buf);
|
|
|
|
inline int getProtection() { return protection; }
|
|
inline int getLayer() { return layer; }
|
|
inline int getVersion() { return version; }
|
|
inline int getPadding() { return padding; }
|
|
inline int getFrequency() { return frequency; }
|
|
inline int getFrequencyHz() { return frequencyHz; }
|
|
inline int getBitrateindex() { return bitrateindex; }
|
|
inline int getExtendedmode() { return extendedmode; }
|
|
inline int getMode() { return mode; }
|
|
inline int getInputstereo() { return inputstereo; }
|
|
inline int getFramesize() { return framesize; }
|
|
inline int getLayer25() { return lmpeg25; }
|
|
|
|
// MPEG layer 2
|
|
inline int getTableindex() { return tableindex; }
|
|
// MPEG layer 1/2
|
|
inline int getSubbandnumber() { return subbandnumber; }
|
|
inline int getStereobound() { return stereobound; }
|
|
// MPEG layer 3
|
|
inline int getLayer3slots() { return layer3slots; }
|
|
|
|
int getChannelbitrate();
|
|
|
|
|
|
inline unsigned char* getHeader() { return header; }
|
|
int getpcmperframe();
|
|
|
|
|
|
void copyTo(MpegAudioHeader* dest);
|
|
|
|
void print(const char* name);
|
|
void printStates(const char* name);
|
|
};
|
|
#endif
|