X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fvideo_content.cc;h=cef543387dcbb8fda7fcbae9dc201e9794a2cfa1;hp=75d94510ad3d97a7e1ab9e5ce61d96fc9c8f9124;hb=3828baf56467224f5d44049bf1e7a7ed11f43a05;hpb=cc76b517f6a74f813ae38137bdc88ff3bafa6dd9 diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index 75d94510a..cef543387 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -1,19 +1,20 @@ /* Copyright (C) 2013-2016 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic 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, + DCP-o-matic 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. + along with DCP-o-matic. If not, see . */ @@ -39,7 +40,7 @@ #include "i18n.h" -#define LOG_GENERAL(...) film->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL); +#define LOG_GENERAL(...) _parent->film()->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_GENERAL); int const VideoContentProperty::SIZE = 0; int const VideoContentProperty::FRAME_TYPE = 1; @@ -63,8 +64,8 @@ using boost::shared_ptr; using boost::optional; using boost::dynamic_pointer_cast; -VideoContent::VideoContent (Content* parent, shared_ptr film) - : ContentPart (parent, film) +VideoContent::VideoContent (Content* parent) + : ContentPart (parent) , _length (0) , _frame_type (VIDEO_FRAME_TYPE_2D) , _scale (VideoContentScale (Ratio::from_id ("178"))) @@ -76,17 +77,17 @@ VideoContent::VideoContent (Content* parent, shared_ptr film) } shared_ptr -VideoContent::from_xml (Content* parent, shared_ptr film, cxml::ConstNodePtr node, int version) +VideoContent::from_xml (Content* parent, cxml::ConstNodePtr node, int version) { if (!node->optional_number_child ("VideoWidth")) { return shared_ptr (); } - return shared_ptr (new VideoContent (parent, film, node, version)); + return shared_ptr (new VideoContent (parent, node, version)); } -VideoContent::VideoContent (Content* parent, shared_ptr film, cxml::ConstNodePtr node, int version) - : ContentPart (parent, film) +VideoContent::VideoContent (Content* parent, cxml::ConstNodePtr node, int version) + : ContentPart (parent) { _size.width = node->number_child ("VideoWidth"); _size.height = node->number_child ("VideoHeight"); @@ -129,8 +130,8 @@ VideoContent::VideoContent (Content* parent, shared_ptr film, cxml:: } } -VideoContent::VideoContent (Content* parent, shared_ptr film, vector > c) - : ContentPart (parent, film) +VideoContent::VideoContent (Content* parent, vector > c) + : ContentPart (parent) , _length (0) , _yuv (false) { @@ -222,8 +223,6 @@ VideoContent::take_from_examiner (shared_ptr d) ); } - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); LOG_GENERAL ("Video length obtained from header as %1 frames", _length); if (d->video_frame_rate()) { @@ -301,8 +300,7 @@ VideoContent::size_after_crop () const void VideoContent::scale_and_crop_to_fit_width () { - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); + shared_ptr film = _parent->film (); set_scale (VideoContentScale (film->container ())); int const crop = max (0, int (size().height - double (film->frame_size().height) * size().width / film->frame_size().width)); @@ -315,8 +313,7 @@ VideoContent::scale_and_crop_to_fit_width () void VideoContent::scale_and_crop_to_fit_height () { - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); + shared_ptr film = _parent->film (); set_scale (VideoContentScale (film->container ())); int const crop = max (0, int (size().width - double (film->frame_size().width) * size().height / film->frame_size().height)); @@ -332,8 +329,7 @@ VideoContent::fade (Frame f) const { DCPOMATIC_ASSERT (f >= 0); - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); + shared_ptr film = _parent->film (); double const vfr = _parent->active_video_frame_rate (); @@ -384,8 +380,7 @@ VideoContent::processing_description () const d << " (" << fixed << setprecision(2) << cropped.ratio () << ":1)\n"; } - shared_ptr film = _film.lock (); - DCPOMATIC_ASSERT (film); + shared_ptr film = _parent->film (); dcp::Size const container_size = film->frame_size (); dcp::Size const scaled = scale().size (shared_from_this(), container_size, container_size);