Skip to content

cvedia::rt::UnifiedBuffer

UnifiedBuffer - Complete implementation of iface::Buffer that delegates to backend plugins. More...

#include <unified_buffer.h>

Inherits from Buffer

Public Functions

Name
UnifiedBuffer(BufferDataType dataType, std::string const & transportUri ="cpu://")
~UnifiedBuffer() override
UnifiedBuffer(UnifiedBuffer const & other)
UnifiedBuffer & operator=(UnifiedBuffer const & other)
UnifiedBuffer(UnifiedBuffer && other)
UnifiedBuffer & operator=(UnifiedBuffer && other)
virtual cbuffer copy() const override
virtual cbuffer copy(double scaleFactor) const override
virtual cbuffer copy(Rect2f const & rc, bool relative) const override
virtual cbuffer downloadAsGrayscale() const override
virtual expected< cbuffer > region(Rect2f const & rc, bool relative) const override
virtual expected< void > copyToRegion(Rect2f const & rc, bool relative, cbuffer destBuffer, Rect2f const & rectDest, bool destRelative) override
virtual expected< void > batchCopyRegionsToCanvas(std::vector< RegionCopyOp > const & ops, cbuffer destCanvas) const override
virtual expected< void > resize(Size size, builtin::ResizeMethod resizeMethod =builtin::ResizeMethod::SQUASH) override
virtual expected< void > resize(Size size, builtin::ResizeMethod resizeMethod, std::string const & interpolationMethod) override
virtual expected< cbuffer > resizeAndCopy(Size size, builtin::ResizeMethod resizeMethod =builtin::ResizeMethod::SQUASH) const override
virtual expected< cbuffer > resizeAndCopy(Size size, builtin::ResizeMethod resizeMethod, std::string const & interpolationMethod) const override
virtual expected< cbuffer > resizeAndCopyRegion(Size size, builtin::ResizeMethod resizeMethod, std::optional< Rect2f > const & region, bool relative, std::optional< BufferDataType > const & destType) const override
virtual expected< cbuffer > resizeAndCopyRegion(Size size, builtin::ResizeMethod resizeMethod, std::string const & interpolationMethod, std::optional< Rect2f > const & region, bool relative, std::optional< BufferDataType > const & destType) const override
virtual expected< void > pixelate(cv::Mat mask, int blockSize) override
virtual expected< void > pixelate(float x, float y, float w, float h, int blockSize) override
virtual expected< void > rotate90deg(int times) override
virtual void brightness(double delta) override
virtual void bgr2rgb() override
virtual expected< void > toTransportUri(std::string const & targetTransportUri) override
virtual expected< void > toDataType(BufferDataType dataType) override
virtual void setColor(float color[3]) override
virtual expected< void > grayscale(bool singleChannel) override
virtual expected< cbuffer > grayscaleCopy(bool singleChannel) const override
virtual expected< void > invert() override
virtual void blur(cv::Mat mask, double amount) override
virtual void blur(float x, float y, float w, float h, double amount) override
virtual expected< void > fishToPano(float xOffset, float yOffset) override
virtual void clahe(int const & clipLimit, int const & tileGridSizeX, int const & tileGridSizeY) override
virtual cmap meanStdDev() override
virtual expected< std::vector< cbuffer > > split() const override
virtual void syncStream() const override
virtual void syncToStream(void * targetStream) const override
virtual void * getStream() const override
virtual void setStream(void * stream) override
virtual expected< void > fill(cbuffer const & mask, float color[3]) override
virtual expected< void > fill(float color[3], int opacity) override
virtual expected< void > drawLine(Point2f const & src, Point2f const & dest, float color[3], int thickness) override
virtual expected< void > drawRect(Rect2f const & pos, float color[3], int thickness) override
virtual expected< void > drawPoly(std::vector< Point2f > const & pts, float color[3], double alpha) override
virtual expected< void > drawPolyLine(std::vector< Point2f > const & pts, float color[3], int thickness) override
virtual expected< void > drawCircle(Point2f const & center, int radius, float color[3], int thickness) override
virtual expected< void > writeText(Point2f const & pos, std::string const & text, float color[3], int fontface, double fontscale, int thickness) override
virtual expected< void > writeTextAutoSize(Point2f const & pos, std::string const & text, float color[3], int fontface, int genericSize) override
virtual expected< std::pair< int, int > > getTextAutoSize(std::string const & text, int fontface, int genericSize) override
virtual expected< void > drawBoundingBox(Rect2f const & pos, std::string const & label, float color[3], int thickness) override
virtual void allocate(int width, int height, BufferDataType type) override
virtual expected< void > fromData(int width, int height, BufferDataType type, void * data, size_t step =0) override
virtual expected< void > mergeChannels(cbuffer const & b, cbuffer const & g, cbuffer const & r) override
virtual expected< void > loadImage(std::string const & filename) override
virtual expected< void > decodeImage(void * data, int data_size) override
void allocate(int width, int height, BufferDataType type, std::string const & transportUri)
expected< void > fromData(int width, int height, BufferDataType type, void * data, size_t step, std::string const & transportUri)
expected< void > mergeChannels(cbuffer const & b, cbuffer const & g, cbuffer const & r, std::string const & transportUri)
expected< void > loadImage(std::string const & filename, std::string const & transportUri)
expected< void > decodeImage(void * data, int data_size, std::string const & transportUri)
virtual expected< void > horizontalConcat(cbuffer const & left, cbuffer const & right) override
virtual expected< void > saveImage(std::string const & fileName) override
virtual expected< std::vector< unsigned char > > encodeImage() override
virtual std::string base64Encode() override
virtual bool base64Decode(std::string const & base64String) override
virtual Size getSize() const override
virtual int getChannels() const override
virtual std::string getTransportUri() const override
virtual size_t getStride() const override
Get the row stride (bytes per row) for the buffer's primary plane.
virtual BufferDataType dataType() const override
virtual void dataType(BufferDataType dt) override
virtual void * getData() override
virtual void const * getData() const override
virtual void * getBackendPtr() const override
void setLedgerEnabled(bool enabled)
bool isLedgerEnabled() const
BufferLedger const & getLedger() const
std::string getLedgerAsString() const
void clearLedger()
void printLedger(std::ostream & os) const
void adoptBackend(iface::BufferBackend * backend)
void create(BufferInit * init)

Public Attributes

Name
BufferOwnership ownership_
std::shared_ptr< void > keepAlive_
std::unique_ptr< iface::BufferBackend > activeBackend_

Additional inherited members

Public Functions inherited from Buffer

Name
virtual ~Buffer() =default
void timestamp(double timestamp)
double timestamp() const
void frameid(int frameid)
int frameid() const
std::string dataTypeToString(BufferDataType type)
BufferDataType dataTypeFromString(std::string const & str)

Detailed Description

class cvedia::rt::UnifiedBuffer;

UnifiedBuffer - Complete implementation of iface::Buffer that delegates to backend plugins.

Replaces BufferImpl. Owns:

  • dataType, storageType, timestamp, frameid (via iface::Buffer base)
  • Buffer ledger for operation tracking
  • Single active backend instance All operations delegate to the active backend. Storage conversion happens via cv::Mat using backend download/upload hooks.

Public Functions Documentation

function UnifiedBuffer

UnifiedBuffer(
    BufferDataType dataType,
    std::string const & transportUri ="cpu://"
)

function ~UnifiedBuffer

~UnifiedBuffer() override

function UnifiedBuffer

UnifiedBuffer(
    UnifiedBuffer const & other
)

function operator=

UnifiedBuffer & operator=(
    UnifiedBuffer const & other
)

function UnifiedBuffer

UnifiedBuffer(
    UnifiedBuffer && other
)

function operator=

UnifiedBuffer & operator=(
    UnifiedBuffer && other
)

function copy

virtual cbuffer copy() const override

Reimplements: cvedia::rt::iface::Buffer::copy

function copy

virtual cbuffer copy(
    double scaleFactor
) const override

Reimplements: cvedia::rt::iface::Buffer::copy

function copy

virtual cbuffer copy(
    Rect2f const & rc,
    bool relative
) const override

Reimplements: cvedia::rt::iface::Buffer::copy

function downloadAsGrayscale

virtual cbuffer downloadAsGrayscale() const override

Reimplements: cvedia::rt::iface::Buffer::downloadAsGrayscale

function region

virtual expected< cbuffer > region(
    Rect2f const & rc,
    bool relative
) const override

Reimplements: cvedia::rt::iface::Buffer::region

function copyToRegion

virtual expected< void > copyToRegion(
    Rect2f const & rc,
    bool relative,
    cbuffer destBuffer,
    Rect2f const & rectDest,
    bool destRelative
) override

Reimplements: cvedia::rt::iface::Buffer::copyToRegion

function batchCopyRegionsToCanvas

virtual expected< void > batchCopyRegionsToCanvas(
    std::vector< RegionCopyOp > const & ops,
    cbuffer destCanvas
) const override

Reimplements: cvedia::rt::iface::Buffer::batchCopyRegionsToCanvas

function resize

virtual expected< void > resize(
    Size size,
    builtin::ResizeMethod resizeMethod =builtin::ResizeMethod::SQUASH
) override

Reimplements: cvedia::rt::iface::Buffer::resize

function resize

virtual expected< void > resize(
    Size size,
    builtin::ResizeMethod resizeMethod,
    std::string const & interpolationMethod
) override

Reimplements: cvedia::rt::iface::Buffer::resize

function resizeAndCopy

virtual expected< cbuffer > resizeAndCopy(
    Size size,
    builtin::ResizeMethod resizeMethod =builtin::ResizeMethod::SQUASH
) const override

Reimplements: cvedia::rt::iface::Buffer::resizeAndCopy

function resizeAndCopy

virtual expected< cbuffer > resizeAndCopy(
    Size size,
    builtin::ResizeMethod resizeMethod,
    std::string const & interpolationMethod
) const override

Reimplements: cvedia::rt::iface::Buffer::resizeAndCopy

function resizeAndCopyRegion

virtual expected< cbuffer > resizeAndCopyRegion(
    Size size,
    builtin::ResizeMethod resizeMethod,
    std::optional< Rect2f > const & region,
    bool relative,
    std::optional< BufferDataType > const & destType
) const override

Reimplements: cvedia::rt::iface::Buffer::resizeAndCopyRegion

function resizeAndCopyRegion

virtual expected< cbuffer > resizeAndCopyRegion(
    Size size,
    builtin::ResizeMethod resizeMethod,
    std::string const & interpolationMethod,
    std::optional< Rect2f > const & region,
    bool relative,
    std::optional< BufferDataType > const & destType
) const override

Reimplements: cvedia::rt::iface::Buffer::resizeAndCopyRegion

function pixelate

virtual expected< void > pixelate(
    cv::Mat mask,
    int blockSize
) override

Reimplements: cvedia::rt::iface::Buffer::pixelate

function pixelate

virtual expected< void > pixelate(
    float x,
    float y,
    float w,
    float h,
    int blockSize
) override

Reimplements: cvedia::rt::iface::Buffer::pixelate

function rotate90deg

virtual expected< void > rotate90deg(
    int times
) override

Reimplements: cvedia::rt::iface::Buffer::rotate90deg

function brightness

virtual void brightness(
    double delta
) override

Reimplements: cvedia::rt::iface::Buffer::brightness

function bgr2rgb

virtual void bgr2rgb() override

Reimplements: cvedia::rt::iface::Buffer::bgr2rgb

function toTransportUri

virtual expected< void > toTransportUri(
    std::string const & targetTransportUri
) override

Reimplements: cvedia::rt::iface::Buffer::toTransportUri

function toDataType

virtual expected< void > toDataType(
    BufferDataType dataType
) override

Reimplements: cvedia::rt::iface::Buffer::toDataType

function setColor

virtual void setColor(
    float color[3]
) override

Reimplements: cvedia::rt::iface::Buffer::setColor

function grayscale

virtual expected< void > grayscale(
    bool singleChannel
) override

Reimplements: cvedia::rt::iface::Buffer::grayscale

function grayscaleCopy

virtual expected< cbuffer > grayscaleCopy(
    bool singleChannel
) const override

Reimplements: cvedia::rt::iface::Buffer::grayscaleCopy

function invert

virtual expected< void > invert() override

Reimplements: cvedia::rt::iface::Buffer::invert

function blur

virtual void blur(
    cv::Mat mask,
    double amount
) override

Reimplements: cvedia::rt::iface::Buffer::blur

function blur

virtual void blur(
    float x,
    float y,
    float w,
    float h,
    double amount
) override

Reimplements: cvedia::rt::iface::Buffer::blur

function fishToPano

virtual expected< void > fishToPano(
    float xOffset,
    float yOffset
) override

Reimplements: cvedia::rt::iface::Buffer::fishToPano

function clahe

virtual void clahe(
    int const & clipLimit,
    int const & tileGridSizeX,
    int const & tileGridSizeY
) override

Reimplements: cvedia::rt::iface::Buffer::clahe

function meanStdDev

virtual cmap meanStdDev() override

Reimplements: cvedia::rt::iface::Buffer::meanStdDev

function split

virtual expected< std::vector< cbuffer > > split() const override

Reimplements: cvedia::rt::iface::Buffer::split

function syncStream

virtual void syncStream() const override

Reimplements: cvedia::rt::iface::Buffer::syncStream

function syncToStream

virtual void syncToStream(
    void * targetStream
) const override

Reimplements: cvedia::rt::iface::Buffer::syncToStream

function getStream

virtual void * getStream() const override

Reimplements: cvedia::rt::iface::Buffer::getStream

function setStream

virtual void setStream(
    void * stream
) override

Reimplements: cvedia::rt::iface::Buffer::setStream

function fill

virtual expected< void > fill(
    cbuffer const & mask,
    float color[3]
) override

Reimplements: cvedia::rt::iface::Buffer::fill

function fill

virtual expected< void > fill(
    float color[3],
    int opacity
) override

Reimplements: cvedia::rt::iface::Buffer::fill

function drawLine

virtual expected< void > drawLine(
    Point2f const & src,
    Point2f const & dest,
    float color[3],
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::drawLine

function drawRect

virtual expected< void > drawRect(
    Rect2f const & pos,
    float color[3],
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::drawRect

function drawPoly

virtual expected< void > drawPoly(
    std::vector< Point2f > const & pts,
    float color[3],
    double alpha
) override

Reimplements: cvedia::rt::iface::Buffer::drawPoly

function drawPolyLine

virtual expected< void > drawPolyLine(
    std::vector< Point2f > const & pts,
    float color[3],
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::drawPolyLine

function drawCircle

virtual expected< void > drawCircle(
    Point2f const & center,
    int radius,
    float color[3],
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::drawCircle

function writeText

virtual expected< void > writeText(
    Point2f const & pos,
    std::string const & text,
    float color[3],
    int fontface,
    double fontscale,
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::writeText

function writeTextAutoSize

virtual expected< void > writeTextAutoSize(
    Point2f const & pos,
    std::string const & text,
    float color[3],
    int fontface,
    int genericSize
) override

Reimplements: cvedia::rt::iface::Buffer::writeTextAutoSize

function getTextAutoSize

virtual expected< std::pair< int, int > > getTextAutoSize(
    std::string const & text,
    int fontface,
    int genericSize
) override

Reimplements: cvedia::rt::iface::Buffer::getTextAutoSize

function drawBoundingBox

virtual expected< void > drawBoundingBox(
    Rect2f const & pos,
    std::string const & label,
    float color[3],
    int thickness
) override

Reimplements: cvedia::rt::iface::Buffer::drawBoundingBox

function allocate

virtual void allocate(
    int width,
    int height,
    BufferDataType type
) override

Reimplements: cvedia::rt::iface::Buffer::allocate

function fromData

virtual expected< void > fromData(
    int width,
    int height,
    BufferDataType type,
    void * data,
    size_t step =0
) override

Reimplements: cvedia::rt::iface::Buffer::fromData

function mergeChannels

virtual expected< void > mergeChannels(
    cbuffer const & b,
    cbuffer const & g,
    cbuffer const & r
) override

Reimplements: cvedia::rt::iface::Buffer::mergeChannels

function loadImage

virtual expected< void > loadImage(
    std::string const & filename
) override

Reimplements: cvedia::rt::iface::Buffer::loadImage

function decodeImage

virtual expected< void > decodeImage(
    void * data,
    int data_size
) override

Reimplements: cvedia::rt::iface::Buffer::decodeImage

function allocate

void allocate(
    int width,
    int height,
    BufferDataType type,
    std::string const & transportUri
)

function fromData

expected< void > fromData(
    int width,
    int height,
    BufferDataType type,
    void * data,
    size_t step,
    std::string const & transportUri
)

function mergeChannels

expected< void > mergeChannels(
    cbuffer const & b,
    cbuffer const & g,
    cbuffer const & r,
    std::string const & transportUri
)

function loadImage

expected< void > loadImage(
    std::string const & filename,
    std::string const & transportUri
)

function decodeImage

expected< void > decodeImage(
    void * data,
    int data_size,
    std::string const & transportUri
)

function horizontalConcat

virtual expected< void > horizontalConcat(
    cbuffer const & left,
    cbuffer const & right
) override

Reimplements: cvedia::rt::iface::Buffer::horizontalConcat

function saveImage

virtual expected< void > saveImage(
    std::string const & fileName
) override

Reimplements: cvedia::rt::iface::Buffer::saveImage

function encodeImage

virtual expected< std::vector< unsigned char > > encodeImage() override

Reimplements: cvedia::rt::iface::Buffer::encodeImage

function base64Encode

virtual std::string base64Encode() override

Reimplements: cvedia::rt::iface::Buffer::base64Encode

function base64Decode

virtual bool base64Decode(
    std::string const & base64String
) override

Reimplements: cvedia::rt::iface::Buffer::base64Decode

function getSize

virtual Size getSize() const override

Reimplements: cvedia::rt::iface::Buffer::getSize

function getChannels

virtual int getChannels() const override

Reimplements: cvedia::rt::iface::Buffer::getChannels

function getTransportUri

virtual std::string getTransportUri() const override

Reimplements: cvedia::rt::iface::Buffer::getTransportUri

function getStride

virtual size_t getStride() const override

Get the row stride (bytes per row) for the buffer's primary plane.

Return: Row stride in bytes, or 0 if buffer is empty/uninitialized

Note:

  • GPU backends typically return stride >= width*channels due to alignment
  • For YUV formats, chroma plane strides may differ (see backend documentation)

Reimplements: cvedia::rt::iface::Buffer::getStride

For simple formats (BGR, BGRA, GRAY), returns the stride of the full image. For YUV formats (NV12, YV12), returns the stride of the Y (luma) plane.

The stride may be larger than width*channels due to memory alignment requirements, especially on GPU backends which use pitched allocation.

function dataType

virtual BufferDataType dataType() const override

Reimplements: cvedia::rt::iface::Buffer::dataType

function dataType

virtual void dataType(
    BufferDataType dt
) override

Reimplements: cvedia::rt::iface::Buffer::dataType

function getData

virtual void * getData() override

Reimplements: cvedia::rt::iface::Buffer::getData

function getData

virtual void const * getData() const override

Reimplements: cvedia::rt::iface::Buffer::getData

function getBackendPtr

virtual void * getBackendPtr() const override

Reimplements: cvedia::rt::iface::Buffer::getBackendPtr

function setLedgerEnabled

void setLedgerEnabled(
    bool enabled
)

function isLedgerEnabled

bool isLedgerEnabled() const

function getLedger

BufferLedger const & getLedger() const

function getLedgerAsString

std::string getLedgerAsString() const

function clearLedger

void clearLedger()

function printLedger

void printLedger(
    std::ostream & os
) const

function adoptBackend

void adoptBackend(
    iface::BufferBackend * backend
)

function create

static void create(
    BufferInit * init
)

Public Attributes Documentation

variable ownership_

BufferOwnership ownership_ = BufferOwnership::COPY;

variable keepAlive_

std::shared_ptr< void > keepAlive_;

variable activeBackend_

std::unique_ptr< iface::BufferBackend > activeBackend_;