Skip to content

Commit b23fc8f

Browse files
committed
Release-2025.03.06
1 parent 2c8d6d5 commit b23fc8f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1001
-1601
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
prebuilt/Windows filter=lfs diff=lfs merge=lfs -text

CMakeLists.txt

Lines changed: 47 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.15)
33
# Define the project name
44
project(StreamingSDK)
55

6+
if(WIN32)
67
# Specify the C++ standard
78
set(CMAKE_CXX_STANDARD 20)
89
set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -26,41 +27,26 @@ if(MSVC)
2627
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF /OPT:ICF /NOLOGO")
2728
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG /NOLOGO")
2829

29-
#elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
30-
# # compiler error checking flags for linux
31-
#-Wno-register \
32-
#-Werror \
33-
#-Wall \
34-
#-Wextra \
35-
#-Wno-unknown-pragmas \
36-
#-Wno-reorder \
37-
#-Wno-unused \
38-
#-Wno-switch \
39-
#-Wno-sign-compare \
40-
#-Wno-missing-field-initializers \
41-
#-Wno-nonnull \
42-
#-Wno-overloaded-virtual \
43-
endif()
44-
45-
if(WIN32)
46-
set(PROGRAM_FILES_X86 "$ENV{ProgramFiles\(x86\)}")
47-
set(WINDOWS_SDK_VERSION "10.0.26100.0")
48-
set(WINDOWS_SDK_INCLUDE_BASE "${PROGRAM_FILES_X86}/Windows Kits/10/Include/${WINDOWS_SDK_VERSION}")
49-
set(WINDOWS_SDK_INCLUDE
50-
"${WINDOWS_SDK_INCLUDE_BASE}/ucrt"
51-
"${WINDOWS_SDK_INCLUDE_BASE}/um"
52-
"${WINDOWS_SDK_INCLUDE_BASE}/shared"
53-
"${WINDOWS_SDK_INCLUDE_BASE}/winrt"
54-
"${WINDOWS_SDK_INCLUDE_BASE}/cppwinrt"
55-
"${WINDOWS_SDK_INCLUDE_BASE}/um"
56-
)
57-
set(WINDOWS_SDK_BIN "${PROGRAM_FILES_X86}/Windows Kits/10/bin/${WINDOWS_SDK_VERSION}/x64")
58-
set(OCL_ROOT "$ENV{OCL_ROOT}")
59-
set(VK_SDK_PATH "$ENV{VK_SDK_PATH}")
60-
include_directories(${WINDOWS_SDK_INCLUDE} $ENV{VK_SDK_PATH}/include)
61-
include_directories(${OCL_ROOT}/include)
30+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
31+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register -Werror -Wall -Wextra -Wno-unknown-pragmas -Wno-reorder -Wno-unused -Wno-switch -Wno-sign-compare -Wno-missing-field-initializers -Wno-nonnull -Wno-overloaded-virtual -Wno-deprecated-declarations -Wno-type-limits -Wno-free-nonheap-object -Wno-maybe-uninitialized")
6232
endif()
6333

34+
set(PROGRAM_FILES_X86 "$ENV{ProgramFiles\(x86\)}")
35+
set(WINDOWS_SDK_VERSION "10.0.26100.0")
36+
set(WINDOWS_SDK_INCLUDE_BASE "${PROGRAM_FILES_X86}/Windows Kits/10/Include/${WINDOWS_SDK_VERSION}")
37+
set(WINDOWS_SDK_INCLUDE
38+
"${WINDOWS_SDK_INCLUDE_BASE}/ucrt"
39+
"${WINDOWS_SDK_INCLUDE_BASE}/um"
40+
"${WINDOWS_SDK_INCLUDE_BASE}/shared"
41+
"${WINDOWS_SDK_INCLUDE_BASE}/winrt"
42+
"${WINDOWS_SDK_INCLUDE_BASE}/cppwinrt"
43+
"${WINDOWS_SDK_INCLUDE_BASE}/um"
44+
)
45+
set(WINDOWS_SDK_BIN "${PROGRAM_FILES_X86}/Windows Kits/10/bin/${WINDOWS_SDK_VERSION}/x64")
46+
set(OCL_ROOT "$ENV{OCL_ROOT}")
47+
set(VK_SDK_PATH "$ENV{VK_SDK_PATH}")
48+
include_directories(${WINDOWS_SDK_INCLUDE} $ENV{VK_SDK_PATH}/include)
49+
include_directories(${OCL_ROOT}/include)
6450

6551
# Set output directories for all build configurations
6652
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/bin/Debug")
@@ -75,59 +61,46 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_SOURCE_DIR}/bin/RelWi
7561
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_SOURCE_DIR}/bin/RelWithDebInfo")
7662
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_SOURCE_DIR}/bin/RelWithDebInfo")
7763

64+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_SOURCE_DIR}/bin/MinSizeRel")
65+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_SOURCE_DIR}/bin/MinSizeRel")
66+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_SOURCE_DIR}/bin/MinSizeRel")
67+
68+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
69+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}")
70+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG}")
71+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG}")
72+
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
73+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}")
74+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE}")
75+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE}")
76+
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
77+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}")
78+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO}")
79+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO}")
80+
elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
81+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}")
82+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL}")
83+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL}")
84+
else()
85+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
86+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
87+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
88+
endif()
89+
7890
# Solution configurations
7991
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo" CACHE STRING "" FORCE)
8092
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
8193

82-
set(SOURCE_FILES "")
83-
set(HEADER_FILES "")
84-
85-
# Add subdirectories for each project
86-
set(SUBFOLDER_NET sdk/net)
87-
set(SUBFOLDER_UTIL sdk/util)
88-
set(SUBFOLDER_TRANSPORT_COMMON sdk/transports/transport-common)
89-
set(SUBFOLDER_TRANSPORT_AMD sdk/transports/transport-amd)
90-
set(SUBFOLDER_VIDEO sdk/video)
91-
set(SUBFOLDER_AUDIO sdk/audio)
92-
set(SUBFOLDER_CONTROLLERS sdk/controllers)
93-
9494
add_subdirectory(amf-helper-libs/amf-public)
9595
add_subdirectory(amf-helper-libs/amf-component-ffmpeg64)
96-
add_subdirectory(${SUBFOLDER_NET})
97-
add_subdirectory(${SUBFOLDER_UTIL})
98-
add_subdirectory(${SUBFOLDER_TRANSPORT_COMMON})
99-
add_subdirectory(${SUBFOLDER_TRANSPORT_AMD})
100-
add_subdirectory(${SUBFOLDER_VIDEO})
101-
add_subdirectory(${SUBFOLDER_AUDIO})
102-
add_subdirectory(${SUBFOLDER_CONTROLLERS})
10396
add_subdirectory(mbedtls-custom)
97+
add_subdirectory(sdk)
10498
add_subdirectory(samples/SimpleStreamingClient)
10599
add_subdirectory(samples/RemoteDesktopServer)
106100

107-
# Add the library
108-
add_library(ssdk STATIC ${SOURCE_FILES} ${HEADER_FILES})
109-
110-
# Include directories
111-
target_include_directories(ssdk PRIVATE
112-
./
113-
sdk
114-
amf
115-
amf/amf
116-
mbedtls/include
117-
)
118-
119-
# Compile definitions
120-
target_compile_definitions(ssdk PRIVATE
121-
$<$<CONFIG:Debug>:_DEBUG;_LIB>
122-
$<$<CONFIG:Release>:NDEBUG;_LIB>
123-
)
124-
125-
# Project dependencies
126-
add_dependencies(SimpleStreamingClient ssdk amf-public amf-component-ffmpeg64 mbedtls-custom)
127-
add_dependencies(RemoteDesktopServer ssdk amf-public amf-component-ffmpeg64 mbedtls-custom)
128-
129101
# Optionally, group targets into folders in the solution
130102
set_target_properties(ssdk PROPERTIES FOLDER "libs")
131103
set_target_properties(mbedtls-custom PROPERTIES FOLDER "libs")
132104
set_target_properties(SimpleStreamingClient PROPERTIES FOLDER "samples")
133105
set_target_properties(RemoteDesktopServer PROPERTIES FOLDER "samples")
106+
endif()

CMakePresets.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"version": 3,
3+
"cmakeMinimumRequired": {
4+
"major": 3,
5+
"minor": 19,
6+
"patch": 0
7+
},
8+
"configurePresets": [
9+
{
10+
"name": "Debug",
11+
"generator": "Ninja",
12+
"binaryDir": "${sourceDir}/build",
13+
"cacheVariables": {
14+
"CMAKE_BUILD_TYPE": "Debug"
15+
}
16+
},
17+
{
18+
"name": "Release",
19+
"generator": "Ninja",
20+
"binaryDir": "${sourceDir}/build",
21+
"cacheVariables": {
22+
"CMAKE_BUILD_TYPE": "Release"
23+
}
24+
},
25+
{
26+
"name": "ReleaseWithDebugInfo",
27+
"generator": "Ninja",
28+
"binaryDir": "${sourceDir}/build",
29+
"cacheVariables": {
30+
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
31+
}
32+
},
33+
{
34+
"name": "MinSizeRelease",
35+
"generator": "Ninja",
36+
"binaryDir": "${sourceDir}/build",
37+
"cacheVariables": {
38+
"CMAKE_BUILD_TYPE": "MinSizeRel"
39+
}
40+
}
41+
]
42+
}

CMakeSettings.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"configurations": [
33
{
44
"name": "x64-Debug",
5-
"generator": "Visual Studio 16 2019 Win64",
5+
"generator": "Visual Studio 17 2022 Win64",
66
"configurationType": "Debug",
77
"inheritEnvironments": [ "msvc_x64_x64" ],
88
"buildRoot": "${projectDir}\\out\\build\\${name}",
@@ -14,7 +14,7 @@
1414
},
1515
{
1616
"name": "x64-Release",
17-
"generator": "Visual Studio 16 2019 Win64",
17+
"generator": "Visual Studio 17 2022 Win64",
1818
"configurationType": "Release",
1919
"buildRoot": "${projectDir}\\out\\build\\${name}",
2020
"installRoot": "${projectDir}\\out\\install\\${name}",
@@ -26,7 +26,7 @@
2626
},
2727
{
2828
"name": "x64-RelWithDebInfo",
29-
"generator": "Visual Studio 16 2019 Win64",
29+
"generator": "Visual Studio 17 2022 Win64",
3030
"configurationType": "RelWithDebInfo",
3131
"buildRoot": "${projectDir}\\out\\build\\${name}",
3232
"installRoot": "${projectDir}\\out\\install\\${name}",

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
# Streaming SDK
1+
# AMD Interactive Streaming SDK
22

3-
Streaming SDK is a C++ library that provides building blocks and samples for low latency streaming applications, such as Cloud Game Streaming, Virtual Desktop Interface (VDI),
3+
AMD Interactive Streaming SDK is a C++ library that provides building blocks and samples for low latency streaming applications, such as Cloud Game Streaming, Virtual Desktop Interface (VDI),
44
Virtual and Augmented Reality, etc. using AMD Radeon graphics. It allows you to build a complete streaming solution including video and audio capture, video and audio encoder/decoder/pre-post-processing pipelines, a robust and secure network stack, or use some of its components, while implementing the rest yourself.
55

66
## Changelog:
77
- Initial revision
88

99
## Dependencies:
10-
Streaming SDK depends on a number of other components from AMD and third parties:
10+
AMD Interactive Streaming SDK depends on a number of other components from AMD and third parties:
1111
- [Advanced Media Framework (AMF SDK)](https://github.com/GPUOpen-LibrariesAndSDKs/AMF) for video encoding/decoding/processing
1212
- [MbedTLS](https://github.com/Mbed-TLS/mbedtls) for encryption
1313
- [Ffmpeg](https://github.com/FFmpeg/FFmpeg) for audio encoding/decoding/resampling
1414

1515
## License:
16-
Streaming SDK is distributed in open source under the [MIT license](LICENSE.md)
16+
AMD Interactive Streaming SDK is distributed in open source under the [MIT license](LICENSE.md)
1717

1818
## Documentation:
19-
Comprehensive documentation is provided by the [Streaming SDK Wiki](https://github.com/GPUOpen-LibrariesAndSDKs/Streaming-SDK/wiki)
19+
Comprehensive documentation is provided by the [Streaming SDK Wiki](wiki/)
2020

amf-helper-libs/amf-component-ffmpeg64/CMakeLists.txt

Lines changed: 11 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ endif()
77
# Define the project name
88
project(amf-component-ffmpeg64)
99

10+
if(WIN32)
11+
1012
# Define source files
1113
set(SOURCE_FILES
1214
"../../amf/amf/public/common/AMFFactory.cpp"
@@ -31,14 +33,8 @@ set(SOURCE_FILES
3133
"../../amf/amf/public/src/components/ComponentsFFMPEG/HEVCEncoderFFMPEGImpl.cpp"
3234
"../../amf/amf/public/src/components/ComponentsFFMPEG/UtilsFFMPEG.cpp"
3335
"../../amf/amf/public/src/components/ComponentsFFMPEG/VideoDecoderFFMPEGImpl.cpp"
34-
)
35-
36-
# Add platform-specific files:
37-
if(WIN32)
38-
set(SOURCE_FILES ${SOURCE_FILES}
3936
"../../amf/amf/public/common/Windows/ThreadWindows.cpp"
4037
)
41-
endif()
4238

4339
# Define header files
4440
set(HEADER_FILES
@@ -86,17 +82,6 @@ set(HEADER_FILES
8682
add_library(amf-component-ffmpeg64 SHARED ${SOURCE_FILES} ${HEADER_FILES})
8783

8884
set(FFMPEG_VERSION 7.0)
89-
90-
# add_library(avcodec SHARED IMPORTED)
91-
# add_library(avdevice SHARED IMPORTED)
92-
# add_library(avfilter SHARED IMPORTED)
93-
# add_library(avformat SHARED IMPORTED)
94-
# add_library(avutil SHARED IMPORTED)
95-
# add_library(swresample SHARED IMPORTED)
96-
# add_library(swscale SHARED IMPORTED)
97-
98-
99-
if(WIN32)
10085
set(FFMPEG_BASE_PATH "../../amf/Thirdparty/ffmpeg/ffmpeg/ffmpeg-${FFMPEG_VERSION}/x64/release")
10186

10287
get_filename_component(FFMPEG_BASE_PATH_ABS ${FFMPEG_BASE_PATH} ABSOLUTE)
@@ -121,78 +106,25 @@ target_link_libraries(amf-component-ffmpeg64 PRIVATE
121106
"${FFMPEG_BASE_PATH_ABS}/lib/swresample.lib"
122107
"${FFMPEG_BASE_PATH_ABS}/lib/swscale.lib" )
123108

124-
#set_target_properties(avcodec PROPERTIES
125-
# IMPORTED_LOCATION_DEBUG "${FFMPEG_BASE_PATH}/lib/avcodec.lib"
126-
# IMPORTED_LOCATION_RELEASE "${FFMPEG_BASE_PATH}/lib/avcodec.lib"
127-
# IMPORTED_LOCATION_RELWITHDEBINFO "${FFMPEG_BASE_PATH}/lib/avcodec.lib")
128-
# set_target_properties(avdevice PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/avdevice.lib")
129-
# set_target_properties(avfilter PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/avfilter.lib")
130-
# set_target_properties(avformat PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/avformat.lib")
131-
# set_target_properties(avutil PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/avutil.lib")
132-
# set_target_properties(swresample PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/swresample.lib")
133-
# set_target_properties(swscale PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/lib/swscale.lib")
134-
135-
else()
136-
set(FFMPEG_BASE_PATH "${CMAKE_SOURCE_DIR}/amf/Thirdparty/ffmpeg/ffmpeg/ffmpeg-${FFMPEG_VERSION}/lnx64/release")
137-
138-
set(FFMPEG_DLLS
139-
"${FFMPEG_BASE_PATH}/bin/libavcodec.so.61"
140-
"${FFMPEG_BASE_PATH}/bin/libavdevice.so.61"
141-
"${FFMPEG_BASE_PATH}/bin/libavfilter.so.10"
142-
"${FFMPEG_BASE_PATH}/bin/libavformat.so.61"
143-
"${FFMPEG_BASE_PATH}/bin/libavutil.so.59"
144-
"${FFMPEG_BASE_PATH}/bin/libswresample.so.5"
145-
"${FFMPEG_BASE_PATH}/bin/libswscale.so.8"
146-
)
147-
148-
#set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libavcodec.so.61")
149-
#set_target_properties(avdevice PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libavdevice.so.61")
150-
#set_target_properties(avfilter PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libavfilter.so.10")
151-
#set_target_properties(avformat PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libavformat.so.61")
152-
#set_target_properties(avutil PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libavutil.so.59")
153-
#set_target_properties(swresample PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libswresample.so.5")
154-
#set_target_properties(swscale PROPERTIES IMPORTED_LOCATION "${FFMPEG_BASE_PATH}/bin/libswscale.so.8")
155-
156-
endif()
157-
158-
159109
# Include directories
160110
target_include_directories(amf-component-ffmpeg64 PRIVATE
161111
../../amf/amf
162112
${FFMPEG_BASE_PATH}/include
163113
)
164114

165-
166-
167-
168115
# Compile definitions
169116
target_compile_definitions(amf-component-ffmpeg64 PRIVATE
170117
$<$<CONFIG:Debug>:_DEBUG;_LIB;AMF_COMPONENT_FFMPEG_EXPORTS;_CRT_SECURE_NO_WARNINGS>
171118
$<$<CONFIG:Release>:NDEBUG;_LIB;AMF_COMPONENT_FFMPEG_EXPORTS;_CRT_SECURE_NO_WARNINGS>
172119
)
173120

174-
if(WIN32)
175-
# Link options
176-
target_link_options(amf-component-ffmpeg64 PRIVATE
177-
$<$<CONFIG:Debug>:/DEBUG /INCREMENTAL>
178-
$<$<CONFIG:Release>:/LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO>
179-
)
180-
181-
set(OUTPUT_DIRECTORY "$<IF:$<CONFIG:Debug>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG},$<IF:$<CONFIG:Release>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE},$<IF:$<CONFIG:RelWithDebInfo>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO},${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}>>>")
182-
183-
else()
121+
# Link options
122+
target_link_options(amf-component-ffmpeg64 PRIVATE
123+
$<$<CONFIG:Debug>:/DEBUG /INCREMENTAL>
124+
$<$<CONFIG:Release>:/LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO>
125+
)
184126

185-
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
186-
set(OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}")
187-
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
188-
set(OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}")
189-
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
190-
set(OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO}")
191-
elseif(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
192-
set(OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}")
193-
endif()
194-
195-
endif()
127+
set(OUTPUT_DIRECTORY "$<IF:$<CONFIG:Debug>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG},$<IF:$<CONFIG:Release>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE},$<IF:$<CONFIG:RelWithDebInfo>,${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO},${CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL}>>>")
196128

197129
foreach(DLL ${FFMPEG_DLLS})
198130
get_filename_component(DLL_NAME ${DLL} NAME)
@@ -204,4 +136,6 @@ foreach(DLL ${FFMPEG_DLLS})
204136
${OUTPUT_DIRECTORY}/${DLL_NAME}
205137
COMMENT "Copying ${DLL} to ${OUTPUT_DIRECTORY}/${DLL_NAME}"
206138
)
207-
endforeach()
139+
endforeach()
140+
141+
endif()

0 commit comments

Comments
 (0)