ADTF  3.18.2
stream_type_default.h
Go to the documentation of this file.
1 
7 #pragma once
8 
10 #include "sample_codec.h"
11 #include "md_sample_data.h"
12 
14 #include <type_traits>
15 #include <string_view>
16 
17 namespace adtf
18 {
19 namespace mediadescription
20 {
21 namespace osborn
22 {
23 
33  const char* strStructName,
34  const char* strMediaDescription,
36 
45  const ddl::DDStructure& type_definition,
47 
56  const std::pair<std::string, std::string>& type_definition,
58 
59 
67  const ddl::DDStructure& type_definition);
68 
78  const char* strStructName,
79  const char* strMediaDescription,
81 
91  const char* strStructName,
94 
101 std::tuple<std::string, std::string, ddl::tDataRepresentation>
103 
104 
112  cSampleCodecFactory& oFactory);
113 } // namespace osborn
114 
115 namespace quiet
116 {
117 
118 namespace detail
119 {
120 
121 template<typename T>
122 struct is_array_like: std::false_type {};
123 template<typename ValueType, size_t szArraySize>
124 struct is_array_like<std::array<ValueType, szArraySize>>: std::true_type {};
125 
126 template<class ValueType, size_t szArraySize>
127 struct is_array_like<ValueType[szArraySize]>: std::true_type {};
128 
129 template <typename T>
130 constexpr bool is_array_like_v = is_array_like<T>::value;
131 
133 {
134 public:
135  cStreamTypeDefaultBase(std::string_view strMDStructName,
136  std::string_view strMDDescription,
137  ddl::DataRepresentation eMDDataRepresentation,
138  size_t szFixArraySize,
139  bool bValidate = false);
140 
141  cStreamTypeDefaultBase(std::string_view strMDStructName,
142  ddl::DataRepresentation eMDDataRepresentation,
143  size_t szFixArraySize);
144 };
145 
146 } // namespace detail
147 
154 template<typename T = void>
156 {
157 public:
158  static_assert(!std::is_arithmetic_v<T>,
159  "stream_type_default can be used only for structured types, "
160  "use adtf::streaming::stream_type_plain<T> instead");
161  static_assert(std::is_trivially_copyable_v<T>,
162  "stream_type_default can be used only for trivial structured types");
163  static_assert(!detail::is_array_like_v<T>,
164  "stream_type_default can not used for arrays of structured types, "
165  "use adtf::mediadescription::stream_type_default_array<T> instead");
166  static_assert(has_description_v<T>,
167  "stream_type_default<T>() can only be used if ddl description was generated with adtf_mdgen! "
168  "If you have another source for the description, use stream_type_default<void>(...).");
169 
179  {
180  }
188  cStreamTypeDefaultBase(description<T>::name, description<T>::definition, eDataRep, 1)
189  {
190  }
191 };
192 
199 template<>
201 {
202 public:
217  stream_type_default(const ddl::DDStructure& oTypeDefinition):
218  stream_type_default(oTypeDefinition, ddl::DataRepresentation::deserialized)
219  {
220  }
230  stream_type_default(const ddl::DDStructure& oTypeDefinition,
231  ddl::DataRepresentation eDataRep):
232  cStreamTypeDefaultBase(
233  oTypeDefinition.getStructType().getName(), oTypeDefinition.getStructDescription(), eDataRep, 1)
234  {
235  }
236 
247  stream_type_default(std::string_view strMDStructName,
248  std::string_view strMDDescription):
249  stream_type_default(strMDStructName, strMDDescription, ddl::DataRepresentation::deserialized)
250  {
251  }
252 
262  stream_type_default(std::string_view strMDStructName,
263  std::string_view strMDDescription,
264  ddl::DataRepresentation eDataRep):
265  cStreamTypeDefaultBase(strMDStructName, strMDDescription, eDataRep, 1, true)
266  {
267  }
278  stream_type_default(std::string_view strMDStructName):
279  stream_type_default(strMDStructName, ddl::DataRepresentation::deserialized)
280  {
281  }
290  stream_type_default(std::string_view strMDStructName,
291  ddl::DataRepresentation eDataRep):
292  cStreamTypeDefaultBase(strMDStructName, eDataRep, 1)
293  {
294  }
295 };
296 
297 /**********************************************************************************************/
298 /**********************************************************************************************/
299 
328 template<typename T = void>
330 {
331 public:
332  static_assert(adtf::base::penguin::detail::always_false<T>,
333  "stream_type_default_array can be used only for std::array<T, N> and T[N] "
334  "use i.e. adtf::mediadescription::stream_type_default_array<std::array<T, N>>! "
335  "Use stream_type_default_array<void> if you have a valid media description.");
336 };
337 
338 template<>
340 {
341 public:
346 
359  stream_type_default_array(const ddl::DDStructure& oValueTypeDefinition,
360  size_t szArraySize):
361  stream_type_default_array(oValueTypeDefinition, szArraySize, ddl::DataRepresentation::deserialized)
362  {
363  }
364 
376  stream_type_default_array(const ddl::DDStructure& oValueTypeDefinition,
377  size_t szArraySize,
378  ddl::DataRepresentation eDataRep):
379  cStreamTypeDefaultBase(oValueTypeDefinition.getStructType().getName(),
380  oValueTypeDefinition.getStructDescription(),
381  eDataRep,
382  szArraySize)
383  {
384  }
385 
396  stream_type_default_array(std::string_view strMDStructName,
397  std::string_view strMDDescription,
398  size_t szArraySize):
399  stream_type_default_array(strMDStructName, strMDDescription, szArraySize, ddl::DataRepresentation::deserialized)
400  {
401  }
402 
412  stream_type_default_array(std::string_view strMDStructName,
413  std::string_view strMDDescription,
414  size_t szArraySize,
415  ddl::DataRepresentation eDataRep):
416  cStreamTypeDefaultBase(strMDStructName, strMDDescription, eDataRep, szArraySize, true)
417  {
418  }
419 
432  stream_type_default_array(std::string_view strMDStructName,
433  size_t szArraySize):
434  stream_type_default_array(strMDStructName, szArraySize, ddl::DataRepresentation::deserialized)
435  {
436  }
437 
449  stream_type_default_array(std::string_view strMDStructName,
450  size_t szArraySize,
451  ddl::DataRepresentation eDataRep):
452  cStreamTypeDefaultBase(strMDStructName, eDataRep, szArraySize)
453  {
454  }
455 };
456 
463 template<class ValueType, size_t szArraySize>
464 class stream_type_default_array<ValueType[szArraySize]> : public stream_type_default_array<void>
465 {
466 public:
467  static_assert(has_description_v<ValueType>,
468  "stream_type_default_array<T>() can only be used if ddl description was generated with adtf_mdgen! "
469  "If you have another source for the description, use stream_type_default_array<void>(...).");
470  static_assert(!std::is_arithmetic_v<ValueType>,
471  "stream_type_default_array can be used only for structured types, "
472  "use adtf::streaming::stream_type_plain<std::array<T, N>> instead");
473  static_assert(std::is_trivially_copyable_v<ValueType>,
474  "stream_type_default_array can be used only for trivial structured types");
475 
487  {
488  }
497  stream_type_default_array<void>(description<ValueType>::name, description<ValueType>::definition, szArraySize, eDataRep)
498  {
499  }
500 };
501 
509 template<typename ValueType, size_t szArraySize>
510 class stream_type_default_array<std::array<ValueType, szArraySize>> : public stream_type_default_array<ValueType[szArraySize]>
511 {
512 public:
514 };
515 
516 } // namespace quiet
517 
520 
525 
527 
528 } //namespace mediadescription
529 } //namespace adtf
Defintion of a property set container interface.
Factory class for ddl codecs for samples.
Definition: sample_codec.h:946
stream_type_default(std::string_view strMDStructName)
CTOR.
stream_type_default(std::string_view strMDStructName, std::string_view strMDDescription)
CTOR.
stream_type_default(const ddl::DDStructure &oTypeDefinition)
CTOR.
stream_type_default(const ddl::DDStructure &oTypeDefinition, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default(std::string_view strMDStructName, std::string_view strMDDescription, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default(std::string_view strMDStructName, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default_array(std::string_view strMDStructName, size_t szArraySize)
CTOR.
stream_type_default_array(std::string_view strMDStructName, std::string_view strMDDescription, size_t szArraySize, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default_array(std::string_view strMDStructName, size_t szArraySize, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default_array(std::string_view strMDStructName, std::string_view strMDDescription, size_t szArraySize)
CTOR.
stream_type_default_array(const ddl::DDStructure &oValueTypeDefinition, size_t szArraySize, ddl::DataRepresentation eDataRep)
CTOR.
stream_type_default_array(const ddl::DDStructure &oValueTypeDefinition, size_t szArraySize)
CTOR.
Generator template to create an instance of the stream_meta_type_default.
Generator template to create an instance of the stream_meta_type_default.
stream_type_default(ddl::DataRepresentation eDataRep)
CTOR.
Defines access methods for the interface of a Stream Type - see also Stream Type and Stream Meta Type...
Default StreamType implementation.
Definition: streamtype.h:282
Utility class for a complete valid data definition of one StructType and its dependencies.
Definition: ddstructure.h:55
Copyright © Audi Electronics Venture GmbH.
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.
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.
std::tuple< std::string, std::string, ddl::tDataRepresentation > get_media_description_from_stream_type(const adtf::streaming::IStreamType &oStreamType)
Extract the media description information from stream type.
tResult get_codec_factory_from_stream_type(const adtf::streaming::IStreamType &oStreamType, cSampleCodecFactory &oFactory)
Create a sample codec factory from a given stream type.
void set_stream_type_media_description(streaming::ant::IStreamType &oStreamType, const ddl::DDStructure &type_definition)
Adds the media description properties to a stream type.
Namespace for entire ADTF SDK.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Copyright © Audi Electronics Venture GmbH.
Template to provide struct name and definition for a generated struct.