@@ -87,41 +87,47 @@ StreamTranscoder::StreamTranscoder(
87
87
{
88
88
case AVMEDIA_TYPE_VIDEO :
89
89
{
90
+ // input decoder
90
91
_inputDecoder = new VideoDecoder ( *static_cast <InputStream*>( _inputStream ) );
91
92
_inputDecoder->setup ();
93
+ _currentDecoder = _inputDecoder;
92
94
95
+ // output encoder
93
96
VideoEncoder* outputVideo = new VideoEncoder ( profile.at ( constants::avProfileCodec ) );
94
-
95
97
_outputEncoder = outputVideo;
96
98
97
99
VideoFrameDesc outputFrameDesc = _inputStream->getVideoCodec ().getVideoFrameDesc ();
98
100
outputFrameDesc.setParameters ( profile );
99
101
outputVideo->setProfile ( profile, outputFrameDesc );
100
-
102
+
103
+ // output stream
101
104
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoCodec () );
102
105
106
+ // buffers to process
103
107
_sourceBuffer = new VideoFrame ( _inputStream->getVideoCodec ().getVideoFrameDesc () );
104
108
_frameBuffer = new VideoFrame ( outputVideo->getVideoCodec ().getVideoFrameDesc () );
105
-
109
+
110
+ // transform
106
111
_transform = new VideoTransform ();
107
112
113
+ // generator decoder
108
114
VideoGenerator* generatorVideo = new VideoGenerator ();
109
115
generatorVideo->setVideoFrameDesc ( outputVideo->getVideoCodec ().getVideoFrameDesc () );
110
116
_generator = generatorVideo;
111
117
112
- _currentDecoder = _inputDecoder;
113
-
114
118
break ;
115
119
}
116
120
case AVMEDIA_TYPE_AUDIO :
117
121
{
122
+ // input decoder
118
123
_inputDecoder = new AudioDecoder ( *static_cast <InputStream*>( _inputStream ) );
119
124
_inputDecoder->setup ();
120
-
121
- AudioEncoder* outputAudio = new AudioEncoder ( profile.at ( constants::avProfileCodec ) );
125
+ _currentDecoder = _inputDecoder;
122
126
127
+ // output encoder
128
+ AudioEncoder* outputAudio = new AudioEncoder ( profile.at ( constants::avProfileCodec ) );
123
129
_outputEncoder = outputAudio;
124
-
130
+
125
131
AudioFrameDesc outputFrameDesc ( _inputStream->getAudioCodec ().getAudioFrameDesc () );
126
132
outputFrameDesc.setParameters ( profile );
127
133
if ( subStreamIndex > -1 )
@@ -131,23 +137,25 @@ StreamTranscoder::StreamTranscoder(
131
137
}
132
138
outputAudio->setProfile ( profile, outputFrameDesc );
133
139
140
+ // output stream
134
141
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioCodec () );
135
142
143
+ // buffers to process
136
144
AudioFrameDesc inputFrameDesc ( _inputStream->getAudioCodec ().getAudioFrameDesc () );
137
145
if ( subStreamIndex > -1 )
138
146
inputFrameDesc.setChannels ( 1 );
139
-
147
+
140
148
_sourceBuffer = new AudioFrame ( inputFrameDesc );
141
149
_frameBuffer = new AudioFrame ( outputAudio->getAudioCodec ().getAudioFrameDesc () );
142
-
150
+
151
+ // transform
143
152
_transform = new AudioTransform ();
144
153
154
+ // generator decoder
145
155
AudioGenerator* generatorAudio = new AudioGenerator ();
146
156
generatorAudio->setAudioFrameDesc ( outputAudio->getAudioCodec ().getAudioFrameDesc () );
147
157
_generator = generatorAudio;
148
158
149
- _currentDecoder = _inputDecoder;
150
-
151
159
break ;
152
160
}
153
161
default :
@@ -181,57 +189,55 @@ StreamTranscoder::StreamTranscoder(
181
189
{
182
190
if ( profile.find ( constants::avProfileType )->second == constants::avProfileTypeVideo )
183
191
{
184
- // Create input essence based on a given input VideoCodec
192
+ // generator decoder
185
193
VideoGenerator* generatorVideo = new VideoGenerator ();
186
194
const VideoCodec& inputVideoCodec = static_cast <const VideoCodec&>( inputCodec );
187
195
generatorVideo->setVideoFrameDesc ( inputVideoCodec.getVideoFrameDesc () );
188
- _inputDecoder = generatorVideo;
196
+ _currentDecoder = generatorVideo;
189
197
190
- // Create inputFrame, and outputFrame which is based on a given profile
198
+ // buffers to process
191
199
VideoFrameDesc inputFrameDesc = inputVideoCodec.getVideoFrameDesc ();
192
200
VideoFrameDesc outputFrameDesc = inputFrameDesc;
193
201
outputFrameDesc.setParameters ( profile );
194
202
_sourceBuffer = new VideoFrame ( inputFrameDesc );
195
203
_frameBuffer = new VideoFrame ( outputFrameDesc );
196
204
197
- // Create output essence
205
+ // transform
206
+ _transform = new VideoTransform ();
207
+
208
+ // output encoder
198
209
VideoEncoder* outputVideo = new VideoEncoder ( profile.at ( constants::avProfileCodec ) );
199
210
outputVideo->setProfile ( profile, outputFrameDesc );
200
211
_outputEncoder = outputVideo;
201
212
202
- // Create a video stream in the output file
213
+ // output stream
203
214
_outputStream = &outputFile.addVideoStream ( outputVideo->getVideoCodec () );
204
-
205
- _transform = new VideoTransform ();
206
-
207
- _currentDecoder = _inputDecoder;
208
215
}
209
216
else if ( profile.find ( constants::avProfileType )->second == constants::avProfileTypeAudio )
210
217
{
211
- // Create input essence based on a given input AudioCodec
218
+ // generator decoder
212
219
AudioGenerator* generatorAudio = new AudioGenerator ();
213
220
const AudioCodec& inputAudioCodec = static_cast <const AudioCodec&>( inputCodec );
214
221
generatorAudio->setAudioFrameDesc ( inputAudioCodec.getAudioFrameDesc () );
215
- _inputDecoder = generatorAudio;
222
+ _currentDecoder = generatorAudio;
216
223
217
- // Create inputFrame, and outputFrame which is based on a given profile
224
+ // buffers to process
218
225
AudioFrameDesc inputFrameDesc = inputAudioCodec.getAudioFrameDesc ();
219
226
AudioFrameDesc outputFrameDesc = inputFrameDesc;
220
227
outputFrameDesc.setParameters ( profile );
221
228
_sourceBuffer = new AudioFrame ( inputFrameDesc );
222
229
_frameBuffer = new AudioFrame ( outputFrameDesc );
223
230
224
- // Create output essence
231
+ // transform
232
+ _transform = new AudioTransform ();
233
+
234
+ // output encoder
225
235
AudioEncoder* outputAudio = new AudioEncoder ( profile.at ( constants::avProfileCodec ) );
226
236
outputAudio->setProfile ( profile, outputFrameDesc );
227
237
_outputEncoder = outputAudio;
228
238
229
- // Create an audio stream in the output file
239
+ // output stream
230
240
_outputStream = &outputFile.addAudioStream ( outputAudio->getAudioCodec () );
231
-
232
- _transform = new AudioTransform ();
233
-
234
- _currentDecoder = _inputDecoder;
235
241
}
236
242
else
237
243
{
0 commit comments