neuray API Programmer's Manual

ibridge_video_client.h File Reference

Description

Bridge video handling.

Code Example

ibridge_video_client.h

‎/***************************************************************************************************
 * Copyright 2023 NVIDIA Corporation. All rights reserved.
 **************************************************************************************************/

#ifndef MI_UNPUBLISHED_BRIDGE_VIDEO_CLIENT_H
#define MI_UNPUBLISHED_BRIDGE_VIDEO_CLIENT_H

#include <mi/base/interface_declare.h>
#include <mi/neuraylib/typedefs.h>
#include <mi/neuraylib/idata.h>

namespace mi {

class IData;
class IString;

namespace neuraylib { class IBuffer; class ICanvas; }

namespace bridge {

class IVideo_source;
class IVideo_sink;













class IClient_video_context : public
    mi::base::Interface_declare<0x4b817707,0xa206,0x46a6,0xa2,0xb4,0xb1,0x9b,0x3f,0x10,0x78,0xeb>
{
public:
    virtual void set_video_sink( IVideo_sink* video_sink) = 0;

    virtual IVideo_sink* get_video_sink() const = 0;

    virtual Sint32 
               set_nvcuvid_device( Sint32 device) = 0;

    virtual Sint32 
               get_nvcuvid_device() const = 0;

    virtual void close() = 0;

    virtual Uint32 
               get_id() const = 0;
};

class IVideo_frame : public
    mi::base::Interface_declare<0xaf02b8cc,0x772f,0x4415,0x95,0xae,0x8c,0xb4,0xa3,0xf6,0xd9,0xdd>
{
public:
    virtual neuraylib::ICanvas* get_canvas() const = 0;

    virtual const char* get_video_format() const = 0;

    virtual Float32 
               get_encode_time() const = 0;

    virtual Float32 
               get_decode_time() const = 0;

    virtual Size 
               get_compressed_size() const = 0;

    virtual IData* get_video_format_attribute(const char* attribute) const = 0;

    template <typename T>
    T* get_video_format_attribute(const char* attribute) const
    {
        IData* attr = get_video_format_attribute(attribute);
        if(!attr)
            return 0;
        return static_cast<T*>(attr->get_interface( typename T::IID()));
    }
};

class IVideo_sink : public
    mi::base::Interface_declare<0xa94825d1,0x1ed8,0x4465,0x8d,0x80,0x9e,0x1f,0xf7,0xc6,0x1e,0x65>
{
public:
    virtual void video_frame( IVideo_frame* video_frame, neuraylib::IBuffer* frame_data) = 0;

    virtual void video_progress( Float64 value, const char* area, const char* message) = 0;

    virtual void video_error( Sint32 error_code, const char* error_message) = 0;

    virtual void video_context_closed( Sint32 reason) = 0;
};
 // end group mi_neuray_bridge_client

} // namespace bridge

} // namespace mi

#endif // MI_UNPUBLISHED_BRIDGE_VIDEO_CLIENT_H

Namespaces

namespace 
Common namespace for APIs of NVIDIA Advanced Rendering Center GmbH. More...
namespace 
Namespace for the Bridge functionality of the neuray API. More...
namespace 
Namespace for the neuray API. More...

Classes

class 
Client-side video context that receives and decodes video frames from the corresponding server-side video context. More...
class 
Represents the data for a single video frame. More...
class 
Abstract interface to receive video frames produced by the corresponding server-side video context. More...