*/
-#include <iomanip>
-#include <libcxml/cxml.h>
-#include <dcp/colour_matrix.h>
-#include <dcp/raw_convert.h>
#include "video_content.h"
#include "video_examiner.h"
#include "compose.hpp"
#include "frame_rate_change.h"
#include "log.h"
#include "safe_stringstream.h"
+#include <libcxml/cxml.h>
+#include <dcp/colour_matrix.h>
+#include <dcp/raw_convert.h>
+#include <iomanip>
#include "i18n.h"
, _video_length (0)
{
shared_ptr<VideoContent> ref = dynamic_pointer_cast<VideoContent> (c[0]);
- assert (ref);
+ DCPOMATIC_ASSERT (ref);
for (size_t i = 0; i < c.size(); ++i) {
shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (c[i]);
{
{
boost::mutex::scoped_lock lm (_mutex);
- _colour_conversion = PresetColourConversion (_("sRGB"), 2.4, true, dcp::colour_matrix::srgb_to_xyz, 2.6).conversion;
+ _colour_conversion = ColourConversion (dcp::ColourConversion::srgb_to_xyz);
}
if (signal) {
{
/* These examiner calls could call other content methods which take a lock on the mutex */
dcp::Size const vs = d->video_size ();
- float const vfr = d->video_frame_rate ();
+ optional<float> const vfr = d->video_frame_rate ();
ContentTime vl = d->video_length ();
optional<float> const ar = d->sample_aspect_ratio ();
{
boost::mutex::scoped_lock lm (_mutex);
_video_size = vs;
- _video_frame_rate = vfr;
+ /* Default video frame rate to 24fps if the examiner doesn't know */
+ _video_frame_rate = vfr.get_value_or (24);
_video_length = vl;
_sample_aspect_ratio = ar;
}
shared_ptr<const Film> film = _film.lock ();
- assert (film);
+ DCPOMATIC_ASSERT (film);
LOG_GENERAL ("Video length obtained from header as %1 frames", _video_length.frames (_video_frame_rate));
signal_changed (VideoContentProperty::VIDEO_SIZE);
signal_changed (ContentProperty::LENGTH);
}
-
-string
-VideoContent::information () const
-{
- if (video_size().width == 0 || video_size().height == 0) {
- return "";
- }
-
- SafeStringStream s;
-
- s << String::compose (
- _("%1x%2 pixels (%3:1)"),
- video_size().width,
- video_size().height,
- setprecision (3), video_size().ratio ()
- );
-
- if (sample_aspect_ratio ()) {
- s << String::compose (_(" sample aspect ratio %1:1"), sample_aspect_ratio().get ());
- }
-
- return s.str ();
-}
-
void
VideoContent::set_left_crop (int c)
{
return dcp::Size (s.width, s.height / 2);
}
- assert (false);
+ DCPOMATIC_ASSERT (false);
}
void
VideoContent::dcp_time_to_content_time (DCPTime t) const
{
shared_ptr<const Film> film = _film.lock ();
- assert (film);
+ DCPOMATIC_ASSERT (film);
return ContentTime (t, FrameRateChange (video_frame_rate(), film->video_frame_rate()));
}
VideoContent::scale_and_crop_to_fit_width ()
{
shared_ptr<const Film> film = _film.lock ();
- assert (film);
+ DCPOMATIC_ASSERT (film);
set_scale (VideoContentScale (film->container ()));
VideoContent::scale_and_crop_to_fit_height ()
{
shared_ptr<const Film> film = _film.lock ();
- assert (film);
+ DCPOMATIC_ASSERT (film);
set_scale (VideoContentScale (film->container ()));
optional<float>
VideoContent::fade (VideoFrame f) const
{
- assert (f >= 0);
+ DCPOMATIC_ASSERT (f >= 0);
if (f < fade_in().frames (video_frame_rate ())) {
return float (f) / _fade_in.frames (video_frame_rate ());
}
shared_ptr<const Film> film = _film.lock ();
- assert (film);
+ DCPOMATIC_ASSERT (film);
dcp::Size const container_size = film->frame_size ();
dcp::Size const scaled = scale().size (dynamic_pointer_cast<const VideoContent> (shared_from_this ()), container_size, container_size, 1);