[vlc-commits] [Git][videolan/vlc][master] 27 commits: meson: add DMO codec

Steve Lhomme (@robUx4) gitlab at videolan.org
Sat Nov 9 11:20:43 UTC 2024



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
ff6582b7 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add DMO codec

Co-authored-by: Alexandre Janniaux <ajanni at videolabs.io>

- - - - -
df13d100 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: only set cdata variable if boolean options are enabled

Otherwise it defines the value, rather than commenting it.

- - - - -
c0822fbd by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: generate the config.h after the modules

So they can add defines with local detection.

- - - - -
27e9e2b2 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: require meson 1.1.0

So we can use enable_auto_if().

We already require 1.2.3 in tools since f45dcaf4a3e3bdc214e579ef229718b52e9d4fed.
So it's compatible with newer Python.

- - - - -
029f5697 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add global windowsappcompat support

Now that we require meson 0.63 or more.

- - - - -
393ae7e3 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add d3d11 library in d3d11_common_lib

For code that is creating a decoder device via d3d11_fmt.cpp.

- - - - -
07d15477 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add d3d11va/dxva2 plugins

- - - - -
3cb30ace by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: enable AMF HQScaler

- - - - -
c3103cd8 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add AMF video filters

- - - - -
1f8fe56b by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: use the same OpenGL plugin names as autotools

- - - - -
42702abe by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: use the same libplacebo plugin names as autotools

- - - - -
2ea51d7d by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: use the same http PUT plugin name as autotools

- - - - -
1afe1d0f by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: use the same screen plugin name as autotools

- - - - -
9ebc955f by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: fix PROCESS_MITIGATION_IMAGE_LOAD_POLICY detection

configure.ac uses windows.h. It's not properly detected with winnt.h.

- - - - -
a701ac54 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add missing HAVE_DCOMP_H define

It's by the d3d11 output and Qt.

- - - - -
a0c3ad6a by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add dxgi/d3d11 header detection

as done in autotools.

- - - - -
a464c115 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add HAVE_ZLIB define when zlib is detected

Just as in autoconf.

- - - - -
e8ed24f5 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: only set cdata variable if compiler detection succeeds

Otherwise it defines the value, rather than commenting it.

- - - - -
9ec7bde7 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add missing compiler defines

Even if they are not used. We do the detection.

- - - - -
4cd9bdcb by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: put the HAVE_ARIBB24 define in config.h

As done by autoconf.

- - - - -
b0d6a3d8 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: use the same libbluray plugin name as autotools

- - - - -
7c40e5ba by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add missing libcom_cppflags in Windows modules using COM

Anything using d3d11_common_lib.

- - - - -
80a8d200 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add "directx" option to turn of some d3d11/d3d9 modules

As in autotools.

- - - - -
38cc9961 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: move the d3d11/d3d9 common lib in video_chroma

'video_chroma' is the first modules directory evaludated anyway.

- - - - -
f233833c by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: move deinterlacecommon_lib to share with other modules

- - - - -
3f6000a1 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add d3d11 filters

- - - - -
162e77f9 by Steve Lhomme at 2024-11-09T11:02:35+00:00
meson: add d3d9 filters

- - - - -


18 changed files:

- buildsystem/simd_checks/meson.build
- config.h.meson
- meson.build
- meson_options.txt
- modules/access/meson.build
- modules/access/screen/meson.build
- modules/access_output/meson.build
- modules/codec/meson.build
- modules/demux/meson.build
- + modules/hw/d3d11/meson.build
- + modules/hw/d3d9/meson.build
- + modules/hw/meson.build
- modules/meson.build
- modules/video_chroma/meson.build
- modules/video_filter/meson.build
- modules/video_output/libplacebo/meson.build
- modules/video_output/opengl/meson.build
- modules/video_output/win32/meson.build


Changes:

=====================================
buildsystem/simd_checks/meson.build
=====================================
@@ -18,7 +18,9 @@ have_sse2_intrinsics = cc.compiles('''
         frobzor = (uint64_t)_mm_movepi64_pi64(a);
     }
 ''', args: ['-msse2'], name: 'SSE2 intrinsics check')
-cdata.set('HAVE_SSE2_INTRINSICS', have_sse2_intrinsics)
+if have_sse2_intrinsics
+    cdata.set('HAVE_SSE2_INTRINSICS', 1)
+endif
 
 # Check for SSE2 inline assembly support
 can_compile_sse2 = cc.compiles('''
@@ -27,7 +29,9 @@ can_compile_sse2 = cc.compiles('''
         asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2");
     }
 ''', args: ['-msse'], name: 'SSE2 inline asm check')
-cdata.set('CAN_COMPILE_SSE2', can_compile_sse2)
+if can_compile_sse2
+    cdata.set('CAN_COMPILE_SSE2', 1)
+endif
 have_sse2 = can_compile_sse2
 
 # Check for SSE3 inline assembly support
@@ -37,7 +41,9 @@ can_compile_sse3 = cc.compiles('''
         asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
     }
 ''', args: ['-msse'], name: 'SSE3 inline asm check')
-cdata.set('CAN_COMPILE_SSE3', can_compile_sse3)
+if can_compile_sse3
+    cdata.set('CAN_COMPILE_SSE3', 1)
+endif
 
 # Check for SSSE3 inline assembly support
 can_compile_2_sse3 = cc.compiles('''
@@ -46,7 +52,9 @@ can_compile_2_sse3 = cc.compiles('''
         asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0");
     }
 ''', args: ['-msse'], name: 'SSSE3 inline asm check')
-cdata.set('CAN_COMPILE_SSSE3', can_compile_2_sse3)
+if can_compile_2_sse3
+    cdata.set('CAN_COMPILE_SSSE3', 1)
+endif
 have_sse3 = can_compile_sse3 and can_compile_2_sse3
 
 # Check for SSE4.1 inline assembly support
@@ -56,7 +64,9 @@ can_compile_sse4_1 = cc.compiles('''
         asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
     }
 ''', args: ['-msse'], name: 'SSE4.1 inline asm check')
-cdata.set('CAN_COMPILE_SSE4_1', can_compile_sse4_1)
+if can_compile_sse4_1
+    cdata.set('CAN_COMPILE_SSE4_1', 1)
+endif
 have_sse4_1 = can_compile_sse4_1
 
 # Check for SSE4.2 inline assembly support
@@ -66,7 +76,9 @@ can_compile_sse4_2 = cc.compiles('''
         asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
     }
 ''', args: ['-msse'], name: 'SSE4.2 inline asm check')
-cdata.set('CAN_COMPILE_SSE4_2', can_compile_sse4_2)
+if can_compile_sse4_2
+    cdata.set('CAN_COMPILE_SSE4_2', 1)
+endif
 have_sse4_2 = can_compile_sse4_2
 
 # Check for SSE4A inline assembly support
@@ -76,7 +88,9 @@ can_compile_sse4A = cc.compiles('''
         asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1");
     }
 ''', args: ['-msse'], name: 'SSE4A inline asm check')
-cdata.set('CAN_COMPILE_SSE4A', can_compile_sse4A)
+if can_compile_sse4A
+    cdata.set('CAN_COMPILE_SSE4A', 1)
+endif
 have_sse4A = can_compile_sse4A
 
 # Check for fully workin AVX2 intrinsics
@@ -97,7 +111,9 @@ have_avx2_intrinsics = cc.compiles('''
         frobzor = (uint64_t)_mm256_extract_epi64(a, 0);
     }
 ''', args: ['-mavx2'], name: 'AVX2 intrinsics check')
-cdata.set('HAVE_AVX2_INTRINSICS', have_avx2_intrinsics)
+if have_avx2_intrinsics
+    cdata.set('HAVE_AVX2_INTRINSICS', 1)
+endif
 
 # Check for AVX inline assembly support
 can_compile_avx = cc.compiles('''
@@ -106,7 +122,9 @@ can_compile_avx = cc.compiles('''
         asm volatile("vxorps %%ymm1,%%ymm2,%%ymm3"::"r"(p):"ymm1", "ymm2", "ymm3");
     }
 ''', args: ['-mavx'], name: 'AVX inline asm check')
-cdata.set('CAN_COMPILE_AVX', can_compile_avx)
+if can_compile_avx
+    cdata.set('CAN_COMPILE_AVX', 1)
+endif
 have_avx = can_compile_avx
 
 # Check for AVX2 inline assembly support
@@ -116,7 +134,9 @@ can_compile_avx2 = cc.compiles('''
         asm volatile("vpunpckhqdq %%ymm1,%%ymm2,%%ymm3"::"r"(p):"ymm1", "ymm2", "ymm3");
     }
 ''', args: ['-mavx'], name: 'AVX2 inline asm check')
-cdata.set('CAN_COMPILE_AVX2', can_compile_avx2)
+if can_compile_avx2
+    cdata.set('CAN_COMPILE_AVX2', 1)
+endif
 have_avx2 = can_compile_avx2
 
 # TODO: ARM Neon checks and SVE checks


=====================================
config.h.meson
=====================================
@@ -3,6 +3,12 @@
 /* Define to 1 to allow running VLC as root (uid 0). */
 #mesondefine ALLOW_RUN_AS_ROOT
 
+/* Define to 1 if AVX inline assembly is available. */
+#mesondefine CAN_COMPILE_AVX
+
+/* Define to 1 if AVX2 inline assembly is available. */
+#mesondefine CAN_COMPILE_AVX2
+
 /* Define to 1 if SSE2 inline assembly is available. */
 #mesondefine CAN_COMPILE_SSE2
 
@@ -61,6 +67,12 @@
 /* Define to 1 if you have the `aligned_alloc' function. */
 #mesondefine HAVE_ALIGNED_ALLOC
 
+/* AMD HQScaler supported */
+#mesondefine HAVE_AMF_SCALER
+
+/* Define if libaribb24 is available. */
+#mesondefine HAVE_ARIBB24
+
 /* Define to 1 if you have the <arpa/inet.h> header file. */
 #mesondefine HAVE_ARPA_INET_H
 
@@ -76,6 +88,9 @@
 /* Support for __attribute__((packed)) for structs */
 #mesondefine HAVE_ATTRIBUTE_PACKED
 
+/* Define to 1 if AVX2 intrinsics are available. */
+#mesondefine HAVE_AVX2_INTRINSICS
+
 /* Define to 1 if you have the `backtrace' function. */
 #mesondefine HAVE_BACKTRACE
 
@@ -89,12 +104,24 @@
 /* Define if the compiler supports typeof. */
 #mesondefine HAVE_CXX_TYPEOF
 
+/* Define to 1 if you have the <d3d11_4.h> header file. */
+#mesondefine HAVE_D3D11_4_H
+
+/* Define to 1 if you have the <dcomp.h> header file. */
+#mesondefine HAVE_DCOMP_H
+
 /* Define to 1 if you have the `dirfd' function. */
 #mesondefine HAVE_DIRFD
 
 /* Define to 1 if you have the `dup3' function. */
 #mesondefine HAVE_DUP3
 
+/* Define to 1 if you have the <dxgi1_6.h> header file. */
+#mesondefine HAVE_DXGI1_6_H
+
+/* Define to 1 if you have the <dxgidebug.h> header file. */
+#mesondefine HAVE_DXGIDEBUG_H
+
 /* Define to 1 if you have the `eventfd' function. */
 #mesondefine HAVE_EVENTFD
 
@@ -198,6 +225,12 @@
 
 
 
+/* Define to 1 if you have the <libavcodec/d3d11va.h> header file. */
+#mesondefine HAVE_LIBAVCODEC_D3D11VA_H
+
+/* Define to 1 if you have the <libavcodec/dxva2.h> header file. */
+#mesondefine HAVE_LIBAVCODEC_DXVA2_H
+
 /* TODO: Properly check for the avformat header
  */
 #define HAVE_LIBAVFORMAT_AVFORMAT_H 1
@@ -432,6 +465,9 @@
 /* Define to 1 if you have the <xlocale.h> header file. */
 #mesondefine HAVE_XLOCALE_H
 
+/* Define to 1 if you have zlib. */
+#mesondefine HAVE_ZLIB
+
 /* Define to 1 if you have the <zlib.h> header file. */
 #mesondefine HAVE_ZLIB_H
 


=====================================
meson.build
=====================================
@@ -1,7 +1,7 @@
 project('VLC', ['c', 'cpp'],
     version: '4.0.0-dev',
     default_options: ['c_std=gnu17', 'cpp_std=c++17'],
-    meson_version: '>=0.60.0')
+    meson_version: '>=1.1.0')
 
 vlc_copyright_years = '1996-2018'
 vlc_version_codename = 'Otto Chriek'
@@ -139,6 +139,9 @@ subdir('buildsystem/simd_checks')
 
 # zlib library
 z_dep = dependency('zlib', required: false)
+if z_dep.found()
+    cdata.set('HAVE_ZLIB', 1)
+endif
 
 # Math library
 m_lib = cc.find_library('m', required: false)
@@ -235,8 +238,11 @@ check_c_headers = [
     ['valgrind/valgrind.h'],
     ['X11/Xlib.h'],
     ['xlocale.h'],
-    ['zlib.h'],
+    ['zlib.h', { 'args' : [contrib_inc_args] }],
     ['wordexp.h'],
+    ['dxgi1_6.h'],
+    ['dxgidebug.h'],
+    ['d3d11_4.h'],
     ['GL/wglew.h',
         { 'prefix' : ['#include <windows.h>', '#include <GL/glew.h>'],
           'args' : [contrib_inc_args] }],
@@ -347,7 +353,7 @@ windows_version_test = '''
     endforeach
 
     # Check for HAVE_PROCESS_MITIGATION_IMAGE_LOAD_POLICY type
-    if cc.has_type('PROCESS_MITIGATION_IMAGE_LOAD_POLICY', prefix: '#include <winnt.h>')
+    if cc.has_type('PROCESS_MITIGATION_IMAGE_LOAD_POLICY', prefix: '#include <windows.h>')
         cdata.set('HAVE_PROCESS_MITIGATION_IMAGE_LOAD_POLICY', 1)
     endif
 
@@ -441,8 +447,7 @@ ucrt_version_test = '''
     if get_option('winstore_app')
         have_win_store = true
         windowsappcompat_lib = cc.find_library('windowsappcompat')
-        # TODO: enable when meson 0.63 is required
-        # add_project_dependencies(windowsappcompat_lib, language: ['c', 'cpp'])
+        add_project_dependencies(windowsappcompat_lib, language: ['c', 'cpp'])
     else
         have_win_desktop = true
     endif
@@ -981,7 +986,9 @@ cdata.set_quoted('PKGDATADIR', pkgdatadir_path)
 cdata.set_quoted('LOCALEDIR', localedir_path)
 
 # Enable stream outputs
-cdata.set('ENABLE_SOUT', get_option('stream_outputs'))
+if get_option('stream_outputs')
+    cdata.set('ENABLE_SOUT', 1)
+endif
 
 # Enable VLM
 if get_option('videolan_manager')
@@ -993,10 +1000,14 @@ endif
 
 # Allow running as root
 # (useful for people running on embedded platforms)
-cdata.set('ALLOW_RUN_AS_ROOT', get_option('run_as_root'))
+if get_option('run_as_root')
+    cdata.set('ALLOW_RUN_AS_ROOT', 1)
+endif
 
 # Optimize for memory usage vs speed
-cdata.set('OPTIMIZE_MEMORY', get_option('optimize_memory'))
+if get_option('optimize_memory')
+    cdata.set('OPTIMIZE_MEMORY', 1)
+endif
 
 # Allow binary package maintainer to pass a custom string
 # to avoid cache problem
@@ -1046,11 +1057,6 @@ if flex.found() and bison.found()
         arguments: ['-o', '@OUTPUT@', '@INPUT@'])
 endif
 
-# Generate config.h
-configure_file(input: 'config.h.meson',
-  output: 'config.h',
-  configuration: cdata)
-
 # Some missing functions are implemented in compat
 subdir('compat')
 
@@ -1069,6 +1075,11 @@ subdir('bin')
 # VLC plugins
 subdir('modules')
 
+# Generate config.h
+configure_file(input: 'config.h.meson',
+  output: 'config.h',
+  configuration: cdata)
+
 if (get_option('tests').allowed())
     # Integration and non-regression tests, some unittest are there too but the
     # modules/, src/ and lib/ folders should be favoured for those.


=====================================
meson_options.txt
=====================================
@@ -640,6 +640,36 @@ option('harfbuzz',
     value: 'auto',
     description: 'Harfbuzz support')
 
+option('d3d11va',
+    type: 'feature',
+    value: 'auto',
+    description: 'Direct3D11 avcodec support')
+
+option('dxva2',
+    type: 'feature',
+    value: 'auto',
+    description: 'DXVA2 avcodec support')
+
+option('amf_scaler',
+    type: 'feature',
+    value: 'auto',
+    description: 'AMF HQScaler support')
+
+option('amf_frc',
+    type: 'feature',
+    value: 'auto',
+    description: 'AMF Frame Doubler support')
+
+option('amf_vqenhancer',
+    type: 'feature',
+    value: 'auto',
+    description: 'AMF VQ Enhancer support')
+
+option('directx',
+    type: 'feature',
+    value: 'auto',
+    description: 'DirectX support')
+
 # TODO: Missing live555
 # TODO: Missing v4l2
 # TODO: Missing nvdec
@@ -651,12 +681,9 @@ option('harfbuzz',
 # TODO: Missing gst-decode
 # TODO: Missing merge-ffmpeg
 # TODO: Missing libva
-# TODO: Missing dxva2
-# TODO: Missing d3d11va
 # TODO: Missing tremor
 # TODO: Missing x26410b
 # TODO: Missing vdpau
-# TODO: Missing directx
 # TODO: Missing kva
 # TODO: Missing mmal
 # TODO: Missing sndio


=====================================
modules/access/meson.build
=====================================
@@ -288,7 +288,7 @@ endif
 libbluray_dep = dependency('libbluray', version: '>= 1.1.0', required: get_option('bluray'))
 if libbluray_dep.found()
     vlc_modules += {
-        'name' : 'bluray',
+        'name' : 'libbluray',
         'sources' : files('bluray.c'),
         'dependencies' : [libbluray_dep]
     }


=====================================
modules/access/screen/meson.build
=====================================
@@ -20,19 +20,21 @@ if get_option('screen').allowed()
     screen_link_with = []
 
     if host_system == 'windows'
+      screen_name = 'screen_win'
       screen_files += files('win32.c', 'dxgi.cpp')
       gdi32_dep = cc.find_library('gdi32')
       screen_deps += [gdi32_dep, cc.find_library('d3d11')]
       screen_cppargs += libcom_cppflags
       screen_link_with += d3d11_common_lib
     else
+      screen_name = 'screen'
       screen_files += files('mac.c')
       applicationservices_dep = dependency('ApplicationServices', required: true)
       screen_deps += [applicationservices_dep]
     endif
 
     vlc_modules += {
-        'name' : 'screen',
+        'name' : screen_name,
         'sources' : screen_files,
         'dependencies' : screen_deps,
         'cpp_args' : screen_cppargs,


=====================================
modules/access_output/meson.build
=====================================
@@ -39,7 +39,7 @@ endif
 
 # HTTP PUT
 vlc_modules += {
-    'name' : 'access_output_http_put',
+    'name' : 'access_http_put',
     'sources' : files('http-put.c'),
     'include_directories' : include_directories('../access/http'),
     'link_with' : [vlc_http_lib]


=====================================
modules/codec/meson.build
=====================================
@@ -261,11 +261,13 @@ vlc_modules += {
 
 # aribsub
 aribb24_dep = dependency('aribb24', version: '>= 1.0.1', required: get_option('aribsub'))
+if aribb24_dep.found()
+    cdata.set('HAVE_ARIBB24', 1)
+endif
 vlc_modules += {
     'name' : 'aribsub',
     'sources' : files('arib/aribsub.c'),
     'dependencies' : [aribb24_dep],
-    'cpp_args' : ['-DHAVE_ARIBB24'],
     'enabled' : aribb24_dep.found()
 }
 
@@ -605,33 +607,7 @@ vlc_modules += {
         libva_dep.found()
 }
 
-
 if host_system == 'windows'
-    d3d11_common_lib = static_library('d3d11_common',
-        files(
-            '../video_chroma/d3d11_fmt.cpp',
-            '../video_chroma/dxgi_fmt.c',
-            ),
-        include_directories: [vlc_include_dirs],
-        cpp_args : libcom_cppflags,
-        pic: true,
-        install: false,
-        dependencies: [
-            cc.find_library('dxguid'),
-            cc.find_library('wbemuuid'),
-            cc.find_library('uuid'),
-        ]
-    )
-    d3d9_common_lib = static_library('d3d9_common',
-        files(
-            '../video_chroma/d3d9_fmt.c',
-            '../video_chroma/dxgi_fmt.c',
-            ),
-        include_directories: [vlc_include_dirs],
-        pic: true,
-        install: false
-    )
-
     mft_deps = [ cc.find_library('mfplat'), cc.find_library('d3d11') ]
     vlc_modules += {
         'name' : 'mft',
@@ -647,8 +623,67 @@ if host_system == 'windows'
                 '../packetizer/hevc_nal.c'
             ),
         'link_with' : [ d3d11_common_lib ],
+        'cpp_args' : libcom_cppflags,
         'dependencies' : mft_deps
     }
+
+    if (get_option('d3d11va').
+        enable_auto_if(cc.check_header('libavcodec/d3d11va.h', args: [contrib_inc_args]))
+        .allowed())
+        cdata.set('HAVE_LIBAVCODEC_D3D11VA_H', 1)
+        vlc_modules += {
+            'name' : 'd3d11va',
+            'sources' : files(
+                    'avcodec/d3d11va.c',
+                    'avcodec/directx_va.c',
+                    'avcodec/va_surface.c',
+                    '../packetizer/h264_nal.c',
+                    '../packetizer/hevc_nal.c',
+                    'avcodec/dxva_blocklist.c',
+                ),
+            'cpp_args' : libcom_cppflags,
+            'link_with' : [ d3d11_common_lib ],
+            'include_directories' : [
+                vlc_include_dirs,
+                include_directories('avcodec')
+            ],
+            'dependencies' : [avcodec_dep, avutil_dep],
+        }
+    endif
+
+    if (get_option('dxva2').
+        enable_auto_if(cc.check_header('libavcodec/dxva2.h', args: [contrib_inc_args]))
+        .allowed())
+        cdata.set('HAVE_LIBAVCODEC_DXVA2_H', 1)
+        vlc_modules += {
+            'name' : 'dxva2',
+            'sources' : files(
+                    'avcodec/dxva2.c',
+                    'avcodec/directx_va.c',
+                    'avcodec/va_surface.c',
+                    '../packetizer/h264_nal.c',
+                    '../packetizer/hevc_nal.c',
+                    'avcodec/dxva_blocklist.c',
+                ),
+            'link_with' : [ d3d9_common_lib ],
+            'include_directories' : [
+                vlc_include_dirs,
+                include_directories('avcodec')
+            ],
+            'dependencies' : [avcodec_dep, avutil_dep],
+        }
+    endif
+
+    vlc_modules += {
+        'name' : 'dmo',
+        'sources' : files(
+                'dmo/dmo.c',
+                'dmo/buffer.c',
+            ),
+        'dependencies': [
+            cc.find_library('uuid'),
+        ]
+    }
 endif
 
 # OpenMAX IL codec
@@ -762,16 +797,19 @@ vlc_modules += {
 vpx_alpha_sources = files('vpx_alpha.c')
 vpx_alpha_with = [ ]
 vpx_alpha_deps = [ ]
+vpx_alpha_cxx_args = [ ]
 if host_system == 'windows'
     vpx_alpha_sources += files('alpha_d3d11.cpp')
     vpx_alpha_with += [ d3d11_common_lib ]
     vpx_alpha_deps += [ cc.find_library('d3d11') ]
+    vpx_alpha_cxx_args += libcom_cppflags
 endif
 vlc_modules += {
     'name' : 'vpx_alpha',
     'sources' : vpx_alpha_sources,
     'link_with' : vpx_alpha_with,
     'dependencies' : [vpx_alpha_deps],
+    'cpp_args' : vpx_alpha_cxx_args,
 }
 
 # libaom AV1 codec


=====================================
modules/demux/meson.build
=====================================
@@ -339,11 +339,6 @@ vlc_modules += {
 aribb24_dep = dependency('aribb24', version: '>= 1.0.1', required: get_option('aribb24'))
 libdvbpsi_dep = dependency('libdvbpsi', version: '>= 1.2.0', required: get_option('libdvbpsi'))
 if libdvbpsi_dep.found()
-    arrib24_define = []
-    if aribb24_dep.found()
-        arrib24_define += '-DHAVE_ARIBB24=1'
-    endif
-
     vlc_modules += {
         'name' : 'ts',
         'sources' : files(
@@ -370,7 +365,6 @@ if libdvbpsi_dep.found()
             '../codec/opus_header.c',
         ),
         'dependencies' : [libdvbpsi_dep, aribb24_dep],
-        'c_args' : arrib24_define
     }
 endif
 


=====================================
modules/hw/d3d11/meson.build
=====================================
@@ -0,0 +1,20 @@
+#
+# Direct3d11 modules
+#
+
+if get_option('directx').allowed()
+    vlc_modules += {
+        'name' : 'direct3d11_filters',
+        'sources' : files(
+            'd3d11_filters.c',
+            'd3d11_deinterlace.c',
+            'd3d11_decoder.cpp',
+            'd3d11_device.c',
+            'd3d11_surface.c',
+            'd3d11_processor.c',
+            ),
+        'link_with' : [ d3d11_common_lib, chroma_copy_lib, deinterlacecommon_lib ],
+        'cpp_args' : libcom_cppflags,
+        'include_directories' : [vlc_include_dirs],
+    }
+endif


=====================================
modules/hw/d3d9/meson.build
=====================================
@@ -0,0 +1,17 @@
+#
+# Direct3d9 modules
+#
+
+if get_option('directx').allowed()
+    vlc_modules += {
+        'name' : 'direct3d9_filters',
+        'sources' : files(
+            'd3d9_filters.c',
+            'dxva2_deinterlace.c',
+            'dxa9.c',
+            'd3d9_device.c',
+            ),
+        'link_with' : [ d3d9_common_lib, chroma_copy_lib, deinterlacecommon_lib ],
+        'include_directories' : [vlc_include_dirs],
+    }
+endif


=====================================
modules/hw/meson.build
=====================================
@@ -0,0 +1,9 @@
+# Hardware/GPU modules
+
+if host_system == 'windows'
+    # d3d11 interface module
+    subdir('d3d11')
+
+    # d3d9 interface module
+    subdir('d3d9')
+endif


=====================================
modules/meson.build
=====================================
@@ -212,6 +212,16 @@ vlc_json_lib = static_library('vlc_json',
     pic: true
 )
 
+# deinterlace common helper lib
+deinterlacecommon_lib = static_library(
+    'deinterlace_common',
+    files('video_filter/deinterlace/common.c'),
+    include_directories: [vlc_include_dirs],
+    pic: true,
+    install: false
+)
+
+
 # Array that holds all enabled VLC module dicts
 vlc_modules = []
 vlc_rust_modules = []
@@ -243,6 +253,9 @@ subdir('audio_output')
 # control modules
 subdir('control')
 
+# hardware modules
+subdir('hw')
+
 # gui modules
 subdir('gui')
 


=====================================
modules/video_chroma/meson.build
=====================================
@@ -109,6 +109,35 @@ vlc_modules += {
     'sources' : files('orient.c'),
 }
 
+d3d11_common_lib = []
+if host_system == 'windows'
+    d3d11_common_lib = static_library('d3d11_common',
+        files(
+            'd3d11_fmt.cpp',
+            'dxgi_fmt.c',
+            ),
+        include_directories: [vlc_include_dirs],
+        cpp_args : libcom_cppflags,
+        pic: true,
+        install: false,
+        dependencies: [
+            cc.find_library('dxguid'),
+            cc.find_library('wbemuuid'),
+            cc.find_library('uuid'),
+            cc.find_library('d3d11'),
+        ]
+    )
+    d3d9_common_lib = static_library('d3d9_common',
+        files(
+            'd3d9_fmt.c',
+            'dxgi_fmt.c',
+            ),
+        include_directories: [vlc_include_dirs],
+        pic: true,
+        install: false
+    )
+endif
+
 # CVPX chroma converter
 # TODO: Set minimum versions for tvOS and iOS
 vlc_modules += {


=====================================
modules/video_filter/meson.build
=====================================
@@ -36,6 +36,36 @@ vlc_modules += {
     'sources' : files('antiflicker.c')
 }
 
+if host_system == 'windows'
+    vlc_modules += {
+        'name' : 'amf_frc',
+        'sources' : files(
+                'amf_frc.c',
+                '../hw/amf/amf_helper.c',
+            ),
+        'link_with': [ d3d11_common_lib ],
+        'dependencies': [ contrib_dep, cc.find_library('d3d11')],
+        'enabled' : get_option('amf_frc').allowed() \
+                    and cc.find_library('d3d11').found() \
+                    and cc.check_header('AMF/core/PropertyStorage.h', args: [contrib_inc_args]) \
+                    and cc.check_header('AMF/components/FRC.h', args: [contrib_inc_args]),
+    }
+
+    vlc_modules += {
+        'name' : 'amf_vqenhancer',
+        'sources' : files(
+                'amf_vqenhancer.c',
+                '../hw/amf/amf_helper.c',
+            ),
+        'link_with': [ d3d11_common_lib ],
+        'dependencies': [ contrib_dep, cc.find_library('d3d11') ],
+        'enabled' : get_option('amf_vqenhancer').allowed() \
+                    and cc.find_library('d3d11').found() \
+                    and cc.check_header('AMF/core/PropertyStorage.h', args: [contrib_inc_args]) \
+                    and cc.check_header('AMF/components/VQEnhancer.h', args: [contrib_inc_args]),
+    }
+endif
+
 # Ball filter
 vlc_modules += {
     'name' : 'ball',
@@ -259,15 +289,6 @@ vlc_modules += {
     'enabled' : host_system == 'darwin',
 }
 
-# deinterlace common helper lib
-deinterlacecommon_lib = static_library(
-    'deinterlace_common',
-    files('deinterlace/common.c'),
-    include_directories: [vlc_include_dirs],
-    pic: true,
-    install: false
-)
-
 # deinterlace filter
 vlc_modules += {
     'name' : 'deinterlace',


=====================================
modules/video_output/libplacebo/meson.build
=====================================
@@ -1,7 +1,7 @@
 # Libplacebo-based video outputs
 
 vlc_modules += {
-    'name' : 'libplacebo',
+    'name' : 'placebo',
     'sources' : files('instance.c', 'display.c'),
     'link_with' : [libplacebo_utils],
     'dependencies' : [libplacebo_dep],
@@ -14,7 +14,7 @@ vulkan_dep = dependency('vulkan',
 
 if vulkan_dep.found()
     vlc_modules += {
-        'name' : 'libplacebo_vk',
+        'name' : 'placebo_vk',
         'sources' : files('../vulkan/platform.c', 'instance_vulkan.c'),
         'link_with' : [libplacebo_utils],
         'dependencies' : [libplacebo_dep],
@@ -24,7 +24,7 @@ endif
 ## OpenGL
 if opengl_dep.found()
     vlc_modules += {
-        'name' : 'libplacebo_gl',
+        'name' : 'placebo_gl',
         'sources' : files('instance_opengl.c'),
         'link_with' : [libplacebo_utils],
         'dependencies' : [libplacebo_dep],
@@ -33,7 +33,7 @@ endif
 
 if opengles2_dep.found()
     vlc_modules += {
-        'name' : 'libplacebo_gles2',
+        'name' : 'placebo_gles2',
         'sources' : files('instance_opengl.c'),
         'link_with' : [libplacebo_utils],
         'c_args' : '-DUSE_OPENGL_ES2',


=====================================
modules/video_output/opengl/meson.build
=====================================
@@ -28,7 +28,7 @@ if opengl_dep.found() and not (have_ios or have_tvos)
                                    ])
 
     vlc_modules += {
-        'name' : 'libgl',
+        'name' : 'gl',
         'sources' : [
                 files('display.c'),
                 opengl_vout_commonsources
@@ -61,7 +61,7 @@ if host_system in ['darwin', 'android'] or opengl_dep.found() or opengles2_dep.f
     endif
 
     vlc_modules += {
-        'name' : 'interop_sw',
+        'name' : 'glinterop_sw',
         'sources' : files('interop_sw.c'),
         'dependencies' : interop_sw_deps,
         'c_args' : interop_sw_cargs,
@@ -74,7 +74,7 @@ if have_win_desktop
     opengl32_lib = cc.find_library('opengl32', required: false)
     if opengl32_lib.found() and not missing_win_glew
         vlc_modules += {
-            'name' : 'interop_dxva2',
+            'name' : 'glinterop_dxva2',
             'sources' : files('interop_dxva2.c'),
             'c_args' : [ contrib_inc_args ],
             'dependencies' : [ opengl32_lib ],


=====================================
modules/video_output/win32/meson.build
=====================================
@@ -22,26 +22,39 @@ else
         cc.find_library('user32')
     ]
 endif
+if get_option('amf_scaler').allowed()
+    if cc.check_header('AMF/core/PropertyStorage.h', args: [contrib_inc_args]) \
+    and cc.check_header('AMF/components/HQScaler.h', args: [contrib_inc_args])
+        cdata.set('HAVE_AMF_SCALER', 1)
+        d3d11_sources += files('../../hw/amf/amf_helper.c')
+        d3d11_cxxargs += contrib_inc_args
+        d3d11_cargs += contrib_inc_args
+    endif
+endif
 
-vlc_modules += {
-    'name' : 'direct3d11',
-    'sources' : d3d11_sources,
-    'link_with' : d3d11_link_with,
-    'c_args' : d3d11_cargs,
-    'cpp_args' : d3d11_cxxargs,
-    'dependencies' : d3d11_deps
-}
-
-if have_win_desktop
-    # Direct3D9 video output
+if get_option('directx').allowed()
     vlc_modules += {
-        'name' : 'direct3d9',
-        'sources' : files('direct3d9.c', 'common.c', 'events.c', 'sensors.cpp', 'win32touch.c'),
-        'link_with' : [ d3d9_common_lib, chroma_copy_lib ],
-        'dependencies' : [
-            cc.find_library('user32')
-        ]
+        'name' : 'direct3d11',
+        'sources' : d3d11_sources,
+        'link_with' : d3d11_link_with,
+        'c_args' : d3d11_cargs,
+        'cpp_args' : d3d11_cxxargs,
+        'dependencies' : d3d11_deps
     }
+endif
+
+if have_win_desktop
+    if get_option('directx').allowed()
+        # Direct3D9 video output
+        vlc_modules += {
+            'name' : 'direct3d9',
+            'sources' : files('direct3d9.c', 'common.c', 'events.c', 'sensors.cpp', 'win32touch.c'),
+            'link_with' : [ d3d9_common_lib, chroma_copy_lib ],
+            'dependencies' : [
+                cc.find_library('user32')
+            ]
+        }
+    endif
 
     # GDI video output
     vlc_modules += {



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/9fa2f2d31ec9acf1be20545b8177a88240baa65b...162e77f9cd927fdcf93a76dc410755b04f5f2e01

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/9fa2f2d31ec9acf1be20545b8177a88240baa65b...162e77f9cd927fdcf93a76dc410755b04f5f2e01
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