--- /dev/null
+/*
+ Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <vector>
+#include <string>
+#include <sigc++/sigc++.h>
+#include "dcp.h"
+#include "picture_asset.h"
+#include "sound_asset.h"
+#include "reel.h"
+
+std::string
+video_frame (int /* frame */)
+{
+ return "examples/help.j2c";
+}
+
+int
+main ()
+{
+ libdcp::DCP dcp ("My Film DCP", "My Film", libdcp::FEATURE, 24, 48);
+
+ boost::shared_ptr<libdcp::MonoPictureAsset> picture_asset (
+ new libdcp::MonoPictureAsset (sigc::ptr_fun (&video_frame), "My Film DCP", "video.mxf", 0, 24, 48, 1998, 1080)
+ );
+
+ std::vector<std::string> sound_files;
+ sound_files.push_back ("examples/sine_440_-12dB.wav");
+ sound_files.push_back ("examples/sine_880_-12dB.wav");
+
+ boost::shared_ptr<libdcp::SoundAsset> sound_asset (
+ new libdcp::SoundAsset (sound_files, "My Film DCP", "audio.mxf", 0, 24, 48)
+ );
+
+ dcp.add_reel (
+ boost::shared_ptr<libdcp::Reel> (
+ new libdcp::Reel (picture_asset, sound_asset, boost::shared_ptr<libdcp::SubtitleAsset> ())
+ )
+ );
+
+ dcp.write_xml ();
+}
--- /dev/null
+def build(bld):
+ obj = bld(features = 'cxx cxxprogram')
+ obj.name = 'examples'
+ obj.use = 'libdcp'
+ obj.source = 'make_dcp.cc'
+ obj.target = 'make_dcp'
+ obj.install_path = ''
+++ /dev/null
-#!/bin/bash
-
-export LD_LIBRARY_PATH=build/src
-if [ "$1" == "--debug" ]; then
- shift
- gdb --args build/tools/dcpdiff "$@"
-elif [ "$1" == "--valgrind" ]; then
- shift
- valgrind --tool="memcheck" --leak-check=full --show-reachable=yes build/tools/dcpdiff "$@"
-else
- build/tools/dcpdiff "$@"
-fi
--- /dev/null
+#!/bin/bash
+
+export LD_LIBRARY_PATH=build/src
+if [ "$1" == "--debug" ]; then
+ shift
+ gdb --args build/examples/make_dcp "$@"
+elif [ "$1" == "--valgrind" ]; then
+ shift
+ valgrind --tool="memcheck" --leak-check=full --show-reachable=yes build/examples/make_dcp "$@"
+else
+ build/examples/make_dcp "$@"
+fi
--- /dev/null
+#!/bin/bash
+
+export LD_LIBRARY_PATH=build/src
+if [ "$1" == "--debug" ]; then
+ shift
+ gdb --args build/tools/dcpdiff "$@"
+elif [ "$1" == "--valgrind" ]; then
+ shift
+ valgrind --tool="memcheck" --leak-check=full --show-reachable=yes build/tools/dcpdiff "$@"
+else
+ build/tools/dcpdiff "$@"
+fi
, _fps (fps)
, _length (length)
{
-
+ filesystem::create_directories (directory);
}
void
p = (*i)->asset_list->main_stereoscopic_picture;
}
- assert (_fps == 0 || _fps == p->frame_rate.numerator);
- _fps = p->frame_rate.numerator;
+ assert (_fps == 0 || _fps == p->edit_rate.numerator);
+ _fps = p->edit_rate.numerator;
_length += p->duration;
shared_ptr<PictureAsset> picture;
for (int i = 0; i < _length; ++i) {
string const path = get_path (i);
+
+ cout << "reading " << path << "\n";
if (ASDCP_FAILURE (j2k_parser.OpenReadFrame (path.c_str(), frame_buffer))) {
throw FileError ("could not open JPEG2000 file for reading", path);
if (ASDCP_FAILURE (mxf_writer.WriteFrame (frame_buffer, 0, 0))) {
throw MiscError ("error in writing video MXF");
}
-
- (*_progress) (0.5 * float (i) / _length);
+
+ if (_progress) {
+ (*_progress) (0.5 * float (i) / _length);
+ }
}
if (ASDCP_FAILURE (mxf_writer.Finalize())) {
throw MiscError ("could not write audio MXF frame");
}
- (*_progress) (0.5 * float (i) / _length);
+ if (_progress) {
+ (*_progress) (0.5 * float (i) / _length);
+ }
}
if (ASDCP_FAILURE (mxf_writer.Finalize())) {
bld.recurse('tools')
bld.recurse('test')
bld.recurse('asdcplib')
+ bld.recurse('examples')
def dist(ctx):
ctx.excl = 'TODO core *~ .git build .waf* .lock* doc/*~ src/*~ test/ref/*~'