summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-07-16 02:11:06 +0100
committerCarl Hetherington <cth@carlh.net>2012-07-16 02:11:06 +0100
commited2505efba6defd16a1845fd0d3586d7758c3729 (patch)
treee1d7155fec051067992fabadb9e61e7f246510b3 /src/lib
parent87a30dd440a77ba4680c960bf9eac561e5b181b7 (diff)
asdcplib links.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/make_mxf_job.cc52
-rw-r--r--src/lib/make_mxf_job.h2
-rw-r--r--src/lib/wscript1
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 = """