Preserve implicit language setting "English" via ISO language code of MKV tracks
This commit is contained in:
parent
c7e95ad8d5
commit
4fca95afa3
|
@ -295,6 +295,7 @@ void MatroskaTrack::internalParseHeader(Diagnostics &diag, AbortableProgressFeed
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
// read information about the track from the children of the track entry element
|
// read information about the track from the children of the track entry element
|
||||||
|
auto hasIsoLanguage = false;
|
||||||
for (EbmlElement *trackInfoElement = m_trackElement->firstChild(), *subElement = nullptr; trackInfoElement;
|
for (EbmlElement *trackInfoElement = m_trackElement->firstChild(), *subElement = nullptr; trackInfoElement;
|
||||||
trackInfoElement = trackInfoElement->nextSibling()) {
|
trackInfoElement = trackInfoElement->nextSibling()) {
|
||||||
try {
|
try {
|
||||||
|
@ -412,6 +413,7 @@ void MatroskaTrack::internalParseHeader(Diagnostics &diag, AbortableProgressFeed
|
||||||
break;
|
break;
|
||||||
case MatroskaIds::TrackLanguage:
|
case MatroskaIds::TrackLanguage:
|
||||||
m_locale.emplace_back(trackInfoElement->readString(), LocaleFormat::ISO_639_2_B);
|
m_locale.emplace_back(trackInfoElement->readString(), LocaleFormat::ISO_639_2_B);
|
||||||
|
hasIsoLanguage = true;
|
||||||
break;
|
break;
|
||||||
case MatroskaIds::TrackLanguageIETF:
|
case MatroskaIds::TrackLanguageIETF:
|
||||||
m_locale.emplace_back(trackInfoElement->readString(), LocaleFormat::BCP_47);
|
m_locale.emplace_back(trackInfoElement->readString(), LocaleFormat::BCP_47);
|
||||||
|
@ -539,8 +541,8 @@ void MatroskaTrack::internalParseHeader(Diagnostics &diag, AbortableProgressFeed
|
||||||
m_displaySize.setHeight(m_pixelSize.height());
|
m_displaySize.setHeight(m_pixelSize.height());
|
||||||
}
|
}
|
||||||
|
|
||||||
// set English if no language has been specified (it is default value of MatroskaIds::TrackLanguage)
|
// set English if no ISO language has been specified (it is the default value of MatroskaIds::TrackLanguage)
|
||||||
if (m_locale.empty()) {
|
if (!hasIsoLanguage) {
|
||||||
m_locale.emplace_back("eng"sv, LocaleFormat::ISO_639_2_B);
|
m_locale.emplace_back("eng"sv, LocaleFormat::ISO_639_2_B);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue