Iray SDK API nvidia_logo_transpbg.gif Up
ivideo_plugin.h
Go to the documentation of this file.
1/***************************************************************************************************
2 * Copyright 2025 NVIDIA Corporation. All rights reserved.
3 **************************************************************************************************/
6
7#ifndef MI_NEURAYLIB_IVIDEO_PLUGIN_H
8#define MI_NEURAYLIB_IVIDEO_PLUGIN_H
9
10#include <mi/base/types.h>
11#include <mi/base/plugin.h>
13
14namespace mi {
15
16namespace neuraylib {
17
18class IBuffer;
19class ICanvas;
20class ICanvas_cuda;
21class IPlugin_api;
22
28#define MI_NEURAY_VIDEO_PLUGIN_TYPE "video v34"
29
31class IVideo_data : public
32 mi::base::Interface_declare<0xbdd686fa,0x3e37,0x43aa,0xbd,0xe6,0x7b,0xab,0x9f,0x3e,0x1c,0xfc>
33{
34public:
37 virtual Uint8* get_data() = 0;
38
41 virtual Size get_data_size() const = 0;
42
45 virtual bool is_key_frame() const = 0;
46};
47
48
54class IVideo_encoder : public
55 mi::base::Interface_declare<0x572ef6ad,0xbc37,0x417d,0xbf,0x7c,0x17,0x17,0x4e,0x96,0xa3,0x06>
56{
57public:
73 virtual Sint32 init(
74 Uint32 resolution_x, Uint32 resolution_y,
75 IVideo_data** out) = 0;
76
83 virtual bool set_parameter(const char* name, const char* value) = 0;
84
89 virtual const char* get_parameter(const char* name) = 0;
90
100 virtual const char* get_supported_type(Uint32 index) const = 0;
101
115 virtual Sint32 encode_canvas(const ICanvas* canvas, IVideo_data** out) = 0;
116
131 virtual Sint32 encode_canvas(const ICanvas_cuda* canvas, IVideo_data** out) = 0;
132
143 virtual Sint32 close(IVideo_data** out) = 0;
144
146 virtual const char* get_identifier() const = 0;
147};
148
154class IVideo_decoder : public
155 mi::base::Interface_declare<0xe7fa52c7,0xd881,0x4a29,0x9e,0x82,0x3b,0xdd,0xa6,0xcf,0x14,0xc8>
156{
157public:
175 virtual Sint32 init( IBuffer* data) = 0;
176
180
184
186 virtual const char* get_format_parameter( const char* parameter) = 0;
187
197 virtual const char* get_supported_type( Uint32 index) const = 0;
198
216 virtual Sint32 decode_canvas(neuraylib::ICanvas* canvas, IBuffer* data) = 0;
217
223 virtual Sint32 close() = 0;
224
226 virtual const char* get_identifier() const = 0;
227
234 virtual bool set_parameter( const char* name, const char* value) = 0;
235
240 virtual const char* get_parameter( const char* name) = 0;
241};
242
243
248{
249public:
255 virtual const char* get_name() const = 0;
256
261 virtual bool init( IPlugin_api* plugin_api) = 0;
262
267 virtual bool exit( IPlugin_api* plugin_api) = 0;
268
271
274};
275
278 mi::base::Interface_declare<0x79be801,0x17a7,0x48d8,0x8a,0x4,0x73,0xd4,0x35,0x6d,0x2,0x28>
279{
280public:
284 virtual IVideo_encoder* create_video_encoder( const char* codec_name) = 0;
285
287 virtual IVideo_decoder* create_video_decoder( const char* codec_name) = 0;
288};
289 // end group mi_neuray_plugins
291
292} // namespace neuraylib
293
294} // namespace mi
295
296#endif // MI_NEURAYLIB_IVIDEO_PLUGIN_H
Mixin class template for deriving new interface declarations.
Definition: interface_declare.h:43
The abstract base class for plugins.
Definition: plugin.h:34
Abstract interface for a simple buffer with binary data.
Definition: ibuffer.h:25
Abstract interface for a canvas with CUDA device memory storage.
Definition: icanvas_cuda.h:28
Abstract interface for a canvas represented by a rectangular array of tiles.
Definition: icanvas.h:89
This abstract interface gives access to the Iray SDK API to plugins.
Definition: iplugin_api.h:27
API component that allow creation of installed video encoders and decoders.
Definition: ivideo_plugin.h:279
virtual IVideo_decoder * create_video_decoder(const char *codec_name)=0
Returns a video decoder for the requested codec, or nullptr if unsupported.
virtual IVideo_encoder * create_video_encoder(const char *codec_name)=0
Creates a video encoder for a given codec.
A buffer for video data representing a frame.
Definition: ivideo_plugin.h:33
virtual Size get_data_size() const =0
Returns the size of the buffer.
virtual bool is_key_frame() const =0
Indicates whether this frame is a key frame.
virtual Uint8 * get_data()=0
Returns a pointer to the data of the buffer.
Abstract interface for video decoders.
Definition: ivideo_plugin.h:156
virtual Uint32 get_encoded_width()=0
Returns the encoded width of the video stream.
virtual Uint32 get_encoded_height()=0
Returns the encoded height of the video stream.
virtual Sint32 close()=0
Closes the video stream.
virtual const char * get_parameter(const char *name)=0
Returns the value of a parameter of the decoder.
virtual Sint32 decode_canvas(neuraylib::ICanvas *canvas, IBuffer *data)=0
Decodes video stream data to a canvas.
virtual Sint32 init(IBuffer *data)=0
Initializes the video decoder.
virtual const char * get_format_parameter(const char *parameter)=0
Returns a video stream format parameter. Only available after initialization is completed.
virtual bool set_parameter(const char *name, const char *value)=0
Sets a parameter of the decoder.
virtual const char * get_supported_type(Uint32 index) const =0
Returns the index -th supported pixel type.
virtual const char * get_identifier() const =0
Returns a concise single-line unique identifier.
Abstract interface for video encoders.
Definition: ivideo_plugin.h:56
virtual Sint32 encode_canvas(const ICanvas_cuda *canvas, IVideo_data **out)=0
Encodes the pixel data contained in a cuda canvas.
virtual Sint32 init(Uint32 resolution_x, Uint32 resolution_y, IVideo_data **out)=0
Initializes the video stream.
virtual const char * get_identifier() const =0
Returns a concise single-line unique identifier.
virtual Sint32 close(IVideo_data **out)=0
Closes the video stream.
virtual bool set_parameter(const char *name, const char *value)=0
Sets a parameter for the video stream.
virtual Sint32 encode_canvas(const ICanvas *canvas, IVideo_data **out)=0
Encodes the pixel data contained in a canvas.
virtual const char * get_supported_type(Uint32 index) const =0
Returns the index -th supported pixel type.
virtual const char * get_parameter(const char *name)=0
Returns the value of a parameter for the video stream.
Abstract interface for video encoder plugins.
Definition: ivideo_plugin.h:248
virtual IVideo_decoder * create_video_decoder() const =0
Creates a new decoder for a video stream.
virtual bool init(IPlugin_api *plugin_api)=0
Initializes the plugin.
virtual bool exit(IPlugin_api *plugin_api)=0
De-initializes the plugin.
virtual IVideo_encoder * create_video_encoder() const =0
Creates a new encoder for a video stream.
virtual const char * get_name() const =0
Returns the name of the plugin.
unsigned char Uint8
8-bit unsigned integer.
Definition: types.h:47
int Sint32
32-bit signed integer.
Definition: types.h:46
Uint64 Size
Unsigned integral type that is large enough to hold the size of all types.
Definition: types.h:112
unsigned int Uint32
32-bit unsigned integer.
Definition: types.h:49
Mixin class template for deriving new interface declarations.
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH.
Definition: neuraylib.h:179
Base class for all plugins.
Basic types.