62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
#ifndef NULLSOFT_MP3_CODER_H
|
|
#define NULLSOFT_MP3_CODER_H
|
|
|
|
#include <windows.h>
|
|
#include "../nsv/enc_if.h"
|
|
#include "BladeMP3EncDLL.h"
|
|
#ifndef _BLADEDLL
|
|
extern BEINITSTREAM beInitStream;
|
|
extern BECLOSESTREAM beCloseStream;
|
|
extern BEENCODECHUNK beEncodeChunk;
|
|
extern BEDEINITSTREAM beDeinitStream;
|
|
extern BEWRITEVBRHEADER beWriteVBRHeader;
|
|
extern BEVERSION beVersion;
|
|
extern BEENCODECHUNKFLOATS16NI beEncodeChunkFloatS16NI;
|
|
#endif // !_BLADEDLL
|
|
|
|
|
|
|
|
typedef struct
|
|
{
|
|
int bitrate;
|
|
int vbr_max_bitrate;
|
|
int abr_bitrate;
|
|
int stereo_mode; //0=stereo,1=jstereo,2=mchannel,3=mono
|
|
int quality; //0=normal,1=low,2=high,3=voice,4=r3mix,5=vh
|
|
|
|
int vbr; // 0=high-9=low
|
|
int vbr_method; // -1=none, 0=default, 1=old, 2=new, 3=mtrh, 4=abr
|
|
|
|
}
|
|
configtype;
|
|
class AudioCoderMP3 : public AudioCoder
|
|
{
|
|
public:
|
|
AudioCoderMP3(int nch, int srate, int bps, configtype *cfg);
|
|
int Encode(int framepos, void *in, int in_avail, int *in_used, void *out, int out_avail);
|
|
virtual ~AudioCoderMP3();
|
|
int GetLastError();
|
|
void setVbrFilename(char *filename);
|
|
void PrepareToFinish();
|
|
protected:
|
|
int m_err;
|
|
DWORD obuf_size;
|
|
DWORD ibuf_size, ibuf_size_spls;
|
|
HBE_STREAM hbeStream;
|
|
BE_CONFIG beConfig;
|
|
int bytesPerSample;
|
|
int done;
|
|
char *bs;
|
|
int bs_size;
|
|
int is_downmix;
|
|
int mono_input;
|
|
};
|
|
|
|
class AudioCoderMP3_24 : public AudioCoderMP3
|
|
{
|
|
public:
|
|
AudioCoderMP3_24(int nch, int srate, int bps, configtype *cfg) : AudioCoderMP3(nch, srate, bps, cfg) {}
|
|
int Encode(int framepos, void *in, int in_avail, int *in_used, void *out, int out_avail);
|
|
};
|
|
|
|
#endif |