*/\r
#pragma once\r
\r
-#include "gpu/host_buffer.h" \r
-\r
#include <common/memory/safe_ptr.h>\r
\r
+#include <core/mixer/audio/audio_mixer.h>\r
+\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
\r
+#include <cstdint>\r
#include <memory>\r
#include <vector>\r
\r
namespace caspar { namespace core {\r
\r
+class host_buffer;\r
+class ogl_device;\r
+\r
class read_frame : boost::noncopyable\r
{\r
- read_frame(){}\r
public:\r
- read_frame(safe_ptr<const host_buffer>&& image_data, std::vector<short>&& audio_data);\r
+ read_frame();\r
+ read_frame(ogl_device& ogl, size_t size, safe_ptr<host_buffer>&& image_data, audio_buffer&& audio_data);\r
\r
- virtual const boost::iterator_range<const unsigned char*> image_data() const;\r
- virtual const boost::iterator_range<const short*> audio_data() const;\r
- \r
- static safe_ptr<const read_frame> empty()\r
- {\r
- struct empty : public read_frame\r
- { \r
- virtual const boost::iterator_range<const unsigned char*> image_data() const {return boost::iterator_range<const unsigned char*>();}\r
- virtual const boost::iterator_range<const short*> audio_data() const {return boost::iterator_range<const short*>();}\r
- };\r
- static safe_ptr<const empty> frame;\r
- return frame;\r
- }\r
+ virtual const boost::iterator_range<const uint8_t*> image_data();\r
+ virtual const boost::iterator_range<const int32_t*> audio_data();\r
+\r
+ virtual size_t image_size() const;\r
+ \r
private:\r
struct implementation;\r
std::shared_ptr<implementation> impl_;\r