[vlc-commits] [Git][videolan/vlc][3.0.x] 3 commits: demux: mkv: use "eng" as the default language.
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Thu Mar 19 09:23:06 UTC 2026
Felix Paul Kühne pushed to branch 3.0.x at VideoLAN / VLC
Commits:
a064b6c8 by Steve Lhomme at 2026-03-19T09:55:22+01:00
demux: mkv: use "eng" as the default language.
For each track the language element needs to be present of the default value is "eng" [^1].
[^1]: https://www.rfc-editor.org/rfc/rfc9559#section-5.1.4.1.19
(cherry picked from commit e99cddb6e79a0c0be7ae6eece846f15c4d7bf228)
- - - - -
10c2a884 by Steve Lhomme at 2026-03-19T09:55:22+01:00
demux: mkv: handle the IETF language with more priority than the old language element
See [^1].
[^1]: https://www.rfc-editor.org/rfc/rfc9559#language-codes
(cherry picked from commit 686d636a9ebdd9cd47b9ae6ba16c84d7a0fc99bf) (edited)
edited:
- VLC 3 doesn't handle the pose value
- VLC 3 doesn't have the zlib fix
- - - - -
f2c38408 by Steve Lhomme at 2026-03-19T09:55:22+01:00
demux: mkv: fix default language leak
Regression from 686d636a9ebdd9cd47b9ae6ba16c84d7a0fc99bf
(cherry picked from commit 1ffcd7d86ba4ce246563d71069227aa5dff0257f) (rebased)
rebased:
- VLC 3 doesn't have the patch that requires vlc_find_iso639()
- - - - -
2 changed files:
- modules/demux/mkv/matroska_segment_parse.cpp
- modules/demux/mkv/mkv.cpp
Changes:
=====================================
modules/demux/mkv/matroska_segment_parse.cpp
=====================================
@@ -242,6 +242,8 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
demux_t * p_demuxer;
bool& bSupported;
int level;
+ std::string lang;
+ bool lang_is_ietf;
struct {
unsigned int i_crop_right;
unsigned int i_crop_left;
@@ -253,7 +255,7 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
} track_video_info;
} metadata_payload = {
- this, p_track, &sys.demuxer, bSupported, 3, { }
+ this, p_track, &sys.demuxer, bSupported, 3, "eng", false, { }
};
MKV_SWITCH_CREATE( EbmlTypeDispatcher, MetaDataHandlers, MetaDataCapture )
@@ -352,12 +354,25 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
}
E_CASE( KaxTrackLanguage, lang )
{
- free( vars.tk->fmt.psz_language );
const std::string slang ( lang );
size_t pos = slang.find_first_of( '-' );
- vars.tk->fmt.psz_language = pos != std::string::npos ? strndup( slang.c_str (), pos ) : strdup( slang.c_str() );
- debug( vars, "Track Language=`%s'", vars.tk->fmt.psz_language ? vars.tk->fmt.psz_language : "(null)" );
+ const std::string l = std::string::npos ? slang.substr(0, pos) : slang;
+ debug( vars, "Track Language=`%s'", !l.empty() ? l.c_str() : "(null)" );
+ if (!vars.lang_is_ietf)
+ {
+ vars.lang = l;
+ }
}
+#if LIBMATROSKA_VERSION >= 0x010406
+ E_CASE( KaxLanguageIETF, lang )
+ {
+ vars.lang_is_ietf = true;
+ const std::string slang ( lang );
+ size_t pos = slang.find_first_of( '-' );
+ vars.lang = pos != std::string::npos ? slang.substr(0, pos) : slang;
+ debug( vars, "IETF Track Language=`%s'", !vars.lang.empty() ? vars.lang.c_str() : "(null)" );
+ }
+#endif
E_CASE( KaxCodecID, codecid )
{
vars.tk->codec = std::string( codecid );
@@ -893,6 +908,9 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
if ( bSupported )
{
+ free(p_track->fmt.psz_language);
+ p_track->fmt.psz_language = strdup(metadata_payload.lang.c_str());
+
#ifdef HAVE_ZLIB_H
if( p_track->i_compression_type == MATROSKA_COMPRESSION_ZLIB &&
p_track->i_encoding_scope & MATROSKA_ENCODING_SCOPE_PRIVATE &&
=====================================
modules/demux/mkv/mkv.cpp
=====================================
@@ -853,7 +853,7 @@ mkv_track_t::mkv_track_t(enum es_format_category_e es_cat) :
/* fall through */
case VIDEO_ES:
case SPU_ES:
- fmt.psz_language = strdup("English");
+ fmt.psz_language = strdup("eng");
break;
default:
// no language needed
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/217bbf046d702f431f7e8923cc94372819b090b1...f2c3840867ec58a98bc37ca8a975e7c7e5c5e437
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/217bbf046d702f431f7e8923cc94372819b090b1...f2c3840867ec58a98bc37ca8a975e7c7e5c5e437
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list