diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-08-22 18:57:05 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-08-22 18:57:05 +0100 |
| commit | 0251d3f2986bf70d4721b7127ca6ddcc9da3b256 (patch) | |
| tree | 5b8bee96ae9bd53c7e78c264cdf08993f3a28e41 | |
| parent | 422c8a63d2368a2e63aee4c391207e3332d1d4c7 (diff) | |
Add basic example; tweak bits and pieces.
| -rw-r--r-- | examples/help.j2c | bin | 0 -> 161027 bytes | |||
| -rw-r--r-- | examples/help.png | bin | 0 -> 49919 bytes | |||
| -rw-r--r-- | examples/make_dcp.cc | 58 | ||||
| -rw-r--r-- | examples/sine_440_-12dB.wav | bin | 0 -> 384080 bytes | |||
| -rw-r--r-- | examples/sine_880_-12dB.wav | bin | 0 -> 384080 bytes | |||
| -rw-r--r-- | examples/wscript | 7 | ||||
| -rwxr-xr-x | run/examples/make_dcp | 12 | ||||
| -rwxr-xr-x | run/tools/dcpdiff (renamed from run/dcpdiff) | 0 | ||||
| -rw-r--r-- | src/dcp.cc | 6 | ||||
| -rw-r--r-- | src/picture_asset.cc | 8 | ||||
| -rw-r--r-- | src/sound_asset.cc | 4 | ||||
| -rw-r--r-- | wscript | 1 |
12 files changed, 90 insertions, 6 deletions
diff --git a/examples/help.j2c b/examples/help.j2c Binary files differnew file mode 100644 index 00000000..5ff1afb0 --- /dev/null +++ b/examples/help.j2c diff --git a/examples/help.png b/examples/help.png Binary files differnew file mode 100644 index 00000000..a192abc7 --- /dev/null +++ b/examples/help.png diff --git a/examples/make_dcp.cc b/examples/make_dcp.cc new file mode 100644 index 00000000..71e15427 --- /dev/null +++ b/examples/make_dcp.cc @@ -0,0 +1,58 @@ +/* + 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 (); +} diff --git a/examples/sine_440_-12dB.wav b/examples/sine_440_-12dB.wav Binary files differnew file mode 100644 index 00000000..e213d8c8 --- /dev/null +++ b/examples/sine_440_-12dB.wav diff --git a/examples/sine_880_-12dB.wav b/examples/sine_880_-12dB.wav Binary files differnew file mode 100644 index 00000000..772799bb --- /dev/null +++ b/examples/sine_880_-12dB.wav diff --git a/examples/wscript b/examples/wscript new file mode 100644 index 00000000..b6b28653 --- /dev/null +++ b/examples/wscript @@ -0,0 +1,7 @@ +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 = '' diff --git a/run/examples/make_dcp b/run/examples/make_dcp new file mode 100755 index 00000000..1649c0c6 --- /dev/null +++ b/run/examples/make_dcp @@ -0,0 +1,12 @@ +#!/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 diff --git a/run/dcpdiff b/run/tools/dcpdiff index ab21937c..ab21937c 100755 --- a/run/dcpdiff +++ b/run/tools/dcpdiff @@ -52,7 +52,7 @@ DCP::DCP (string directory, string name, ContentKind content_kind, int fps, int , _fps (fps) , _length (length) { - + filesystem::create_directories (directory); } void @@ -274,8 +274,8 @@ DCP::DCP (string directory) 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; diff --git a/src/picture_asset.cc b/src/picture_asset.cc index 3fbc0947..abc902d4 100644 --- a/src/picture_asset.cc +++ b/src/picture_asset.cc @@ -280,6 +280,8 @@ MonoPictureAsset::construct (sigc::slot<string, int> get_path) 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); @@ -289,8 +291,10 @@ MonoPictureAsset::construct (sigc::slot<string, int> get_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())) { diff --git a/src/sound_asset.cc b/src/sound_asset.cc index 75ca3a76..732bb610 100644 --- a/src/sound_asset.cc +++ b/src/sound_asset.cc @@ -170,7 +170,9 @@ SoundAsset::construct (sigc::slot<string, Channel> get_path) 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())) { @@ -70,6 +70,7 @@ def build(bld): 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/*~' |
