diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-07-16 02:11:06 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-07-16 02:11:06 +0100 |
| commit | ed2505efba6defd16a1845fd0d3586d7758c3729 (patch) | |
| tree | e1d7155fec051067992fabadb9e61e7f246510b3 /src/lib | |
| parent | 87a30dd440a77ba4680c960bf9eac561e5b181b7 (diff) | |
asdcplib links.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/make_mxf_job.cc | 52 | ||||
| -rw-r--r-- | src/lib/make_mxf_job.h | 2 | ||||
| -rw-r--r-- | src/lib/wscript | 1 |
3 files changed, 53 insertions, 2 deletions
diff --git a/src/lib/make_mxf_job.cc b/src/lib/make_mxf_job.cc index 01fc30fc7..34f115e98 100644 --- a/src/lib/make_mxf_job.cc +++ b/src/lib/make_mxf_job.cc @@ -22,10 +22,13 @@ */ #include <iostream> +#include <boost/filesystem.hpp> +#include "AS_DCP.h" #include "make_mxf_job.h" #include "film.h" #include "film_state.h" #include "options.h" +#include "exceptions.h" using namespace std; using namespace boost; @@ -35,7 +38,7 @@ using namespace boost; */ MakeMXFJob::MakeMXFJob (shared_ptr<const FilmState> s, shared_ptr<const Options> o, Log* l, Type t) - : ShellCommandJob (s, o, l) + : Job (s, o, l) , _type (t) { @@ -57,6 +60,8 @@ MakeMXFJob::name () const return s.str (); } +#if 0 +XXX void MakeMXFJob::run () { @@ -79,3 +84,48 @@ MakeMXFJob::run () command (c.str ()); set_progress (1); } +#endif + +void +MakeMXFJob::run () +{ + set_progress (0); + + string dir; + switch (_type) { + case VIDEO: + dir = _opt->frame_out_path (); + break; + case AUDIO: + dir = _opt->multichannel_audio_out_path (); + break; + } + + std::list<std::string> files; + for (filesystem::directory_iterator i = filesystem::directory_iterator (dir); i != filesystem::directory_iterator(); ++i) { + files.push_back (filesystem::path (*i).string()); + } + + if (files.empty ()) { + throw EncodeError ("no input files found for MXF"); + } + + ASDCP::EssenceType_t essence_type; + if (ASDCP_FAILURE (ASDCP::RawEssenceType (files.front().c_str(), essence_type))) { + throw EncodeError ("could not work out type for MXF"); + } + + switch (essence_type) { + case ASDCP::ESS_JPEG_2000: + /* XXX */ + break; + case ASDCP::ESS_PCM_24b_48k: + case ASDCP::ESS_PCM_24b_96k: + /* XXX */ + break; + default: + throw EncodeError ("unknown essence type"); + } + + set_progress (1); +} diff --git a/src/lib/make_mxf_job.h b/src/lib/make_mxf_job.h index 462381d23..b433bdeca 100644 --- a/src/lib/make_mxf_job.h +++ b/src/lib/make_mxf_job.h @@ -29,7 +29,7 @@ class Options; /** @class MakeMXFJob * @brief A job that creates a MXF file from some data. */ -class MakeMXFJob : public ShellCommandJob +class MakeMXFJob : public Job { public: enum Type { diff --git a/src/lib/wscript b/src/lib/wscript index f60a63f85..5d8adf7ff 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -8,6 +8,7 @@ def build(bld): obj.name = 'libdvdomatic' obj.export_includes = ['.'] obj.uselib = 'AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE SNDFILE BOOST_FILESYSTEM BOOST_THREAD OPENJPEG POSTPROC TIFF SIGC++ MAGICK SSH' + obj.use = 'libasdcp-dvdomatic' if bld.env.DEBUG_HASH: obj.uselib += ' MHASH' obj.source = """ |
