X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_content.h;h=372cab3bd3c48ab5874188800cf7b41e541ebea0;hb=d39bfb9a1360a83f3451b79d01fdc4f465ef21d3;hp=219130668271221d8e24902a927dafd25fb8f752;hpb=127672223cca569986e35c91265e269ed5a6561c;p=dcpomatic.git diff --git a/src/lib/video_content.h b/src/lib/video_content.h index 219130668..372cab3bd 100644 --- a/src/lib/video_content.h +++ b/src/lib/video_content.h @@ -1,25 +1,53 @@ -#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); + 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 &); - ContentVideoFrame video_length () const { + void as_xml (xmlpp::Node *) const; + virtual std::string information () const; + + VideoContent::Frame video_length () const { boost::mutex::scoped_lock lm (_mutex); return _video_length; } @@ -34,14 +62,34 @@ public: return _video_frame_rate; } + void set_crop (Crop); + 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: libdcp::Size _video_size; float _video_frame_rate; + Crop _crop; + Ratio const * _ratio; }; #endif