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:
|
case MatroskaIds::ChapLanguage:
|
||||||
m_names.back().languages().emplace_back(chapterDisplayElement->readString());
|
m_names.back().languages().emplace_back(chapterDisplayElement->readString());
|
||||||
break;
|
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:
|
case MatroskaIds::ChapCountry:
|
||||||
m_names.back().countries().emplace_back(chapterDisplayElement->readString());
|
m_names.back().countries().emplace_back(chapterDisplayElement->readString());
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -47,7 +47,7 @@ void MatroskaTagField::reparse(EbmlElement &simpleTagElement, Diagnostics &diag,
|
||||||
{
|
{
|
||||||
string context("parsing Matroska tag field");
|
string context("parsing Matroska tag field");
|
||||||
simpleTagElement.parse(diag);
|
simpleTagElement.parse(diag);
|
||||||
bool tagDefaultFound = false;
|
bool tagDefaultFound = false, tagLanguageFound = false, tagLanguageIETFFound = false;
|
||||||
for (EbmlElement *child = simpleTagElement.firstChild(); child; child = child->nextSibling()) {
|
for (EbmlElement *child = simpleTagElement.firstChild(); child; child = child->nextSibling()) {
|
||||||
try {
|
try {
|
||||||
child->parse(diag);
|
child->parse(diag);
|
||||||
|
@ -87,16 +87,30 @@ void MatroskaTagField::reparse(EbmlElement &simpleTagElement, Diagnostics &diag,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MatroskaIds::TagLanguage:
|
case MatroskaIds::TagLanguage:
|
||||||
if (value().language().empty() || value().language() == "und") {
|
if (!tagLanguageFound && !tagLanguageIETFFound) {
|
||||||
|
tagLanguageFound = true;
|
||||||
string lng = child->readString();
|
string lng = child->readString();
|
||||||
if (lng != "und") {
|
if (lng != "und") {
|
||||||
value().setLanguage(lng);
|
value().setLanguage(lng);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (tagLanguageFound) {
|
||||||
diag.emplace_back(DiagLevel::Warning,
|
diag.emplace_back(DiagLevel::Warning,
|
||||||
"\"SimpleTag\"-element contains multiple \"TagLanguage\"-elements. Surplus \"TagLanguage\"-elements will be ignored.", context);
|
"\"SimpleTag\"-element contains multiple \"TagLanguage\"-elements. Surplus \"TagLanguage\"-elements will be ignored.", context);
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case MatroskaIds::TagDefault:
|
||||||
if (!tagDefaultFound) {
|
if (!tagDefaultFound) {
|
||||||
setDefault(child->readUInteger() > 0);
|
setDefault(child->readUInteger() > 0);
|
||||||
|
|
|
@ -411,6 +411,10 @@ void MatroskaTrack::internalParseHeader(Diagnostics &diag)
|
||||||
case MatroskaIds::TrackLanguage:
|
case MatroskaIds::TrackLanguage:
|
||||||
m_language = trackInfoElement->readString();
|
m_language = trackInfoElement->readString();
|
||||||
break;
|
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:
|
case MatroskaIds::CodecID:
|
||||||
m_format = codecIdToMediaFormat(m_formatId = trackInfoElement->readString());
|
m_format = codecIdToMediaFormat(m_formatId = trackInfoElement->readString());
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue