Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
synthetic-stream.h
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2017 Intel Corporation. All Rights Reserved.
3 
4 #pragma once
5 
6 #include "core/processing.h"
7 #include "image.h"
8 #include "source.h"
9 
10 namespace librealsense
11 {
13  {
14  public:
16  : _actual_source(actual), _c_wrapper(new rs2_source { this })
17  {
18  }
19 
20  frame_interface* allocate_video_frame(std::shared_ptr<stream_profile_interface> stream,
21  frame_interface* original,
22  int new_bpp = 0,
23  int new_width = 0,
24  int new_height = 0,
25  int new_stride = 0,
26  rs2_extension frame_type = RS2_EXTENSION_VIDEO_FRAME) override;
27 
28  frame_interface* allocate_composite_frame(std::vector<frame_holder> frames) override;
29 
30  frame_interface* allocate_points(std::shared_ptr<stream_profile_interface> stream, frame_interface* original) override;
31 
32  void frame_ready(frame_holder result) override;
33 
34  rs2_source* get_c_wrapper() override { return _c_wrapper.get(); }
35 
36  private:
37  frame_source& _actual_source;
38  std::shared_ptr<rs2_source> _c_wrapper;
39  };
40 
42  {
43  public:
45 
46  void set_processing_callback(frame_processor_callback_ptr callback) override;
47  void set_output_callback(frame_callback_ptr callback) override;
48  void invoke(frame_holder frames) override;
49 
50  synthetic_source_interface& get_source() override { return _source_wrapper; }
51 
52  virtual ~processing_block(){_source.flush();}
53  protected:
55  std::mutex _mutex;
58  };
59 }
Definition: options.h:48
synthetic_source(frame_source &actual)
Definition: synthetic-stream.h:15
frame_interface * allocate_points(std::shared_ptr< stream_profile_interface > stream, frame_interface *original) override
Definition: streaming.h:63
std::shared_ptr< rs2_frame_callback > frame_callback_ptr
Definition: types.h:896
Definition: synthetic-stream.h:41
frame_processor_callback_ptr _callback
Definition: synthetic-stream.h:56
rs2_source * get_c_wrapper() override
Definition: synthetic-stream.h:34
Definition: algo.h:16
Definition: processing.h:12
std::shared_ptr< rs2_frame_processor_callback > frame_processor_callback_ptr
Definition: types.h:897
synthetic_source_interface & get_source() override
Definition: synthetic-stream.h:50
void frame_ready(frame_holder result) override
frame_interface * allocate_video_frame(std::shared_ptr< stream_profile_interface > stream, frame_interface *original, int new_bpp=0, int new_width=0, int new_height=0, int new_stride=0, rs2_extension frame_type=RS2_EXTENSION_VIDEO_FRAME) override
frame_interface * allocate_composite_frame(std::vector< frame_holder > frames) override
Definition: rs_types.h:104
virtual ~processing_block()
Definition: synthetic-stream.h:52
std::mutex _mutex
Definition: synthetic-stream.h:55
rs2_extension
Specifies advanced interfaces (capabilities) objects may implement.
Definition: rs_types.h:94
Definition: stream.h:14
Definition: types.h:637
Definition: processing.h:19
synthetic_source _source_wrapper
Definition: synthetic-stream.h:57
Definition: synthetic-stream.h:12
Definition: processing.h:40
frame_source _source
Definition: synthetic-stream.h:54
Definition: source.h:15