X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdecoder_factory.cc;h=1bda93c9477c26de99946674b5481005cc389059;hb=458517981bbb6d8a76b2769ac824daa29c691d35;hp=f68a443b5cf4014f5c47d50619d151fcfdc237a7;hpb=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26;p=dcpomatic.git diff --git a/src/lib/decoder_factory.cc b/src/lib/decoder_factory.cc index f68a443b5..1bda93c94 100644 --- a/src/lib/decoder_factory.cc +++ b/src/lib/decoder_factory.cc @@ -18,33 +18,36 @@ */ + #include "atmos_mxf_content.h" #include "atmos_mxf_decoder.h" -#include "ffmpeg_content.h" -#include "ffmpeg_decoder.h" #include "dcp_content.h" #include "dcp_decoder.h" +#include "dcp_subtitle_content.h" +#include "dcp_subtitle_decoder.h" +#include "ffmpeg_content.h" +#include "ffmpeg_decoder.h" #include "image_content.h" #include "image_decoder.h" #include "string_text_file_content.h" #include "string_text_file_decoder.h" -#include "dcp_subtitle_content.h" -#include "dcp_subtitle_decoder.h" +#include "timer.h" #include "video_mxf_content.h" #include "video_mxf_decoder.h" -#include "timer.h" -#include + +using std::dynamic_pointer_cast; using std::list; +using std::make_shared; using std::shared_ptr; -using std::dynamic_pointer_cast; + template shared_ptr maybe_cast (shared_ptr d) { if (!d) { - return shared_ptr (); + return {}; } return dynamic_pointer_cast (d); } @@ -56,45 +59,45 @@ maybe_cast (shared_ptr d) shared_ptr decoder_factory (shared_ptr film, shared_ptr content, bool fast, bool tolerant, shared_ptr old_decoder) { - shared_ptr fc = dynamic_pointer_cast (content); + auto fc = dynamic_pointer_cast (content); if (fc) { - return shared_ptr (new FFmpegDecoder(film, fc, fast)); + return make_shared(film, fc, fast); } - shared_ptr dc = dynamic_pointer_cast (content); + auto dc = dynamic_pointer_cast (content); if (dc) { try { - return shared_ptr (new DCPDecoder(film, dc, fast, tolerant, maybe_cast(old_decoder))); + return make_shared(film, dc, fast, tolerant, maybe_cast(old_decoder)); } catch (KDMError& e) { /* This will be found and reported to the user when the content is examined */ - return shared_ptr(); + return {}; } } - shared_ptr ic = dynamic_pointer_cast (content); + auto ic = dynamic_pointer_cast (content); if (ic) { - return shared_ptr (new ImageDecoder(film, ic)); + return make_shared(film, ic); } - shared_ptr rc = dynamic_pointer_cast (content); + auto rc = dynamic_pointer_cast (content); if (rc) { - return shared_ptr (new StringTextFileDecoder(film, rc)); + return make_shared(film, rc); } - shared_ptr dsc = dynamic_pointer_cast (content); + auto dsc = dynamic_pointer_cast (content); if (dsc) { - return shared_ptr (new DCPSubtitleDecoder(film, dsc)); + return make_shared(film, dsc); } - shared_ptr vmc = dynamic_pointer_cast (content); + auto vmc = dynamic_pointer_cast (content); if (vmc) { - return shared_ptr (new VideoMXFDecoder(film, vmc)); + return make_shared(film, vmc); } - shared_ptr amc = dynamic_pointer_cast (content); + auto amc = dynamic_pointer_cast (content); if (amc) { - return shared_ptr (new AtmosMXFDecoder(film, amc)); + return make_shared(film, amc); } - return shared_ptr (); + return {}; }