@@ -110,39 +110,36 @@ StreamTranscoder::StreamTranscoder(
110
110
, _outputEssence( NULL )
111
111
, _transcodeStream( true )
112
112
{
113
- // create an encoder case from a dummy
114
- switch ( _inputStream->getStreamType () )
113
+ if ( ! profile.count ( Profile::avProfileType ) )
114
+ throw std::runtime_error ( " unable to found stream type (audio, video, etc.)" );
115
+
116
+ if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeAudio )
115
117
{
116
- case AVMEDIA_TYPE_VIDEO :
117
- {
118
- OutputVideo* outputVideo = new OutputVideo ();
119
- _outputEssence = outputVideo;
118
+ OutputAudio* outputAudio = new OutputAudio ();
120
119
121
- _outputEssence->setProfile ( profile );
122
- _outputStream = &outputFile.addVideoStream ( outputVideo->getVideoDesc () );
123
- _videoFrameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
124
- _frameBuffer = _videoFrameBuffer;
125
-
126
- break ;
127
- }
128
- case AVMEDIA_TYPE_AUDIO :
129
- {
130
- OutputAudio* outputAudio = new OutputAudio ();
131
- _outputEssence = outputAudio;
120
+ _outputEssence = outputAudio;
121
+ _outputEssence->setProfile ( profile );
132
122
133
- _outputEssence->setProfile ( profile );
134
- _outputStream = &outputFile.addAudioStream ( outputAudio->getAudioDesc () );
135
- _audioFrameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
136
- _frameBuffer = _audioFrameBuffer;
137
-
138
- break ;
139
- }
140
- default :
141
- {
142
- throw std::runtime_error ( " unupported stream type" );
143
- break ;
144
- }
123
+ _outputStream = &outputFile.addAudioStream ( outputAudio->getAudioDesc () );
124
+ _audioFrameBuffer = new AudioFrame ( outputAudio->getAudioDesc ().getFrameDesc () );
125
+ _frameBuffer = _audioFrameBuffer;
126
+ return ;
145
127
}
128
+
129
+ if ( profile.find ( Profile::avProfileType )->second == Profile::avProfileTypeVideo )
130
+ {
131
+ OutputVideo* outputVideo = new OutputVideo ();
132
+
133
+ _outputEssence = outputVideo;
134
+ _outputEssence->setProfile ( profile );
135
+
136
+ _outputStream = &outputFile.addVideoStream ( outputVideo->getVideoDesc () );
137
+ _videoFrameBuffer = new Image ( outputVideo->getVideoDesc ().getImageDesc () );
138
+ _frameBuffer = _videoFrameBuffer;
139
+ return ;
140
+ }
141
+
142
+ throw std::runtime_error ( " unupported stream type" );
146
143
}
147
144
148
145
StreamTranscoder::~StreamTranscoder ()
@@ -182,19 +179,24 @@ bool StreamTranscoder::processTranscode()
182
179
assert ( _outputEssence != NULL );
183
180
assert ( _frameBuffer != NULL );
184
181
182
+ std::cout << " transcode" << std::endl;
183
+
185
184
DataStream dataStream;
186
185
if ( _inputEssence->readNextFrame ( *_frameBuffer ) )
187
186
{
187
+ std::cout << " encode" << std::endl;
188
188
_outputEssence->encodeFrame ( *_frameBuffer, dataStream );
189
189
}
190
190
else
191
191
{
192
+ std::cout << " encode last frame" << std::endl;
192
193
if ( ! _outputEssence->encodeFrame ( dataStream ) )
193
194
{
194
195
return false ;
195
196
}
196
197
}
197
198
199
+ std::cout << " wrap" << std::endl;
198
200
_outputStream->wrap ( dataStream );
199
201
return true ;
200
202
}
0 commit comments