Don't support IETF language elements explicitely
For now let's just ignore these elements explicitely until they are actually supported. This way the warnings are at least more specific and there will be no inconsistency when updating the track language.
This commit is contained in:
parent
5d4a211d5d
commit
f371efe642
|
@ -101,6 +101,11 @@ void MatroskaChapter::internalParse(Diagnostics &diag)
|
|||
case MatroskaIds::ChapLanguage:
|
||||
m_names.back().languages().emplace_back(chapterDisplayElement->readString());
|
||||
break;
|
||||
case MatroskaIds::ChapLanguageIETF:
|
||||
diag.emplace_back(DiagLevel::Warning,
|
||||
"\"ChapterDisplay\"-element contains a \"ChapLanguageIETF\"-element which is not supported yet. It will be ignored.",
|
||||
context);
|
||||
break;
|
||||
case MatroskaIds::ChapCountry:
|
||||
m_names.back().countries().emplace_back(chapterDisplayElement->readString());
|
||||
break;
|
||||
|
|
|
@ -47,7 +47,7 @@ void MatroskaTagField::reparse(EbmlElement &simpleTagElement, Diagnostics &diag,
|
|||
{
|
||||
string context("parsing Matroska tag field");
|
||||
simpleTagElement.parse(diag);
|
||||
bool tagDefaultFound = false;
|
||||
bool tagDefaultFound = false, tagLanguageFound = false, tagLanguageIETFFound = false;
|
||||
for (EbmlElement *child = simpleTagElement.firstChild(); child; child = child->nextSibling()) {
|
||||
try {
|
||||
child->parse(diag);
|
||||
|
@ -87,16 +87,30 @@ void MatroskaTagField::reparse(EbmlElement &simpleTagElement, Diagnostics &diag,
|
|||
}
|
||||
break;
|
||||
case MatroskaIds::TagLanguage:
|
||||
if (value().language().empty() || value().language() == "und") {
|
||||
if (!tagLanguageFound && !tagLanguageIETFFound) {
|
||||
tagLanguageFound = true;
|
||||
string lng = child->readString();
|
||||
if (lng != "und") {
|
||||
value().setLanguage(lng);
|
||||
}
|
||||
} else {
|
||||
} else if (tagLanguageFound) {
|
||||
diag.emplace_back(DiagLevel::Warning,
|
||||
"\"SimpleTag\"-element contains multiple \"TagLanguage\"-elements. Surplus \"TagLanguage\"-elements will be ignored.", context);
|
||||
}
|
||||
break;
|
||||
case MatroskaIds::TagLanguageIETF:
|
||||
if (!tagLanguageIETFFound) {
|
||||
tagLanguageIETFFound = true;
|
||||
diag.emplace_back(DiagLevel::Warning,
|
||||
"\"SimpleTag\"-element contains a \"TagLanguageIETF\"-element. That's not supported at this point. The element will be dropped "
|
||||
"when applying changes.",
|
||||
context);
|
||||
} else {
|
||||
diag.emplace_back(DiagLevel::Warning,
|
||||
"\"SimpleTag\"-element contains multiple \"TagLanguageIETF\"-elements. Surplus \"TagLanguageIETF\"-elements will be ignored.",
|
||||
context);
|
||||
}
|
||||
break;
|
||||
case MatroskaIds::TagDefault:
|
||||
if (!tagDefaultFound) {
|
||||
setDefault(child->readUInteger() > 0);
|
||||
|
|
|
@ -411,6 +411,10 @@ void MatroskaTrack::internalParseHeader(Diagnostics &diag)
|
|||
case MatroskaIds::TrackLanguage:
|
||||
m_language = trackInfoElement->readString();
|
||||
break;
|
||||
case MatroskaIds::TrackLanguageIETF:
|
||||
diag.emplace_back(DiagLevel::Warning,
|
||||
"\"TrackEntry\"-element contains a \"LanguageIETF\"-element which is not supported yet. It will be ignored.", context);
|
||||
break;
|
||||
case MatroskaIds::CodecID:
|
||||
m_format = codecIdToMediaFormat(m_formatId = trackInfoElement->readString());
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue