TParamsMixin

primo::avblocks::modern::TParamsMixin

template<typename Derived>
class TParamsMixin

CRTP mixin that adds the typed, fluent addParam() to a class that owns a primo::avblocks::ParameterList (TMediaPin and TMediaSocketT).

Derived must provide a private paramList() and declare this mixin a friend.

Adds a codec parameter (fluent). name is a parameter name constant, e.g. Param::Video::Crop::Left or Param::Encoder::Audio::AAC::StereoMode. The overload is chosen by the type of value:

  • integer or enum (e.g. InterpolationMethod::Super) -> integer parameter

  • float / double -> floating point parameter

  • std::string / std::wstring / string literal -> string parameter

  • TMediaBuffer -> media buffer parameter

  • TVideoStreamInfo -> video stream info parameter

Each overload has an lvalue version (returns Derived&) and an rvalue version (returns Derived&&) so it can be used in the middle of a chain on a temporary.

Subclassed by primo::avblocks::modern::TMediaSocketT< wchar_t >

Unnamed Group

template<typename T>
inline Derived &addParam(const char *name, T value) &
template<typename T>
inline Derived &&addParam(const char *name, T value) &&

Adds an integer parameter.

Selected for integral and enum values, e.g. InterpolationMethod::Super.

Parameters:
  • name – Parameter name constant, e.g. Param::Video::Crop::Left.

  • value – Parameter value.

Returns:

This object, for chaining. On a temporary the rvalue overload returns the object by rvalue reference.

Unnamed Group

template<std::floating_point T>
inline Derived &addParam(const char *name, T value) &
template<std::floating_point T>
inline Derived &&addParam(const char *name, T value) &&

Adds a floating point parameter.

Selected for float and double values.

Parameters:
  • name – Parameter name constant, e.g. Param::Video::Crop::Left.

  • value – Parameter value.

Returns:

This object, for chaining. On a temporary the rvalue overload returns the object by rvalue reference.

Unnamed Group

inline Derived &addParam(const char *name, const std::string &value) &
inline Derived &&addParam(const char *name, const std::string &value) &&
inline Derived &addParam(const char *name, const std::wstring &value) &
inline Derived &&addParam(const char *name, const std::wstring &value) &&

Adds a string parameter.

Accepts std::string, std::wstring and string literals.

Parameters:
  • name – Parameter name constant, e.g. Param::Video::Crop::Left.

  • value – Parameter value.

Returns:

This object, for chaining. On a temporary the rvalue overload returns the object by rvalue reference.

Unnamed Group

inline Derived &addParam(const char *name, const TMediaBuffer &value) &
inline Derived &&addParam(const char *name, const TMediaBuffer &value) &&

Adds a media buffer parameter.

Parameters:
  • name – Parameter name constant, e.g. Param::Video::Crop::Left.

  • value – The buffer to store in the parameter.

Returns:

This object, for chaining. On a temporary the rvalue overload returns the object by rvalue reference.

Unnamed Group

inline Derived &addParam(const char *name, const TVideoStreamInfo &value) &
inline Derived &&addParam(const char *name, const TVideoStreamInfo &value) &&

Adds a video stream info parameter.

Parameters:
  • name – Parameter name constant, e.g. Param::Video::Crop::Left.

  • value – The video stream info to store in the parameter.

Returns:

This object, for chaining. On a temporary the rvalue overload returns the object by rvalue reference.