7c9db890aa175ed6b85655b38fe7c199f8cfbe85
[dcpomatic.git] / src / lib / video_content.h
1 #ifndef DVDOMATIC_VIDEO_CONTENT_H
2 #define DVDOMATIC_VIDEO_CONTENT_H
3
4 #include "content.h"
5 #include "util.h"
6
7 class VideoDecoder;
8
9 class VideoContentProperty
10 {
11 public:
12         static int const VIDEO_LENGTH;
13         static int const VIDEO_SIZE;
14         static int const VIDEO_FRAME_RATE;
15 };
16
17 class VideoContent : public virtual Content
18 {
19 public:
20         VideoContent (boost::filesystem::path);
21         VideoContent (boost::shared_ptr<const cxml::Node>);
22
23         void as_xml (xmlpp::Node *) const;
24
25         ContentVideoFrame video_length () const {
26                 boost::mutex::scoped_lock lm (_mutex);
27                 return _video_length;
28         }
29
30         libdcp::Size video_size () const {
31                 boost::mutex::scoped_lock lm (_mutex);
32                 return _video_size;
33         }
34         
35         float video_frame_rate () const {
36                 boost::mutex::scoped_lock lm (_mutex);
37                 return _video_frame_rate;
38         }
39
40 protected:
41         void take_from_video_decoder (boost::shared_ptr<VideoDecoder>);
42
43         ContentVideoFrame _video_length;
44
45 private:
46         libdcp::Size _video_size;
47         float _video_frame_rate;
48 };
49
50 #endif