Fixed.
This commit is contained in:
parent
5b3e2e2640
commit
0138aab21b
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,2 +1,5 @@
|
|||||||
# <#Title#>
|
# 设计内容(数据部分)
|
||||||
|
## 对于WAV类的分析
|
||||||
|
1. 传入需要读入的WAV格式文件的路径,而后对于WAV格式的文件头进行通过二进制模式读取操作。为了提高程序的鲁棒性,程序通过while循环来读入,根据读入的标签的特点来进行下一步操作。这样,能够在处理少部分不和主流形式一致文件头的情况下,仍然能够正确读取文件中必要信息与相关数据。在读取data标签前,会对fmt标签是否已读入进行检查。在读取fmt标签时会检查文件数据是否为PCM格式。
|
||||||
|
2. 数据储存上,利用stdint.h中定义的uint32_t来保证一次读入4个字节,来符合标准规范。由于WAV文件头中包含很多个小节,针对这些小节及其特点建立了相关的结构体。用来一次性读入相关信息,确保读入的稳定性与安全性。
|
||||||
|
3. 在音频数据的处理上,由于PCM格式的音频输入含有16位双声道,8位双声道,16位单声道,8位单声道。对于这几种不同的类型,实际的处理方式会不同。在工程定义时,定义了4个不同的位域,用来分割不同类型下的音频数据。并且对于这四种不同的位域,给它们配置了4中不同的容器来容纳。所以该类在识别音频文件后,会自动选择合适的容器来存放。
|
||||||
|
@ -3,16 +3,6 @@
|
|||||||
|
|
||||||
#include <type.hpp>
|
#include <type.hpp>
|
||||||
|
|
||||||
//计算函数执行时间间隔
|
|
||||||
#define DRAW_TIMER 1
|
|
||||||
//绘图函数执行时间间隔
|
|
||||||
#define FRESH_TIMER 20
|
|
||||||
|
|
||||||
typedef std::pair<double, double> Size;
|
|
||||||
typedef std::pair<double, double> Point;
|
|
||||||
typedef std::vector<double> Point3;
|
|
||||||
typedef std::vector<double> RawColor;
|
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::list;
|
using std::list;
|
||||||
|
@ -16,4 +16,14 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
//计算函数执行时间间隔
|
||||||
|
#define DRAW_TIMER 1
|
||||||
|
//绘图函数执行时间间隔
|
||||||
|
#define FRESH_TIMER 20
|
||||||
|
|
||||||
|
typedef std::pair<double, double> Size;
|
||||||
|
typedef std::pair<double, double> Point;
|
||||||
|
typedef std::vector<double> Point3;
|
||||||
|
typedef std::vector<double> RawColor;
|
||||||
|
|
||||||
#endif /* type_h */
|
#endif /* type_h */
|
||||||
|
@ -18,11 +18,13 @@ int main(int argc, char * argv[]) {
|
|||||||
nwd.playMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
|
nwd.playMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
|
||||||
nwd.size({700,700});
|
nwd.size({700,700});
|
||||||
nwd.position({200,100});
|
nwd.position({200,100});
|
||||||
|
|
||||||
twav.getInfo();
|
twav.getInfo();
|
||||||
twav.setTimer(20);
|
twav.setTimer(20);
|
||||||
|
|
||||||
int hw = sqrt(twav.m_pss.step);
|
int hw = sqrt(twav.m_pss.step);
|
||||||
nwd.create("Fields");
|
nwd.create("Fields");
|
||||||
|
|
||||||
p_avg->setRetangle({{0.98,-0.98},{0.85,-0.85}});
|
p_avg->setRetangle({{0.98,-0.98},{0.85,-0.85}});
|
||||||
nwd.draw_shape(p_avg);
|
nwd.draw_shape(p_avg);
|
||||||
for(int y = 0; y < hw; y++){
|
for(int y = 0; y < hw; y++){
|
||||||
|
Loading…
Reference in New Issue
Block a user