-#pragma once\r
-\r
-#include <boost/noncopyable.hpp>\r
-#include <boost/range.hpp>\r
-\r
-#include <stdint.h>\r
-\r
-#include "frame/pixel_format.h"\r
-#include "video_format.h"\r
-\r
-namespace caspar { namespace core {\r
-\r
-struct data_frame : boost::noncopyable\r
-{\r
- virtual ~frame()\r
- {\r
- }\r
-\r
- virtual const struct pixel_format_desc& get_pixel_format_desc() const = 0;\r
-\r
- virtual const boost::iterator_range<const uint8_t*> image_data() const = 0;\r
- virtual const boost::iterator_range<const int32_t*> audio_data() const = 0;\r
- \r
- virtual const boost::iterator_range<uint8_t*> image_data() = 0;\r
- virtual const boost::iterator_range<int32_t*> audio_data() = 0;\r
-\r
- virtual double get_frame_rate() const = 0;\r
- virtual field_mode get_field_mode() const = 0;\r
-\r
- virtual int width() const = 0;\r
- virtual int height() const = 0;\r
-\r
- static safe_ptr<frame> empty()\r
- {\r
- struct empty_frame : public frame\r
- {\r
- virtual const struct video_format_desc& get_video_format_desc() const\r
- {\r
- static video_format_desc invalid;\r
- return invalid;\r
- }\r
- virtual const struct pixel_format_desc& get_pixel_format_desc() const \r
- {\r
- static pixel_format_desc invalid;\r
- return invalid;\r
- }\r
- virtual const boost::iterator_range<const uint8_t*> image_data() const \r
- {\r
- return boost::iterator_range<const uint8_t*>();\r
- }\r
- virtual const boost::iterator_range<const int32_t*> audio_data() const \r
- {\r
- return boost::iterator_range<const int32_t*>();\r
- }\r
- const boost::iterator_range<uint8_t*> image_data()\r
- {\r
- return boost::iterator_range<uint8_t*>();\r
- }\r
- const boost::iterator_range<int32_t*> audio_data()\r
- {\r
- return boost::iterator_range<int32_t*>();\r
- }\r
- virtual double get_frame_rate() const\r
- {\r
- return 0.0;\r
- }\r
- virtual field_mode get_field_mode() const\r
- {\r
- return field_mode::empty;\r
- }\r
- virtual int width() const\r
- {\r
- return 0;\r
- }\r
- virtual int height() const\r
- {\r
- return 0;\r
- }\r
- };\r
-\r
- static safe_ptr<empty_frame> empty;\r
- return empty;\r
- }\r
-};\r
-\r
+#pragma once
+
+#include <boost/noncopyable.hpp>
+#include <boost/range.hpp>
+
+#include <stdint.h>
+
+#include "frame/pixel_format.h"
+#include "video_format.h"
+
+namespace caspar { namespace core {
+
+struct data_frame : boost::noncopyable
+{
+ virtual ~frame()
+ {
+ }
+
+ virtual const struct pixel_format_desc& get_pixel_format_desc() const = 0;
+
+ virtual const boost::iterator_range<const uint8_t*> image_data() const = 0;
+ virtual const boost::iterator_range<const int32_t*> audio_data() const = 0;
+
+ virtual const boost::iterator_range<uint8_t*> image_data() = 0;
+ virtual const boost::iterator_range<int32_t*> audio_data() = 0;
+
+ virtual double get_frame_rate() const = 0;
+ virtual field_mode get_field_mode() const = 0;
+
+ virtual int width() const = 0;
+ virtual int height() const = 0;
+
+ static safe_ptr<frame> empty()
+ {
+ struct empty_frame : public frame
+ {
+ virtual const struct video_format_desc& get_video_format_desc() const
+ {
+ static video_format_desc invalid;
+ return invalid;
+ }
+ virtual const struct pixel_format_desc& get_pixel_format_desc() const
+ {
+ static pixel_format_desc invalid;
+ return invalid;
+ }
+ virtual const boost::iterator_range<const uint8_t*> image_data() const
+ {
+ return boost::iterator_range<const uint8_t*>();
+ }
+ virtual const boost::iterator_range<const int32_t*> audio_data() const
+ {
+ return boost::iterator_range<const int32_t*>();
+ }
+ const boost::iterator_range<uint8_t*> image_data()
+ {
+ return boost::iterator_range<uint8_t*>();
+ }
+ const boost::iterator_range<int32_t*> audio_data()
+ {
+ return boost::iterator_range<int32_t*>();
+ }
+ virtual double get_frame_rate() const
+ {
+ return 0.0;
+ }
+ virtual field_mode get_field_mode() const
+ {
+ return field_mode::empty;
+ }
+ virtual int width() const
+ {
+ return 0;
+ }
+ virtual int height() const
+ {
+ return 0;
+ }
+ };
+
+ static safe_ptr<empty_frame> empty;
+ return empty;
+ }
+};
+
}}
\ No newline at end of file