X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fdecoder_factory.cc;h=4b2a594e1e3c365f9b5c692cf7897d594e7994cc;hp=1acef6f4fbe9326d8b50d0f59050f0489a55e6bc;hb=HEAD;hpb=a5d004b0773f633401528392fc28e66d70e13ac8 diff --git a/src/lib/decoder_factory.cc b/src/lib/decoder_factory.cc index 1acef6f4f..1bda93c94 100644 --- a/src/lib/decoder_factory.cc +++ b/src/lib/decoder_factory.cc @@ -18,32 +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" + +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); } @@ -55,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 {}; }