[vlc-commits] [Git][videolan/vlc][master] demux/mkv: fix iso_color_tables with C++ compatibility

Steve Lhomme (@robUx4) gitlab at videolan.org
Fri May 5 12:54:07 UTC 2023



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
3ad34b0d by Steve Lhomme at 2023-05-05T12:41:00+00:00
demux/mkv: fix iso_color_tables with C++ compatibility

Array designators are extensions of C99 and are not supposed to be used
from C++ code. We just use the code from C.

> warning: array designators are a C99 extension [-Wc99-designator]

- - - - -


5 changed files:

- modules/demux/Makefile.am
- modules/demux/meson.build
- modules/demux/mkv/matroska_segment_parse.cpp
- + modules/demux/mkv/vlc_colors.c
- + modules/demux/mkv/vlc_colors.h


Changes:

=====================================
modules/demux/Makefile.am
=====================================
@@ -191,6 +191,7 @@ libmkv_plugin_la_SOURCES = \
 	demux/mkv/chapters.hpp demux/mkv/chapters.cpp \
 	demux/mkv/chapter_command.hpp demux/mkv/chapter_command.cpp \
 	demux/mkv/stream_io_callback.hpp demux/mkv/stream_io_callback.cpp \
+	demux/mkv/vlc_colors.c demux/mkv/vlc_colors.h \
 	demux/vobsub.h \
 	demux/mkv/mkv.hpp demux/mkv/mkv.cpp \
         demux/av1_unpack.h codec/webvtt/helpers.h \


=====================================
modules/demux/meson.build
=====================================
@@ -274,6 +274,7 @@ if libebml_dep.found() and libmatroska_dep.found()
             'mkv/chapters.cpp',
             'mkv/chapter_command.cpp',
             'mkv/stream_io_callback.cpp',
+            'mkv/vlc_colors.c',
             'mp4/libmp4.c',
             '../packetizer/dts_header.c',
         ),


=====================================
modules/demux/mkv/matroska_segment_parse.cpp
=====================================
@@ -36,7 +36,7 @@ extern "C" {
 #include "../mp4/libmp4.h"
 }
 
-#include "../../packetizer/iso_color_tables.h"
+#include "vlc_colors.h"
 
 #include <vlc_codecs.h>
 #include <stdexcept>
@@ -785,7 +785,7 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         E_CASE( KaxVideoColourTransferCharacter, transfer )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.transfer = iso_23001_8_tc_to_vlc_xfer( static_cast<uint8>(transfer) );
+            vars.tk->fmt.video.transfer = iso_23001_transfer_to_vlc( static_cast<uint8>(transfer) );
             const char *name = nullptr;
             switch( static_cast<uint8>(transfer) )
             {
@@ -827,7 +827,7 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         E_CASE( KaxVideoColourPrimaries, primaries )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.primaries = iso_23001_8_cp_to_vlc_primaries( static_cast<uint8>(primaries) );
+            vars.tk->fmt.video.primaries = iso_23001_primaries_to_vlc( static_cast<uint8>(primaries) );
             const char *name = nullptr;
             switch( static_cast<uint8>(primaries) )
             {
@@ -859,7 +859,7 @@ void matroska_segment_c::ParseTrackEntry( const KaxTrackEntry *m )
         E_CASE( KaxVideoColourMatrix, matrix )
         {
             ONLY_FMT(VIDEO);
-            vars.tk->fmt.video.space = iso_23001_8_mc_to_vlc_coeffs( static_cast<uint8>(matrix) );
+            vars.tk->fmt.video.space = iso_23001_matrix_coeffs_to_vlc( static_cast<uint8>(matrix) );
             const char *name = nullptr;
             switch( static_cast<uint8>(matrix) )
             {


=====================================
modules/demux/mkv/vlc_colors.c
=====================================
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+/*****************************************************************************
+ * mkv/vlc_colors.c: ISO to VLC colorimetry conversion for C++
+ *****************************************************************************
+ * Copyright © 2023 Videolabs, VLC authors and VideoLAN
+ *
+ * Authors: Steve Lhomme <robux4 at videolabs.io>
+ *****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "vlc_colors.h"
+#include "../../packetizer/iso_color_tables.h"
+
+video_transfer_func_t iso_23001_transfer_to_vlc(uint8_t iso_transfer)
+{
+    return iso_23001_8_tc_to_vlc_xfer(iso_transfer);
+}
+
+video_color_primaries_t iso_23001_primaries_to_vlc(uint8_t iso_primaries)
+{
+    return iso_23001_8_cp_to_vlc_primaries(iso_primaries);
+}
+
+video_color_space_t iso_23001_matrix_coeffs_to_vlc(uint8_t iso_coefs)
+{
+    return iso_23001_8_mc_to_vlc_coeffs(iso_coefs);
+}


=====================================
modules/demux/mkv/vlc_colors.h
=====================================
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: LGPL-2.1-or-later
+/*****************************************************************************
+ * mkv/vlc_colors.h: ISO to VLC colorimetry conversion for C++
+ *****************************************************************************
+ * Copyright © 2023 Videolabs, VLC authors and VideoLAN
+ *
+ * Authors: Steve Lhomme <robux4 at videolabs.io>
+ *****************************************************************************/
+
+#pragma once
+
+#include <vlc_es.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+video_transfer_func_t iso_23001_transfer_to_vlc(uint8_t iso_transfer);
+video_color_primaries_t iso_23001_primaries_to_vlc(uint8_t iso_primaries);
+video_color_space_t iso_23001_matrix_coeffs_to_vlc(uint8_t iso_coefs);
+
+#ifdef __cplusplus
+};
+#endif
\ No newline at end of file



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/3ad34b0dec801186cac8a1aba5304ce9359f3b3d

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


VideoLAN code repository instance


More information about the vlc-commits mailing list