ADTF
Loading...
Searching...
No Matches
adtf::mediadescription Namespace Reference

Namespace for the ADTF Mediadescription SDK. More...

Namespaces

namespace  adtf_ddl_legacy
 Namespace for collect all classes valid before DDL Library switch from the internal to the open source variant.
 
namespace  ant
 Namespace for all functionality of the ADTF Mediadescription SDK provided since v3.0.
 
namespace  flash
 Namespace for all functionality of the ADTF Mediadescription SDK provided since v3.5.
 
namespace  osborn
 Namespace for all functionality of the ADTF Mediadescription SDK provided since v3.14.
 
namespace  quiet
 Namespace for all functionality of the ADTF Mediadescription SDK provided since v3.16.
 

Classes

class  cDDLPrinter
 
class  cDumper
 
class  cSampleCodec
 
class  cSampleCodecFactory
 
class  cSampleDecoder
 
class  cStaticSampleCodec
 
class  cStaticSampleDecoder
 
class  cType
 
class  decoding_sample_reader
 
struct  description
 
class  encoding_sample_writer
 
class  enumeration
 
class  md_array
 
class  md_sample_data
 
class  md_sample_data_factory
 
class  md_struct_array
 
struct  stream_meta_type_default
 Use this Stream Meta Type if your sample data are structured and the memory layout can be described via DDL Specification. More...
 
class  stream_type_default
 Generator template to create an instance of the stream_meta_type_default. More...
 
class  stream_type_default_array
 Generator template to create an instance of the stream_meta_type_default. More...
 
class  structure
 

Typedefs

using tCodecLeafIndex = osborn::tCodecLeafIndex
 
using tCodecIndex = osborn::tCodecIndex
 
using tLeafCodecIndex
 redefitnion for a ddl::codec::LeafCodecIndex
 

Functions

template<typename T>
std::vector< tLeafCodecIndexget_leaf_codec_indices (const T &oDecoderOrFactory, ddl::DataRepresentation rep)
 Get the leaf indices object.
 
template<typename READER>
tResult make_sample_reader (READER &oReader, const char *strNameOfReader, const char *strDDLStructType)
 
template<typename WRITER>
tResult make_sample_writer (WRITER &oWriter, const char *strNameOfWriter, const char *strDDLStructType)
 
tResult create_adtf_default_stream_type (const char *strStructName, const char *strMediaDescription, ucom::iobject_ptr< adtf::streaming::IStreamType > &pStreamType, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 
tResult create_adtf_default_stream_type_from_service (const char *strStructName, ucom::iobject_ptr< adtf::streaming::IStreamType > &pStreamType, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 
tResult add_stream_meta_type (const adtf::streaming::IStreamMetaType &oStreamTypeDef, ddl::DataDescription &oDescription)
 
ucom::ant::object_ptr< streaming::ant::IStreamTypestream_type_from_service (const char *strStructName, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 
template<typename ElementsType>
void for_each_leaf_element (ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
 Iterates ALL leaf elements within ALL array elements.
 
template<typename ElementsType>
void for_each_element (ElementsType &oElements, const element_callback< ElementsType > &fnCallback)
 Iterates elements without array elements (also structures).
 
template<typename T>
adtf_util::cVariant get_value_as_variant (const T &oDecoder, const tCodecIndex &oCodecIndex)
 Get value as variant. This is for your convenience!
 
template<typename T>
std::vector< tCodecIndexget_codec_indices (const T &oDecoderOrFactory)
 Get the codec indices object.
 
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.
 
template<typename ElementsType>
void for_each_element_infix (ElementsType &oElements, const ddl::dd::datamodel::StructType::Elements &oModelElements, const ddl::dd::datamodel::DataDefinition &oDataDefinition, 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. This version also provides access to the corresponding elements in the data model. This can be used to access min/max and/or the element description.
 
void set_stream_type_media_description (streaming::ant::IStreamType &oStreamType, const ddl::DDStructure &type_definition)
 
tResult set_stream_type_media_description_from_service (adtf::streaming::IStreamType &oStreamType, const char *strStructName, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 
tResult set_media_description_properties (base::ant::IProperties &oProperties, const char *strStructName, const char *strMediaDescription, ddl::tDataRepresentation eRep=ddl::tDataRepresentation::Deserialized)
 
tResult get_codec_factory_from_stream_type (const adtf::streaming::IStreamType &oStreamType, cSampleCodecFactory &oFactory)
 
std::tuple< std::string, std::string, ddl::tDataRepresentationget_media_description_from_stream_type (const adtf::streaming::IStreamType &oStreamType)
 

Variables

template<typename T>
constexpr bool has_description_v
 

Detailed Description

Namespace for the ADTF Mediadescription SDK.

Within this namespace all interfaces, classes and functions always refer to their last revised implementation (version namespace). When using types defined within this namespace it is guaranteed to always use the latest version of the types.

The ADTF Mediadescription Package brings the Data Definiton Language (DDL) and Data Definiton Language (DDL) from Dev Essential into ADTF's scope.

To use ADTF in a common generic way we are providing tools and utilities for convenience access and generation to handle the DDL.
With this language you are able to describe the stuctured content of the data sent via by sample streams from one filter to another (as well as using streaming services).

The package will provide a default stream meta type and many functionality around that support utilities writing, reading and describing memory content (sample content) with the help of the DDL.

Typedef Documentation

◆ 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.

◆ tCodecLeafIndex

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.

Function Documentation

◆ add_stream_meta_type()

tResult adtf::mediadescription::osborn::add_stream_meta_type ( const adtf::streaming::IStreamMetaType & oStreamTypeDef,
ddl::DataDescription & oDescription )

Add the stream meta type to an OODDL description.

Parameters
[in]oStreamTypeDefThe stream meta type.
[out]oDescriptionThe description that the meta type should be added to.
Returns
Standard result.

◆ create_adtf_default_stream_type()

tResult adtf::mediadescription::osborn::create_adtf_default_stream_type ( const char * strStructName,
const char * strMediaDescription,
ucom::iobject_ptr< adtf::streaming::IStreamType > & pStreamType,
ddl::tDataRepresentation eRep = ddl::tDataRepresentation::Deserialized )

Create an instance of an ADTF default stream type.

Parameters
[in]strStructNameThe name of the media description struct.
[in]strMediaDescriptionThe media description.
[out]pStreamTypeThe new instance.
[in]eRepRepresentation of the data (serialized or deserialized)
Returns
Standard result.
Deprecated
Use adtf::ucom::make_object_ptr<stream_type_default<>>(const char*, const char*, ddl::tDataRepresentation) instead.

◆ create_adtf_default_stream_type_from_service()

tResult adtf::mediadescription::osborn::create_adtf_default_stream_type_from_service ( const char * strStructName,
ucom::iobject_ptr< adtf::streaming::IStreamType > & pStreamType,
ddl::tDataRepresentation eRep = ddl::tDataRepresentation::Deserialized )

Create an instance of an ADTF default stream type. Retrieves the media description from the media description service

Note
This will work only in Init(StageNormal)! Create your pin within the constructor using stream_meta_type_default() and then use ChangeType for your reader/writer.
Parameters
[in]strStructNameThe name of the media description struct.
[out]pStreamTypeThe new instance.
[in]eRepRepresentation of the data (serialized or deserialized)
Returns
Standard result.
Deprecated
Use adtf::ucom::make_object_ptr<stream_type_default<>>(const char*, ddl::tDataRepresentation) instead.

◆ for_each_element()

template<typename ElementsType>
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).
Definition sample_codec.h:1513
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

◆ for_each_element_infix() [1/2]

template<typename ElementsType>
void adtf::mediadescription::quiet::for_each_element_infix ( ElementsType & oElements,
const ddl::dd::datamodel::StructType::Elements & oModelElements,
const ddl::dd::datamodel::DataDefinition & oDataDefinition,
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. This version also provides access to the corresponding elements in the data model. This can be used to access min/max and/or the element description.

Template Parameters
ElementsTypeThe type of elements.
Parameters
oElementsThe elements.
oModelElementsThe corresponding elements from the data model.
oDataDefinitionThe data definition that contains the data model.
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.

◆ for_each_element_infix() [2/2]

template<typename ElementsType>
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.

◆ for_each_leaf_element()

template<typename ElementsType>
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.
Definition sample_codec.h:1414
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

◆ 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()

template<typename T>
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>

◆ get_leaf_codec_indices()

template<typename T>
std::vector< tLeafCodecIndex > adtf::mediadescription::penguin::get_leaf_codec_indices ( const T & oDecoderOrFactory,
ddl::DataRepresentation rep )

Get the leaf indices object.

Template Parameters
TThe type of the decoder or factory to retrieve all leaf indices from.
Parameters
oDecoderOrFactoryThe decoder or factory to retrieve all indices from.
repDatarepresentation of the leaf layout to extract from codec index
Returns
std::vector<LeafCodecIndex>

◆ 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()

template<typename T>
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

◆ make_sample_reader()

template<typename READER>
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 (deprecated) 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 (deprecated) media description service.
Returns
Standard result.
Deprecated
The ADTF Media Description Service is deprecated.

◆ make_sample_writer()

template<typename WRITER>
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 (deprecated) 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 (deprecated) media description service.
Returns
Standard result.
Deprecated
The ADTF Media Description Service is deprecated.

◆ set_media_description_properties()

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_stream_type_media_description()

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 (deprecated) 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.
Deprecated
The ADTF Media Description Service is deprecated.

◆ stream_type_from_service()

ucom::ant::object_ptr< streaming::ant::IStreamType > adtf::mediadescription::osborn::stream_type_from_service ( const char * strStructName,
ddl::tDataRepresentation eRep = ddl::tDataRepresentation::Deserialized )

Get a stream type containing the media description of a struct from the (deprecated) media description service.

Parameters
[in]strStructNameThe name of the struct.
[in]eRepRepresentation of the data (serialized or deserialized)
Returns
A stream type that describes samples that contain data in form of the given struct.
Exceptions
tResultin case the description could not be retrieved.
See also
adtf::streaming::quiet::stream_type_default
Deprecated
Use adtf::ucom::make_object_ptr<stream_type_default<>>(const char*, ddl::tDataRepresentation) instead.

Variable Documentation

◆ has_description_v

template<typename T>
bool adtf::mediadescription::osborn::has_description_v
constexpr

Type trait to check if a description<T> specialization exists.

Template Parameters
TThe type to check for a description specialization.