Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
  • hmaarrfk/vlc
412 results
Show changes
Commits on Source (2)
......@@ -3124,9 +3124,9 @@ fi
dnl
dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder
dnl Intel Video Processing Library
dnl
PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto])
PKG_ENABLE_MODULES_VLC([VPL], [qsv], [vpl], [Intel Video Processing Library encoder], [auto])
dnl
......
From f5a03b546070a4743603b3fe0e2474866d76622a Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 30 May 2023 12:19:15 +0200
Subject: [PATCH] Add missing mfx_dispatcher_uwp.h/.cpp
Originaly found in api/mfx_dispatch/windows/include/mfx_dispatcher_uwp.h
And api/mfx_dispatch/windows/src/mfx_dispatcher_uwp.cpp
---
Makefile.am | 1 +
src/mfx_dispatcher_uwp.cpp | 201 +++++++++++++++++++++++++++++++++++++
src/mfx_dispatcher_uwp.h | 36 +++++++
3 files changed, 238 insertions(+)
create mode 100644 src/mfx_dispatcher_uwp.cpp
create mode 100644 src/mfx_dispatcher_uwp.h
diff --git a/Makefile.am b/Makefile.am
index 40be4b1..680f125 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -42,6 +42,7 @@ libmfx_la_LIBADD = $(DLLIB) $(LIBVA_DRM_LIBS) $(LIBVA_X11_LIBS)
libmfx_la_CPPFLAGS = $(LIBVA_DRM_CFLAGS) $(LIBVA_X11_CFLAGS) $(AM_CPPFLAGS)
if WINDOWS_STORE
+libmfx_la_SOURCES += src/mfx_dispatcher_uwp.cpp
libintel_gfx_api-x86.a: src/intel_gfx_api-x86.def
$(DLLTOOL) --as=as --output-lib $@ --input-def $< --as-flags=--32 -m i386
libintel_gfx_api-x64.a: src/intel_gfx_api-x64.def
diff --git a/src/mfx_dispatcher_uwp.cpp b/src/mfx_dispatcher_uwp.cpp
new file mode 100644
index 0000000..62c9f75
--- /dev/null
+++ b/src/mfx_dispatcher_uwp.cpp
@@ -0,0 +1,201 @@
+// Copyright (c) 2020 Intel Corporation
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+#include "mfx_dispatcher.h"
+#include "mfx_dispatcher_uwp.h"
+#include "mfx_driver_store_loader.h"
+#include "mfx_dxva2_device.h"
+#include "mfx_load_dll.h"
+
+mfxStatus GfxApiInit(mfxInitParam par, mfxU32 deviceID, mfxSession *session, mfxModuleHandle& hModule)
+{
+ HRESULT hr = S_OK;
+ wchar_t IntelGFXAPIdllName[MFX_MAX_DLL_PATH] = { 0 };
+ MFX::DriverStoreLoader dsLoader;
+
+ if (!dsLoader.GetDriverStorePath(IntelGFXAPIdllName, sizeof(IntelGFXAPIdllName), deviceID))
+ {
+ return MFX_ERR_UNSUPPORTED;
+ }
+
+ size_t pathLen = wcslen(IntelGFXAPIdllName);
+ MFX::mfx_get_default_intel_gfx_api_dll_name(IntelGFXAPIdllName + pathLen, sizeof(IntelGFXAPIdllName) / sizeof(IntelGFXAPIdllName[0]) - pathLen);
+ DISPATCHER_LOG_INFO((("loading %S\n"), IntelGFXAPIdllName));
+
+ hModule = MFX::mfx_dll_load(IntelGFXAPIdllName);
+ if (!hModule)
+ {
+ DISPATCHER_LOG_ERROR("Can't load intel_gfx_api\n");
+ return MFX_ERR_UNSUPPORTED;
+ }
+
+ mfxFunctionPointer pFunc = (mfxFunctionPointer)MFX::mfx_dll_get_addr(hModule, "InitialiseMediaSession");
+ if (!pFunc)
+ {
+ DISPATCHER_LOG_ERROR("Can't find required API function: InitialiseMediaSession\n");
+ MFX::mfx_dll_free(hModule);
+ return MFX_ERR_UNSUPPORTED;
+ }
+
+ typedef HRESULT(APIENTRY *InitialiseMediaSessionPtr) (HANDLE*, LPVOID, LPVOID);
+ InitialiseMediaSessionPtr init = (InitialiseMediaSessionPtr)pFunc;
+ hr = init((HANDLE*)session, &par, NULL);
+
+ return (hr == S_OK) ? MFX_ERR_NONE : MFX_ERR_UNKNOWN;
+}
+
+mfxStatus GfxApiClose(mfxSession& session, mfxModuleHandle& hModule)
+{
+ HRESULT hr = S_OK;
+
+ if (!hModule)
+ {
+ return MFX_ERR_INVALID_HANDLE;
+ }
+
+ mfxFunctionPointer pFunc = (mfxFunctionPointer)MFX::mfx_dll_get_addr(hModule, "DisposeMediaSession");
+ if (!pFunc)
+ {
+ DISPATCHER_LOG_ERROR("Can't find required API function: DisposeMediaSession\n");
+ return MFX_ERR_INVALID_HANDLE;
+ }
+
+ typedef HRESULT(APIENTRY *DisposeMediaSessionPtr) (HANDLE);
+ DisposeMediaSessionPtr dispose = (DisposeMediaSessionPtr)pFunc;
+ hr = dispose((HANDLE)session);
+ session = NULL;
+
+ MFX::mfx_dll_free(hModule);
+ hModule = NULL;
+
+ return (hr == S_OK) ? MFX_ERR_NONE : MFX_ERR_UNKNOWN;
+}
+
+mfxStatus GfxApiInitByAdapterNum(mfxInitParam par, mfxU32 adapterNum, mfxSession *session, mfxModuleHandle& hModule)
+{
+ MFX::DXVA2Device dxvaDevice;
+
+ if (!dxvaDevice.InitDXGI1(adapterNum))
+ {
+ DISPATCHER_LOG_ERROR((("dxvaDevice.InitDXGI1(%d) Failed\n"), adapterNum));
+ return MFX_ERR_UNSUPPORTED;
+ }
+
+ if (dxvaDevice.GetVendorID() != INTEL_VENDOR_ID)
+ {
+ DISPATCHER_LOG_ERROR("Specified adapter is not Intel\n");
+ return MFX_ERR_UNSUPPORTED;
+ }
+
+ return GfxApiInit(par, dxvaDevice.GetDeviceID(), session, hModule);
+}
+
+struct GfxApiHandle
+{
+ mfxModuleHandle hModule;
+ mfxSession session;
+ mfxU16 mediaAdapterType;
+};
+
+static int GfxApiHandleSort(const void * plhs, const void * prhs)
+{
+ const GfxApiHandle * lhs = *(const GfxApiHandle **)plhs;
+ const GfxApiHandle * rhs = *(const GfxApiHandle **)prhs;
+
+ // prefer integrated GPU
+ if (lhs->mediaAdapterType != MFX_MEDIA_INTEGRATED && rhs->mediaAdapterType == MFX_MEDIA_INTEGRATED)
+ {
+ return 1;
+ }
+ if (lhs->mediaAdapterType == MFX_MEDIA_INTEGRATED && rhs->mediaAdapterType != MFX_MEDIA_INTEGRATED)
+ {
+ return -1;
+ }
+
+ return 0;
+}
+
+mfxStatus GfxApiInitPriorityIntegrated(mfxInitParam par, mfxSession *session, mfxModuleHandle& hModule)
+{
+ mfxStatus sts = MFX_ERR_UNSUPPORTED;
+ MFX::MFXVector<GfxApiHandle> gfxApiHandles;
+
+ for (int adapterNum = 0; adapterNum < 4; ++adapterNum)
+ {
+ MFX::DXVA2Device dxvaDevice;
+
+ if (!dxvaDevice.InitDXGI1(adapterNum) || dxvaDevice.GetVendorID() != INTEL_VENDOR_ID)
+ {
+ continue;
+ }
+
+ par.Implementation &= ~(0xf);
+ switch (adapterNum)
+ {
+ case 0:
+ par.Implementation |= MFX_IMPL_HARDWARE;
+ break;
+ case 1:
+ par.Implementation |= MFX_IMPL_HARDWARE2;
+ break;
+ case 2:
+ par.Implementation |= MFX_IMPL_HARDWARE3;
+ break;
+ case 3:
+ par.Implementation |= MFX_IMPL_HARDWARE4;
+ break;
+ }
+
+ mfxModuleHandle hModuleCur = NULL;
+ mfxSession sessionCur = NULL;
+
+ sts = GfxApiInit(par, dxvaDevice.GetDeviceID(), &sessionCur, hModuleCur);
+ if (sts != MFX_ERR_NONE)
+ continue;
+
+ mfxPlatform platform = { MFX_PLATFORM_UNKNOWN, 0, MFX_MEDIA_UNKNOWN };
+ sts = MFXVideoCORE_QueryPlatform(sessionCur, &platform);
+ if (sts != MFX_ERR_NONE)
+ {
+ sts = GfxApiClose(sessionCur, hModuleCur);
+ if (sts != MFX_ERR_NONE)
+ return sts;
+ continue;
+ }
+
+ GfxApiHandle handle = { hModuleCur, sessionCur, platform.MediaAdapterType };
+ gfxApiHandles.push_back(handle);
+ }
+
+ qsort(&(*gfxApiHandles.begin()), gfxApiHandles.size(), sizeof(GfxApiHandle), &GfxApiHandleSort);
+
+ hModule = gfxApiHandles.begin()->hModule;
+ *session = gfxApiHandles.begin()->session;
+
+ MFX::MFXVector<GfxApiHandle>::iterator it = gfxApiHandles.begin()++;
+ for (; it != gfxApiHandles.end(); ++it)
+ {
+ sts = GfxApiClose(it->session, it->hModule);
+ if (sts != MFX_ERR_NONE)
+ return sts;
+ }
+
+ return sts;
+}
diff --git a/src/mfx_dispatcher_uwp.h b/src/mfx_dispatcher_uwp.h
new file mode 100644
index 0000000..c3cbad3
--- /dev/null
+++ b/src/mfx_dispatcher_uwp.h
@@ -0,0 +1,36 @@
+// Copyright (c) 2020 Intel Corporation
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+#if !defined(__MFX_DISPATCHER_UWP_H)
+#define __MFX_DISPATCHER_UWP_H
+
+// Loads intel_gfx_api dll from DriverStore fro specified device and calls InitialiseMediaSession from it
+mfxStatus GfxApiInit(mfxInitParam par, mfxU32 deviceID, mfxSession *session, mfxModuleHandle& hModule);
+
+// Calls DisposeMediaSession from the intel_gfx_api dll and unloads it
+mfxStatus GfxApiClose(mfxSession& session, mfxModuleHandle& hModule);
+
+// Initializes intel_gfx_api for specified adapter number
+mfxStatus GfxApiInitByAdapterNum(mfxInitParam par, mfxU32 adapterNum, mfxSession *session, mfxModuleHandle& hModule);
+
+// Initializes intel_gfx_api for any Intel adapter, chooses integrated adapter with higher priority
+mfxStatus GfxApiInitPriorityIntegrated(mfxInitParam par, mfxSession *session, mfxModuleHandle& hModule);
+
+#endif // __MFX_DISPATCHER_UWP_H
--
2.37.3.windows.1
From ca523b11e2e4e6a33708353095585a44cbd3d818 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Fri, 12 May 2023 11:45:47 +0200
Subject: [PATCH] fix UWP build in ming-w64
minwg-w64 doesn't define these types in UWP mode and would require
a bit of code refactoring to do so.
---
src/mfx_driver_store_loader.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/mfx_driver_store_loader.h b/src/mfx_driver_store_loader.h
index 372794f..650e170 100644
--- a/src/mfx_driver_store_loader.h
+++ b/src/mfx_driver_store_loader.h
@@ -35,6 +35,13 @@
#endif
#endif
+#if defined(__MINGW64_VERSION_MAJOR) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+// mingw-w64 doesn't set these types for WINAPI_PARTITION_APP
+typedef DWORD DEVINST;
+typedef DEVINST *PDEVINST;
+typedef ULONG REGDISPOSITION;
+#endif
+
namespace MFX
{
--
2.37.3.windows.1
From 0070532c09865a95f63987ccec25d529ce198683 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 30 May 2023 15:29:31 +0200
Subject: [PATCH] fix UWP build in ming-w64
minwg-w64 doesn't define these types in UWP mode and would require
a bit of code refactoring to do so.
---
src/mfx_driver_store_loader.h | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/src/mfx_driver_store_loader.h b/src/mfx_driver_store_loader.h
index 650e170..3895854 100644
--- a/src/mfx_driver_store_loader.h
+++ b/src/mfx_driver_store_loader.h
@@ -35,11 +35,24 @@
#endif
#endif
-#if defined(__MINGW64_VERSION_MAJOR) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-// mingw-w64 doesn't set these types for WINAPI_PARTITION_APP
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
+// these are not defined for WINAPI_PARTITION_APP
typedef DWORD DEVINST;
typedef DEVINST *PDEVINST;
typedef ULONG REGDISPOSITION;
+#include <initguid.h>
+DEFINE_GUID( GUID_DEVCLASS_DISPLAY, 0x4d36e968L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
+
+#if defined(__MINGW64_VERSION_MAJOR)
+#define CR_SUCCESS (0x00)
+#define CR_BUFFER_SMALL (0x1A)
+#define CM_LOCATE_DEVNODE_NORMAL (0x00000000)
+#define CM_REGISTRY_SOFTWARE (0x00000001)
+#define CM_GETIDLIST_FILTER_PRESENT (0x00000100)
+#define CM_GETIDLIST_FILTER_CLASS (0x00000200)
+#define RegDisposition_OpenExisting (0x00000001)
+#endif
+
#endif
namespace MFX
--
2.37.3.windows.1
12517338342d3e653043a57e290eb9cffd190aede0c3a3948956f1c7f12f0ea859361cf3e534ab066b96b1c211f68409c67ef21fd6d76b68cc31daef541941b0 mfx_dispatch-1.35.1.tar.gz
# mfx (Media SDK)
MFX_VERSION := 1.35.1
MFX_URL := $(GITHUB)/lu-zero/mfx_dispatch/archive/refs/tags/$(MFX_VERSION).tar.gz
ifeq ($(call need_pkg,"mfx"),)
PKGS_FOUND += mfx
endif
ifdef HAVE_WIN32
ifeq ($(filter arm aarch64, $(ARCH)),)
PKGS += mfx
endif
endif
DEPS_mfx =
ifdef HAVE_WINSTORE
DEPS_mfx += alloweduwp $(DEPS_alloweduwp)
endif
ifdef HAVE_WINSTORE
MFX_CONF := CFLAGS="$(CFLAGS) -DMEDIASDK_UWP_DISPATCHER"
MFX_CONF += CXXFLAGS="$(CXXFLAGS) -DMEDIASDK_UWP_DISPATCHER"
endif
$(TARBALLS)/mfx_dispatch-$(MFX_VERSION).tar.gz:
$(call download_pkg,$(MFX_URL),mfx)
.sum-mfx: mfx_dispatch-$(MFX_VERSION).tar.gz
mfx: mfx_dispatch-$(MFX_VERSION).tar.gz .sum-mfx
$(UNPACK)
# $(call update_autoconfig,.)
$(APPLY) $(SRC)/mfx/0001-fix-UWP-build-in-ming-w64.patch
$(APPLY) $(SRC)/mfx/0002-fix-UWP-build-in-ming-w64.patch
$(APPLY) $(SRC)/mfx/0001-Add-missing-mfx_dispatcher_uwp.h-.cpp.patch
$(MOVE)
.mfx: mfx
$(RECONF)
$(MAKEBUILDDIR)
$(MAKECONFIGURE) $(MFX_CONF)
+$(MAKEBUILD)
+$(MAKEBUILD) install
touch $@
22b9f409a9b8ed551847e1b5a94d0c48502b5fbf68ec28021ba36d3f851ef83896205977e6b7f52c102f747a8fbc793424181ecd7edaf6058a39dc15b78d19cd libvpl-2.13.0.tar.gz
# vpl (Intel Video Processing Library)
VPL_VERSION := 2.13.0
VPL_URL := $(GITHUB)/intel/libvpl/archive/v${VPL_VERSION}/libvpl-${VPL_VERSION}.tar.gz
ifeq ($(call need_pkg,"vpl"),)
PKGS_FOUND += vpl
endif
ifdef HAVE_WIN32
ifndef HAVE_WINSTORE
ifeq ($(filter arm aarch64, $(ARCH)),)
PKGS += vpl
endif
endif
endif
DEPS_vpl :=
ifdef HAVE_WINSTORE
DEPS_vpl += alloweduwp $(DEPS_alloweduwp)
endif
ifdef HAVE_WINSTORE
VPL_VARS := CFLAGS="$(CFLAGS) -DMEDIASDK_UWP_DISPATCHER"
VPL_VARS += CXXFLAGS="$(CXXFLAGS) -DMEDIASDK_UWP_DISPATCHER"
endif
# Disable BUILD_EXPERIMENTAL
# https://github.com/intel/libvpl/issues/168
VPL_CONF := -DBUILD_EXPERIMENTAL=OFF
$(TARBALLS)/libvpl-$(VPL_VERSION).tar.gz:
$(call download_pkg,$(VPL_URL),vpl)
.sum-vpl: libvpl-$(VPL_VERSION).tar.gz
vpl: libvpl-$(VPL_VERSION).tar.gz .sum-vpl
$(UNPACK)
$(MOVE)
.vpl: vpl toolchain.cmake
$(CMAKECLEAN)
$(HOSTVARS_CMAKE) $(VPL_VARS) $(CMAKE) $(VPL_CONF)
+$(CMAKEBUILD)
$(CMAKEINSTALL)
touch $@
......@@ -339,10 +339,10 @@ option('twolame',
value : 'auto',
description : 'Enable/disable twolame support')
option('mfx',
option('vpl',
type : 'feature',
value : 'auto',
description : 'Enable/disable libmfx support')
description : 'Enable/disable libvpl support')
option('spatialaudio',
type : 'feature',
......
......@@ -617,9 +617,9 @@ codec_LTLIBRARIES += $(LTLIBdav1d)
### Hardware encoders ###
libqsv_plugin_la_SOURCES = codec/qsv.c demux/mpeg/timestamps.h
libqsv_plugin_la_CFLAGS = $(AM_CFLAGS) $(MFX_CFLAGS)
libqsv_plugin_la_CFLAGS = $(AM_CFLAGS) $(VPL_CFLAGS)
libqsv_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(codecdir)'
libqsv_plugin_la_LIBADD = $(MFX_LIBS)
libqsv_plugin_la_LIBADD = $(VPL_LIBS)
EXTRA_LTLIBRARIES += libqsv_plugin.la
codec_LTLIBRARIES += $(LTLIBqsv)
......
......@@ -886,7 +886,7 @@ vlc_modules += {
## Hardware encoders
# QSV encoder
qsv_dep = dependency('libmfx', required: get_option('mfx'))
qsv_dep = dependency('vpl', required: get_option('vpl'))
vlc_modules += {
'name' : 'qsv',
'sources' : files('qsv.c'),
......
......@@ -36,7 +36,7 @@
#include <vlc_list.h>
#include <mfx/mfxvideo.h>
#include <vpl/mfxvideo.h>
#include "../demux/mpeg/timestamps.h"
#define SOUT_CFG_PREFIX "sout-qsv-"
......