summaryrefslogtreecommitdiff
path: root/src/lib/transcoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-04-25 13:44:02 +0100
committerCarl Hetherington <cth@carlh.net>2013-04-25 13:44:02 +0100
commit7b2ec1dd69951649f2c912fcf90b22913b1f6c3a (patch)
treeb25ae258f6bb14b06f6d8079f6bb8daf81811470 /src/lib/transcoder.cc
parent6aa1a3e3808319d26659d3008a83f79f695fb6b2 (diff)
Remove Image::clone in favour of a copy constructor for SimpleImage; clean up A/B transcoder slightly; fix combiner if image strides differ; try to fix problems when destroying Encoders; fix SimpleImage copy constructor to cope with aligned images; don't call encoder::process_end if the encode throws an exception.
Diffstat (limited to 'src/lib/transcoder.cc')
-rw-r--r--src/lib/transcoder.cc37
1 files changed, 16 insertions, 21 deletions
diff --git a/src/lib/transcoder.cc b/src/lib/transcoder.cc
index 4d3f29e83..faafcaf8b 100644
--- a/src/lib/transcoder.cc
+++ b/src/lib/transcoder.cc
@@ -103,31 +103,26 @@ void
Transcoder::go ()
{
_encoder->process_begin ();
- try {
- bool done[2] = { false, false };
-
- while (1) {
- if (!done[0]) {
- done[0] = _decoders.video->pass ();
- if (_job) {
- _decoders.video->set_progress (_job);
- }
- }
-
- if (!done[1] && _decoders.audio && dynamic_pointer_cast<Decoder> (_decoders.audio) != dynamic_pointer_cast<Decoder> (_decoders.video)) {
- done[1] = _decoders.audio->pass ();
- } else {
- done[1] = true;
- }
- if (done[0] && done[1]) {
- break;
+ bool done[2] = { false, false };
+
+ while (1) {
+ if (!done[0]) {
+ done[0] = _decoders.video->pass ();
+ if (_job) {
+ _decoders.video->set_progress (_job);
}
}
- } catch (...) {
- _encoder->process_end ();
- throw;
+ if (!done[1] && _decoders.audio && dynamic_pointer_cast<Decoder> (_decoders.audio) != dynamic_pointer_cast<Decoder> (_decoders.video)) {
+ done[1] = _decoders.audio->pass ();
+ } else {
+ done[1] = true;
+ }
+
+ if (done[0] && done[1]) {
+ break;
+ }
}
_delay_line->process_end ();