Distinguish text and "meta" tracks in MP4
This commit is contained in:
parent
48166bde9e
commit
66895e8e2c
|
@ -997,20 +997,22 @@ const char *MediaFormat::extensionName() const
|
||||||
const char *mediaTypeName(MediaType mediaType)
|
const char *mediaTypeName(MediaType mediaType)
|
||||||
{
|
{
|
||||||
switch (mediaType) {
|
switch (mediaType) {
|
||||||
|
case MediaType::Unknown:
|
||||||
|
return "Other";
|
||||||
case MediaType::Audio:
|
case MediaType::Audio:
|
||||||
return "Audio";
|
return "Audio";
|
||||||
case MediaType::Video:
|
case MediaType::Video:
|
||||||
return "Video";
|
return "Video";
|
||||||
case MediaType::Text:
|
case MediaType::Text:
|
||||||
return "Subititle";
|
return "Subititle";
|
||||||
case MediaType::Hint:
|
|
||||||
return "Hint";
|
|
||||||
case MediaType::Buttons:
|
case MediaType::Buttons:
|
||||||
return "Buttons";
|
return "Buttons";
|
||||||
case MediaType::Control:
|
case MediaType::Control:
|
||||||
return "Control";
|
return "Control";
|
||||||
case MediaType::Unknown:
|
case MediaType::Hint:
|
||||||
return "Other";
|
return "Hint";
|
||||||
|
case MediaType::Meta:
|
||||||
|
return "Meta-data";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,8 @@ enum class MediaType : unsigned int {
|
||||||
Text, /**< text/subtitle */
|
Text, /**< text/subtitle */
|
||||||
Buttons, /**< buttons */
|
Buttons, /**< buttons */
|
||||||
Control, /**< control */
|
Control, /**< control */
|
||||||
Hint /**< hint */
|
Hint, /**< hint */
|
||||||
|
Meta, /**< (timed) metadata */
|
||||||
};
|
};
|
||||||
|
|
||||||
TAG_PARSER_EXPORT const char *mediaTypeName(MediaType mediaType);
|
TAG_PARSER_EXPORT const char *mediaTypeName(MediaType mediaType);
|
||||||
|
|
|
@ -1330,6 +1330,9 @@ void Mp4Track::makeMedia(Diagnostics &diag)
|
||||||
outputStream().write("hint", 4);
|
outputStream().write("hint", 4);
|
||||||
break;
|
break;
|
||||||
case MediaType::Text:
|
case MediaType::Text:
|
||||||
|
outputStream().write("text", 4);
|
||||||
|
break;
|
||||||
|
case MediaType::Meta:
|
||||||
outputStream().write("meta", 4);
|
outputStream().write("meta", 4);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1601,12 +1604,15 @@ void Mp4Track::internalParseHeader(Diagnostics &diag)
|
||||||
m_mediaType = MediaType::Hint;
|
m_mediaType = MediaType::Hint;
|
||||||
break;
|
break;
|
||||||
case 0x6D657461:
|
case 0x6D657461:
|
||||||
|
m_mediaType = MediaType::Meta;
|
||||||
|
break;
|
||||||
case 0x74657874:
|
case 0x74657874:
|
||||||
m_mediaType = MediaType::Text;
|
m_mediaType = MediaType::Text;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_mediaType = MediaType::Unknown;
|
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
|
// -> name
|
||||||
m_istream->seekg(12, ios_base::cur); // skip reserved bytes
|
m_istream->seekg(12, ios_base::cur); // skip reserved bytes
|
||||||
if ((tmp = m_istream->peek()) == m_hdlrAtom->dataSize() - 12 - 4 - 8 - 1) {
|
if ((tmp = m_istream->peek()) == m_hdlrAtom->dataSize() - 12 - 4 - 8 - 1) {
|
||||||
|
|
Loading…
Reference in New Issue