blob: 93143bbe9fb9e55a7efa8dddae8ede78ec16fbfe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
/* MPEG/WAVE Sound library
(C) 1997 by Jung woo-jae */
// Mpegtoraw.cc
// Server which get mpeg format and put raw format.
#include "mpegsound.h"
#include "synthesis.h"
#include "dump.h"
#include "../frame/audioFrame.h"
#include <iostream>
using namespace std;
Mpegtoraw::Mpegtoraw(MpegAudioStream* mpegAudioStream,
MpegAudioHeader* mpegAudioHeader) {
this->mpegAudioStream=mpegAudioStream;
this->mpegAudioHeader=mpegAudioHeader;
this->lOutputStereo=true;
setStereo(true);
setDownSample(false);
dump=new Dump();
synthesis=new Synthesis();
initialize();
}
Mpegtoraw::~Mpegtoraw() {
delete synthesis;
delete dump;
}
void Mpegtoraw::setStereo(int flag) {
lWantStereo=flag;
}
void Mpegtoraw::setDownSample(int flag) {
lDownSample=flag;
}
int Mpegtoraw::getStereo() {
return lWantStereo;
}
int Mpegtoraw::getDownSample() {
return lDownSample;
}
// Convert mpeg to raw
// Mpeg headder class
void Mpegtoraw::initialize() {
layer3initialize();
}
// Convert mpeg to raw
int Mpegtoraw::decode(AudioFrame* audioFrame) {
int back=true;
this->audioFrame=audioFrame;
if (audioFrame->getSize() < RAWDATASIZE) {
cout << "audioFrame needs at least:"<<RAWDATASIZE<<" size"<<endl;
exit(0);
}
audioFrame->clearrawdata();
synthesis->clearrawdata();
int layer=mpegAudioHeader->getLayer();
this->lOutputStereo=lWantStereo & mpegAudioHeader->getInputstereo();
if (mpegAudioHeader->getProtection()==false) {
mpegAudioStream->getbyte();
mpegAudioStream->getbyte();
}
switch(layer) {
case 3:
extractlayer3();
break;
case 2:
extractlayer2();
break;
case 1:
extractlayer1();
break;
default:
cout << "unknown layer:"<<layer<<endl;
back=false;
}
//
// Now put the frequencies/output etc.. in the frame
//
audioFrame->setFrameFormat(lOutputStereo,
mpegAudioHeader->getFrequencyHz()>>lDownSample);
audioFrame->putFloatData(synthesis->getOutputData(),synthesis->getLen());
return back;
}
|