3cb5a4c2064d4cf4d8cbdca75a84615a6c56fb7c from master; use j2c_uuid and pcm_uuid for...
authorCarl Hetherington <cth@carlh.net>
Sun, 24 May 2015 23:13:36 +0000 (00:13 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 24 May 2015 23:13:36 +0000 (00:13 +0100)
TO_PORT
cscript
src/lib/film.cc
src/lib/film.h
src/lib/util.cc
src/lib/util.h
src/lib/writer.cc
test/ffmpeg_dcp_test.cc

diff --git a/TO_PORT b/TO_PORT
index ee4121bcb421a086ce6543475e02d0d35ec03eaf..b49b094d9f36fc643f48d62000385b81e55acd2b 100644 (file)
--- 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 aa5605a11e64445d37f69482b0d9db15230fd494..2fe91132bfb625edf43ff1c81131acf7e7039559 100644 (file)
--- 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):
index 35773c797e25c591c20b65c819a1415a1d8bdc99..0af4c5611d8be2f4355a549b51451c87ae2d8eb3 100644 (file)
@@ -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
 {
index f61062be0cc3bfde33d368e3c12e0941a90b79d9..f55d8182fe0f7dfffbf2c23b1606800d8bf03bcc 100644 (file)
@@ -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 ();
 
index 99d9ba2c4f55654f12e2af866585121b2f6cb92e..0b35ad5395dfde0c59037a4af4542081650b7381 100644 (file)
@@ -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";
+}
index 44bd7dcedceab0e48800bd45f9cf0a7418ac5566..5413e4814e372f72fef41b43020330209c2d973e 100644 (file)
@@ -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
 
index 8028771880a838af6eb190da9d16992fde2e57ce..b71ff28918a3086efbf728fe1e6cb9ec54c03d23 100644 (file)
@@ -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,
index 559277e511a4ba14e59f4f2b329eea6d4b77224b..add1cb425640950924a130577523df3dd29a33f1 100644 (file)
@@ -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());
 }