Skip to content
Snippets Groups Projects
Commit 943a0ab3 authored by Silas Della Contrada's avatar Silas Della Contrada
Browse files

just some backups

parent c5e6a682
No related branches found
No related tags found
No related merge requests found
[submodule "QtAV"]
path = QtAV
url = https://github.com/wang-bin/QtAV
......@@ -3,13 +3,12 @@
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
<component name="CidrRootsConfiguration">
<sourceRoots>
<file path="$PROJECT_DIR$/VanadiumCast" />
<file path="$PROJECT_DIR$/backend" />
<file path="$PROJECT_DIR$/src/API" />
<file path="$PROJECT_DIR$/src/GUI" />
<file path="$PROJECT_DIR$/src/MediaProcessing" />
<file path="$PROJECT_DIR$/src/Networking" />
</sourceRoots>
</component>
<component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/cmake-build-debug/src/CMakeFiles/VanadiumCastLib-obj.dir/GUI/VideoGui.cpp.obj" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/VanadiumCast.iml" filepath="$PROJECT_DIR$/.idea/VanadiumCast.iml" />
</modules>
</component>
</project>
\ No newline at end of file
cmake_minimum_required(VERSION 3.17)
project(VanadiumCast LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
if (!MSVC)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/usr/share/cmake-3.18/Modules")
else ()
include_directories("E:\\QtAV\\src\\compat\\msvc")
endif ()
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_subdirectory(src)
add_subdirectory(test)
This diff is collapsed.
# Created by and for Qt Creator This file was created for editing the project sources only.
# You may attempt to use it for building too, by modifying this file here.
#TARGET = VanadiumCast
QT = core gui widgets quick quickcontrols2 av avwidgets network concurrent multimedia
HEADERS = \
$$PWD/src/backend/API/API.h \
$$PWD/src/backend/API/NetworkAPI.h \
$$PWD/src/backend/API/SinkHandleWidget.h \
$$PWD/src/backend/GUI/VideoGui.h \
$$PWD/src/backend/GUI/VideoGuiLauncher.h \
$$PWD/src/backend/GUI/WindowCloseEventFilter.h \
$$PWD/src/backend/MediaProcessing/CachedLocalStream.h \
$$PWD/src/backend/MediaProcessing/EncodingProfile.h \
$$PWD/src/backend/MediaProcessing/FFMPEGTranscoder.h \
$$PWD/src/backend/MediaProcessing/Input.h \
$$PWD/src/backend/MediaProcessing/InputFile.h \
$$PWD/src/backend/MediaProcessing/NetworkInput.h \
$$PWD/src/backend/MediaProcessing/PlayerStateSlots.h \
$$PWD/src/backend/MediaProcessing/VideoTranscoder.h \
$$PWD/src/backend/Networking/CachedStream.h \
$$PWD/src/backend/Networking/Device.h \
$$PWD/src/backend/Networking/DeviceDirectory.h \
$$PWD/src/backend/Networking/DeviceScan.h \
$$PWD/src/backend/Networking/NetworkDevice.h \
$$PWD/src/backend/Networking/NetworkDeviceDirectory.h \
$$PWD/src/backend/Networking/NetworkDeviceScanner.h \
$$PWD/src/backend/Networking/NetworkSinkHandler.h \
$$PWD/src/backend/Networking/NetworkSinkTcpServer.h \
$$PWD/src/backend/Networking/SinkHandler.h \
$$PWD/src/backend/Networking/Streaming.h \
$$PWD/src/backend/Networking/StreamThread.h \
$$PWD/src/backend/Commands.h \
$$PWD/src/backend/util.h \
# $$PWD/test/MediaProcessing/CachedLocalStreamTest.h \
# $$PWD/test/Networking/CachedStreamTest.h
SOURCES = \
$$PWD/res/gui/fragments/PageDevices.qml \
$$PWD/res/gui/fragments/PageMedia.qml \
$$PWD/res/gui/fragments/PageStreaming.qml \
$$PWD/res/gui/icons/pause.svg \
$$PWD/res/gui/icons/play.svg \
$$PWD/res/gui/model/DeviceListModel.qml \
$$PWD/res/gui/main.qml \
$$PWD/res/sound/incoming.wav \
$$PWD/res/qml.qrc \
$$PWD/res/qtquickcontrols2.conf \
$$PWD/src/backend/API/NetworkAPI.cpp \
$$PWD/src/backend/GUI/VideoGui.cpp \
$$PWD/src/backend/GUI/VideoGui.ui \
$$PWD/src/backend/GUI/VideoGuiLauncher.cpp \
$$PWD/src/backend/GUI/WindowCloseEventFilter.cpp \
$$PWD/src/backend/MediaProcessing/CachedLocalStream.cpp \
$$PWD/src/backend/MediaProcessing/FFMPEGTranscoder.cpp \
$$PWD/src/backend/MediaProcessing/InputFile.cpp \
$$PWD/src/backend/MediaProcessing/NetworkInput.cpp \
$$PWD/src/backend/MediaProcessing/VideoTranscoder.cpp \
$$PWD/src/backend/Networking/CachedStream.cpp \
$$PWD/src/backend/Networking/NetworkDevice.cpp \
$$PWD/src/backend/Networking/NetworkDeviceDirectory.cpp \
$$PWD/src/backend/Networking/NetworkDeviceScanner.cpp \
$$PWD/src/backend/Networking/NetworkSinkHandler.cpp \
$$PWD/src/backend/Networking/NetworkSinkTcpServer.cpp \
$$PWD/src/backend/Networking/StreamThread.cpp \
# $$PWD/src/main.cpp \
$$PWD/src/backend/util.cpp \
# $$PWD/test/MediaProcessing/CachedLocalStreamTest.cpp \
# $$PWD/test/Networking/CachedStreamTest.cpp \
# $$PWD/test/main.cpp
INCLUDEPATH = \
$$PWD/src/backend \
$$PWD/src/backend/API \
$$PWD/src/backend/GUI \
$$PWD/src/backend/MediaProcessing \
$$PWD/src/backend/Networking \
# $$PWD/test/MediaProcessing \
# $$PWD/test/Networking
#DEFINES =
SUBDIRS += \
QMake.old.pro
Subproject commit add5c5bdbb842e100854be6132b8539be7422d52
set(PROJECT_NAME VanadiumCast)
################################################################################
# Source groups
################################################################################
set(Generated_Files
# "debug/moc_predefs.h.cbt"
# "debug/qmlcache_loader.cpp"
# "debug/qrc_res_resources_qmlcache.cpp"
# "debug/res_gui_fragments_PageDevices_qml.cpp"
# "debug/res_gui_fragments_PageMedia_qml.cpp"
# "debug/res_gui_fragments_PageStreaming_qml.cpp"
# "debug/res_gui_main_qml.cpp"
# "debug/res_gui_model_DeviceListModel_qml.cpp"
# "release/moc_predefs.h.cbt"
# "release/qmlcache_loader.cpp"
# "release/qrc_res_resources_qmlcache.cpp"
# "release/res_gui_fragments_PageDevices_qml.cpp"
# "release/res_gui_fragments_PageMedia_qml.cpp"
# "release/res_gui_fragments_PageStreaming_qml.cpp"
# "release/res_gui_main_qml.cpp"
# "release/res_gui_model_DeviceListModel_qml.cpp"
)
source_group("Generated Files" FILES ${Generated_Files})
set(Resource_Files
"res/gui/fragments/PageDevices.qml"
"res/gui/fragments/PageMedia.qml"
"res/gui/fragments/PageStreaming.qml"
"res/gui/icons/pause.svg"
"res/gui/icons/play.svg"
"res/gui/main.qml"
"res/gui/model/DeviceListModel.qml"
"res/qtquickcontrols2.conf"
"res/sound/incoming.wav"
"res_resources_qmlcache.qrc"
)
source_group("Resource Files" FILES ${Resource_Files})
set(Source_Files
"src/main.cpp"
)
source_group("Source Files" FILES ${Source_Files})
set(qmlcachengen_loader_res/resources.qrc
"res/resources.qrc"
)
source_group("qmlcachengen_loader res/resources.qrc" FILES ${qmlcachengen_loader_res/resources.qrc})
set(ALL_FILES
${Generated_Files}
${Resource_Files}
${Source_Files}
${qmlcachengen_loader_res/resources.qrc}
)
################################################################################
# Target
################################################################################
add_executable(${PROJECT_NAME} ${ALL_FILES})
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
set(ROOT_NAMESPACE VanadiumCast)
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Qt4VSv1.0"
)
################################################################################
# Target name
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
TARGET_NAME_DEBUG "VanadiumCast"
TARGET_NAME_RELEASE "VanadiumCast"
)
################################################################################
# Output directory
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/debug"
OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/release"
)
################################################################################
# MSVC runtime library
################################################################################
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
MultiThreadedDebugDLL
>
$<$<CONFIG:Release>:
MultiThreadedDLL
>
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
)
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
################################################################################
# Include directories
################################################################################
target_include_directories(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"${CMAKE_CURRENT_SOURCE_DIR}/debug"
">"
"$<$<CONFIG:Release>:"
"${CMAKE_CURRENT_SOURCE_DIR}/release"
">"
"${CMAKE_CURRENT_SOURCE_DIR}/.;"
"${CMAKE_CURRENT_SOURCE_DIR}/../backend/src;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQuickControls2;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQuick;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtOpenGL;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtWidgets;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtMultimedia;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtGui;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtANGLE;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQmlModels;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQml;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtNetwork;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtConcurrent;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtCore;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../VulkanSDK/1.2.162.1/Include;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/mkspecs/win32-msvc"
)
################################################################################
# Compile definitions
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Release>:"
"NDEBUG;"
"QT_NO_DEBUG"
">"
"_WINDOWS;"
"UNICODE;"
"_UNICODE;"
"WIN32;"
"_ENABLE_EXTENDED_ALIGNED_STORAGE;"
"WIN64;"
"QT_QUICKCONTROLS2_LIB;"
"QT_QUICK_LIB;"
"QT_OPENGL_LIB;"
"QT_WIDGETS_LIB;"
"QT_MULTIMEDIA_LIB;"
"QT_GUI_LIB;"
"QT_QMLMODELS_LIB;"
"QT_QML_LIB;"
"QT_NETWORK_LIB;"
"QT_CONCURRENT_LIB;"
"QT_CORE_LIB"
)
################################################################################
# Compile and link options
################################################################################
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/Od;
/Zi
>
$<$<CONFIG:Release>:
/O2;
/Oy;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT}
>
/W3;
/wd4577;
/wd4467;
-Zc:rvalueCast;
-Zc:inline;
-Zc:strictStrings;
-Zc:throwingNew;
-Zc:referenceBinding;
-Zc:__cplusplus;
-w34100;
-w34189;
-w44996;
-w44456;
-w44457;
-w44458;
${DEFAULT_CXX_EXCEPTION_HANDLING};
/Zc:wchar_t
)
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/DEBUG
>
$<$<CONFIG:Release>:
/OPT:REF;
/INCREMENTAL:NO
>
/NOLOGO;
/SUBSYSTEM:WINDOWS;
/NXCOMPAT;
/DYNAMICBASE;
"/MANIFESTDEPENDENCY:type='win32';
name='Microsoft.Windows.Common-Controls';
version='6.0.0.0';
publicKeyToken='6595b64144ccf1df';
language='*';
processorArchitecture='*'"
)
endif()
################################################################################
# Post build events
################################################################################
add_custom_command_if(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMANDS
COMMAND $<CONFIG:Debug> xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\..\\backend\\debug\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\debug\\
COMMAND $<CONFIG:Debug> if errorlevel 1 goto VCEnd
COMMAND $<CONFIG:Release> xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\..\\backend\\release\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\release\\
COMMAND $<CONFIG:Release> if errorlevel 1 goto VCEnd
COMMENT "xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\..\\backend\\debug\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\VanadiumCast\\debug\\
"
)
################################################################################
# Dependencies
################################################################################
add_dependencies(${PROJECT_NAME}
backend
)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"$<$<CONFIG:Debug>:"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVWidgetsd;"
"..\\backend\\debug\\backend;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QuickControls2d;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Quickd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5OpenGLd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Widgetsd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Multimediad;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Guid;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QmlModelsd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Qmld;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Networkd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Concurrentd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Cored;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\qtmaind"
">"
"$<$<CONFIG:Release>:"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AV;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVWidgets;"
"..\\backend\\release\\backend;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QuickControls2;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Quick;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5OpenGL;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Widgets;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Multimedia;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Gui;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QmlModels;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Qml;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Network;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Concurrent;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Core;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\qtmain"
">"
"OpenGL32;"
"shell32"
)
target_link_libraries(${PROJECT_NAME} PRIVATE "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
target_link_directories(${PROJECT_NAME} PRIVATE
"F:/Dev/Qt/5.15.2/msvc2019_64/lib;"
"C:/openssl/lib;"
"C:/Utils/my_sql/mysql-5.7.25-winx64/lib;"
"C:/Utils/postgresql/pgsql/lib"
)
TEMPLATE += vcapp
QT += core quick quickcontrols2 gui widgets multimedia network concurrent opengl
CONFIG += qtquickcompiler
......
set(PROJECT_NAME backend)
################################################################################
# Source groups
################################################################################
set(Generated_Files
# "debug/moc_CachedLocalStream.cpp"
# "debug/moc_NetworkAPI.cpp"
# "debug/moc_NetworkDevice.cpp"
# "debug/moc_NetworkDeviceDirectory.cpp"
# "debug/moc_NetworkSinkHandler.cpp"
# "debug/moc_NetworkSinkTcpServer.cpp"
# "debug/moc_OGLUtil.cpp"
# "debug/moc_predefs.h.cbt"
# "debug/moc_ScreenRecorder.cpp"
# "debug/moc_StreamThread.cpp"
# "debug/moc_VideoGuiLauncher.cpp"
# "debug/moc_VideoTranscoder.cpp"
# "debug/moc_WindowCloseEventFilter.cpp"
# "release/moc_CachedLocalStream.cpp"
# "release/moc_NetworkAPI.cpp"
# "release/moc_NetworkDevice.cpp"
# "release/moc_NetworkDeviceDirectory.cpp"
# "release/moc_NetworkSinkHandler.cpp"
# "release/moc_NetworkSinkTcpServer.cpp"
# "release/moc_OGLUtil.cpp"
# "release/moc_predefs.h.cbt"
# "release/moc_ScreenRecorder.cpp"
# "release/moc_StreamThread.cpp"
# "release/moc_VideoGuiLauncher.cpp"
# "release/moc_VideoTranscoder.cpp"
# "release/moc_WindowCloseEventFilter.cpp"
)
source_group("Generated Files" FILES ${Generated_Files})
set(Header_Files
"src/API/NetworkAPI.h"
"src/Commands.h"
"src/global.h"
"src/GUI/VideoGuiLauncher.h"
"src/GUI/WindowCloseEventFilter.h"
"src/MediaProcessing/CachedLocalStream.h"
"src/MediaProcessing/InputFile.h"
"src/MediaProcessing/oglutil.h"
"src/MediaProcessing/ScreenRecorder.h"
"src/MediaProcessing/VideoTranscoder.h"
"src/Networking/NetworkDevice.h"
"src/Networking/NetworkDeviceDirectory.h"
"src/Networking/NetworkDeviceScanner.h"
"src/Networking/NetworkSinkHandler.h"
"src/Networking/NetworkSinkTcpServer.h"
"src/Networking/SinkHandler.h"
"src/Networking/StreamThread.h"
"src/util.h"
)
source_group("Header Files" FILES ${Header_Files})
set(Source_Files
"src/API/NetworkAPI.cpp"
"src/GUI/VideoGuiLauncher.cpp"
"src/GUI/WindowCloseEventFilter.cpp"
"src/MediaProcessing/CachedLocalStream.cpp"
"src/MediaProcessing/InputFile.cpp"
"src/MediaProcessing/oglutil.cpp"
"src/MediaProcessing/ScreenRecorder.cpp"
"src/MediaProcessing/VideoTranscoder.cpp"
"src/Networking/NetworkDevice.cpp"
"src/Networking/NetworkDeviceDirectory.cpp"
"src/Networking/NetworkDeviceScanner.cpp"
"src/Networking/NetworkSinkHandler.cpp"
"src/Networking/NetworkSinkTcpServer.cpp"
"src/Networking/StreamThread.cpp"
"src/util.cpp"
)
source_group("Source Files" FILES ${Source_Files})
set(ALL_FILES
${Generated_Files}
${Header_Files}
${Source_Files}
)
################################################################################
# Target
################################################################################
add_library(${PROJECT_NAME} SHARED ${ALL_FILES})
use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
set(ROOT_NAMESPACE backend)
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Qt4VSv1.0"
)
################################################################################
# Target name
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
TARGET_NAME_DEBUG "backend"
TARGET_NAME_RELEASE "backend"
)
################################################################################
# Output directory
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/debug"
OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/release"
)
################################################################################
# MSVC runtime library
################################################################################
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
MultiThreadedDebugDLL
>
$<$<CONFIG:Release>:
MultiThreadedDLL
>
$<$<NOT:$<OR:$<CONFIG:Debug>,$<CONFIG:Release>>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
)
set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
################################################################################
# Include directories
################################################################################
target_include_directories(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"${CMAKE_CURRENT_SOURCE_DIR}/debug"
">"
"$<$<CONFIG:Release>:"
"${CMAKE_CURRENT_SOURCE_DIR}/release"
">"
"${CMAKE_CURRENT_SOURCE_DIR}/.;"
"${CMAKE_CURRENT_SOURCE_DIR}/src;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtWidgets;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtMultimedia;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQuick;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtGui;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtANGLE;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQmlModels;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtQml;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtNetwork;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtConcurrent;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/include/QtCore;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../VulkanSDK/1.2.162.1/Include;"
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Qt/5.15.2/msvc2019_64/mkspecs/win32-msvc"
)
################################################################################
# Compile definitions
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Release>:"
"NDEBUG;"
"QT_NO_DEBUG"
">"
"_WINDOWS;"
"UNICODE;"
"_UNICODE;"
"WIN32;"
"_ENABLE_EXTENDED_ALIGNED_STORAGE;"
"WIN64;"
"VCL_LIB;"
"QT_WIDGETS_LIB;"
"QT_MULTIMEDIA_LIB;"
"QT_QUICK_LIB;"
"QT_GUI_LIB;"
"QT_QMLMODELS_LIB;"
"QT_QML_LIB;"
"QT_NETWORK_LIB;"
"QT_CONCURRENT_LIB;"
"QT_CORE_LIB"
)
################################################################################
# Compile and link options
################################################################################
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/Od;
/Zi
>
$<$<CONFIG:Release>:
/O2;
/Oy;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT}
>
/W3;
/wd4577;
/wd4467;
-Zc:rvalueCast;
-Zc:inline;
-Zc:strictStrings;
-Zc:throwingNew;
-Zc:referenceBinding;
-Zc:__cplusplus;
-w34100;
-w34189;
-w44996;
-w44456;
-w44457;
-w44458;
${DEFAULT_CXX_EXCEPTION_HANDLING};
/Zc:wchar_t
)
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/DEBUG
>
$<$<CONFIG:Release>:
/OPT:REF;
/INCREMENTAL:NO
>
/NOLOGO;
/SUBSYSTEM:WINDOWS;
/NXCOMPAT;
/DYNAMICBASE
)
endif()
################################################################################
# Post build events
################################################################################
add_custom_command_if(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMANDS
COMMAND $<CONFIG:Debug> xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\debug\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\..\\VanadiumCast\\debug\\
COMMAND $<CONFIG:Debug> if errorlevel 1 goto VCEnd
COMMAND $<CONFIG:Release> xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\release\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\..\\VanadiumCast\\release\\
COMMAND $<CONFIG:Release> if errorlevel 1 goto VCEnd
COMMENT "xcopy /s /q /y /i F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\debug\\backend.dll F:\\Dev\\CLionProjects\\VanadiumCast\\backend\\..\\VanadiumCast\\debug\\
"
)
################################################################################
# Dependencies
################################################################################
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"$<$<CONFIG:Debug>:"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVWidgetsd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Widgetsd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Multimediad;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Quickd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Guid;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QmlModelsd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Qmld;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Networkd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Concurrentd;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Cored"
">"
"$<$<CONFIG:Release>:"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AV;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5AVWidgets;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Widgets;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Multimedia;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Quick;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Gui;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5QmlModels;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Qml;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Network;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Concurrent;"
"F:\\Dev\\Qt\\5.15.2\\msvc2019_64\\lib\\Qt5Core"
">"
"OpenGL32;"
"d3d9"
)
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")
target_link_directories(${PROJECT_NAME} PUBLIC
"F:/Dev/Qt/5.15.2/msvc2019_64/lib"
)
TEMPLATE = lib
TEMPLATE = vclib
QT += core gui widgets network multimedia quick concurrent
......@@ -34,14 +34,14 @@ win32 {
message("release")
message("$$QT.core.libs")
# LIBS += -LE:/Dev/QtAV/build-release/lib_win_x86_64 -lQtAV1 -lQtAVWidgets1
LIBS += -L$$QT.core.libs -lQt5AV -lQt5AVWidgets
LIBS += -L$$QT.core.libs -lQt5AV -lQt5AVWidgets -ld3d9
copyToDestDir($$OUT_PWD/release/backend.dll, $$OUT_PWD/../VanadiumCast/release/)
}
CONFIG(debug, debug|release) {
message("debug")
message("$$QT.core.libs")
# LIBS += -LE:/Dev/QtAV/build-debug/lib_win_x86_64 -lQtAVd1 -lQtAVWidgetsd1
LIBS += -L$$QT.core.libs -lQt5AVd -lQt5AVWidgetsd
LIBS += -L$$QT.core.libs -lQt5AVd -lQt5AVWidgetsd -ld3d9
copyToDestDir($$OUT_PWD/debug/backend.dll, $$OUT_PWD/../VanadiumCast/debug/)
}
}
......@@ -66,6 +66,7 @@ SOURCES += src/util.cpp \
src/MediaProcessing/CachedLocalStream.cpp \
src/MediaProcessing/InputFile.cpp \
src/MediaProcessing/OGLUtil.cpp \
src/MediaProcessing/ScreenRecorder.cpp \
src/MediaProcessing/VideoTranscoder.cpp \
src/Networking/NetworkDevice.cpp \
src/Networking/NetworkDeviceDirectory.cpp \
......@@ -82,6 +83,7 @@ HEADERS += src/util.h \
src/MediaProcessing/CachedLocalStream.h \
src/MediaProcessing/InputFile.h \
src/MediaProcessing/OGLUtil.h \
src/MediaProcessing/ScreenRecorder.h \
src/MediaProcessing/VideoTranscoder.h \
src/Networking/NetworkDevice.h \
src/Networking/NetworkDeviceDirectory.h \
......
......@@ -275,7 +275,7 @@ void NetworkAPI::streamThreadFinished() {
disconnect(streamThreadCon3);
delete streamThread;
streamThread = nullptr;
firstPositionChange = false;
firstPositionChange = true;
}
qint64 NetworkAPI::getDuration() {
......
......@@ -3,7 +3,8 @@
#include <QObject>
#include <QWidget>
#include "VideoGui.h"
#include <QtAV/QtAV>
#include <QtAVWidgets/QtAVWidgets>
#include "WindowCloseEventFilter.h"
#include "MediaProcessing/CachedLocalStream.h"
......
#include "ScreenRecorder.h"
#include <wrl/client.h>
#include <wrl/def.h>
#include <d3d9.h>
#define HRCHECK(__expr) {hr = __expr; if (FAILED(hr)) return hr;}
#define RELEASE(__p) {if(__p!=nullptr){__p->Release();__p=nullptr;}}
ScreenRecorder::ScreenRecorder(End *outputDevice, EncodingProfile &profile, QObject *parent): QObject(parent)
{
}
HRESULT dumpScreenBuffer(UINT adapter, UINT count, LPBYTE output) {
HRESULT hr = S_OK;
IDirect3D9 *d3d = nullptr;
IDirect3DDevice9 *device = nullptr;
IDirect3DSurface9 *surface = nullptr;
D3DPRESENT_PARAMETERS parameters{};
parameters.BackBufferFormat = D3DFMT_A8B8G8R8;
D3DDISPLAYMODE mode;
D3DLOCKED_RECT rc;
UINT pitch;
SYSTEMTIME st;
// init D3D and get screen size
d3d = Direct3DCreate9(D3D_SDK_VERSION);
HRCHECK(d3d->GetAdapterDisplayMode(adapter, &mode));
parameters.Windowed = TRUE;
parameters.BackBufferCount = 1;
parameters.BackBufferHeight = mode.Height;
parameters.BackBufferWidth = mode.Width;
parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
parameters.hDeviceWindow = NULL;
// create device & capture surface
HRCHECK(d3d->CreateDevice(adapter, D3DDEVTYPE_HAL, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &parameters, &device));
HRCHECK(device->CreateOffscreenPlainSurface(mode.Width, mode.Height, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surface, nullptr));
// compute the required buffer size
HRCHECK(surface->LockRect(&rc, NULL, 0));
pitch = rc.Pitch;
HRCHECK(surface->UnlockRect());
GetSystemTime(&st); // measure the time we spend doing <count> captures
wprintf(L"%i:%i:%i.%i\n", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
// get the data
HRCHECK(device->GetFrontBufferData(0, surface));
// copy it into our buffers
HRCHECK(surface->LockRect(&rc, NULL, 0));
CopyMemory(output, rc.pBits, rc.Pitch * mode.Height);
HRCHECK(surface->UnlockRect());
GetSystemTime(&st);
wprintf(L"%i:%i:%i.%i\n", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
RELEASE(surface);
RELEASE(device);
RELEASE(d3d);
QImage* img = new QImage(mode.Width, mode.Height, QImage::Format_ARGB32);
for (int y = 0; y < img->height(); y++)
{
memcpy(img->scanLine(y), (void*) output[y], img->bytesPerLine());
}
img->save("output.png", "PNG");
return hr;
}
#ifndef SCREENRECORDER_H
#define SCREENRECORDER_H
#include <QtCore>
#include "CachedLocalStream.h"
#include "VideoTranscoder.h"
#include <d3d9.h> // DirectX 9 header
#pragma comment(lib, "d3d9.lib") // link to DirectX 9 library
class ScreenRecorder : public QObject
{
Q_OBJECT
public:
ScreenRecorder(End *outputDevice, EncodingProfile &profile, QObject *parent = nullptr);
HRESULT dumpScreenBuffer(UINT adapter, UINT count, LPBYTE output);
};
#endif // SCREENRECORDER_H
cmake_minimum_required(VERSION 3.14)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (MSVC)
include_directories("C:\\QtAV.new\\QtAV\\src\\compat\\msvc")
endif()
set(CMAKE_MODULE_PATH /usr/share/cmake-3.18/Modules /usr/share/cmake-3.19/Modules ${CMAKE_MODULE_PATH})
find_package(QtAV REQUIRED)
include_directories(${QTAV_INCLUDE_DIRS} ${QTAVWIDGETS_INCLUDE_DIRS})
find_package(Qt5 COMPONENTS Core Quick Widgets Network QuickControls2 Multimedia Concurrent REQUIRED)
find_package(QtAV)
add_library(VanadiumCastLib-obj OBJECT
API/NetworkAPI.cpp
GUI/VideoGui.cpp
GUI/VideoGuiLauncher.cpp
MediaProcessing/InputFile.cpp
MediaProcessing/NetworkInput.cpp
MediaProcessing/VideoTranscoder.cpp
Networking/NetworkDevice.cpp
Networking/StreamThread.cpp
Networking/NetworkSinkHandler.cpp
Networking/NetworkSinkTcpServer.cpp
Networking/NetworkDeviceScanner.cpp
Networking/NetworkDeviceDirectory.cpp
Commands.h
API/API.h
API/NetworkAPI.h
API/SinkHandleWidget.h
GUI/VideoGui.h
GUI/VideoGuiLauncher.h
MediaProcessing/Input.h
MediaProcessing/InputFile.h
MediaProcessing/NetworkInput.h
MediaProcessing/EncodingProfile.h
MediaProcessing/VideoTranscoder.h
MediaProcessing/PlayerStateSlots.h
Networking/Device.h
Networking/Streaming.h
Networking/DeviceScan.h
Networking/SinkHandler.h
Networking/NetworkDevice.h
Networking/DeviceDirectory.h
Networking/StreamThread.h
Networking/NetworkSinkHandler.h
Networking/NetworkSinkTcpServer.h
Networking/NetworkDeviceScanner.h
Networking/NetworkDeviceDirectory.h
Networking/CachedStream.cpp
Networking/CachedStream.h
MediaProcessing/CachedLocalStream.cpp
MediaProcessing/CachedLocalStream.h
util.cpp
util.h
MediaProcessing/FFMPEGTranscoder.cpp
MediaProcessing/FFMPEGTranscoder.h
GUI/WindowCloseEventFilter.cpp
GUI/WindowCloseEventFilter.h
VanadiumCastLib_EXPORTS.h)
add_executable(VanadiumCast
../res/qml.qrc
main.cpp)
add_library(VanadiumCastLib-shared SHARED
$<TARGET_OBJECTS:VanadiumCastLib-obj>
)
set_target_properties(VanadiumCastLib-shared
PROPERTIES
OUTPUT_NAME "VanadiumCastLib"
)
#add_library(VanadiumCastLib-static SHARED
# $<TARGET_OBJECTS:VanadiumCastLib-obj>
# )
#set_target_properties(VanadiumCastLib-static
# PROPERTIES
# OUTPUT_NAME "VanadiumCastLib"
# )
target_compile_definitions(VanadiumCastLib-obj
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(VanadiumCastLib-obj
PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Multimedia Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent)
target_compile_definitions(VanadiumCastLib-shared
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(VanadiumCastLib-shared
PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Multimedia Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent)
target_compile_definitions(VanadiumCast
PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
target_link_libraries(VanadiumCast
PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Multimedia Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Concurrent)
if (MSVC)
target_link_libraries(VanadiumCastLib-obj PRIVATE QtAV1 QtAVWidgets1)
target_link_libraries(VanadiumCastLib-shared PRIVATE QtAV1 QtAVWidgets1)
target_link_libraries(VanadiumCast PRIVATE QtAVd1 QtAVWidgets1 QmlAV)
else ()
target_link_libraries(VanadiumCastLib-obj PRIVATE QtAV QtAVWidgets)
target_link_libraries(VanadiumCast PRIVATE QtAV QtAVWidgets)
endif ()
include(GenerateExportHeader)
GENERATE_EXPORT_HEADER(VanadiumCastLib-shared # generates the export header shared_EXPORTS.h automatically
BASE_NAME VanadiumCastLib
EXPORT_MACRO_NAME VanadiumCastLib_EXPORTS
EXPORT_FILE_NAME VanadiumCastLib_EXPORTS.h)
target_compile_definitions(VanadiumCastLib-shared PRIVATE VanadiumCastLib_shared_EXPORTS)
target_compile_definitions(VanadiumCastLib-obj PRIVATE VanadiumCastLib_shared_EXPORTS)
target_link_libraries(VanadiumCast PRIVATE VanadiumCastLib-shared)
target_link_libraries(VanadiumCastLib-obj PRIVATE avformat avcodec avdevice avfilter)
target_link_libraries(VanadiumCastLib-shared PRIVATE avformat avcodec avdevice avfilter)
cmake_minimum_required(VERSION 3.5)
project(VanadiumCastTest LANGUAGES CXX)
include_directories(../src)
find_package(Qt5 COMPONENTS Core Test Gui Widgets Concurrent Network REQUIRED)
if (MSVC)
include_directories(E:\\QtAV\\src\\QtAV E:\\QtAV\\widgets\\QtAVWidgets)
link_directories(E:\\QtAV\\x64\\Debug)
else ()
set(CMAKE_MODULE_PATH /usr/share/cmake-3.18/Modules /usr/share/cmake-3.19/Modules ${CMAKE_MODULE_PATH})
find_package(QtAV REQUIRED)
endif ()
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
enable_testing()
add_executable(VanadiumCastTest Networking/CachedStreamTest.h main.cpp Networking/CachedStreamTest.cpp MediaProcessing/CachedLocalStreamTest.cpp MediaProcessing/CachedLocalStreamTest.h)
add_test(NAME VanadiumCastTest COMMAND VanadiumCastTest)
target_link_libraries(VanadiumCastTest PRIVATE QtAV QtAVWidgets VanadiumCastLib Qt5::Gui Qt5::Test Qt5::Core Qt5::Widgets Qt5::Concurrent Qt5::Network)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment