9 #ifdef USE_ADTF_MEDIA_DESCRIPTION_LEGACY
10 #ifndef NO_ADTF_MEDIA_DESCRIPTION_LEGACY
23 #include <type_traits>
27 namespace mediadescription
48 #ifndef NO_ADTF_MEDIA_DESCRIPTION_LEGACY
59 typedef ddl::codec::DecoderElement<sample_decoder_access<const cSampleDecoderBase>> tElement;
188 return getDecoder()->template getElementValue<T>(oCodecIndex);
190 catch (
const std::exception&)
192 throw adtf::base::current_exception_to_result();
222 return getDecoder()->template getElementValue<T>(oLeafCodecIndex);
224 catch (
const std::exception&)
226 throw adtf::base::current_exception_to_result();
329 cSampleDecoderBase::ResetFirst();
366 #ifndef NO_ADTF_MEDIA_DESCRIPTION_LEGACY
451 getCodec()->template setElementValue<T>(oCodecIndex, oValue);
453 catch(
const std::exception&)
455 throw adtf::base::current_exception_to_result();
489 getCodec()->template setElementValue<T>(oLeafCodecIndex, oValue);
491 catch (
const std::exception&)
493 throw adtf::base::current_exception_to_result();
588 cSampleDecoderBase::ResetFirst();
660 cSampleDecoderBase::ResetFirst();
696 #ifndef NO_ADTF_MEDIA_DESCRIPTION_LEGACY
732 getCodec()->template setElementValue<T>(oCodecIndex, oValue);
734 catch (
const std::exception&)
736 throw adtf::base::current_exception_to_result();
770 getCodec()->template setElementValue<T>(oLeafCodecIndex, oValue);
772 catch (
const std::exception&)
774 throw adtf::base::current_exception_to_result();
929 cSampleDecoderBase::ResetFirst();
963 const char* strMediaDescription,
1021 #ifndef NO_ADTF_MEDIA_DESCRIPTION_LEGACY
1028 tResult IsValid() const;
1297 template<
typename ElementsType>
1298 using element_callback = std::function<void(std::conditional_t<std::is_const<ElementsType>::value,
1299 const typename ElementsType::element_type,
1300 typename ElementsType::element_type>&)>;
1304 template<
typename ElementsType>
1306 const typename ElementsType::element_type,
1307 typename ElementsType::element_type>&)>;
1313 template<
typename ElementsType>
1315 const typename ElementsType::element_type,
1316 typename ElementsType::element_type>&,
1322 template<
typename ElementsType>
1324 const typename ElementsType::element_type,
1325 typename ElementsType::element_type>&,
1366 template<
typename ElementsType>
1369 for (
auto& oCurrentElement : oElements)
1371 if (oCurrentElement.hasChildren())
1373 if (oCurrentElement.isArray())
1375 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1377 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1378 auto& children = oArrayElement.getChildElements();
1384 auto& children = oCurrentElement.getChildElements();
1390 if (oCurrentElement.isArray())
1392 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1394 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1395 fnCallback(oArrayElement);
1400 fnCallback(oCurrentElement);
1412 template<
typename T>
1415 std::vector<tCodecIndex> oIndices;
1417 [&oIndices](
const auto& oElement) {
1418 oIndices.push_back(oElement.getIndex());
1468 template<
typename ElementsType>
1471 for (
auto& oCurrentElement : oElements)
1473 fnCallback(oCurrentElement);
1474 if (oCurrentElement.hasChildren())
1491 template<
typename ElementsType>
1493 ElementsType& oElements,
1501 for (
auto& oCurrentElement : oElements)
1503 if (fnEnterMemberCallback(oCurrentElement))
1505 if (oCurrentElement.hasChildren())
1507 if (oCurrentElement.isArray())
1509 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1511 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1512 if (fnEnterArrayMemberCallback(oArrayElement, szArrayPos))
1514 auto& children = oArrayElement.getChildElements();
1516 fnLeaveMemberCallback, fnEnterArrayMemberCallback,
1517 fnLeaveArrayMemberCallback);
1518 fnLeaveArrayMemberCallback(oArrayElement, szArrayPos);
1524 auto& children = oCurrentElement.getChildElements();
1526 fnEnterArrayMemberCallback, fnLeaveArrayMemberCallback);
1531 if (oCurrentElement.isArray())
1533 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1535 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1536 if (fnEnterArrayMemberCallback(oArrayElement, szArrayPos))
1538 fnLeafCallback(oArrayElement);
1539 fnLeaveArrayMemberCallback(oArrayElement, szArrayPos);
1545 fnLeafCallback(oCurrentElement);
1548 fnLeaveMemberCallback(oCurrentElement);
1562 template<
typename T>
1565 switch (oCodecIndex.
getType())
1568 return oDecoder.template GetElementValue<bool>(oCodecIndex);
1570 return oDecoder.template GetElementValue<tInt8>(oCodecIndex);
1572 return oDecoder.template GetElementValue<tUInt8>(oCodecIndex);
1574 return oDecoder.template GetElementValue<tInt16>(oCodecIndex);
1576 return oDecoder.template GetElementValue<tUInt16>(oCodecIndex);
1578 return oDecoder.template GetElementValue<tInt32>(oCodecIndex);
1580 return oDecoder.template GetElementValue<tUInt32>(oCodecIndex);
1582 return oDecoder.template GetElementValue<tInt64>(oCodecIndex);
1584 return oDecoder.template GetElementValue<tUInt64>(oCodecIndex);
1586 return oDecoder.template GetElementValue<tFloat32>(oCodecIndex);
1588 return oDecoder.template GetElementValue<tFloat64>(oCodecIndex);
1592 return adtf_util::cVariant();
1603 template<
typename ElementsType>
1604 using element_callback = std::function<void(std::conditional_t<std::is_const<ElementsType>::value,
1605 const typename ElementsType::element_type,
1606 typename ElementsType::element_type>&,
1611 template<
typename ElementsType>
1613 const typename ElementsType::element_type,
1614 typename ElementsType::element_type>&,
1621 template<
typename ElementsType>
1623 const typename ElementsType::element_type,
1624 typename ElementsType::element_type>&,
1631 template<
typename ElementsType>
1633 const typename ElementsType::element_type,
1634 typename ElementsType::element_type>&,
1651 template<
typename ElementsType>
1653 ElementsType& oElements,
1666 template<
typename ElementsType>
1668 std::conditional_t<std::is_const<ElementsType>::value,
1669 const typename ElementsType::element_type,
1670 typename ElementsType::element_type>& oCurrentElement,
1680 if (fnEnterMemberCallback(oCurrentElement, oModelElement))
1682 if (oCurrentElement.hasChildren())
1686 if (oCurrentElement.isArray())
1688 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1690 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1691 if (fnEnterArrayMemberCallback(oArrayElement, szArrayPos, oModelElement))
1693 quiet::for_each_element_infix<ElementsType>(oArrayElement.getChildElements(), oChildModelElements, oDataDefinition,
1694 fnLeafCallback, fnEnterMemberCallback,
1695 fnLeaveMemberCallback, fnEnterArrayMemberCallback,
1696 fnLeaveArrayMemberCallback);
1698 fnLeaveArrayMemberCallback(oArrayElement, szArrayPos, oModelElement);
1704 quiet::for_each_element_infix<ElementsType>(oCurrentElement.getChildElements(), oChildModelElements, oDataDefinition,
1705 fnLeafCallback, fnEnterMemberCallback, fnLeaveMemberCallback,
1706 fnEnterArrayMemberCallback, fnLeaveArrayMemberCallback);
1711 if (oCurrentElement.isArray())
1713 for (
size_t szArrayPos = 0; szArrayPos < oCurrentElement.getArraySize(); ++szArrayPos)
1715 auto oArrayElement = oCurrentElement.getArrayElement(szArrayPos);
1716 if (fnEnterArrayMemberCallback(oArrayElement, szArrayPos, oModelElement))
1718 fnLeafCallback(oArrayElement, oModelElement);
1719 fnLeaveArrayMemberCallback(oArrayElement, szArrayPos, oModelElement);
1725 fnLeafCallback(oCurrentElement, oModelElement);
1728 fnLeaveMemberCallback(oCurrentElement, oModelElement);
1734 template<
typename ElementsType>
1736 ElementsType& oElements,
1746 if (oElements.size() != oModelElements.
getSize())
1748 THROW_ERROR_DESC(ERR_INVALID_ARG,
"The amount of the model elements does not match the amount of the codec elements.");
1751 auto itModelElement = oModelElements.
begin();
1753 for (
auto& oCurrentElement : oElements)
1755 detail::for_each_element_infix<ElementsType>(oCurrentElement, *itModelElement->get(), oDataDefinition,
1756 fnLeafCallback, fnEnterMemberCallback,
1757 fnLeaveMemberCallback, fnEnterArrayMemberCallback,
1758 fnLeaveArrayMemberCallback);
1766 using osborn::cStaticSampleDecoder;
1767 using osborn::cStaticSampleCodec;
1768 using osborn::cSampleDecoder;
1769 using osborn::cSampleCodec;
1770 using osborn::cSampleCodecFactory;
A common result class usable as return value throughout.
Container type, able to store any primitive data type (and arrays thereof)
The ISample interface sets and retrieves properties on samples .
Defines access methods for the interface of a Stream Type - see also Stream Type and Stream Meta Type...
virtual T * Get() const =0
Get raw pointer to shared object.
Base object pointer to realize binary compatible reference counting in interface methods.
Implementation for a exclusive lock guard.
Implementation for a shared lock guard.
Utility class for a complete valid data definition of one StructType and its dependencies.
Iteratable container type for the given Element type in ElementAccessType::element_type.
A CodecElement to get and set values.
Factory class for ddl codecs.
Decoder for dynamic structures defined by a DataDefinition definition.
Fast Access Index Type for the coders.
ElementType getType() const
Get the elements type if CodecIndex is valid.
Decoder for dynamic structures defined by a DataDefinition definition.
The Leaf codec index is a small layout information index to access the decoders/codecs data very fast...
Codec for static structures defined by a DataDefinition definition.
Decoder for static structures defined by a DataDefinition definition.
The Data Definiton class uses the validation model to keep a Data Definition datamodel (ddl::dd::data...
DataDefinition Datamodel This datamodel is observable for any change of:
const StructTypes & getStructTypes() const
Get the Struct Types object.
observable DataDefinition object class for a Element of a StructType.
const std::string & getTypeName() const
Get the Type Name.
observable DataDefinition object class to describe StructType.
size_t getSize() const
Get the Size.
iterator begin()
the range based begin iterator
std::shared_ptr< const DDL_TYPE_TO_ACCESS > get(const std::string &type_name) const
get the item with the given name type_name
Copyright © Audi Electronics Venture GmbH.
Namespace for entire ADTF SDK.
@ cet_float
Variant type is float.
@ cet_int16
Variant type is std::int16_t.
@ cet_int8
Variant type is std::int8_t.
@ cet_uint64
Variant type is std::uint64_t.
@ cet_uint8
Variant type is std::uint8_t.
@ cet_uint32
Variant type is std::uint32_t.
@ cet_bool
Variant type is bool.
@ cet_uint16
Variant type is std::uint16_t.
@ cet_int32
Variant type is std::int32_t.
@ cet_int64
Variant type is std::int64_t.
@ cet_double
Variant type is double.
DataRepresentation
Enumeration for the data representation.
@ Deserialized
alias names for legacy reasons
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
#define THROW_ERROR_DESC(_code,...)
throws a tResult exception