⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wavestream.h

📁 Enc 压 缩 wav文件为 A16格式的 文件
💻 H
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#ifndef _WAVESTREAM_

#define _WAVESTREAM_

#define RIFF 	 0x46464952
#define SUNPLUS  0xFF00FF00
#define RAW      0xFFFFFFFF

typedef unsigned int uint;
typedef unsigned short word; 

typedef struct {
      int     fs;
      int     ch;
      int     bits;
      int     types;	  // 0: MSB first  1: LSB first
      int     offset;
      FILE    *pf;
      int     length;
      int     read_write; // 0: read,      1: write
      int     decode;     // 0: raw data   1: decode data
} waveinfo;


class cwavefile {
  public:
    waveinfo 	*info;
  public:
    cwavefile(waveinfo *i)  { info = i; };
    ~cwavefile() { };

    virtual int     start_read(){ return 0;};
    virtual int     start_write(uint format){return 0;};
    virtual void    end_read(){};
    virtual void    end_write(){};

    virtual int     read(void* buffer,int samples);
    virtual int     write(void* buffer,int samples);
    virtual void    SetDisplay(char *string) {};
    virtual char*   GetDisplay(){ return NULL; };
    virtual void    InitRegion(int Number){ return; };
    virtual void    NewRegion(int index,int id,char *label,int from,int len)
    { return; };

};

class wavestream {
  private:
      waveinfo 	info;
      char    	*name;
      uint     	isa();

      cwavefile *pwavefile;

  public:
      wavestream(char *fname);

      wavestream(char *fname,
	 	 int ifs,
	 	 int ibits=16,
		 int ich=1,	
		 int ioffset=0,	
		 int itypes=1);

      ~wavestream();
      int     start_read();
      int     start_write(uint format);
      void    end_read();
      void    end_write();
      void    InitRegion(int Number);
      void    NewRegion(int index,int id,char *label,int from,int len);

      int     read(void* buffer,int samples);
      int     write(void* buffer,int samples);

      int     getSampleFreq()         { return info.fs;     };
      void    setSampleFreq(int f)    { info.fs = f;        };
      int     getChannels()	      { return info.ch;     };
      void    setChannels(int c)      { info.ch = c;        };
      int     getBitsPerSample()      { return info.bits;   };
      void    setBitsPerSample(int b) { info.bits = b;      };
      int     getTypes()              { return info.types;  };
      void    setTypes(int t)         { info.types = t;     };
      int     getOffset()             { return info.offset; };
      void    setOffset(int t)        { info.offset = t;};
      void    setDecode(int sw)       { info.decode = (sw) ? 1: 0; };
      int     getSpeechLength()       { return info.length;};

      char*   GetDisplay();
      void    SetDisplay(char *text);

};


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -