-21f33acd3580c6e5c4ec1e7449b419c3178aa8ab
Multi-stream audio stuff.
681d95c83868310330984ae65589a1021bbe07d6
21cb435ed5eb250a7f94887ddd75f6b367ea231f
c13575f0483d6e92956fa7fb2e424572702236dc
33a2bece96b7875134c99a2053a2fc59e828ae33
b41b6528fbe0d270415a8500a612da19469e49e4
+c040b70eb777630ef0fdbb80cd419f6b3da4b46e
+ea2becf3a859bc38c783d15f165d71f2ccb8c1d6
def dependencies(target):
return (('ffmpeg-cdist', '0492ad2'),
- ('libdcp', '757b54a'),
+ ('libdcp', '6d5c9b4'),
('libsub', 'f66b11f'))
def configure_options(target):
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
{
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 ();
#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>
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";
+}
#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 */
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
#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>
/* 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 */
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);
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)
);
}
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,
#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"
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());
}