@@ -303,7 +303,19 @@ bool StreamTranscoder::processRewrap()
303
303
if ( ! _inputStream->readNextPacket ( data ) )
304
304
return false ;
305
305
306
- _outputStream->wrap ( data );
306
+ IOutputStream::EWrappingStatus wrappingStatus = _outputStream->wrap ( data );
307
+
308
+ switch ( wrappingStatus )
309
+ {
310
+ case IOutputStream::eWrappingSuccess:
311
+ return true ;
312
+ case IOutputStream::eWrappingWaitingForData:
313
+ // the wrapper needs more data to write the current packet
314
+ return processRewrap ();
315
+ case IOutputStream::eWrappingError:
316
+ return false ;
317
+ }
318
+
307
319
return true ;
308
320
}
309
321
@@ -355,7 +367,20 @@ bool StreamTranscoder::processTranscode()
355
367
356
368
if ( _verbose )
357
369
std::cout << " wrap (" << data.getSize () << " )" << std::endl;
358
- _outputStream->wrap ( data );
370
+
371
+ IOutputStream::EWrappingStatus wrappingStatus = _outputStream->wrap ( data );
372
+
373
+ switch ( wrappingStatus )
374
+ {
375
+ case IOutputStream::eWrappingSuccess:
376
+ return true ;
377
+ case IOutputStream::eWrappingWaitingForData:
378
+ // the wrapper needs more data to write the current packet
379
+ return processTranscode ();
380
+ case IOutputStream::eWrappingError:
381
+ return false ;
382
+ }
383
+
359
384
return true ;
360
385
}
361
386
@@ -406,7 +431,20 @@ bool StreamTranscoder::processTranscode( const int subStreamIndex )
406
431
}
407
432
if ( _verbose )
408
433
std::cout << " wrap (" << data.getSize () << " )" << std::endl;
409
- _outputStream->wrap ( data );
434
+
435
+ IOutputStream::EWrappingStatus wrappingStatus = _outputStream->wrap ( data );
436
+
437
+ switch ( wrappingStatus )
438
+ {
439
+ case IOutputStream::eWrappingSuccess:
440
+ return true ;
441
+ case IOutputStream::eWrappingWaitingForData:
442
+ // the wrapper needs more data to write the current packet
443
+ return processTranscode ( subStreamIndex );
444
+ case IOutputStream::eWrappingError:
445
+ return false ;
446
+ }
447
+
410
448
return true ;
411
449
}
412
450
0 commit comments