Various fixes.
[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         VideoContent (VideoContent const &);
23
24         void as_xml (xmlpp::Node *) const;
25
26         ContentVideoFrame video_length () const {
27                 boost::mutex::scoped_lock lm (_mutex);
28                 return _video_length;
29         }
30
31         libdcp::Size video_size () const {
32                 boost::mutex::scoped_lock lm (_mutex);
33                 return _video_size;
34         }
35         
36         float video_frame_rate () const {
37                 boost::mutex::scoped_lock lm (_mutex);
38                 return _video_frame_rate;
39         }
40
41 protected:
42         void take_from_video_decoder (boost::shared_ptr<VideoDecoder>);
43
44         ContentVideoFrame _video_length;
45
46 private:
47         libdcp::Size _video_size;
48         float _video_frame_rate;
49 };
50
51 #endif