diff --git a/AVQt/AVQt b/AVQt/AVQt
index 03946df30591578f9892397a901b38825753724d..3d4a5fc619d9e4c556d7dd9fe2f9828b34f19f1e 100644
--- a/AVQt/AVQt
+++ b/AVQt/AVQt
@@ -20,7 +20,7 @@
 #include "filter/DecoderMMAL.h"
 #include "filter/EncoderVAAPI.h"
 
-#elif Q_OS_WIN
+#elif defined(Q_OS_WIN)
 
 #include "filter/DecoderDXVA2.h"
 
@@ -29,4 +29,4 @@
 #include "filter/AudioDecoder.h"
 #include "filter/DecoderQSV.h"
 #include "filter/EncoderQSV.h"
-//#include "output/FrameFileSaver.h"
\ No newline at end of file
+//#include "output/FrameFileSaver.h"
diff --git a/AVQt/CMakeLists.txt b/AVQt/CMakeLists.txt
index e5e4468d03d6933c551c6d154247123179f8a371..efdc106480f4508a01593a53b8ef66f937818a35 100644
--- a/AVQt/CMakeLists.txt
+++ b/AVQt/CMakeLists.txt
@@ -9,6 +9,8 @@ set(CMAKE_AUTOUIC on)
 
 set(CMAKE_INCLUDE_CURRENT_DIR on)
 
+include_directories(F:\\Dev\\mfx_dispatch-master)
+
 #find_package(Qt6 COMPONENTS Core Gui Concurrent Widgets OpenGL OpenGLWidgets)
 find_package(Qt5 COMPONENTS Core Gui Concurrent Widgets OpenGL)
 
@@ -198,9 +200,9 @@ target_link_libraries(AVQt Qt5::Core Qt5::Gui Qt5::Concurrent Qt5::Widgets Qt5::
 target_link_libraries(AVQtStatic Qt5::Core Qt5::Gui Qt5::Concurrent Qt5::Widgets Qt5::OpenGL avformat avfilter avutil avcodec avdevice swscale swresample)
 
 if (WIN32)
-    target_link_libraries(AVQt opengl32 OpenAL32)
-    target_link_libraries(AVQtStatic opengl32 OpenAL32)
+    target_link_libraries(AVQt opengl32 OpenAL32 d3d9 windowsapp user32 kernel32 Dwmapi psapi d3d9 dxguid)
+    target_link_libraries(AVQtStatic opengl32 OpenAL32 windowsapp user32 kernel32 Dwmapi psapi d3d9 dxguid)
 else ()
     target_link_libraries(AVQt GL openal EGL GLU va)
     target_link_libraries(AVQtStatic GL openal EGL GLU va)
-endif ()
\ No newline at end of file
+endif ()
diff --git a/Player/CMakeLists.txt b/Player/CMakeLists.txt
index 50cfd2797dfc1071257cf2b8f96cae064cb637c8..bdfae7fec8c76e2e732e415fc2fd71376f1069db 100644
--- a/Player/CMakeLists.txt
+++ b/Player/CMakeLists.txt
@@ -1,25 +1,67 @@
-#SET(CMAKE_INSTALL_RPATH "$ORIGIN/../AVQt")
-#SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH on)
-
-#find_package(Qt6 COMPONENTS Core Gui Widgets OpenGL OpenGLWidgets Concurrent)
+function(list_transform_prepend var_out var_in prefix)
+    set(temp "")
+    foreach (f ${${var_in}})
+        list(APPEND temp "${prefix}${f}")
+    endforeach ()
+    set(${var_out} "${temp}" PARENT_SCOPE)
+endfunction()
 
 set(CMAKE_CXX_STANDARD 20)
 
-find_package(Qt5 COMPONENTS Core Gui Widgets OpenGL Concurrent)
-find_package(OpenAL)
+set(PROJECT_NAME Player)
+
+add_executable(${PROJECT_NAME} main.cpp)
 
-#add_compile_options(-fsanitize=address)
-#add_link_options(-fsanitize=address)
+set(QT_VERSION "5")
+set(CMAKE_PREFIX_PATH F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\cmake)
 
-add_compile_definitions(ENABLE_QSV_ENCODE)
+set(REQUIRED_LIBS Core Gui Concurrent Widgets OpenGL)
+if (QT_VERSION EQUAL "6")
+    LIST(APPEND REQUIRED_LIBS OpenGLWidgets)
+endif ()
+set(REQUIRED_LIBS_QUALIFIED)
+list_transform_prepend(REQUIRED_LIBS_QUALIFIED REQUIRED_LIBS "Qt${QT_VERSION}::")
+message("${REQUIRED_LIBS_QUALIFIED}")
 
-add_executable(Player main.cpp)
+find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} REQUIRED)
+target_link_libraries(${PROJECT_NAME} ${REQUIRED_LIBS_QUALIFIED})
+if (WIN32)
+    set(DEBUG_SUFFIX)
+    if (CMAKE_BUILD_TYPE MATCHES "Debug")
+        set(DEBUG_SUFFIX "d")
+    endif ()
+    set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
+    if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
+        set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
+        if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
+            set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
+        endif ()
+    endif ()
+    if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
+        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
+                COMMAND ${CMAKE_COMMAND} -E make_directory
+                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
+        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
+                COMMAND ${CMAKE_COMMAND} -E copy
+                "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
+                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
+    endif ()
+    foreach (QT_LIB ${REQUIRED_LIBS})
+        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
+                COMMAND ${CMAKE_COMMAND} -E copy
+                "${QT_INSTALL_PATH}/bin/Qt${QT_VERSION}${QT_LIB}${DEBUG_SUFFIX}.dll"
+                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
+    endforeach (QT_LIB)
+endif ()
 
-#target_link_libraries(Player Qt6::Core Qt6::Gui Qt6::Concurrent Qt6::Widgets Qt6::OpenGLWidgets Qt6::OpenGL avformat avfilter avutil avcodec avdevice swscale swresample AVQtStatic)
-target_link_libraries(Player Qt5::Core Qt5::Gui Qt5::Concurrent Qt5::Widgets Qt5::OpenGL avformat avfilter avutil avcodec avdevice swscale swresample AVQtStatic)
+#target_link_libraries(Player Qt6::Core Qt6::Gui Qt6::Concurrent Qt6::Widgets Qt6::OpenGLWidgets Qt6::OpenGL avformat avfilter avutil avcodec avdevice swscale swresample AVQt)
+target_link_libraries(Player avformat avfilter avutil avcodec avdevice swscale swresample AVQt)
+
+
+find_package(OpenAL)
 
 if (LINUX)
     target_link_libraries(Player openal GL EGL GLU va)
 elseif (WIN32)
-    target_link_libraries(Player OpenAL32 opengl32)
+    target_link_libraries(Player OpenAL32 opengl32 dxguid d3d9)
 endif ()
\ No newline at end of file
diff --git a/Player/main.cpp b/Player/main.cpp
index a10705fc30a5938e800d42a627d48686c4c5116f..0fd139c018352129d10e41a327995907b4a325dd 100644
--- a/Player/main.cpp
+++ b/Player/main.cpp
@@ -40,7 +40,6 @@ void messageHandler(QtMsgType type, const QMessageLogContext &context, const QSt
 }
 
 int main(int argc, char *argv[]) {
-    QGuiApplication::setAttribute(Qt::AA_UseOpenGLES);
     app = new QApplication(argc, argv);
     signal(SIGINT, &signalHandler);
     signal(SIGTERM, &signalHandler);
@@ -64,11 +63,11 @@ int main(int argc, char *argv[]) {
     inputFile->open(QIODevice::ReadWrite);
 
     AVQt::Demuxer demuxer(inputFile);
-    AVQt::AudioDecoder decoder;
-    AVQt::OpenALAudioOutput output;
+//    AVQt::AudioDecoder decoder;
+//    AVQt::OpenALAudioOutput output;
 
-    demuxer.registerCallback(&decoder, AVQt::IPacketSource::CB_AUDIO);
-    decoder.registerCallback(&output);
+//    demuxer.registerCallback(&decoder, AVQt::IPacketSource::CB_AUDIO);
+//    decoder.registerCallback(&output);
 
     AVQt::IDecoder *videoDecoder;
     AVQt::IEncoder *videoEncoder;
@@ -77,6 +76,7 @@ int main(int argc, char *argv[]) {
     videoEncoder = new AVQt::EncoderQSV(AVQt::IEncoder::CODEC::HEVC, 10 * 1000 * 1000);
 #elif defined(Q_OS_WINDOWS)
     videoDecoder = new AVQt::DecoderDXVA2();
+    videoEncoder = new AVQt::EncoderQSV(AVQt::IEncoder::CODEC::HEVC, 10 * 1000 * 1000);
 #else
 #error "Unsupported OS"
 #endif
@@ -84,7 +84,7 @@ int main(int argc, char *argv[]) {
 
     demuxer.registerCallback(videoDecoder, AVQt::IPacketSource::CB_VIDEO);
 #ifdef ENABLE_QSV_ENCODE
-    videoDecoder->registerCallback(videoEncoder);
+//    videoDecoder->registerCallback(videoEncoder);
 #endif
     QFile outputFile("output.mp4");
     outputFile.open(QIODevice::ReadWrite | QIODevice::Truncate);