diff --git a/mediaformat.cpp b/mediaformat.cpp index 30f045d..a3d3184 100644 --- a/mediaformat.cpp +++ b/mediaformat.cpp @@ -997,20 +997,22 @@ const char *MediaFormat::extensionName() const const char *mediaTypeName(MediaType mediaType) { switch (mediaType) { + case MediaType::Unknown: + return "Other"; case MediaType::Audio: return "Audio"; case MediaType::Video: return "Video"; case MediaType::Text: return "Subititle"; - case MediaType::Hint: - return "Hint"; case MediaType::Buttons: return "Buttons"; case MediaType::Control: return "Control"; - case MediaType::Unknown: - return "Other"; + case MediaType::Hint: + return "Hint"; + case MediaType::Meta: + return "Meta-data"; } return ""; } diff --git a/mediaformat.h b/mediaformat.h index 3e11001..2ca9e41 100644 --- a/mediaformat.h +++ b/mediaformat.h @@ -17,7 +17,8 @@ enum class MediaType : unsigned int { Text, /**< text/subtitle */ Buttons, /**< buttons */ Control, /**< control */ - Hint /**< hint */ + Hint, /**< hint */ + Meta, /**< (timed) metadata */ }; TAG_PARSER_EXPORT const char *mediaTypeName(MediaType mediaType); diff --git a/mp4/mp4track.cpp b/mp4/mp4track.cpp index 540251c..75426f6 100644 --- a/mp4/mp4track.cpp +++ b/mp4/mp4track.cpp @@ -1330,6 +1330,9 @@ void Mp4Track::makeMedia(Diagnostics &diag) outputStream().write("hint", 4); break; case MediaType::Text: + outputStream().write("text", 4); + break; + case MediaType::Meta: outputStream().write("meta", 4); break; default: @@ -1601,12 +1604,15 @@ void Mp4Track::internalParseHeader(Diagnostics &diag) m_mediaType = MediaType::Hint; break; case 0x6D657461: + m_mediaType = MediaType::Meta; + break; case 0x74657874: m_mediaType = MediaType::Text; break; default: m_mediaType = MediaType::Unknown; } + // FIXME: save raw media type in next major release so unknown ones can still be written correctly in Mp4Track::makeMedia() // -> name m_istream->seekg(12, ios_base::cur); // skip reserved bytes if ((tmp = m_istream->peek()) == m_hdlrAtom->dataSize() - 12 - 4 - 8 - 1) {