summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-05-25 00:13:36 +0100
committerCarl Hetherington <cth@carlh.net>2015-05-25 00:13:36 +0100
commit5ae794047e5ceee4502e59211f0083a60224f4bd (patch)
treeaf66a40208e0f10621ea543d25d2ab662cb20503
parent64840121f4889a79f63a7168da88e5918092329a (diff)
3cb5a4c2064d4cf4d8cbdca75a84615a6c56fb7c from master; use j2c_uuid and pcm_uuid for picture/sound MXF filenames.
-rw-r--r--TO_PORT3
-rw-r--r--cscript2
-rw-r--r--src/lib/film.cc18
-rw-r--r--src/lib/film.h4
-rw-r--r--src/lib/util.cc20
-rw-r--r--src/lib/util.h9
-rw-r--r--src/lib/writer.cc13
-rw-r--r--test/ffmpeg_dcp_test.cc9
8 files changed, 46 insertions, 32 deletions
diff --git a/TO_PORT b/TO_PORT
index ee4121bcb..b49b094d9 100644
--- a/TO_PORT
+++ b/TO_PORT
@@ -1,4 +1,3 @@
-21f33acd3580c6e5c4ec1e7449b419c3178aa8ab
Multi-stream audio stuff.
681d95c83868310330984ae65589a1021bbe07d6
21cb435ed5eb250a7f94887ddd75f6b367ea231f
@@ -15,3 +14,5 @@ dd843f32f8f915a2fe984126ac338b26fa83546d
c13575f0483d6e92956fa7fb2e424572702236dc
33a2bece96b7875134c99a2053a2fc59e828ae33
b41b6528fbe0d270415a8500a612da19469e49e4
+c040b70eb777630ef0fdbb80cd419f6b3da4b46e
+ea2becf3a859bc38c783d15f165d71f2ccb8c1d6
diff --git a/cscript b/cscript
index aa5605a11..2fe91132b 100644
--- a/cscript
+++ b/cscript
@@ -206,7 +206,7 @@ def make_spec(filename, version, target):
def dependencies(target):
return (('ffmpeg-cdist', '0492ad2'),
- ('libdcp', '757b54a'),
+ ('libdcp', '6d5c9b4'),
('libsub', 'f66b11f'))
def configure_options(target):
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 35773c797..0af4c5611 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -228,24 +228,6 @@ Film::internal_video_mxf_filename () const
return video_identifier() + ".mxf";
}
-boost::filesystem::path
-Film::video_mxf_filename () const
-{
- return filename_safe_name() + "_video.mxf";
-}
-
-boost::filesystem::path
-Film::audio_mxf_filename () const
-{
- return filename_safe_name() + "_audio.mxf";
-}
-
-boost::filesystem::path
-Film::subtitle_xml_filename () const
-{
- return filename_safe_name() + "_subtitle.xml";
-}
-
string
Film::filename_safe_name () const
{
diff --git a/src/lib/film.h b/src/lib/film.h
index f61062be0..f55d8182f 100644
--- a/src/lib/film.h
+++ b/src/lib/film.h
@@ -68,10 +68,6 @@ public:
boost::filesystem::path internal_video_mxf_filename () const;
boost::filesystem::path audio_analysis_dir () const;
- boost::filesystem::path video_mxf_filename () const;
- boost::filesystem::path audio_mxf_filename () const;
- boost::filesystem::path subtitle_xml_filename () const;
-
void send_dcp_to_tms ();
void make_dcp ();
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 99d9ba2c4..0b35ad539 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -37,6 +37,9 @@
#include "safe_stringstream.h"
#include <dcp/util.h>
#include <dcp/signer.h>
+#include <dcp/picture_mxf.h>
+#include <dcp/sound_mxf.h>
+#include <dcp/subtitle_content.h>
#include <glib.h>
#include <pangomm/init.h>
#include <boost/algorithm/string.hpp>
@@ -671,3 +674,20 @@ write_frame_info (FILE* file, int frame, Eyes eyes, dcp::FrameInfo info)
fwrite (info.hash.c_str(), 1, info.hash.size(), file);
}
+string
+video_mxf_filename (shared_ptr<dcp::PictureMXF> mxf)
+{
+ return "j2c_" + mxf->id() + ".mxf";
+}
+
+string
+audio_mxf_filename (shared_ptr<dcp::SoundMXF> mxf)
+{
+ return "pcm_" + mxf->id() + ".mxf";
+}
+
+string
+subtitle_content_filename (shared_ptr<dcp::SubtitleContent> content)
+{
+ return "sub_" + content->id() + ".xml";
+}
diff --git a/src/lib/util.h b/src/lib/util.h
index 44bd7dced..5413e4814 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -42,6 +42,12 @@ extern "C" {
#undef check
+namespace dcp {
+ class PictureMXF;
+ class SoundMXF;
+ class SubtitleContent;
+}
+
/** The maximum number of audio channels that we can have in a DCP */
#define MAX_DCP_AUDIO_CHANNELS 12
/** Message broadcast to find possible encoding servers */
@@ -97,6 +103,9 @@ extern dcp::FrameInfo read_frame_info (FILE* file, int frame, Eyes eyes);
extern void write_frame_info (FILE* file, int frame, Eyes eyes, dcp::FrameInfo info);
extern int64_t video_frames_to_audio_frames (VideoFrame v, float audio_sample_rate, float frames_per_second);
extern std::map<std::string, std::string> split_get_request (std::string url);
+extern std::string video_mxf_filename (boost::shared_ptr<dcp::PictureMXF> mxf);
+extern std::string audio_mxf_filename (boost::shared_ptr<dcp::SoundMXF> mxf);
+extern std::string subtitle_content_filename (boost::shared_ptr<dcp::SubtitleContent> content);
#endif
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 802877188..b71ff2891 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -33,6 +33,7 @@
#include "encoded_data.h"
#include "version.h"
#include "font.h"
+#include "util.h"
#include <dcp/mono_picture_mxf.h>
#include <dcp/stereo_picture_mxf.h>
#include <dcp/sound_mxf.h>
@@ -125,7 +126,7 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j)
/* Write the sound MXF into the film directory so that we leave the creation
of the DCP directory until the last minute.
*/
- _sound_mxf_writer = _sound_mxf->start_write (_film->directory() / _film->audio_mxf_filename(), _film->interop() ? dcp::INTEROP : dcp::SMPTE);
+ _sound_mxf_writer = _sound_mxf->start_write (_film->directory() / audio_mxf_filename (_sound_mxf), _film->interop() ? dcp::INTEROP : dcp::SMPTE);
}
/* Check that the signer is OK if we need one */
@@ -445,7 +446,7 @@ Writer::finish ()
boost::filesystem::path video_to;
video_to /= _film->dir (_film->dcp_name());
- video_to /= _film->video_mxf_filename ();
+ video_to /= video_mxf_filename (_picture_mxf);
boost::system::error_code ec;
boost::filesystem::create_hard_link (video_from, video_to, ec);
@@ -465,12 +466,12 @@ Writer::finish ()
if (_sound_mxf) {
boost::filesystem::path audio_to;
audio_to /= _film->dir (_film->dcp_name ());
- audio_to /= _film->audio_mxf_filename ();
+ audio_to /= audio_mxf_filename (_sound_mxf);
- boost::filesystem::rename (_film->file (_film->audio_mxf_filename ()), audio_to, ec);
+ boost::filesystem::rename (_film->file (audio_mxf_filename (_sound_mxf)), audio_to, ec);
if (ec) {
throw FileError (
- String::compose (_("could not move audio MXF into the DCP (%1)"), ec.value ()), _film->file (_film->audio_mxf_filename ())
+ String::compose (_("could not move audio MXF into the DCP (%1)"), ec.value ()), audio_mxf_filename (_sound_mxf)
);
}
@@ -532,7 +533,7 @@ Writer::finish ()
dcp.add (shared_ptr<dcp::Font> (new dcp::Font (to)));
}
- _subtitle_content->write_xml (_film->dir (_film->dcp_name ()) / _subtitle_content->id () / _film->subtitle_xml_filename ());
+ _subtitle_content->write_xml (_film->dir (_film->dcp_name ()) / _subtitle_content->id () / subtitle_content_filename (_subtitle_content));
reel->add (shared_ptr<dcp::ReelSubtitleAsset> (
new dcp::ReelSubtitleAsset (
_subtitle_content,
diff --git a/test/ffmpeg_dcp_test.cc b/test/ffmpeg_dcp_test.cc
index 559277e51..add1cb425 100644
--- a/test/ffmpeg_dcp_test.cc
+++ b/test/ffmpeg_dcp_test.cc
@@ -25,6 +25,7 @@
#include <boost/test/unit_test.hpp>
#include <boost/filesystem.hpp>
+#include <boost/algorithm/string.hpp>
#include "lib/film.h"
#include "lib/ffmpeg_content.h"
#include "lib/ratio.h"
@@ -61,7 +62,11 @@ BOOST_AUTO_TEST_CASE (ffmpeg_have_dcp_test)
BOOST_CHECK (!f->cpls().empty());
p /= f->dcp_name();
- p /= f->video_mxf_filename();
- boost::filesystem::remove (p);
+ for (boost::filesystem::directory_iterator i = boost::filesystem::directory_iterator (p); i != boost::filesystem::directory_iterator(); ++i) {
+ if (boost::algorithm::starts_with (i->path().string(), "j2c")) {
+ p /= i->path ();
+ boost::filesystem::remove (p);
+ }
+ }
BOOST_CHECK (f->cpls().empty());
}