Purpose
This article covers the installation steps for Intel ® Media Server Studio 2018 R1 on Ubuntu 16.04.03 with Kernel 4.4.111 on the hardware Intel ® NUC Kit NUC6i7KYK.
Please check the hardware configuration support described in Linux* Release Notes.
Support is limited for the "Generic" installation of Intel ® Media Server Studio Professional and Essential edition. For a better understanding of what "Generic" means see next section.
What are "Gold" and "Generic" Installations?
Intel ® Media Server Studio install updates many graphics stack components, such as the kernel, the i915 kernel-mode graphics driver, the user-mode graphics driver, and libraries like libdrm and libva.
A "Gold" configuration is fully validated and supported. Kernel patches are prepared for the default/non-updated kernel for this specific release.
The "Generic" approach allows you to build your own configuration based on a minimal set of requirements.
Usually this means using patches prepared for a specific kernel branch ( 4.4 for 16.8/ Intel ® Media Server Studio 2017 and 2018).
The main distinction between "Gold" and "Generic" is support. Functionally they are identical, but more freedom brings more responsibility. Intel's provides much more support for "Gold" than it does "Generic". In general, any issues found in Generic installs must be reproducible in a Gold configuration for Intel to process bug reports.
Note: ANY updates affecting graphics stack or kernel components can potentially cause your configuration to become Generic.
High level view of Media SDK Software Stack
Pre-Requisites
Follow these steps for setting up Intel ® Media Server Studio on Ubuntu* 16.04.03 long term support (LTS) with kernel 4.4.111.
Note: steps are similar for other versions of Ubuntu or Ubuntu-based distros like Mint.
GCC, glibc and libstdc++.so version:
The main requirements for "Generic" installation are:
glibc >=2.12
gcc >=4.7
However, your Linux distro may have a different gcc, glibc, libstdc++ version.
Use following command lines to check the gcc version on the system
gcc -v gcc –version
Use following command line to check the glibc version
ldd --version
ldd (GNU libc) 2.17
......
Many Linux distros have updated toolsets or other mechanisms to easily upgrade gcc. Upgrading glibc can be significantly more difficult and is not recommended for production systems.
If gcc is too old, update:
sudo apt-get install g++-4.7 # or higher gcc version
Add the user(s) that will run Intel ® Media Server Studio(MSS) applications to the video group
Note: to find the user you can run the whoami command
usermod –a –G video <user>
Check that an Intel VGA adapter can be found with lspci
lspci -nn –s 0:02.0
00:02.0 VGA compatible controller [0300]: Intel Corporation Sky Lake Integrated Graphics [8086:193b] (rev 09)
Update apt to make sure that you have an updated package list for upgrades as well as new packages.
sudo apt-get update
Installation steps
Remove other Libdrm/Libva(This is OPTIONAL as it is recommended to start on a bare Ubuntu 16.04.03 image)
sudo find /usr -name "libdrm*" | xargs sudo rm -rf sudo find /usr -name "libva*" | xargs sudo rm -rf
Remove old MSS Install files(This is OPTIONAL as it is recommended to start on a bare Ubuntu 16.04.03 image)
sudo rm -rf /opt/intel/mediasdk sudo rm -rf /opt/intel/common sudo rm -rf /opt/intel/opencl
Unpack MSS file
tar –xzvf MediaServerStudioProfessional2018R1.tar cd MediaServerStudioProfessional2018R1
Unpack SDK/HEVC/OpenCL with HEVC being optional
tar -xzvf SDK2018Production16.8.tar.gz tar -xzvf intel_sdk_for_opencl_2017_7.0.0.2580_x64.tgz tar -xzvf HEVC2018R1.tar.gz cd SDK2018Production16.8/Generic
Upack OpenCL components and MSS Generic package
tar -xvzf intel-linux-media_generic*.tar.gz find ./ -type f -name "intel-opencl*x86_64.tar.xz" -exec tar xvJf {} \;
Place generic components in standard locations
sudo /bin/cp -r etc/* /etc sudo /bin/cp -r lib/* /lib sudo /bin/cp -r opt/* /opt sudo /bin/cp -r usr/* /usr
Note: You will have to run these commands under root(sudo –H gnome-terminal)
echo '/usr/lib64'> /etc/ld.so.conf.d/libdrm_intel.conf echo '/usr/local/lib'>> /etc/ld.so.conf.d/libdrm_intel.conf
Rest of the steps below should be executed in user terminal
sudo ldconfig sudo apt-get -y install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc g++
Install and patch kernel 4.4.111
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.111.tar.gz tar -xzvf linux-4.4.111.tar.gz cp /opt/intel/mediasdk/opensource/patches/kmd/4.4.111/intel-kernel-patches.tar.bz2 . tar -xvjf intel-kernel-patches.tar.bz2 cd linux-4.4.111 for i in ../intel-kernel-patches/*.patch; do patch -p1 < $i; done make olddefconfig make –j 8 sudo make modules_install sudo make install
Reboot and load through the newly installed and patched Kernel 4.4.11.
Validate Kernel
uname -r
Set Library Path
export LD_LIBRARY_PATH=/usr/lib64
Smoke Test No. 1
Note: MEDIA_INSTALL_PATH defines the initial location of where you stored the original Media Server Studio tar file
Extract Media Server Studio Samples
cd <MEDIA_INSTALL_PATH>/MediaServerStudioProfessional2018R1 tar –xzvf MediaSamples_Linux_2018R1_b982.tar.gz cd samples/_bin/x64
Run Multi-transcode Sample
./sample_multi_transcode –i::h264 ../content/test_stream.264 –o::h264 test_out.h264
Expected Results:
Multi Transcoding Sample Version 8.2.25.982 libva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'iHD' libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_0 libva info: va_openDriver() returns 0 Pipeline surfaces number (DecPool): 20 MFX HARDWARE Session 0 API ver 1.25 parameters: Input video: AVC Output video: AVC Session 0 was NOT joined with other sessions Transcoding started .. Transcoding finished Common transcoding time is 0.235762 sec ----------------------------------------------------------------------- -------- *** session 0 PASSED (MFX_ERR_NONE) 0.235465 sec, 101 frames -i::h264 ../content/test_stream.264 -o::h264 test_out.h264 ----------------------------------------------------------------------- -------- The test PASSED
Smoke Test No. 2
Run encode sample:
sample_encode h265 -i test_stream_176x96.yuv -w 176 -h 96 -o out.h265 -pe e5400a06c74d41f5b12d430bbaa23d0b
The -pe parameter in the command is the HEVC gacc encoder GUID found in opt/intel/mediasdk/plugins/plugins.cfg.
Expected Results:
plugin_loader.h :172 [INFO] Plugin was loaded from GUID: { 0xe5, 0x40, 0x0a, 0x06, 0xc7, 0x4d, 0x41, 0xf5, 0xb1, 0x2d, 0x43, 0x0b, 0xba, 0xa2, 0x3d, 0x0b } (Intel (R) Media SDK GPU-Accelerated plugin for HEVC ENCODE) libva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'iHD' libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_0 libva info: va_openDriver() returns 0 Encoding Sample Version 8.2.25.982 Input file format YUV420 Output video HEVC Source picture: Resolution 176x96 Crop X,Y,W,H 0,0,176,96 Destination picture: Resolution 176x96 Crop X,Y,W,H 0,0,176,96 Frame rate 30.00 Bit rate(Kbps) 366 Gop size 0 Ref dist 0 Ref number 0 Idr Interval 0 Target usage balanced Memory type system Media SDK impl hw Media SDK version 1.25 Processing started Frame number: 101 plugin_loader.h :198 [INFO] MFXBaseUSER_UnLoad(session=0x0x55fc1cc305d0), sts=0 Processing finished
Smoke Test No. 3
Build LibVA tools
git clone https://github.com/intel/libva-utils.git cd libva-utils/ git checkout tags/1.8.3 sudo apt-get install automake libtool export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:$PKG_CONFIG_PATH
Note: If you have any issues with running the autogen script below take a look at the config.log file for helpful hints to fix the issue
./autogen.sh –-prefix=/usr --libdir=/usr/lib/x86-linux-gnu
IMPORTANT: Comment out lines 244-248(entire if statement) in encode/avcenc.c file or you will get an error when running the following command
make –j4 sudo make install
The vainfo utility should show the current driver, Media SDK's iHD (from /opt/intel/mediasdk) and several codec entry points.
vainfo
Expected Results:
libva info: VA-API version 1.0.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'iHD' libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_0 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.0 (libva 2.0.0.pre1) vainfo: Driver version: 16.8.69021-ubit vainfo: Supported profile and entrypoints VAProfileH264ConstrainedBaseline: VAProfileH264ConstrainedBaseline: VAProfileH264Main : VAProfileH264Main : VAProfileH264High : VAProfileH264High : VAEntrypointVLD VAEntrypointEncSlice VAEntrypointVLD VAEntrypointEncSlice VAEntrypointVLD VAEntrypointEncSlice
HEVC Installation(Optional)
Note:The HEVC package is for Intel ® Media Server Studio Professional 2018 R1 ONLY and isn't for Intel ® Media Server Studio Essential/Community 2018 R1 Edition.
The steps below will show you how to install HEVC for Intel ® Media Server Studio(MSS) Professional 2018 R1. These steps should be followed after installation of MSS Professional 2018 R1.
Unpack HEVC file
tar -xzvf HEVC2018R1.tar.gz
Run the installer that will guide you through the installation process
./install.sh
Smoke Test No. 1
Note: You should run smoke test in local directory instead of root directory to obtain optimal results.
./sample_multi_transcode –i::h265 ../content/test_stream.265 –o::h265 test_out.h265 -sw -pe 2fca99749fdb49aeb121a5b63ef568f7
The -pe parameter in the command is the HEVC sw encoder GUID found in opt/intel/mediasdk/plugins/plugins.cfg.
Expected Results:
Multi Transcoding Sample Version 8.2.25.982 plugin_loader.h :172 [INFO] Plugin was loaded from GUID: { 0x15, 0xdd, 0x93, 0x68, 0x25, 0xad, 0x47, 0x5e, 0xa3, 0x4e, 0x35, 0xf3, 0xf5, 0x42, 0x17, 0xa6 } (Intel (R) Media SDK plugin for HEVC DECODE) plugin_loader.h :172 [INFO] Plugin was loaded from GUID: { 0x2f, 0xca, 0x99, 0x74, 0x9f, 0xdb, 0x49, 0xae, 0xb1, 0x21, 0xa5, 0xb6, 0x3e, 0xf5, 0x68, 0xf7 } (Intel (R) Media SDK plugin for HEVC ENCODE) Pipeline surfaces number (DecPool): 12 MFX SOFTWARE Session 0 API ver 1.25 parameters: Input video: HEVC Output video: HEVC Session 0 was NOT joined with other sessions Transcoding started .. Transcoding finished Common transcoding time is 1.0314 sec ------------------------------------------------------------------------------- *** session 0 PASSED (MFX_ERR_NONE) 1.03131 sec, 101 frames -i::h265 ../content/test_stream.265 -o::h265 test_out.h265 -sw -pe 2fca99749fdb49aeb121a5b63ef568f7 ------------------------------------------------------------------------------- The test PASSED plugin_loader.h :198 [INFO] MFXBaseUSER_UnLoad(session=0x0x55c950c3bb80), sts=0 plugin_loader.h :198 [INFO] MFXBaseUSER_UnLoad(session=0x0x55c950c3bb80), sts=0