Fix weird exception handling.
authorCarl Hetherington <cth@carlh.net>
Sun, 18 Dec 2022 23:36:36 +0000 (00:36 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 18 Dec 2022 23:36:38 +0000 (00:36 +0100)
This is a bit cleaner and stops odd messages about stereoscopic assets
appearing in the logs.

src/lib/video_mxf_decoder.cc

index 92cab0259dd8a1697826f2ad5213b221cba7e6e3..40d3a461afbd4ebb4fd57765d5bc80a5f42d8c39 100644 (file)
@@ -43,37 +43,22 @@ VideoMXFDecoder::VideoMXFDecoder (shared_ptr<const Film> film, shared_ptr<const
 {
        video = make_shared<VideoDecoder>(this, content);
 
-       shared_ptr<dcp::MonoPictureAsset> mono;
        try {
-               mono = make_shared<dcp::MonoPictureAsset>(_content->path(0));
+               auto mono = make_shared<dcp::MonoPictureAsset>(_content->path(0));
+               _mono_reader = mono->start_read ();
+               _mono_reader->set_check_hmac (false);
+               _size = mono->size ();
+               return;
        } catch (dcp::MXFFileError& e) {
                /* maybe it's stereo */
        } catch (dcp::ReadError& e) {
                /* maybe it's stereo */
        }
 
-       shared_ptr<dcp::StereoPictureAsset> stereo;
-       try {
-               stereo = make_shared<dcp::StereoPictureAsset>(_content->path(0));
-       } catch (dcp::MXFFileError& e) {
-               if (!mono) {
-                       throw;
-               }
-       } catch (dcp::ReadError& e) {
-               if (!mono) {
-                       throw;
-               }
-       }
-
-       if (mono) {
-               _mono_reader = mono->start_read ();
-               _mono_reader->set_check_hmac (false);
-               _size = mono->size ();
-       } else {
-               _stereo_reader = stereo->start_read ();
-               _stereo_reader->set_check_hmac (false);
-               _size = stereo->size ();
-       }
+       auto stereo = make_shared<dcp::StereoPictureAsset>(_content->path(0));
+       _stereo_reader = stereo->start_read ();
+       _stereo_reader->set_check_hmac (false);
+       _size = stereo->size ();
 }