4 #include "../generictagfield.h" 5 #include "../statusprovider.h" 7 #include <c++utilities/io/binarywriter.h> 8 #include <c++utilities/conversion/stringconversion.h> 19 namespace RawDataType {
83 void make(std::ostream &stream);
85 uint64 requiredSize()
const;
91 std::stringstream m_convertedData;
92 IoUtilities::BinaryWriter m_writer;
123 void reparse(
Mp4Atom &ilstChild);
125 void make(std::ostream &stream);
127 bool isAdditionalTypeInfoUsed()
const;
128 const std::string &name()
const;
129 void setName(
const std::string &name);
130 const std::string &mean()
const;
131 void setMean(
const std::string &mean);
132 uint32 parsedRawDataType()
const;
133 uint16 countryIndicator()
const;
134 uint16 languageIndicator()
const;
135 bool supportsNestedFields()
const;
136 std::vector<uint32> expectedRawDataTypes()
const;
137 uint32 appropriateRawDataType()
const;
139 static identifierType fieldIdFromString(
const char *idString, std::size_t idStringSize = std::string::npos);
140 static std::string fieldIdToString(identifierType
id);
148 uint32 m_parsedRawDataType;
149 uint16 m_countryIndicator;
150 uint16 m_langIndicator;
198 return m_parsedRawDataType;
206 return m_countryIndicator;
214 return m_langIndicator;
232 const auto latin1 = ConversionUtilities::convertUtf8ToLatin1(idString, idStringSize != std::string::npos ? idStringSize : std::strlen(idString));
233 switch(latin1.second) {
235 return ConversionUtilities::BE::toUInt32(latin1.first.get());
237 throw ConversionUtilities::ConversionException(
"MP4 ID must be exactly 4 chars");
248 const auto utf8 = ConversionUtilities::convertLatin1ToUtf8(ConversionUtilities::interpretIntegerAsString<uint32>(
id).data(), 4);
249 return std::string(utf8.first.get(), utf8.second);
254 #endif // MP4TAGATOM_H
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.