3 #include <boost/noncopyable.hpp>
4 #include <boost/range.hpp>
8 #include "frame/pixel_format.h"
9 #include "video_format.h"
11 namespace caspar { namespace core {
13 struct data_frame : boost::noncopyable
19 virtual const struct pixel_format_desc& get_pixel_format_desc() const = 0;
21 virtual const boost::iterator_range<const uint8_t*> image_data() const = 0;
22 virtual const boost::iterator_range<const int32_t*> audio_data() const = 0;
24 virtual const boost::iterator_range<uint8_t*> image_data() = 0;
25 virtual const boost::iterator_range<int32_t*> audio_data() = 0;
27 virtual double get_frame_rate() const = 0;
28 virtual field_mode get_field_mode() const = 0;
30 virtual int width() const = 0;
31 virtual int height() const = 0;
33 static safe_ptr<frame> empty()
35 struct empty_frame : public frame
37 virtual const struct video_format_desc& get_video_format_desc() const
39 static video_format_desc invalid;
42 virtual const struct pixel_format_desc& get_pixel_format_desc() const
44 static pixel_format_desc invalid;
47 virtual const boost::iterator_range<const uint8_t*> image_data() const
49 return boost::iterator_range<const uint8_t*>();
51 virtual const boost::iterator_range<const int32_t*> audio_data() const
53 return boost::iterator_range<const int32_t*>();
55 const boost::iterator_range<uint8_t*> image_data()
57 return boost::iterator_range<uint8_t*>();
59 const boost::iterator_range<int32_t*> audio_data()
61 return boost::iterator_range<int32_t*>();
63 virtual double get_frame_rate() const
67 virtual field_mode get_field_mode() const
69 return field_mode::empty;
71 virtual int width() const
75 virtual int height() const
81 static safe_ptr<empty_frame> empty;