Skip to content

Commit 2209bdc

Browse files
committed
Added support for Linux
1 parent fbbff33 commit 2209bdc

File tree

80 files changed

+5673
-642
lines changed

Some content is hidden

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

80 files changed

+5673
-642
lines changed

.gitattributes

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

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
build/*
44
out/*
55
bin/*
6-
6+
*.spv*
77

88
# User-specific files
99
*.rsuser

.gitmodules

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
path = amf
66
url = https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
77
ignore = untracked
8+
branch = master

CMakeLists.txt

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

6-
if(WIN32)
76
# Specify the C++ standard
87
set(CMAKE_CXX_STANDARD 20)
98
set(CMAKE_CXX_STANDARD_REQUIRED True)
@@ -27,26 +26,31 @@ if(MSVC)
2726
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /LTCG /INCREMENTAL:NO /OPT:REF /OPT:ICF /NOLOGO")
2827
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} /LTCG /NOLOGO")
2928

30-
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
29+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
3130
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")
3231
endif()
3332

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)
33+
if(WIN32)
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+
include_directories(${WINDOWS_SDK_INCLUDE})
48+
include_directories(${OCL_ROOT}/include)
49+
endif()
50+
51+
set(VK_SDK_PATH "$ENV{VULKAN_SDK}")
52+
include_directories(${VK_SDK_PATH}/include)
53+
5054

5155
# Set output directories for all build configurations
5256
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/bin/Debug")
@@ -103,4 +107,3 @@ set_target_properties(ssdk PROPERTIES FOLDER "libs")
103107
set_target_properties(mbedtls-custom PROPERTIES FOLDER "libs")
104108
set_target_properties(SimpleStreamingClient PROPERTIES FOLDER "samples")
105109
set_target_properties(RemoteDesktopServer PROPERTIES FOLDER "samples")
106-
endif()

CMakePresets.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,31 @@
88
"configurePresets": [
99
{
1010
"name": "Debug",
11-
"generator": "Ninja",
11+
"generator": "Unix Makefiles",
1212
"binaryDir": "${sourceDir}/build",
1313
"cacheVariables": {
1414
"CMAKE_BUILD_TYPE": "Debug"
1515
}
1616
},
1717
{
1818
"name": "Release",
19-
"generator": "Ninja",
19+
"generator": "Unix Makefiles",
2020
"binaryDir": "${sourceDir}/build",
2121
"cacheVariables": {
2222
"CMAKE_BUILD_TYPE": "Release"
2323
}
2424
},
2525
{
2626
"name": "ReleaseWithDebugInfo",
27-
"generator": "Ninja",
27+
"generator": "Unix Makefiles",
2828
"binaryDir": "${sourceDir}/build",
2929
"cacheVariables": {
3030
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
3131
}
3232
},
3333
{
3434
"name": "MinSizeRelease",
35-
"generator": "Ninja",
35+
"generator": "Unix Makefiles",
3636
"binaryDir": "${sourceDir}/build",
3737
"cacheVariables": {
3838
"CMAKE_BUILD_TYPE": "MinSizeRel"

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ Advanced Interactive Streaming SDK is a C++ library that provides building block
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:
7+
- v1.1.0 - added support for Linux:
8+
- Server supported on AMD graphics with the Pro driver (X.org required)
9+
- Client supported on AMD graphics with the Pro and RADV drivers, NVidia graphics (proprietary driver recommended), Intel graphics (X.org recommended, Wayland supported with some limitations)
10+
- Tested with Ubuntu 22.04 LTS and 24.04 LTS
711
- v1.0.2 - bug fixes:
812
- Encoder frame rate wasn't being set correctly when display capture mode was set to *present* or when QoS was turned off
913
- v1.0.1 - bug fixes:

amf

Submodule amf updated 140 files

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

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

10-
if(WIN32)
11-
1210
# Define source files
1311
set(SOURCE_FILES
1412
"../../amf/amf/public/common/AMFFactory.cpp"
@@ -33,8 +31,18 @@ set(SOURCE_FILES
3331
"../../amf/amf/public/src/components/ComponentsFFMPEG/HEVCEncoderFFMPEGImpl.cpp"
3432
"../../amf/amf/public/src/components/ComponentsFFMPEG/UtilsFFMPEG.cpp"
3533
"../../amf/amf/public/src/components/ComponentsFFMPEG/VideoDecoderFFMPEGImpl.cpp"
34+
)
35+
36+
# Add platform-specific files:
37+
if(WIN32)
38+
set(SOURCE_FILES ${SOURCE_FILES}
3639
"../../amf/amf/public/common/Windows/ThreadWindows.cpp"
3740
)
41+
elseif(UNIX)
42+
set(SOURCE_FILES ${SOURCE_FILES}
43+
"../../amf/amf/public/common/Linux/ThreadLinux.cpp"
44+
)
45+
endif()
3846

3947
# Define header files
4048
set(HEADER_FILES
@@ -82,6 +90,8 @@ set(HEADER_FILES
8290
add_library(amf-component-ffmpeg64 SHARED ${SOURCE_FILES} ${HEADER_FILES})
8391

8492
set(FFMPEG_VERSION 7.0)
93+
94+
if(WIN32)
8595
set(FFMPEG_BASE_PATH "../../amf/Thirdparty/ffmpeg/ffmpeg/ffmpeg-${FFMPEG_VERSION}/x64/release")
8696

8797
get_filename_component(FFMPEG_BASE_PATH_ABS ${FFMPEG_BASE_PATH} ABSOLUTE)
@@ -106,6 +116,32 @@ target_link_libraries(amf-component-ffmpeg64 PRIVATE
106116
"${FFMPEG_BASE_PATH_ABS}/lib/swresample.lib"
107117
"${FFMPEG_BASE_PATH_ABS}/lib/swscale.lib" )
108118

119+
elseif(UNIX)
120+
set(FFMPEG_BASE_PATH "${CMAKE_SOURCE_DIR}/amf/Thirdparty/ffmpeg/ffmpeg/ffmpeg-${FFMPEG_VERSION}/lnx64/release")
121+
122+
set(FFMPEG_DLLS
123+
"${FFMPEG_BASE_PATH}/bin/libavcodec.so.61"
124+
"${FFMPEG_BASE_PATH}/bin/libavdevice.so.61"
125+
"${FFMPEG_BASE_PATH}/bin/libavfilter.so.10"
126+
"${FFMPEG_BASE_PATH}/bin/libavformat.so.61"
127+
"${FFMPEG_BASE_PATH}/bin/libavutil.so.59"
128+
"${FFMPEG_BASE_PATH}/bin/libswresample.so.5"
129+
"${FFMPEG_BASE_PATH}/bin/libswscale.so.8"
130+
)
131+
132+
target_link_libraries(amf-component-ffmpeg64 PRIVATE
133+
"${FFMPEG_BASE_PATH}/bin/libavcodec.so.61"
134+
"${FFMPEG_BASE_PATH}/bin/libavdevice.so.61"
135+
"${FFMPEG_BASE_PATH}/bin/libavfilter.so.10"
136+
"${FFMPEG_BASE_PATH}/bin/libavformat.so.61"
137+
"${FFMPEG_BASE_PATH}/bin/libavutil.so.59"
138+
"${FFMPEG_BASE_PATH}/bin/libswresample.so.5"
139+
"${FFMPEG_BASE_PATH}/bin/libswscale.so.8"
140+
)
141+
142+
endif()
143+
144+
109145
# Include directories
110146
target_include_directories(amf-component-ffmpeg64 PRIVATE
111147
../../amf/amf
@@ -118,13 +154,18 @@ target_compile_definitions(amf-component-ffmpeg64 PRIVATE
118154
$<$<CONFIG:Release>:NDEBUG;_LIB;AMF_COMPONENT_FFMPEG_EXPORTS;_CRT_SECURE_NO_WARNINGS>
119155
)
120156

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-
)
157+
if(WIN32)
158+
# Link options
159+
target_link_options(amf-component-ffmpeg64 PRIVATE
160+
$<$<CONFIG:Debug>:/DEBUG /INCREMENTAL>
161+
$<$<CONFIG:Release>:/LTCG /OPT:REF /OPT:ICF /INCREMENTAL:NO>
162+
)
163+
164+
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}>>>")
126165

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}>>>")
166+
elseif(UNIX)
167+
set(OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
168+
endif()
128169

129170
foreach(DLL ${FFMPEG_DLLS})
130171
get_filename_component(DLL_NAME ${DLL} NAME)
@@ -137,5 +178,3 @@ foreach(DLL ${FFMPEG_DLLS})
137178
COMMENT "Copying ${DLL} to ${OUTPUT_DIRECTORY}/${DLL_NAME}"
138179
)
139180
endforeach()
140-
141-
endif()

0 commit comments

Comments
 (0)