Skip to content

Commit 0c60951

Browse files
author
tnarine-amd
committed
AMF 1.4.9
- Vulkan support - Vulkan encoder supports H.264 only - Linux support (see public/make/common_defs.mak for packages and build parameters)
1 parent 2947760 commit 0c60951

File tree

2,001 files changed

+375987
-1088
lines changed

Some content is hidden

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

2,001 files changed

+375987
-1088
lines changed

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,25 @@
22

33
AMF is a light-weight, portable multimedia framework that abstracts away most of the platform and API-specific details and allows for easy implementation of multimedia applications using a variety of technologies, such as DirectX 11, OpenGL, and OpenCL and facilitates an efficient interop between them.
44

5-
These features are a part of the initial 1.3 version of AMF. Version 1.4 of the AMF SDK includes support for the H.265 encoder(HEVC) and bug fixes. Version 1.4.4 has support for FFmpeg 3.3.1. Version 1.4.6 has support for game dvr. Version 1.4.7 has support for 360 video stitch.
6-
75
<div>
86
<a href="https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/latest/"><img src="http://gpuopen-librariesandsdks.github.io/media/latest-release-button.svg" alt="Latest release" title="Latest release"></a>
97
</div>
108

119
### Prerequisites
1210
* Windows&reg; 7 (SP1 with the [Platform Update](https://msdn.microsoft.com/en-us/library/windows/desktop/jj863687.aspx)), Windows&reg; 8.1, or Windows&reg; 10
1311
* Visual Studio&reg; 2013, Visual Studio&reg; 2015 or Visual Studio&reg; 2017
14-
* Version 1.4.7: AMD Radeon Software Adrenalin Edition 18.3.4 (17.50.33) or newer
15-
* Version 1.4.6: AMD Radeon Software Crimson Edition 17.12.1 (17.50.02) or newer
16-
* Version 1.4.4: AMD Radeon Software Crimson Edition 17.7.2 (17.30.1041) or newer
12+
* Version 1.4.9 or later requires Vulkan SDK for some samples: https://vulkan.lunarg.com/ and AMD Radeon Software Adrenalin Edition 18.8.1 (18.30.01.01) or newer. This version supports Linux (see amd.com for driver support)
13+
* Version 1.4.4 or later requires OCL_SDK_Light: https://github.com/GPUOpen-LibrariesAndSDKs/OCL-SDK/releases. Previous versions of AMF require the AMD APP SDK (Version 3.0 or later), Windows 10 SDK (Version 10586). This version requires AMD Radeon Software Crimson Edition 17.7.2 (17.30.1041) or newer
1714
* Version 1.4: AMD Radeon Software Crimson Edition 17.1.1 (16.50.2611) or newer
1815
* Version 1.3: AMD Radeon Software Crimson Edition 16.7.3 (16.30.2311) or newer
19-
* Version 1.4.4 or later requires OCL_SDK_Light: https://github.com/GPUOpen-LibrariesAndSDKs/OCL-SDK/releases. Previous versions of AMF require the AMD APP SDK (Version 3.0 or later), Windows 10 SDK (Version 10586) and some samples require the Microsoft Foundation Class Library (MFC)
16+
2017

2118
The AMF framework is compatible with most recent Radeon GPUs starting with the Southern Islands family and APUs of the Kabini, Kaveri, Carrizo families and newer.
2219

2320
### Getting Started
2421
* Visual Studio solutions can be found in the `amf\public\samples` directory.
2522
* Additional documentation can be found in the `amf\doc` directory.
23+
* To build samples on Linux use 'makefile' in `amf\public\samples`
2624

2725
### Third-Party Software
2826
* FFmpeg is distributed under the terms of the LGPLv2.1.
@@ -32,3 +30,4 @@ The AMF framework is compatible with most recent Radeon GPUs starting with the S
3230
* Microsoft, DirectX, Visual Studio, and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
3331
* OpenGL and the oval logo are trademarks or registered trademarks of Silicon Graphics, Inc. in the United States and/or other countries worldwide.
3432
* OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.
33+
* Vulkan and the Vulkan logo are registered trademarks of the Khronos Group Inc.
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
Build environment for Win10 64bit:
2+
1. Download msys2-x86_64-xxx.exe from http://www.msys2.org/
3+
2. intall msys2 to default path C:\msys64\
4+
3. Run MSYS2 w64
5+
4. execute pacman -Syu (confirm with "y" on prompt)
6+
5, when prompted terminate shell and re-run MSYS2 w64
7+
6. Execute pacman -Su (confirm with "y" on prompt)
8+
7. Run (confirm with "y" on prompts)
9+
pacman -S make
10+
pacman -S diffutils
11+
pacman -S yasm
12+
pacman -S mingw-w64-x86_64-gcc
13+
pacman -S mingw-w64-i686-gcc
14+
pacman -S mingw-w64-x86_64-gtk3
15+
pacman -S mingw-w64-i686-gtk3
16+
17+
9. Download http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip
18+
10. Unzip and copy pkg-config.exe to E:\msys64\mingw64\bin
19+
11. Download http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip
20+
12. Unzip and copy pkg-config.exe to E:\msys64\mingw32\bin
21+
22+
23+
11. Copy to intl.dll in two folders:
24+
25+
cd C:\msys64\\mingw32\bin
26+
cp libintl-8.dll intl.dll
27+
cd C:\msys64\\mingw64\bin
28+
cp libintl-8.dll intl.dll
29+
30+
31+
12. in E:\msys64\mingw64\x86_64-w64-mingw32\lib rename libpthread.dll.a libwinpthread.dll.a - change extension to a-org,
32+
13. In E:\msys64\mingw64\lib rename libbz2.dll.a libz.dll.a libiconv.dll.a liblzma.dll.a optionally libSDL.dll.a - change extension to a-org,
33+
14. in E:\msys64\mingw32\i686-w64-mingw32\lib rename libpthread.dll.a libwinpthread.dll.a - change extension to a-org,
34+
15. In E:\msys64\mingw32\lib rename libbz2.dll.a libz.dll.a libiconv.dll.a liblzma.dll.a optionally libSDL.dll.a - change extension to a-org,
35+
36+
37+
Getting source code:
38+
1. In this directory:
39+
2. Run E:\msys64\msys2_shell.cmd -mingw64
40+
3. cd /e/dev/ffmpeg
41+
4. run ./get_sourcecode
42+
43+
44+
Build 64
45+
1. Run E:\msys64\msys2_shell.cmd -mingw64
46+
2. cd /e/dev/ffmpeg
47+
3. ./ffmpeg-build-win release 64
48+
49+
Build 32
50+
1. Run E:\msys64\msys2_shell.cmd -mingw32
51+
2. cd /e/dev/ffmpeg
52+
3. ./ffmpeg-build-win release 32
53+
54+
55+
Build 64 with VC++
56+
1. Run 64 bit VC env variable command prompt
57+
2. Navigate to E:\msys64
58+
3. Run E:\msys64\msys2_shell.cmd -mingw64 -use-full-path
59+
4. Navigate to cd /e/dev/ffmpeg
60+
5. Run ./ffmpeg-build-win release 64 msvc
61+
62+
Build 32 with VC++
63+
1. Run 32 bit VC env variable command prompt
64+
2. Navigate to E:\msys64
65+
3. Run E:\msys64\msys2_shell.cmd -mingw32 -use-full-path
66+
4. Navigate to cd /e/dev/ffmpeg
67+
5. Run ./ffmpeg-build-win release 32 msvc
68+
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
#!/bin/bash
2+
3+
#flags to comment out parts of the build
4+
5+
build_ffmpeg=true
6+
build_redist=true
7+
8+
#--------------------------------------------------------
9+
# command line parameters
10+
#--------------------------------------------------------
11+
12+
# build_type: debug. release
13+
# bitness: 32, 64
14+
# toolchain: mingw, msvc, linux
15+
16+
build_type=$1
17+
bitness=$2
18+
toolchain=$3
19+
20+
#--------------------------------------------------------
21+
# FOLDERS CONFIG
22+
#--------------------------------------------------------
23+
24+
fldr_build=$PWD/build
25+
fldr_redist=$PWD/redist
26+
27+
fldr_src_ffmpeg=$PWD/ffmpeg-3.3.1
28+
29+
if [ "$bitness" = "32" ]
30+
then
31+
bld_arch=x86
32+
lib_arch=X86
33+
flg_output=linux32
34+
else
35+
bld_arch=x86_64
36+
lib_arch=X64
37+
flg_output=linux64
38+
fi
39+
40+
41+
42+
#--------------------------------------------------------
43+
# TOOLCHAIN CONFIG
44+
#--------------------------------------------------------
45+
46+
if [ "$toolchain" == "msvc" ]
47+
then
48+
fftoolchain=--toolchain=msvc
49+
extracflags=--extra-cflags="-Zi"
50+
extralinkflags=--extra-ldflags="-DEBUG"
51+
fldr_toolchain=msvc
52+
thread_flag=w32threads
53+
shared_lib_ext=dll
54+
exe_ext=exe
55+
rpath=
56+
else
57+
if [ "$toolchain" == "linux" ]
58+
then
59+
fftoolchain=
60+
extralinkflags='--extra-ldflags=-Wl,-rpath=$ORIGIN'
61+
# extralinkflags=--extra-ldflags=-static-libgcc
62+
fldr_toolchain=linux
63+
extracflags=
64+
thread_flag=pthreads
65+
shared_lib_ext=so.*
66+
exe_ext=
67+
rpath=--enable-rpath
68+
else
69+
fftoolchain=
70+
extralinkflags=--extra-ldflags=-static-libgcc
71+
fldr_toolchain=mingw
72+
extracflags=
73+
thread_flag=w32threads
74+
shared_lib_ext=dll
75+
exe_ext=exe
76+
rpath=
77+
fi
78+
fi
79+
80+
if test "$build_type" == "release"
81+
then
82+
echo ++release
83+
debug_flags=--disable-debug
84+
85+
else
86+
echo ++debug
87+
#MM --disable-optimizations cause link failures. FFMPEG uses if(0) foo(); construct to exclude foo() function from the build. MSVC doesn't remove call to foo() in debug mode.
88+
if [ "$toolchain" == "msvc" ]
89+
then
90+
debug_flags=--disable-debug
91+
92+
fi
93+
fi
94+
95+
#--------------------------------------------------------
96+
# full paths
97+
#--------------------------------------------------------
98+
99+
fld_build_full_path=$fldr_build/ffmpeg-$fldr_toolchain-$flg_output/$build_type
100+
fld_redist_full_path=$fldr_redist/ffmpeg-$fldr_toolchain-$flg_output/$build_type
101+
102+
#--------------------------------------------------------
103+
# trace
104+
#--------------------------------------------------------
105+
106+
107+
echo build_type=$build_type
108+
echo bitness=$bitness
109+
echo lib_arch=$lib_arch
110+
echo fldr_build=$fldr_build
111+
echo debug_flags=$debug_flags
112+
echo fftoolchain=$fftoolchain
113+
echo fld_build_full_path=$fld_build_full_path
114+
echo fld_redist_full_path=$fld_redist_full_path
115+
116+
117+
#--------------------------------------------------------
118+
# build FFMPEG
119+
#--------------------------------------------------------
120+
121+
if [ "$build_ffmpeg" = "true" ]
122+
then
123+
124+
#export PKG_CONFIG_PATH=/local/lib/pkgconfig
125+
126+
mkdir -p $fld_build_full_path
127+
128+
cd $fld_build_full_path
129+
130+
make clean
131+
132+
#MSYS2 Win build
133+
134+
$fldr_src_ffmpeg/configure $fftoolchain --arch=$bld_arch --enable-shared --enable-$thread_flag --enable-avresample $debug_flags $extracflags $extralinkflags $rpath
135+
136+
# do not use -j6 - conflict writing PDBs
137+
if [ "$toolchain" == "linux" ]
138+
then
139+
make -j6
140+
else
141+
make
142+
fi
143+
144+
fi #build_ffmpeg=true
145+
146+
#--------------------------------------------------------
147+
# Package FFMPEG
148+
#--------------------------------------------------------
149+
150+
if [ "$build_redist" = "true" ]
151+
then
152+
153+
fldr_include=$fld_redist_full_path/include
154+
fldr_lib=$fld_redist_full_path/lib
155+
fldr_bin=$fld_redist_full_path/bin
156+
157+
echo include: $fldr_include
158+
159+
mkdir -p $fldr_include
160+
mkdir -p $fldr_lib
161+
mkdir -p $fldr_bin
162+
163+
cd $fldr_src_ffmpeg
164+
find ./ -type f -name "*.h" -exec cp --parents {} $fldr_include/"$name" \;
165+
cd $fld_build_full_path
166+
find ./ -name "*.$shared_lib_ext" -type f -exec cp {} $fldr_bin \;
167+
if [ "$toolchain" == "linux" ]
168+
then
169+
find ./ -name "ffmpeg" -type f -exec cp {} $fldr_bin \;
170+
else
171+
find ./ -name "*.$exe_ext" -type f -exec cp {} $fldr_bin \;
172+
find ./ -name "*.pdb" -type f -exec cp {} $fldr_bin \;
173+
find ./ -name "*.lib" -type f -exec cp {} $fldr_lib \;
174+
fi
175+
cd $fld_build_full_path
176+
find ./ -type f -name "*.h" -exec cp --parents {} $fldr_include/"$name" \;
177+
178+
fi # build_redist=true
179+
250 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)