[vlc-commits] [Git][videolan/vlc][master] demux: mkv: do not accept any (uncompressed) video FourCC for supposedly raw video

Steve Lhomme (@robUx4) gitlab at videolan.org
Thu Apr 16 15:58:43 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
4352adf3 by Steve Lhomme at 2026-04-16T15:43:47+00:00
demux: mkv: do not accept any (uncompressed) video FourCC for supposedly raw video

Fixes #29776

- - - - -


2 changed files:

- modules/demux/mkv/matroska_segment_parse.cpp
- modules/demux/mkv/mkv.hpp


Changes:

=====================================
modules/demux/mkv/matroska_segment_parse.cpp
=====================================
@@ -782,8 +782,8 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
             ONLY_FMT(VIDEO);
             if ( colourspace.ValidateSize() )
             {
-                vars.tk->fmt.i_codec = GetFOURCC( colourspace.GetBuffer() );
-                debug( vars, "Colour Space=%4.4s", (const char*)&vars.tk->fmt.i_codec );
+                vars.tk->uncompressed_fourcc = GetFOURCC( colourspace.GetBuffer() );
+                debug( vars, "Colour Space=%4.4s", (const char*)&vars.tk->uncompressed_fourcc );
             }
         }
 #if LIBMATROSKA_VERSION >= 0x010405
@@ -1918,7 +1918,21 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk )
             vars.p_tk->b_pts_only = true;
         }
         S_CASE("V_UNCOMPRESSED") {
-            msg_Dbg( vars.p_demuxer, "uncompressed format detected");
+            if (vars.p_tk->uncompressed_fourcc == 0)
+                msg_Dbg( vars.p_demuxer, "uncompressed format with no FourCC");
+            else
+            {
+                const char *desc = vlc_fourcc_GetDescription(VIDEO_ES, vars.p_tk->uncompressed_fourcc);
+                if (desc[0])
+                {
+                    vars.p_fmt->i_codec = vars.p_tk->uncompressed_fourcc;
+                    msg_Dbg( vars.p_demuxer, "uncompressed format codec=%4.4s", (const char*)&vars.p_tk->uncompressed_fourcc );
+                }
+                else
+                {
+                    msg_Dbg( vars.p_demuxer, "uncompressed format unknown video codec=%4.4s", (const char*)&vars.p_tk->uncompressed_fourcc );
+                }
+            }
         }
         S_CASE("V_FFV1") {
             vars.p_fmt->i_codec = VLC_CODEC_FFV1;


=====================================
modules/demux/mkv/mkv.hpp
=====================================
@@ -218,6 +218,7 @@ class mkv_track_t
         es_format_t fmt;
         float       f_fps;
         es_out_id_t *p_es;
+        vlc_fourcc_t uncompressed_fourcc = 0;
 
         /* audio */
         unsigned int i_original_rate;



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/4352adf39542199c184a9c99bc2665dd1e8b064c

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/4352adf39542199c184a9c99bc2665dd1e8b064c
You're receiving this email because of your account on code.videolan.org.




More information about the vlc-commits mailing list