about CLI on Linux

Anything and everything to do with DCP-o-matic.
Post Reply
zlstl
Posts: 9
Joined: Tue Apr 30, 2019 5:16 am

about CLI on Linux

Post by zlstl »

I want to convert my mp4 file on Linux.
<test.mp4> : 2D / 100MB / 1920*1080 / 25.0fps / sRGB ...

I try this command;
dcpomatic2_create -o testDir --container-ratio 185 --content-ratio 185 -no-use-isdcp-name test.mp4

and;
dcpomatic2_cli testDir

but this time I have some question.
1. Can I setup 2D / 3D file option and 2K /4K option and j2k bandwidth option on CLI?
2. Frame rate of test.mp4 file is 25.0fps. Can I change to other rate on CLI?

sub.... when I read about DCI, DCP file must be XYZ Color. but dcp-o-matic doesn't have this color conversion. Rec.709 is same with XYZ color?
carl
Site Admin
Posts: 2338
Joined: Thu Nov 14, 2013 2:53 pm

Re: about CLI on Linux

Post by carl »

If you use the test version you can use

Code: Select all

--threed
for 3D,

Code: Select all

--fourk
for 4K,

Code: Select all

--j2k-bandwidth
for JPEG2000 bandwidth and

Code: Select all

--dcp-frame-rate
to set the frame rate.

For some of those options you'll need to wait for 2.13.158 which will be uploaded shortly.

DCP-o-matic automatically converts to XYZ colour from whatever you give it. The colourspace settings in DCP-o-matic should be set to the source colourspace.
zlstl
Posts: 9
Joined: Tue Apr 30, 2019 5:16 am

Re: about CLI on Linux

Post by zlstl »

Thanks so much!!
carl
Site Admin
Posts: 2338
Joined: Thu Nov 14, 2013 2:53 pm

Re: about CLI on Linux

Post by carl »

You can use 2.14.0 now.
zlstl
Posts: 9
Joined: Tue Apr 30, 2019 5:16 am

Re: about CLI on Linux

Post by zlstl »

I have one more question.
I want to know the detailed steps when converting from test.mp4 to DCP.

1. Is my test.mp4 converted directly to j2k file? Or first convert it to another proxy format (ex tiff sequence file or something) and convert it to j2k?
2. When my test.mp4 file is converted to j2k. using a GPUs? or using only CPUs?
3. If I use high performance NVIDIA graphic card can I speed up converting?

Thanks so much!!
carl
Site Admin
Posts: 2338
Joined: Thu Nov 14, 2013 2:53 pm

Re: about CLI on Linux

Post by carl »

1. Is my test.mp4 converted directly to j2k file? Or first convert it to another proxy format (ex tiff sequence file or something) and convert it to j2k?
It is converted directly.
2. When my test.mp4 file is converted to j2k. using a GPUs? or using only CPUs?
CPU only, though I'm working on GPU (slowly).
3. If I use high performance NVIDIA graphic card can I speed up converting?
Not yet, but hopefully one day.
zlstl
Posts: 9
Joined: Tue Apr 30, 2019 5:16 am

Re: about CLI on Linux

Post by zlstl »

Thanks so much for your reply!!

but I still have question.....
1. I prepared 3 PC
- CPU:i5-8400 / GPU:x / RAM:32GB / win10(x64) -> master
- CPU:Ryzen 1950x / GPU:gtx1080 / RAM:32GB / win10(x64) ->slave
- CPU:Ryzen 1950x / GPU:gtx1070 / RAM:32GB / win10(x64) ->slave
When this case, How to setup options? (number of threads DCP-o-matic should use,Number of threads DCP-o-matic encode server should use,Maximum number of frames to store per thread)
I will encode only servers.

2. Option that number of threads DCP-o-matic should use is master server's option?
If I want encode only server, just I check Advanced->only servers encode checkbox? and Option that number of threads DCP-o-matic should use set 0?

3. Option that Number of threads DCP-o-matic encode server should is slave server's option?
If I set this option to 32, each server use 32 threads or total use 32 threads?

4. I tried converting with set number of threads DCP-o-matic should use : 6,
Number of threads DCP-o-matic encode server should use : 32,
Maximum number of frames to store per thread : 24
I saw benchmarks on https://dcpomatic.com/benchmarks/input.php?id=1. Ryzen 1950x is so fast when using 32 threads.
Could you recommend setting option for me?
Carsten
Posts: 2648
Joined: Tue Apr 15, 2014 9:11 pm
Location: Germany

Re: about CLI on Linux

Post by Carsten »

Don't know if I understand all your questions - but, you should use one of the Ryzen machines as the master. Using very fast machines as encoding servers/slaves is limited by network saturation. It is always best to do local encodes on the fastest available machine. You may improve this by using 10Ge networks.
You should leave 'Maximum number of frames to store per thread' at it's default setting. I wish Carl would remove that option again. I think it was once introduced for a combination of a very fast CPU with rather low available memory.

The number of encoding threads used by DCP-o-matic is only targeting local encode threads. DCP-o-matic will use all remote encoding servers/threads it can see. The setting 'number of encoding threads the encode server should use' targets only an encode server that is running on the same machine. The encode server has no prefs GUI to set this, so you configure this with DCP-o-matic main running on the same machine.

In your case, I would assume that the best would be to setup one Ryzen machine as master, the second as slave through a 10Ge interface, the i5-8400 as another slave through the usual Gigabit network interface. You should set the Ryzen machines to 32-40 threads, the i5 machine to 6-8 threads.

Usually, what DCP-o-matic configures automatically during setup is okay. That should be 32 for the Ryzen 1950x and 6 for the i5-8400.

- Carsten
zlstl
Posts: 9
Joined: Tue Apr 30, 2019 5:16 am

Re: about CLI on Linux

Post by zlstl »

I tried building dcpomatic in ubunt 18.04 followed by https://dcpomatic.com/build/linux?distro=ubuntu-18.04

but in last step
./waf configure build
this command occur error


[ 38/427] Compiling src/lib/overlaps.cc
../src/lib/reel_writer.cc: In member function ‘boost::shared_ptr<dcp::Reel> ReelWriter::create_reel(const std::__cxx11::list<ReferencedReelAsset>&, const std::__cxx11::list<boost::shared_ptr<Font> >&)’:
../src/lib/reel_writer.cc:508:124: error: no matching function for call to ‘maybe_add_text<dcp::ReelSubtitleAsset>(boost::shared_ptr<dcp::SubtitleAsset>&, boost::optional<long int>, boost::shared_ptr<dcp::Reel>&, const std::__cxx11::list<ReferencedReelAsset>&, const std::__cxx11::list<boost::shared_ptr<Font> >&, boost::shared_ptr<const Film>&, DCPTimePeriod&)’
maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->duration(), reel, refs, fonts, _film, _period);
^
../src/lib/reel_writer.cc:335:1: note: candidate: template<class T> boost::shared_ptr<X> maybe_add_text(boost::shared_ptr<dcp::SubtitleAsset>, int64_t, boost::shared_ptr<dcp::Reel>, const std::__cxx11::list<ReferencedReelAsset>&, const std::__cxx11::list<boost::shared_ptr<Font> >&, boost::shared_ptr<const Film>, DCPTimePeriod)
maybe_add_text (
^~~~~~~~~~~~~~
../src/lib/reel_writer.cc:335:1: note: template argument deduction/substitution failed:
../src/lib/reel_writer.cc:508:87: note: cannot convert ‘dcp::ReelAsset::duration() const()’ (type ‘boost::optional<long int>’) to type ‘int64_t {aka long int}’
maybe_add_text<dcp::ReelSubtitleAsset> (_subtitle_asset, reel_picture_asset->duration(), reel, refs, fonts, _film, _period);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
../src/lib/reel_writer.cc:512:4: error: no matching function for call to ‘maybe_add_text<dcp::ReelClosedCaptionAsset>(const boost::shared_ptr<dcp::SubtitleAsset>&, boost::optional<long int>, boost::shared_ptr<dcp::Reel>&, const std::__cxx11::list<ReferencedReelAsset>&, const std::__cxx11::list<boost::shared_ptr<Font> >&, boost::shared_ptr<const Film>&, DCPTimePeriod&)’
);
^
../src/lib/reel_writer.cc:335:1: note: candidate: template<class T> boost::shared_ptr<X> maybe_add_text(boost::shared_ptr<dcp::SubtitleAsset>, int64_t, boost::shared_ptr<dcp::Reel>, const std::__cxx11::list<ReferencedReelAsset>&, const std::__cxx11::list<boost::shared_ptr<Font> >&, boost::shared_ptr<const Film>, DCPTimePeriod)
maybe_add_text (
^~~~~~~~~~~~~~
../src/lib/reel_writer.cc:335:1: note: template argument deduction/substitution failed:
../src/lib/reel_writer.cc:511:43: note: cannot convert ‘dcp::ReelAsset::duration() const()’ (type ‘boost::optional<long int>’) to type ‘int64_t {aka long int}’
i->second, reel_picture_asset->duration(), reel, refs, fonts, _film, _period
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/boost/optional/optional.hpp:29:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/types.h:25,
from ../src/lib/reel_writer.h:21,
from ../src/lib/reel_writer.cc:21:
/usr/local/include/libdcp-1.0/dcp/locale_convert.h: In instantiation of ‘P dcp::locale_convert(Q, int, bool) [with P = std::__cxx11::basic_string<char>; Q = boost::optional<long int>]’:
../src/lib/compose.hpp:121:43: required from ‘StringPrivate::Composition& StringPrivate::Composition::arg(const T&) [with T = boost::optional<long int>]’
../src/lib/compose.hpp:217:15: required from ‘std::__cxx11::string String::compose(const string&, const T1&, const T2&) [with T1 = boost::optional<long int>; T2 = long int; std::__cxx11::string = std::__cxx11::basic_string<char>]’
../src/lib/reel_writer.cc:462:80: required from here
/usr/local/include/libdcp-1.0/dcp/locale_convert.h:51:2: error: static assertion failed: sizeof (Q) == 0
BOOST_STATIC_ASSERT (sizeof (Q) == 0);
^
In file included from ../src/lib/compose.hpp:37:0,
from ../src/lib/dcpomatic_log.h:22,
from ../src/lib/reel_writer.cc:26:
/usr/local/include/libdcp-1.0/dcp/locale_convert.h:52:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
/usr/local/include/libdcp-1.0/dcp/locale_convert.h:46:19: warning: unused parameter ‘x’ [-Wunused-parameter]
locale_convert (Q x, int precision = 16, bool fixed = false)
^
/usr/local/include/libdcp-1.0/dcp/locale_convert.h:46:38: warning: unused parameter ‘precision’ [-Wunused-parameter]
locale_convert (Q x, int precision = 16, bool fixed = false)
^~
/usr/local/include/libdcp-1.0/dcp/locale_convert.h:46:55: warning: unused parameter ‘fixed’ [-Wunused-parameter]
locale_convert (Q x, int precision = 16, bool fixed = false)
^~~~~

../src/lib/player.cc: In function ‘void maybe_add_asset(std::__cxx11::list<ReferencedReelAsset>&, boost::shared_ptr<dcp::ReelAsset>, Frame, Frame, DCPTime, int)’:
../src/lib/player.cc:470:39: error: no match for ‘operator+’ (operand types are ‘boost::optional<long int>’ and ‘Frame {aka long int}’)
r->set_entry_point (r->entry_point() + reel_trim_start);
~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/lib/player.cc:470:39: note: candidate: operator+(int, Frame {aka long int}) <built-in>
../src/lib/player.cc:470:39: note: no known conversion for argument 1 from ‘boost::optional<long int>’ to ‘int’
In file included from ../src/lib/rect.h:24:0,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
../src/lib/position.h:49:1: note: candidate: template<class T> Position<T> operator+(const Position<T>&, const Position<T>&)
operator+ (Position<T> const & a, Position<T> const & b)
^~~~~~~~
../src/lib/position.h:49:1: note: template argument deduction/substitution failed:
../src/lib/player.cc:470:41: note: ‘boost::optional<long int>’ is not derived from ‘const Position<T>’
r->set_entry_point (r->entry_point() + reel_trim_start);
^~~~~~~~~~~~~~~
../src/lib/player.cc:471:33: error: no match for ‘operator-’ (operand types are ‘boost::optional<long int>’ and ‘Frame {aka long int}’)
r->set_duration (r->duration() - reel_trim_start - reel_trim_end);
~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../src/lib/player.cc:471:33: note: candidate: operator-(int, Frame {aka long int}) <built-in>
../src/lib/player.cc:471:33: note: no known conversion for argument 1 from ‘boost::optional<long int>’ to ‘int’
In file included from ../src/lib/rect.h:24:0,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
../src/lib/position.h:56:1: note: candidate: template<class T> Position<T> operator-(const Position<T>&, const Position<T>&)
operator- (Position<T> const & a, Position<T> const & b)
^~~~~~~~
../src/lib/position.h:56:1: note: template argument deduction/substitution failed:
../src/lib/player.cc:471:35: note: ‘boost::optional<long int>’ is not derived from ‘const Position<T>’
r->set_duration (r->duration() - reel_trim_start - reel_trim_end);
^~~~~~~~~~~~~~~
../src/lib/player.cc:472:20: error: no match for ‘operator>’ (operand types are ‘boost::optional<long int>’ and ‘int’)
if (r->duration() > 0) {
~~~~~~~~~~~~~~^~~
../src/lib/player.cc:472:20: note: candidate: operator>(int, int) <built-in>
../src/lib/player.cc:472:20: note: no known conversion for argument 1 from ‘boost::optional<long int>’ to ‘int’
In file included from /usr/include/boost/variant/variant.hpp:42:0,
from /usr/include/boost/signals2/slot_base.hpp:21,
from /usr/include/boost/signals2/detail/tracked_objects_visitor.hpp:18,
from /usr/include/boost/signals2/slot.hpp:22,
from /usr/include/boost/signals2/connection.hpp:24,
from /usr/include/boost/signals2/signal.hpp:22,
from /usr/include/boost/signals2.hpp:19,
from ../src/lib/film.h:37,
from ../src/lib/player.h:27,
from ../src/lib/player.cc:21:
/usr/include/boost/blank.hpp:83:13: note: candidate: bool boost::operator>(const boost::blank&, const boost::blank&)
inline bool operator>(const blank&, const blank&)
^~~~~~~~
/usr/include/boost/blank.hpp:83:13: note: no known conversion for argument 1 from ‘boost::optional<long int>’ to ‘const boost::blank&’
In file included from /usr/include/boost/lexical_cast/detail/converter_lexical.hpp:50:0,
from /usr/include/boost/lexical_cast/try_lexical_convert.hpp:42,
from /usr/include/boost/lexical_cast.hpp:32,
from /usr/include/boost/date_time/string_parse_tree.hpp:13,
from /usr/include/boost/date_time/period_parser.hpp:14,
from /usr/include/boost/date_time/date_facet.hpp:23,
from /usr/include/boost/date_time/gregorian/gregorian_io.hpp:16,
from /usr/include/boost/date_time/gregorian/gregorian.hpp:31,
from ../src/lib/util.h:36,
from ../src/lib/film.h:29,
from ../src/lib/player.h:27,
from ../src/lib/player.cc:21:
/usr/include/boost/array.hpp:336:10: note: candidate: template<class T, long unsigned int N> bool boost::operator>(const boost::array<T, N>&, const boost::array<T, N>&)
bool operator> (const array<T,N>& x, const array<T,N>& y) {
^~~~~~~~
/usr/include/boost/array.hpp:336:10: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: ‘boost::optional<long int>’ is not derived from ‘const boost::array<T, N>’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/algorithm/string/erase.hpp:16:0,
from /usr/local/include/libcxml/cxml.h:27,
from /usr/local/include/libdcp-1.0/dcp/types.h:41,
from /usr/local/include/libdcp-1.0/dcp/subtitle_string.h:41,
from ../src/lib/string_text.h:24,
from ../src/lib/player_text.h:26,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/range/iterator_range_core.hpp:723:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator>(const boost::iterator_range<T>&, const ForwardRange&)
operator>( const iterator_range<IteratorT>& l, const ForwardRange& r )
^~~~~~~~
/usr/include/boost/range/iterator_range_core.hpp:723:9: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: ‘boost::optional<long int>’ is not derived from ‘const boost::iterator_range<T>’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/algorithm/string/erase.hpp:16:0,
from /usr/local/include/libcxml/cxml.h:27,
from /usr/local/include/libdcp-1.0/dcp/types.h:41,
from /usr/local/include/libdcp-1.0/dcp/subtitle_string.h:41,
from ../src/lib/string_text.h:24,
from ../src/lib/player_text.h:26,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/range/iterator_range_core.hpp:713:9: note: candidate: template<class Iterator1T, class Iterator2T> bool boost::operator>(const boost::iterator_range<T>&, const boost::iterator_range<Iterator2T>&)
operator>( const iterator_range<Iterator1T>& l, const iterator_range<Iterator2T>& r )
^~~~~~~~
/usr/include/boost/range/iterator_range_core.hpp:713:9: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: ‘boost::optional<long int>’ is not derived from ‘const boost::iterator_range<T>’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/algorithm/string/erase.hpp:16:0,
from /usr/local/include/libcxml/cxml.h:27,
from /usr/local/include/libdcp-1.0/dcp/types.h:41,
from /usr/local/include/libdcp-1.0/dcp/subtitle_string.h:41,
from ../src/lib/string_text.h:24,
from ../src/lib/player_text.h:26,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/range/iterator_range_core.hpp:624:9: note: candidate: template<class IteratorT, class ForwardRange> typename boost::enable_if<boost::mpl::not_<boost::is_base_and_derived<boost::iterator_range_detail::iterator_range_tag, ForwardRange> >, bool>::type boost::operator>(const ForwardRange&, const boost::iterator_range<T>&)
operator>( const ForwardRange& l, const iterator_range<IteratorT>& r )
^~~~~~~~
/usr/include/boost/range/iterator_range_core.hpp:624:9: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: mismatched types ‘const boost::iterator_range<T>’ and ‘int’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/optional/optional.hpp:1382:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/optional/detail/optional_relops.hpp:180:6: note: candidate: template<class T> bool boost::operator>(boost::none_t, const boost::optional<T>&)
bool operator > ( none_t x, optional<T> const& y )
^~~~~~~~
/usr/include/boost/optional/detail/optional_relops.hpp:180:6: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: mismatched types ‘const boost::optional<T>’ and ‘int’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/optional/optional.hpp:1382:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/optional/detail/optional_relops.hpp:146:6: note: candidate: template<class T> bool boost::operator>(const boost::optional<T>&, boost::none_t)
bool operator > ( optional<T> const& x, none_t y )
^~~~~~~~
/usr/include/boost/optional/detail/optional_relops.hpp:146:6: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: cannot convert ‘0’ (type ‘int’) to type ‘boost::none_t’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/optional/optional.hpp:1382:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/optional/detail/optional_relops.hpp:111:6: note: candidate: template<class T> bool boost::operator>(const T&, const boost::optional<T>&)
bool operator > ( T const& x, optional<T> const& y )
^~~~~~~~
/usr/include/boost/optional/detail/optional_relops.hpp:111:6: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: mismatched types ‘const boost::optional<T>’ and ‘int’
if (r->duration() > 0) {
^
In file included from /usr/include/boost/optional/optional.hpp:1382:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/optional/detail/optional_relops.hpp:77:6: note: candidate: template<class T> bool boost::operator>(const boost::optional<T>&, const T&)
bool operator > ( optional<T> const& x, T const& y )
^~~~~~~~
/usr/include/boost/optional/detail/optional_relops.hpp:77:6: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: deduced conflicting types for parameter ‘const T’ (‘long int’ and ‘int’)
if (r->duration() > 0) {
^
In file included from /usr/include/boost/optional/optional.hpp:1382:0,
from /usr/include/boost/optional.hpp:15,
from ../src/lib/rect.h:25,
from ../src/lib/bitmap_text.h:24,
from ../src/lib/player_text.h:24,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
/usr/include/boost/optional/detail/optional_relops.hpp:43:6: note: candidate: template<class T> bool boost::operator>(const boost::optional<T>&, const boost::optional<T>&)
bool operator > ( optional<T> const& x, optional<T> const& y )
^~~~~~~~
/usr/include/boost/optional/detail/optional_relops.hpp:43:6: note: template argument deduction/substitution failed:
../src/lib/player.cc:472:22: note: mismatched types ‘const boost::optional<T>’ and ‘int’
if (r->duration() > 0) {
^
../src/lib/player.cc:474:93: error: no matching function for call to ‘Time<DCPTimeDifferentiator, ContentTimeDifferentiator>::from_frames(boost::optional<long int>, const int&)’
ReferencedReelAsset(r, DCPTimePeriod(from, from + DCPTime::from_frames(r->duration(), ffr)))
^
In file included from ../src/lib/player_text.h:25:0,
from ../src/lib/player.h:24,
from ../src/lib/player.cc:21:
../src/lib/dcpomatic_time.h:211:20: note: candidate: template<class T> static Time<S, O> Time<S, O>::from_frames(int64_t, T) [with T = T; S = DCPTimeDifferentiator; O = ContentTimeDifferentiator]
static Time<S, O> from_frames (int64_t f, T r) {
^~~~~~~~~~~
../src/lib/dcpomatic_time.h:211:20: note: template argument deduction/substitution failed:
../src/lib/player.cc:474:86: note: cannot convert ‘dcp::ReelAsset::duration() const()’ (type ‘boost::optional<long int>’) to type ‘int64_t {aka long int}’
ReferencedReelAsset(r, DCPTimePeriod(from, from + DCPTime::from_frames(r->duration(), ffr)))
~~~~~~~~~~~^~
../src/lib/player.cc: In member function ‘std::__cxx11::list<ReferencedReelAsset> Player::get_reel_assets()’:
../src/lib/player.cc:511:20: error: no match for ‘operator+=’ (operand types are ‘int64_t {aka long int}’ and ‘boost::optional<long int>’)
offset_from_end += k->main_picture()->duration();
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/lib/player.cc:511:20: note: candidate: operator+=(int64_t& {aka long int&}, int) <built-in>
../src/lib/player.cc:511:20: note: no known conversion for argument 2 from ‘boost::optional<long int>’ to ‘int’
../src/lib/player.cc:517:62: error: cannot convert ‘boost::optional<long int>’ to ‘const int64_t {aka const long int}’ in initialization
int64_t const reel_duration = k->main_picture()->duration();
^
../src/lib/player.cc: At global scope:
../src/lib/player.cc:467:1: warning: ‘void maybe_add_asset(std::__cxx11::list<ReferencedReelAsset>&, boost::shared_ptr<dcp::ReelAsset>, Frame, Frame, DCPTime, int)’ defined but not used [-Wunused-function]
maybe_add_asset (list<ReferencedReelAsset>& a, shared_ptr<dcp::ReelAsset> r, Frame reel_trim_start, Frame reel_trim_end, DCPTime from, int const ffr)
^~~~~~~~~~~~~~~

Waf: Leaving directory `/home/gskim/Downloads/dcpomatic/lib/dcpomatic/build'
Build failed
-> task in 'libdcpomatic2' failed with exit status 1 (run with -v to display more information)












what is this?....

ubuntu x64 / 18.04 LTS

libasdcp-cth : 0.1.5devel
libcxml : 0.16.1devel
libdcp : 1.6.4devel
libsub : 1.4.3devel
locked_sstream : 0.0.6
openjpeg2 : 3.10.2
wxWidgets : 3.0.4
Post Reply