@@ -252,19 +252,17 @@ void Transcoder::init()
252
252
bool Transcoder::processFrame ()
253
253
{
254
254
if ( _streamTranscoders.size () == 0 )
255
- {
256
255
return false ;
257
- }
258
256
259
257
if ( _verbose )
260
258
std::cout << " process frame" << std::endl;
259
+
261
260
for ( size_t streamIndex = 0 ; streamIndex < _streamTranscoders.size (); ++streamIndex )
262
261
{
263
262
if ( _verbose )
264
263
std::cout << " process stream " << streamIndex << " /" << _streamTranscoders.size () - 1 << std::endl;
265
264
266
265
bool streamProcessStatus = _streamTranscoders.at ( streamIndex )->processFrame ();
267
-
268
266
if ( ! streamProcessStatus )
269
267
{
270
268
_streamTranscoders.clear ();
@@ -276,37 +274,31 @@ bool Transcoder::processFrame()
276
274
277
275
void Transcoder::process ( IProgress& progress )
278
276
{
279
- size_t frame = 0 ;
280
-
281
- if ( ! _streamTranscoders.size () )
282
- {
277
+ if ( _streamTranscoders.size () == 0 )
283
278
throw std::runtime_error ( " missing input streams in transcoder" );
284
- }
285
279
286
280
if ( _verbose )
287
281
std::cout << " begin transcoding" << std::endl;
288
282
init ();
289
283
290
284
_outputFile.beginWrap ();
291
285
292
- double totalDuration = getTotalDurationFromProcessMethod ();
293
-
294
286
if ( _verbose )
295
287
av_log_set_level ( AV_LOG_DEBUG );
296
288
297
- while ( 1 )
289
+ double totalDuration = getTotalDurationFromProcessMethod ();
290
+
291
+ size_t frame = 0 ;
292
+ bool frameProcessed = true ;
293
+ while ( frameProcessed )
298
294
{
299
295
if ( _verbose )
300
296
std::cout << " process frame " << frame << std::endl;
301
297
302
- bool frameProcessed = processFrame ();
303
- if ( ! frameProcessed )
304
- break ;
298
+ frameProcessed = processFrame ();
305
299
306
300
if ( progress.progress ( _outputFile.getProgressDuration (), totalDuration ) == eJobStatusCancel )
307
- {
308
301
break ;
309
- }
310
302
311
303
++frame;
312
304
}
@@ -526,6 +518,8 @@ double Transcoder::getTotalDurationFromProcessMethod() const
526
518
return getStreamDuration ( _mainStreamIndex );
527
519
case eProcessMethodInfinity :
528
520
return std::numeric_limits<double >::max ();
521
+ default :
522
+ return getMaxTotalDuration ();
529
523
}
530
524
}
531
525
0 commit comments