NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ivideo_plugin.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2014 NVIDIA Corporation. All rights reserved.
3 // ****************************************************************************
6 // ****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IVIDEO_PLUGIN_H
9 #define MI_NEURAYLIB_IVIDEO_PLUGIN_H
10 
11 #include <mi/base/types.h>
12 #include <mi/base/plugin.h>
14 
15 namespace mi {
16 
17 namespace neuraylib { class ICanvas; class IPlugin_api; }
18 
23 #define MI_NEURAY_VIDEO_PLUGIN_TYPE "video v4"
25 
26 class IBuffer;
27 
29 class IVideo_data : public
30  mi::base::Interface_declare<0xbdd686fa,0x3e37,0x43aa,0xbd,0xe6,0x7b,0xab,0x9f,0x3e,0x1c,0xfc>
31 {
32 public:
35  virtual Uint8* get_data() = 0;
36 
39  virtual Size get_data_size() const = 0;
40 
43  virtual bool is_key_frame() const = 0;
44 };
45 
46 
52 class IVideo_encoder : public
53  mi::base::Interface_declare<0x572ef6ad,0xbc37,0x417d,0xbf,0x7c,0x17,0x17,0x4e,0x96,0xa3,0x06>
54 {
55 public:
65  virtual bool init(
66  Uint32 resolution_x, Uint32 resolution_y,
67  IVideo_data** out) = 0;
68 
75  virtual bool set_parameter(const char* name, const char* value) = 0;
76 
81  virtual const char* get_parameter(const char* name) = 0;
82 
92  virtual const char* get_supported_type(Uint32 index) const = 0;
93 
101  virtual bool encode_canvas(const neuraylib::ICanvas* canvas, IVideo_data** out) = 0;
102 
109  virtual bool close(IVideo_data** out) = 0;
110 
112  virtual const char* get_identifier() const = 0;
113 };
114 
120 class IVideo_decoder : public
121  mi::base::Interface_declare<0xe7fa52c7,0xd881,0x4a29,0x9e,0x82,0x3b,0xdd,0xa6,0xcf,0x14,0xc8>
122 {
123 public:
134  virtual bool init(IBuffer* data, bool* need_more_data) = 0;
135 
139  virtual Uint32 get_encoded_width() = 0;
140 
144  virtual Uint32 get_encoded_heigth() = 0;
145 
147  virtual const char* get_format_parameter(const char* parameter) = 0;
148 
158  virtual const char* get_supported_type(Uint32 index) const = 0;
159 
172  virtual bool decode_canvas(neuraylib::ICanvas* canvas, IBuffer* data,
173  bool* need_more_data, bool* buffered_frames) = 0;
174 
178  virtual bool close() = 0;
179 
181  virtual const char* get_identifier() const = 0;
182 
189  virtual bool set_parameter(const char* name, const char* value) = 0;
190 
195  virtual const char* get_parameter(const char* name) = 0;
196 };
197 
198 
203 {
204 public:
209  virtual bool init( neuraylib::IPlugin_api* plugin_api) = 0;
210 
215  virtual bool exit( neuraylib::IPlugin_api* plugin_api) = 0;
216 
222  virtual const char* get_name() const = 0;
223 
225  virtual IVideo_encoder* create_video_encoder() const = 0;
226 
228  virtual IVideo_decoder* create_video_decoder() const = 0;
229 };
230  // end group mi_neuray_plugins
232 
233 } // namespace mi
234 
235 #endif // MI_NEURAYLIB_IVIDEO_PLUGIN_H