X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_content.h;h=d74242ae9c46779801bd4a8415d509610725f8ca;hb=e16c8ed02a0cb1f733a990d75a9de1bf50cf89bd;hp=19b49e926c581168eec493529b91cff94bce5a97;hpb=7ebb57db2013c9e929d44d0e547ab1f27c59cc7f;p=dcpomatic.git diff --git a/src/lib/video_content.h b/src/lib/video_content.h index 19b49e926..d74242ae9 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -1,30 +1,54 @@ -#ifndef DVDOMATIC_VIDEO_CONTENT_H -#define DVDOMATIC_VIDEO_CONTENT_H +/* + Copyright (C) 2013 Carl Hetherington + + 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. + +*/ + +#ifndef DCPOMATIC_VIDEO_CONTENT_H +#define DCPOMATIC_VIDEO_CONTENT_H #include "content.h" -#include "util.h" -class VideoDecoder; +class VideoExaminer; +class Ratio; class VideoContentProperty { public: - static int const VIDEO_LENGTH; static int const VIDEO_SIZE; static int const VIDEO_FRAME_RATE; + static int const VIDEO_CROP; + static int const VIDEO_RATIO; }; class VideoContent : public virtual Content { public: - VideoContent (boost::filesystem::path); - VideoContent (boost::shared_ptr); + typedef int Frame; + + VideoContent (boost::shared_ptr, Time, VideoContent::Frame); + VideoContent (boost::shared_ptr, boost::filesystem::path); + VideoContent (boost::shared_ptr, boost::shared_ptr); VideoContent (VideoContent const &); void as_xml (xmlpp::Node *) const; virtual std::string information () const; + virtual std::string identifier () const; - ContentVideoFrame video_length () const { + VideoContent::Frame video_length () const { boost::mutex::scoped_lock lm (_mutex); return _video_length; } @@ -39,14 +63,38 @@ public: return _video_frame_rate; } + void set_left_crop (int); + void set_right_crop (int); + void set_top_crop (int); + void set_bottom_crop (int); + + Crop crop () const { + boost::mutex::scoped_lock lm (_mutex); + return _crop; + } + + void set_ratio (Ratio const *); + + Ratio const * ratio () const { + boost::mutex::scoped_lock lm (_mutex); + return _ratio; + } + protected: - void take_from_video_decoder (boost::shared_ptr); + void take_from_video_examiner (boost::shared_ptr); - ContentVideoFrame _video_length; + VideoContent::Frame _video_length; private: + friend class ffmpeg_pts_offset_test; + friend class best_dcp_frame_rate_test_single; + friend class best_dcp_frame_rate_test_double; + friend class audio_sampling_rate_test; + libdcp::Size _video_size; float _video_frame_rate; + Crop _crop; + Ratio const * _ratio; }; #endif