ADTF
adtf::mediadescription::osborn Namespace Reference

Namespace for all functionality provided since v3.14. More...

Classes

class  decoding_sample_reader
 This reader uses the media description to decode sample data. More...
 
class  cSampleWithCodec
 Helper class that combines a Sample Codec with a Sample instance. More...
 
class  encoding_sample_writer
 Sample Writer that provides samples that can be updated via a Codec. More...
 
class  cDumper
 Dumps a structure definition to an output stream. More...
 
class  cDDLPrinter
 Generates a DDL description from a structure definition. More...
 
struct  description
 Template to provide struct name and definition for a generated struct. More...
 
struct  indices
 Internal helper class. More...
 
class  md_sample_data
 Template to provide media description based access to Sample data. More...
 
class  md_array
 This class is used to wrap access to arrays of plain and enum types. More...
 
class  md_struct_array
 This class is used to wrap access to arrays of struct types. More...
 
class  md_sample_data_factory
 This factory provides instances of md_sample_data for incoming samples. More...
 
class  cSampleDecoderBase
 Decoder Base Class. More...
 
class  cStaticSampleDecoder
 Decoder for samples with static data content. More...
 
class  cStaticSampleCodec
 Codec for samples with static data content. More...
 
class  cSampleDecoder
 Decoder for samples with static and/or dynamic data. More...
 
class  cSampleCodec
 Codec for samples with static and/or dynamic data. More...
 
class  cSampleCodecFactory
 Factory class for ddl codecs for samples. More...
 
class  sample_decoder_access
 Implementation for decoder access concept (ddl::codec::DecoderElementAccess). More...
 
class  sample_codec_access
 Implementation for codec access concept (ddl::codec::CodecElementAccess). More...
 
class  sample_codec_factory_access
 Implementation for codec access concept (ddl::codec::FactoryElementAccess). More...
 
class  enumeration
 This is used to create an enumeration ytpe from an existing c++ enum. More...
 
class  structure
 This is used to create a structure type from an existing c++ struct definition. More...
 
class  structure< void >
 This is used to create a structure type independently. More...
 

Typedefs

template<typename ElementsType >
using element_callback = std::function< void(std::conditional_t< std::is_const< ElementsType >::value, const typename ElementsType::element_type, typename ElementsType::element_type > &)>
 Callback type for member elements.
 
template<typename ElementsType >
using element_control_callback = std::function< bool(std::conditional_t< std::is_const< ElementsType >::value, const typename ElementsType::element_type, typename ElementsType::element_type > &)>
 Callback type for member elements. More...
 
template<typename ElementsType >
using array_element_callback = std::function< void(std::conditional_t< std::is_const< ElementsType >::value, const typename ElementsType::element_type, typename ElementsType::element_type > &, size_t)>
 Callback type for array elements. More...
 
template<typename ElementsType >
using array_element_control_callback = std::function< bool(std::conditional_t< std::is_const< ElementsType >::value, const typename ElementsType::element_type, typename ElementsType::element_type > &, size_t)>
 Callback type for array elements. More...
 
using tCodecLeafIndex = size_t
 Leaf Index Type for the coders (is between 0 and getElementCount()). More...
 
using tCodecIndex = ddl::codec::CodecIndex
 Fast Access Index Type for the coders. More...
 

Functions

std::ostream & operator<< (std::ostream &oStream, const cDumper &oDumper)
 
std::ostream & operator<< (std::ostream &oStream, const cDDLPrinter &oPrinter)
 
template<typename READER >
tResult make_sample_reader (READER &oReader, const char *strNameOfReader, const char *strDDLStructType)
 Helper template to setup a sample reader with a stream type set from the media description service. More...
 
tResult make_sample_reader (streaming::ant::cSampleReader &oReader, const char *strNameOfReader, const char *strDDLStructType)
 Helper template to setup a sample reader with a stream type set from the media description service. More...
 
template<typename WRITER >
tResult make_sample_writer (WRITER &oWriter, const char *strNameOfWriter, const char *strDDLStructType)
 Helper template to setup a sample writer with a stream type set from the media description service. More...
 
tResult make_sample_writer (streaming::ant::cSampleWriter &oWriter, const char *strNameOfWriter, const char *strDDLStructType)
 Helper template to setup a sample writer with a stream type set from the media description service. More...
 
template<typename ElementsType >
void for_each_leaf_element (ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
 Iterates ALL leaf elements within ALL array elements. More...
 
template<typename T >
std::vector< tCodecIndexget_codec_indices (const T &oDecoderOrFactory)
 Get the codec indices object. More...
 
template<typename ElementsType >
void for_each_element (ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
 Iterates elements without array elements (also structures). More...
 
template<typename ElementsType >
void for_each_element_infix (ElementsType &oElements, const element_callback< ElementsType > &fnLeafCallback, const element_control_callback< ElementsType > &fnEnterMemberCallback, const element_callback< ElementsType > &fnLeaveMemberCallback, const array_element_control_callback< ElementsType > &fnEnterArrayMemberCallback, const array_element_callback< ElementsType > &fnLeaveArrayMemberCallback)
 Iterates elements and array elements in a callback-controlled fashion. More...
 
template<typename T >
adtf_util::cVariant get_value_as_variant (const T &oDecoder, const tCodecIndex &oCodecIndex)
 Get value as variant. More...
 
tResult set_media_description_properties (base::ant::IProperties &oProperties, const char *strStructName, const char *strMediaDescription, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 Adds the media description properties to a properties object. More...
 
tResult set_media_description_properties (base::ant::IProperties &oProperties, const ddl::DDStructure &type_definition, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 Adds the media description properties to a properties object. More...
 
tResult set_media_description_properties (base::ant::IProperties &oProperties, const std::pair< std::string, std::string > &type_definition, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 Adds the media description properties to a properties object. More...
 
void set_stream_type_media_description (streaming::ant::IStreamType &oStreamType, const ddl::DDStructure &type_definition)
 Adds the media description properties to a stream type. More...
 
tResult set_stream_type_media_description (adtf::streaming::IStreamType &oStreamType, const char *strStructName, const char *strMediaDescription, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 Set the media description properties of a stream type. More...
 
tResult set_stream_type_media_description_from_service (adtf::streaming::IStreamType &oStreamType, const char *strStructName, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 Set the media description properties of a stream type. More...
 
std::tuple< std::string, std::string, ddl::tDataRepresentationget_media_description_from_stream_type (const adtf::streaming::IStreamType &oStreamType)
 Extract the media description information from stream type. More...
 
tResult get_codec_factory_from_stream_type (const adtf::streaming::IStreamType &oStreamType, cSampleCodecFactory &oFactory)
 Create a sample codec factory from a given stream type. More...
 

Variables

template<typename T >
constexpr bool has_description_v = detail::is_defined_v<description<T>>
 

Detailed Description

Namespace for all functionality provided since v3.14.

Typedef Documentation

◆ array_element_callback

using array_element_callback = std::function<void(std::conditional_t<std::is_const<ElementsType>::value, const typename ElementsType::element_type, typename ElementsType::element_type>&, size_t)>

Callback type for array elements.

entered.

Definition at line 1314 of file sample_codec.h.

◆ array_element_control_callback

using array_element_control_callback = std::function<bool(std::conditional_t<std::is_const<ElementsType>::value, const typename ElementsType::element_type, typename ElementsType::element_type>&, size_t)>

Callback type for array elements.

The callbacks return value controls wether the member will actually be entered.

Definition at line 1323 of file sample_codec.h.

◆ element_control_callback

using element_control_callback = std::function<bool(std::conditional_t<std::is_const<ElementsType>::value, const typename ElementsType::element_type, typename ElementsType::element_type>&)>

Callback type for member elements.

The callbacks return value controls wether the member will actually be entered.

Definition at line 1305 of file sample_codec.h.

◆ tCodecIndex

Fast Access Index Type for the coders.

The Codec Index ist a vector of element indexes {{[element_index=0][array_pos]},{[element_sub_index][array_pos]}} pairs to access the elements of one level in a fast way. You can access leafs and elements at each level.

See also
for_each_leaf_element, for_each_element, or the GetElements() of each codec or decoder.
The Codec Index and the Element Iterator

Definition at line 35 of file sample_codec_access_types.h.

◆ tCodecLeafIndex

using tCodecLeafIndex = size_t

Leaf Index Type for the coders (is between 0 and getElementCount()).

This leaf index includes all leafs (known ddl::dd::PrefefinedDataTypes and UserTypes). If the leaf is an array the i.e. of 5 x uint8_t Value there are 5 Leafs.

See also
The Codec Leaf Index

Definition at line 25 of file sample_codec_access_types.h.

Function Documentation

◆ for_each_element()

void adtf::mediadescription::osborn::for_each_element ( ElementsType &  oElements,
const element_callback< ElementsType > &  fnCallback 
)

Iterates elements without array elements (also structures).

Usage:

//strDescription contains a data description where "my_struct" is defined
struct my_sub_struct
{
uint32_t sub_element[3];
uint32_t sub_element_after;
}
struct my_struct
{
my_sub_struct element[2];
}
cSampleCodecFactory oFactory("my_struct", strDescription);
for_each_element(oFactory.GetElements(),
[](const auto& oElement) {
std::cout << oElement.getFullName() << std::endl;
std::cout << oElement.getName() << std::endl;
std::cout << oElement.getBaseName() << std::endl;
std::cout << oElement.getArraySize() << std::endl;
});
//following output:
//"element[0]"
//"element[0]"
//"element"
//"2"
//"element[0].sub_element[0]"
//"sub_element[0]"
//"sub_element"
//"3"
//"element[0].sub_element_after"
//"sub_element_after"
//"sub_element_after"
//"1"
void for_each_element(ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
Iterates elements without array elements (also structures).
Template Parameters
ElementsTypeThe type of elements.
Parameters
elementsThe elements.
funcThe function to call per leaf element.
See also
cSampleCodecFactory::GetElements, cSampleCodec::GetElements, cSampleDecoder::GetElements, cStaticSampleCodec::GetElements, cStaticSampleDecoder::GetElements
The Codec Index and the Element Iterator

Definition at line 1469 of file sample_codec.h.

◆ for_each_element_infix()

void adtf::mediadescription::osborn::for_each_element_infix ( ElementsType &  oElements,
const element_callback< ElementsType > &  fnLeafCallback,
const element_control_callback< ElementsType > &  fnEnterMemberCallback,
const element_callback< ElementsType > &  fnLeaveMemberCallback,
const array_element_control_callback< ElementsType > &  fnEnterArrayMemberCallback,
const array_element_callback< ElementsType > &  fnLeaveArrayMemberCallback 
)

Iterates elements and array elements in a callback-controlled fashion.

Template Parameters
ElementsTypeThe type of elements.
Parameters
oElementsThe elements.
fnLeafCallbackThe function to call per leaf element.
fnEnterMemberCallbackThe function to call per named member (leaf and intermediate). Controlls traversal of this member.
fnLeaveMemberCallbackThe function to call when leaving a member.
fnEnterArrayMemberCallbackThe function to call per array element. Controlls traversal of this element.
fnLeaveArrayMemberCallbackThe function to call when leaving an array element.

Definition at line 1492 of file sample_codec.h.

◆ for_each_leaf_element()

void adtf::mediadescription::osborn::for_each_leaf_element ( ElementsType &  oElements,
const element_callback< ElementsType > &  fnCallback 
)

Iterates ALL leaf elements within ALL array elements.

Usage:

//strDescription contains a data description where "my_struct" is defined
struct my_sub_struct
{
uint32_t sub_element[3];
uint32_t sub_element_after;
}
struct my_struct
{
my_sub_struct element[2];
}
cSampleCodecFactory oFactory("my_struct", strDescription);
for_each_leaf_element(oFactory.GetElements(),
[](const auto& oElement) {
std::cout << oElement.getFullName() << std::endl;
});
//following output:
//"element[0].sub_element[0]"
//"element[0].sub_element[1]"
//"element[0].sub_element[2]"
//"element[0].sub_element_after"
//"element[1].sub_element[0]"
//"element[1].sub_element[1]"
//"element[1].sub_element[2]"
//"element[1].sub_element_after"
void for_each_leaf_element(ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
Iterates ALL leaf elements within ALL array elements.
Template Parameters
ElementsTypeThe type of elements.
Parameters
oElementsThe elements
fnCallbackThe function to call per leaf element
See also
cSampleCodecFactory::GetElements, cSampleCodec::GetElements, cSampleDecoder::GetElements, cStaticSampleCodec::GetElements, cStaticSampleDecoder::GetElements
The Codec Index and the Element Iterator

Definition at line 1367 of file sample_codec.h.

Referenced by get_codec_indices(), and adtf::mediadescription::penguin::get_leaf_codec_indices().

◆ get_codec_factory_from_stream_type()

tResult adtf::mediadescription::osborn::get_codec_factory_from_stream_type ( const adtf::streaming::IStreamType oStreamType,
cSampleCodecFactory oFactory 
)

Create a sample codec factory from a given stream type.

Parameters
[in]oStreamTypeThe stream type.
[out]oFactoryThe new factory.
Returns
Standard result.

◆ get_codec_indices()

std::vector<tCodecIndex> adtf::mediadescription::osborn::get_codec_indices ( const T &  oDecoderOrFactory)

Get the codec indices object.

Template Parameters
TThe type of the decoder or factory to retrieve all indices from.
Parameters
oDecoderOrFactoryThe decoder or factory to retrieve all indices from.
Returns
std::vector<tCodecIndex>

Definition at line 1413 of file sample_codec.h.

References for_each_leaf_element().

◆ get_media_description_from_stream_type()

std::tuple<std::string, std::string, ddl::tDataRepresentation> adtf::mediadescription::osborn::get_media_description_from_stream_type ( const adtf::streaming::IStreamType oStreamType)

Extract the media description information from stream type.

Parameters
[in]oStreamTypeThe stream type containing the media description information.
Returns
A tuple containing the struct name, the struct description and the struct representation.
Exceptions
tResultin case the description could not be retrieved.

◆ get_value_as_variant()

adtf_util::cVariant adtf::mediadescription::osborn::get_value_as_variant ( const T &  oDecoder,
const tCodecIndex oCodecIndex 
)

Get value as variant.

This is for your convenience!

Template Parameters
TThe decoder type
Parameters
oDecoderThe decoder to retrieve the value from
oCodecIndexthe codec index for the value
Returns
adtf_util::cVariant

Definition at line 1563 of file sample_codec.h.

References ddl::codec::cet_bool, ddl::codec::cet_double, ddl::codec::cet_float, ddl::codec::cet_int16, ddl::codec::cet_int32, ddl::codec::cet_int64, ddl::codec::cet_int8, ddl::codec::cet_uint16, ddl::codec::cet_uint32, ddl::codec::cet_uint64, ddl::codec::cet_uint8, and CodecIndex::getType().

◆ make_sample_reader() [1/2]

tResult adtf::mediadescription::osborn::make_sample_reader ( READER &  oReader,
const char *  strNameOfReader,
const char *  strDDLStructType 
)
inline

Helper template to setup a sample reader with a stream type set from the media description service.

Parameters
[in,out]oReaderThe reader that should be setup.
[in]strNameOfReaderThe name of the reader, which will be used to create an input pin.
[in]strDDLStructTypeThe name of the struct that the description should be retrieved from the media description service.
Returns
Standard result.

Definition at line 28 of file make_sample_reader_default.h.

◆ make_sample_reader() [2/2]

tResult adtf::mediadescription::osborn::make_sample_reader ( streaming::ant::cSampleReader oReader,
const char *  strNameOfReader,
const char *  strDDLStructType 
)
inline

Helper template to setup a sample reader with a stream type set from the media description service.

Parameters
[in,out]oReaderThe reader that should be setup (special case for ant::SampleReader)
[in]strNameOfReaderThe name of the reader, which will be used to create an input pin.
[in]strDDLStructTypeThe name of the struct that the description should be retrieved from the media description service.
Returns
Standard result.

Definition at line 44 of file make_sample_reader_default.h.

References adtf::streaming::ant::make_sample_reader().

◆ make_sample_writer() [1/2]

tResult adtf::mediadescription::osborn::make_sample_writer ( streaming::ant::cSampleWriter oWriter,
const char *  strNameOfWriter,
const char *  strDDLStructType 
)
inline

Helper template to setup a sample writer with a stream type set from the media description service.

Parameters
[in,out]oWriterThe writer that should be setup (special case for ant::SampleWriter)
[in]strNameOfWriterThe name of the writer, which will be used to create an output pin.
[in]strDDLStructTypeThe name of the struct that the description should be retrieved from the media description service.
Returns
Standard result.

Definition at line 43 of file make_sample_writer_default.h.

References adtf::streaming::ant::make_sample_writer().

◆ make_sample_writer() [2/2]

tResult adtf::mediadescription::osborn::make_sample_writer ( WRITER &  oWriter,
const char *  strNameOfWriter,
const char *  strDDLStructType 
)
inline

Helper template to setup a sample writer with a stream type set from the media description service.

Parameters
[in,out]oWriterThe writer that should be setup.
[in]strNameOfWriterThe name of the writer, which will be used to create an output pin.
[in]strDDLStructTypeThe name of the struct that the description should be retrieved from the media description service.
Returns
Standard result.

Definition at line 27 of file make_sample_writer_default.h.

◆ set_media_description_properties() [1/3]

tResult adtf::mediadescription::osborn::set_media_description_properties ( base::ant::IProperties oProperties,
const char *  strStructName,
const char *  strMediaDescription,
ddl::tDataRepresentation  eRep = ddl::tDataRepresentation::Deserialized 
)

Adds the media description properties to a properties object.

Parameters
[out]oPropertiesThe properties object where the properties should be added/set to.
[in]strStructNameThe name of the struct.
[in]strMediaDescriptionThe media description containing the struct definition.
[in]eRepThe data representation of the struct that samples contain.
Returns
Standard result.

◆ set_media_description_properties() [2/3]

tResult adtf::mediadescription::osborn::set_media_description_properties ( base::ant::IProperties oProperties,
const ddl::DDStructure type_definition,
ddl::tDataRepresentation  eRep = ddl::tDataRepresentation::Deserialized 
)

Adds the media description properties to a properties object.

Parameters
[out]oPropertiesThe properties object where the properties should be added/set to.
[in]type_definitionA structure type definition.
[in]eRepThe data representation of the struct that samples contain.
Returns
Standard result.

◆ set_media_description_properties() [3/3]

tResult adtf::mediadescription::osborn::set_media_description_properties ( base::ant::IProperties oProperties,
const std::pair< std::string, std::string > &  type_definition,
ddl::tDataRepresentation  eRep = ddl::tDataRepresentation::Deserialized 
)

Adds the media description properties to a properties object.

Parameters
[out]oPropertiesThe properties object where the properties should be added/set to.
[in]type_definitionA structure type definition as structname/xmldescription pair
[in]eRepThe data representation of the struct that samples contain.
Returns
Standard result.

◆ set_stream_type_media_description() [1/2]

tResult adtf::mediadescription::osborn::set_stream_type_media_description ( adtf::streaming::IStreamType oStreamType,
const char *  strStructName,
const char *  strMediaDescription,
ddl::tDataRepresentation  eRep = ddl::tDataRepresentation::Deserialized 
)

Set the media description properties of a stream type.

Parameters
[out]oStreamTypeThe stream type.
[in]strStructNameThe name of the media description struct.
[in]strMediaDescriptionThe media description.
[in]eRepRepresentation of the data (serialized or deserialized)
Returns
Standard result.

◆ set_stream_type_media_description() [2/2]

void adtf::mediadescription::osborn::set_stream_type_media_description ( streaming::ant::IStreamType oStreamType,
const ddl::DDStructure type_definition 
)

Adds the media description properties to a stream type.

Parameters
[out]oStreamTypeThe stream type where the properties should be added/set to.
[in]type_definitionA structure type definition.
Exceptions
tResultin case of error.

◆ set_stream_type_media_description_from_service()

tResult adtf::mediadescription::osborn::set_stream_type_media_description_from_service ( adtf::streaming::IStreamType oStreamType,
const char *  strStructName,
ddl::tDataRepresentation  eRep = ddl::tDataRepresentation::Deserialized 
)

Set the media description properties of a stream type.

Retrieves the media description from the media description service.

Parameters
[out]oStreamTypeThe stream type.
[in]strStructNameThe name of the media description struct.
[in]eRepRepresentation of the data (serialized or deserialized)
Returns
Standard result.