Project

General

Profile

Feature #3080

Transcoding with HW support

Added by B C about 9 years ago. Updated over 7 years ago.

Status:
Fixed
Priority:
Normal
Category:
Transcoding
Target version:
-
Start date:
2015-09-15
Due date:
% Done:

0%

Estimated time:

Description

Would it be possible to add hwaccelerated transcoding via Intel QuickSync Video to tvheadend? https://www.ffmpeg.org/general.html#Intel-QuickSync-Video
Building with the dispatcher was quite easy, but unfortunately it seems it can't be set as default and needs to be enabled in code and I've never done anything on the transcoding layer. As many might run tvh on a recent Intel CPU, this might benefit a lot of people.

as always, thank you for this great peace of software


Files

qsv-fix.patch (2.44 KB) qsv-fix.patch B C, 2015-11-04 12:57
4.1.12-patches.tar (40 KB) 4.1.12-patches.tar B C, 2015-12-14 20:34
3.18.24-patches.rar (14.8 KB) 3.18.24-patches.rar B C, 2016-01-20 15:00
intel-kernel-patches.tar (940 KB) intel-kernel-patches.tar Remi Os, 2017-01-23 12:51

History

#1

Updated by C vH about 9 years ago

You need at least ffmpeg 2.8 and we are talking about speedup of >twice with ~nearly zero cpu usage at all (mainly depends on the used cpu)!

#2

Updated by B C about 9 years ago

great, I see that libmfx was also included in the recent update to ffmpeg 2.8, so all prerequesites are met, we now "just" need an option to enable hwaccel

#3

Updated by Jaroslav Kysela about 9 years ago

It won't work. The preliminary codes in Makefile.ffmpeg are there, but the quality of that library is very low (C++, why?). I gave up for the moment.

#4

Updated by B C about 9 years ago

i know, that's why i put just in quotation marks, but thanks for trying

#5

Updated by Jaroslav Kysela about 9 years ago

The --enable-libmfx and --enable-libmfx_static options should work now... (For --enable-libffmpeg_static builds).. I've not tested it at the moment.

#6

Updated by Jaroslav Kysela about 9 years ago

It enabled these decoders/encoders in ffmpeg:

DECODERS += mpeg2_qsv h264_qsv hevc_qsv
ENCODERS += mpeg2_qsv h264_qsv hevc_qsv
#7

Updated by B C about 9 years ago

Thank you for your continous support. There seems to be a problem with the pixel format, I get the following messages:

2015-09-29 22:38:40.117 libav: left block unavailable for requested intra4x4 mode -1 at 0 33
2015-09-29 22:38:40.117 libav: error while decoding MB 0 33, bytestream 12216
2015-09-29 22:38:40.117 libav: concealing 1009 DC, 1009 AC, 1009 MV errors in I frame
2015-09-29 22:38:40.120 libav: Specified pixel format yuv420p is invalid or not supported
2015-09-29 22:38:40.120 transcode: 0005: Unable to open h264_qsv encoder

Keep up the good work

#8

Updated by The Troll about 9 years ago

Hi,

take a look at https://github.com/TheTroll/tvheadend, specifically in the transcoding.c file.
Quicksync transcoding works with this version.

#9

Updated by Jaroslav Kysela about 9 years ago

@The Troll: Could you create a pull request for a review ?

#10

Updated by B C about 9 years ago

I did try TheTrolls repository but did not succeed either, although with a slightly different error message. I'm running on an i5-4250U (HD Graphics 5000)

2015-09-30 08:41:30.662 transcode: 000A: Using decoder mpeg2video
2015-09-30 08:41:30.662 transcode: 000A: SD->SD SW scaling crashes, forcing dest height to 600
2015-09-30 08:41:30.662 transcode: 000A: 1:MPEG2VIDEO 720x480 > H264 900x600 (h264_qsv)
2015-09-30 08:41:30.662 transcode: 000A: Using decoder mp2
2015-09-30 08:41:30.662 transcode: 000A: 2:MPEG2AUDIO > AAC (aac)
2015-09-30 08:41:30.959 libav: skipped MB in I frame at 25 23
2015-09-30 08:41:30.959 libav: Warning MVs not available
2015-09-30 08:41:30.960 libav: concealing 180 DC, 180 AC, 180 MV errors in I frame
2015-09-30 08:41:30.964 transcode: Transcode using codec h264_qsv
2015-09-30 08:41:30.966 libav: Error initializing an internal MFX session
2015-09-30 08:41:30.966 transcode: 000A: Unable to open h264_qsv encoder

#11

Updated by Jaroslav Kysela about 9 years ago

Is Intel Media SDK present in your system ?

#12

Updated by B C about 9 years ago

not yet, I didn't know I need it, I will install it shortly

#13

Updated by B C about 9 years ago

still it seems I'm doing something wrong. Installed the SDK, rebooted, distclean, configure....
master and TheTrolls Version still failing to use QSV.

Another error message:
2015-09-30 10:53:21.488 [ ERROR] libav: Error initializing an internal MFX session
2015-09-30 10:53:21.488 [ ERROR] transcode: 0001: Unable to decode video (-38, function not imlpemented)

./configure --enable-libffmpeg_static --enable-libmfx_static --enable-libx265 --enable-libmfx

BTW, there is nothing like a --enable-libx265_static, and --enable-libmfx_static alone (w/o --enable-libmfx) I no longer have QSV Decoders available..

#14

Updated by B C about 9 years ago

a suspect my multiple libva and libdrm versions on the system are spoiling things, I will have to sort this out without killing everything, so I will need some time

#15

Updated by B C about 9 years ago

found it, I need kernel 3.14.5 for the Media SDK patches (I really should have gone through the whole guide), will see if all my hardware is happy with it in the next view days.

#16

Updated by Felix Wittke about 9 years ago

Hi. I tried intel quick sync on both. CentOS and Ubuntu and all times i get this error.

libav: Error initializing an internal MFX session
by trolls version.

The official tvheadend git i get
Unable to open h264_qsv encoder

So what should i do to get Quicksync working?
do you have any ideas?

Happy to get an answer

Regards
Felix

#17

Updated by B C about 9 years ago

first of all make sure samples from mediasdk are working. if that is the case i should have a solution for current master. if not I can only walk you through on debian

#18

Updated by Felix Wittke about 9 years ago

Hi thanks for your fast answer. i tried to get the samples working but i dont know how. because the guide will to compile with perl but the file doesnt exist.

So can you please provide me your solution for the current master?
the guide for debian is also very interesting for me.

happy to hearing from you again

regards
Felix

#19

Updated by B C about 9 years ago

you don't need to build the samples, they are in /opt/intel/mediasdk/samples/_bin/x64

google for a .h264 elementary stream test file and try the first sample from the install guide, so we know if installation is correct

#20

Updated by Felix Wittke about 9 years ago

Hi. Just tried
I get:
./sample_multi_transcode_drm -i::h264 test_stream.264 -o::h264 test_out.h264 -hw
Multi Transcoding Sample Version 6.0.16043166.166

libva info: VA-API version 0.35.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_0_32
libva info: va_openDriver() returns 0
Ungültiger Maschinenbefehl

this is centos which is recomend bye intel. but the same error i get on ubuntu with kernel 3.14.5

Its a 4gen CPU and on windows Quicksync works fine

Did you had any idea?

#21

Updated by B C about 9 years ago

you installed with the corresponding install script? kernel patches applied w/o an error message? I also was not lucky with intels gold configuration, so I did go with generic on debian (so should be nearly the same on ubuntu) manually. started with a minimum install, compiled 3.14.5 with patches, removed libdrm and libva from /usr/lib64 (and i think they are also in x86_64-linux-gnu). when you ./configure libdrm and libva use --prefix=usr --libdir=lib64
reboot and try the sample again

#22

Updated by Felix Wittke about 9 years ago

Yes now in CentOS i have installed with the install Script and follow the guide. No errors when building the kernel and install the kernel patches

So you think i should go back to ubuntu?
Or should i try to compile libdrm and libva again with this settings in CentOS?

#23

Updated by B C about 9 years ago

your choice, my install is on debian, that's the distribution I can help you (must be pre gcc 5, so current stable jessie eg)

#24

Updated by Felix Wittke about 9 years ago

Ok i will try. I just figured out that may cpu G1840 Celeron is may not supported under linux.
So first i went to get a supported cpu.
Or do you know whether my cpu is working under linux?

Can you provide me anyway your solution for the curret master?

Regards

#25

Updated by B C about 9 years ago

at least it's not on the supported list

I will provide patches for current master shortly

#26

Updated by Felix Wittke about 9 years ago

So finally i got a new CPU. the intel samples are wotking fine.
Tvheadend give me the same error massages.
So i dont know what to do.

Regards

Felix

#27

Updated by B C about 9 years ago

quick and dirty try the following:

copy the content of /opt/intel/mediasdk/lib64 to your libs dir
copy TheTrools /src/plumbing/transcoding.c to master.
configure tvh with
./configure --enable-libffmpeg_static --enable-libx265 --enable-libmfx

if you have a braswell cpu most of TheTrolls fixes are not needed (just the correct pix_fmt stuff).

#28

Updated by Felix Wittke about 9 years ago

So finally i got a new CPU. the intel samples are wotking fine.
Tvheadend give me the same error massages.
So i dont know what to do.

Regards

Felix

#29

Updated by Felix Wittke about 9 years ago

So finally i got a new CPU. the intel samples are wotking fine.
Tvheadend give me the same error massages.
So i dont know what to do.

Regards

Felix

#30

Updated by Felix Wittke about 9 years ago

Ok i will try. one question. i dont know... what is my lib dir

#31

Updated by B C about 9 years ago

depends on the Distribution /usr/lib should be fine...

#32

Updated by Felix Wittke about 9 years ago

So i just tried. i cant make tvheadend with trolls transcoding file. Stuck on many errors like Unkown type AVAudioRespampleContext and unknown type VDPAU.

Dont know what to do. without this transcoding file make will pass.
do you have any ideas?

#33

Updated by B C about 9 years ago

master was just updated, so go back to a version b4 v4.1.850....

#34

Updated by Felix Wittke about 9 years ago

Ok i try. I want to correct me. make also not working on the master without trolls transcoding file. errors on transcoding. c line 1105. i will try your version

#35

Updated by B C about 9 years ago

b4= before, so .849
eg do a: git checkout a3e787fcdfcda58d31b5d495cedad5c03ab4a1d6

#36

Updated by Felix Wittke about 9 years ago

sorry i dont know what this means

#37

Updated by B C about 9 years ago

go into your tvheadend source directory and type (or better copy :-))

git checkout a3e787fcdfcda58d31b5d495cedad5c03ab4a1d6

this version should work with TheTrolls changes

#38

Updated by Felix Wittke about 9 years ago

this is what iam thinking :-) but getting
git reference is not a tree.
Sorry i really dont know what to do

#39

Updated by Felix Wittke about 9 years ago

Oj im testing around and found that i can not make with libx265 enabled. Is this neccecery?

By the way git checkout wont work

#40

Updated by B C about 9 years ago

you can build w/o x265. why is git checkout failing??????

#41

Updated by Felix Wittke about 9 years ago

It say reference is Not a tree. But i have to say It is the first time i try git checkout

#42

Updated by B C about 9 years ago

then you are either not on master or did'n pull recent changes, then it should be ok anyway

#43

Updated by Felix Wittke about 9 years ago

Hmm i had downloaded the actual master. Got the errors named above.
I cannot make tvheadend with trolls transcoding file

#44

Updated by B C about 9 years ago

you must not be on latest, as I did write 849 is the latest compatible

#45

Updated by Felix Wittke about 9 years ago

Ok but i dont know how to get this Version 849. Checkout is Not working. I tried to build the Version from trolls repository. But on transcoding i get "Error initializing internal MFX Session"

#46

Updated by Felix Wittke about 9 years ago

So now i think git checkout is working. Got this massage but nothing downloads.
So i am doing wrong?

Note: checking out 'a3e787fcdfcda58d31b5d495cedad5c03ab4a1d6'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new_branch_name

Zweigspitze (HEAD) ist jetzt bei a3e787f... EIT: always parse events for 0x4e (now/next) - running flag

#47

Updated by B C about 9 years ago

that's ok, copy transcoding.c and maybe .h
make distclean just to be sure and configure next

#48

Updated by Felix Wittke about 9 years ago

So finally i got it. Make sucessfull. But i am getting again If i Start to transcode. . ERROR initializing internal mfx session.

I dont have any idea

#49

Updated by B C about 9 years ago

u did make install, so web if reports 4.1.849? copied the libs?

#50

Updated by Felix Wittke about 9 years ago

I had copied the libs to usr/lib. .. now i copied them also to usr/lib64 and get this while transcoding

3 22:34:29.965 [ INFO] transcode: Transcode using codec h264_qsv
libva info: VA-API version 0.35.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_0_32
libva info: va_openDriver() returns 0
2015-11-03 22:34:30.219 [ ERROR] libav: Application provided invalid, non monotonically increasing dts to muxer in stream 0: 157704 >= 152308
2015-11-03 22:34:30.219 [WARNING] libav: Failed to write frage

The webif shows

HTS Tvheadend 4.1-848~ga3e787f-dirty

#51

Updated by Felix Wittke about 9 years ago

So i dont know why but now it works. You are the greatest. Thank You very much for your help over days

#52

Updated by B C about 9 years ago

@perexg, I've attached a patch (credits go out to mlau and [-T-]) for current master (4.1-856), to make h264_qsv and mpeg2_qsv transcoding option work. Would make sense to add it as without it current qsv options are useless.

For anyone who wants to try it out, you must have Intel® Media Server Studio – Community Edition installed on your box (tricky to setup, make sure samples are working https://registrationcenter.intel.com/en/forms/?productid=2411). Copy /opt/intel/mediasdk/lib64/* to (depending on your distribution) /usr/lib or /usr/lib64 and configure like this:

 ./configure  --enable-libffmpeg_static --enable-libx265 --enable-libmfx

note that hevc_qsv is not yet supported

#53

Updated by B C about 9 years ago

one more thing, I highly recommend doing all stuff but your patched kernel in a chroot, it will save you some headaches and will let you run other stuff as usual.

#54

Updated by Jaroslav Kysela about 9 years ago

I added the qsv-fix.patch to the main tvh tree..

#55

Updated by B C about 9 years ago

thank you, so as this is basically working now, I consider this feature request as fixed.

#56

Updated by Jaroslav Kysela about 9 years ago

  • Status changed from New to Fixed
#57

Updated by B C almost 9 years ago

kernel patches for 4.1.12 (and up, 4.1.13 tested) working with HSW based CPUs

install according to the intel media server studio documentation, good luck

#58

Updated by Remi Os almost 9 years ago

B C wrote:

kernel patches for 4.1.12 (and up, 4.1.13 tested) working with HSW based CPUs

install according to the intel media server studio documentation, good luck

Do i need the Git branch from https://github.com/TheTroll/tvheadend ?
(git checkout a3e787fcdfcda58d31b5d495cedad5c03ab4a1d6)

Or can i just use the "git clone https://github.com/tvheadend/tvheadend.git" and patch using the patch file 4.1.12-patches.tar ?

Should i use
./configure --enable-libffmpeg_static --enable-libx265 --enable-libmfx

or can i use
AUTOBUILD_CONFIGURE_EXTRA="--enable-libffmpeg_static --enable-libx265 --enable-libmfx" ./Autobuild.sh

#59

Updated by B C almost 9 years ago

the patch is the updated kernel patch for the media studio installation....
you should use current master of tvheadend

autobuild should work as well

#60

Updated by Remi Os almost 9 years ago

B C wrote:

the patch is the updated kernel patch for the media studio installation....

I think that with"media studio installation" you mean "Do you Media Server Studio Essentials" ?

#61

Updated by B C almost 9 years ago

yes, it's a mandatory prerequesit on linux for qsv

#62

Updated by Remi Os almost 9 years ago

B C wrote:

yes, it's a mandatory prerequesit on linux for qsv

installed MSV using these steps http://emby.media/community/index.php?/topic/10723-gpu-transcoding-intel-quicksync-and-nvidia-nvenc/page-23

But got stuck when compiling TVHEADEND ..
libtool: install: /usr/bin/install -c .libs/libmfx.lai /root/tvh_libmfx/libav_static/build/ffmpeg/lib/libmfx.la
/usr/bin/install: cannot stat '.libs/libmfx.lai': No such file or directory

any ideas ?

#63

Updated by Remi Os almost 9 years ago

copied the file manually from the mfx_dispatch (git)
cp ../mfx_dispatch/.libs/* ~/tvheadend/libav_static/mfx_dispatch-8220f463a97b098d9e37bbfa2110b117700d1205/.libs
now got past this error

but got this ....(!)
no dependency information found for /usr/lib/libva.so.1

#64

Updated by B C almost 9 years ago

media server studio samples are running ok?
did you use autobuild? if so build manually

#65

Updated by Remi Os almost 9 years ago

B C wrote:

media server studio samples are running ok?
did you use autobuild? if so build manually

Probably not ..
I have succesfully compiled the patched 3.4.5 kernel and installed the MediaServerStudioEssentials2015R6 (and libva and libdrm)

Build was succesful with: --enable-libffmpeg_static --enable-libx265*_static* --enable-libmfx
(i dont know why i should use the _static)

Sadly when starting a MFX session tvheadend crashes with a segfault
"vainfo" also gives a segfault ..
So probably the intel stack is not working

Now i tried a fresh install wilt Ubuntu 15.10 and the Intel Graphics Installer for Linux v1.2.1
I don't know if i should patch the kernel (could not find patches for kernel 4.2 and Haswell should be already supported)
(https://01.org/linuxgraphics/downloads)

but unfortanately got same results ..

#66

Updated by B C almost 9 years ago

you need a supported patched kernel for QSV, there is no QSV support in any stock/vanilla kernel. As long as the Media Server Studio samples don't run it won't make sense to debug tvheadend problems.
Why you should use static? because it works.

#67

Updated by Remi Os almost 9 years ago

B C wrote:

you need a supported patched kernel for QSV, there is no QSV support in any stock/vanilla kernel. As long as the Media Server Studio samples don't run it won't make sense to debug tvheadend problems.
Why you should use static? because it works.

Thanks for your reply ! :)

Are there QSV patches available for kernel 4.2 ? (kernel version in Ubuntu 15.10)
On Ubuntu 14.04.3 LTS i tried the 3.14.5 kernel with patches from /opt/intel/mediasdk/opensource/patches/kmd/3.14.5/intel-kernel-patches.tar.bz2 (inside MediaServerStudioEssentials2015R6)

What should be the best approach ?
- downgrading to 4.1.12 on Ubuntu 15.10 with 4.1.12-patches.tar in this topic
- compiling the kernel from intel https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.2.tar.xz
( don't know if this one has QSV patches)

#68

Updated by B C almost 9 years ago

official patches are available for 3.14.5 and in the case of Suse for 3.17.8
My 4.1.12 patches work fine with vanilla, so that is probably the best way to go if you do have a Haswell CPU. In the case of Broadwell I was only able to make them work up to 4.0.9
If you have something newer like Braswell or Skylake, you will have to wait for the new 2016 release of Intel Media Server Studio which hopefully includes those CPUs

#69

Updated by Remi Os almost 9 years ago

B C wrote:

official patches are available for 3.14.5 and in the case of Suse for 3.17.8
My 4.1.12 patches work fine with vanilla, so that is probably the best way to go if you do have a Haswell CPU. In the case of Broadwell I was only able to make them work up to 4.0.9
If you have something newer like Braswell or Skylake, you will have to wait for the new 2016 release of Intel Media Server Studio which hopefully includes those CPUs

i have an Braswell N3700 CPU/GPU....
Should be supported in Intel 2015Q3+ stack .. but no info on QSV
https://01.org/linuxgraphics/downloads/2015q4-intel-graphics-stack-release
https://01.org/linuxgraphics/downloads/2015q3-intel-graphics-stack-release-0

#70

Updated by B C almost 9 years ago

Linux w/o kernel patches --> no QSV
Braswell / Skylake --> no QSV support on Linux for now

#71

Updated by Remi Os almost 9 years ago

B C wrote:

Linux w/o kernel patches --> no QSV
Braswell / Skylake --> no QSV support on Linux for now

Thanks for your help
Hopefully it will be supported soon !

Ubuntu 15.10 and kernel 4.1.12 with patches gives segfault (see below)

root@UbuntuServer:~# vainfo
libva info: VA-API version 0.38.1
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_0_32
Segmentation fault (core dumped)

#72

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

official patches are available for 3.14.5 and in the case of Suse for 3.17.8
My 4.1.12 patches work fine with vanilla, so that is probably the best way to go if you do have a Haswell CPU. In the case of Broadwell I was only able to make them work up to 4.0.9
If you have something newer like Braswell or Skylake, you will have to wait for the new 2016 release of Intel Media Server Studio which hopefully includes those CPUs

Could you send me or publish patches for 4.0.9, please.

Thanks.

#73

Updated by Renato Riolino almost 9 years ago

B C wrote:

official patches are available for 3.14.5 and in the case of Suse for 3.17.8
My 4.1.12 patches work fine with vanilla, so that is probably the best way to go if you do have a Haswell CPU. In the case of Broadwell I was only able to make them work up to 4.0.9
If you have something newer like Braswell or Skylake, you will have to wait for the new 2016 release of Intel Media Server Studio which hopefully includes those CPUs

Hi,

I have an Intel Celeron J1900 CPU that supports Intel Quick Sync Video ( [[http://ark.intel.com/products/78867/Intel-Celeron-Processor-J1900-2M-Cache-up-to-2_42-GHz]] ).

The GPU is identified as:

VGA compatible controller [0300]: Intel Corporation ValleyView Gen7 [8086:0f31] (rev 0e)

Where can I check if my CPU is Haswell, Broadwell, Braswell or Skylake?

Thanks

#74

Updated by B C almost 9 years ago

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

@Gustavo: I've attached 3.18 LTS patches which should work with Broadwell as I can't access my 4.09 patches ATM, they should work with 3.18.25 aswell (not tested)

#75

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

@Gustavo: I've attached 3.18 LTS patches which should work with Broadwell as I can't access my 4.09 patches ATM, they should work with 3.18.25 aswell (not tested)

Thank you very much.

I have a J1900 Celeron but now i am waiting for a Broadwell i7 to replace this.

One question, I could not test QSV as I have the J1900, but if I wan use QSV I must have to install X11 or could compile libva without X11 support (only drm) and use QSV on a headless server ?

I see that I can download Media Server Studio from Intel. This software give us a custom libva, libdrm, kernel patches, OpenCL libs and a new va driver. I also see Graphic Stack from 01.org with newer versions than Media Server Studio. What I really need to use QSV ? A kernel patched and a newer release of libva, va driver and libdrm ? Is Media Server Studio required ?

#76

Updated by MinGyoon Woo almost 9 years ago

B C wrote:

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

@Gustavo: I've attached 3.18 LTS patches which should work with Broadwell as I can't access my 4.09 patches ATM, they should work with 3.18.25 aswell (not tested)

First, thanks for your patch.
I have i7 5500U with Intel HD 5500 and Install Debian 7.9 for use ( I do not use Debian 8.x because OMV is not support yet).
I installed patched kernel 3.18.24 and IMSS 2015R6.

And I built the ffmpeg 2.8.4 for testing encoding capability.
It can run with out error.
I ran following command ======
ffmpeg -i bbb_sunflower_2160p_60fps_normal.mp4 -c:v h264_qsv -crf 18 -vf scale=720:480:lanczos -v:a copy out.mp4 ======

However, it show the handle the 59~65 frames per second, just like using libx264(it show 55~58 frames per second).
I think it does not use hardware accelerator. How can I fix this?

woomg.

#77

Updated by MinGyoon Woo almost 9 years ago

B C wrote:

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

@Gustavo: I've attached 3.18 LTS patches which should work with Broadwell as I can't access my 4.09 patches ATM, they should work with 3.18.25 aswell (not tested)

First, thanks for your patch.
I have i7 5500U with Intel HD 5500 and Install Debian 7.9 for use ( I do not use Debian 8.x because OMV is not support yet).
I installed patched kernel 3.18.24 and IMSS 2015R6.

And I built the ffmpeg 2.8.4 for testing the encoding capability.
It can run without any error.
I ran following command ======
ffmpeg -i bbb_sunflower_2160p_60fps_normal.mp4 -c:v h264_qsv -crf 18 -vf scale=720:480:lanczos -v:a copy out.mp4 ======

However, it show the handle the 59~65 frames per second, just like using libx264(it show 55~58 frames per second).
I think it does not use hardware accelerator. How can I fix this?

woomg.

#78

Updated by B C almost 9 years ago

check your installation with the Intel Media Server Studio samples ( /opt/intel/mediasdk/samples/_bin/x64) first, to make sure your setup is working

#79

Updated by saen acro almost 9 years ago

@MinGyoon Woo
Check GPU Usage with intel_gpu_top

#80

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

@Gustavo: I've attached 3.18 LTS patches which should work with Broadwell as I can't access my 4.09 patches ATM, they should work with 3.18.25 aswell (not tested)

Running on a Intel(R) Core(TM) i7-5557U CPU

Using intel libmfx or lu-zero libmfx always get the error below. ffmpeg is working OK. User running tvheadend is the same that I use to run ffmpeg and belong to video group.

2016-02-01 14:09:31.367 transcode: 0001: Using preset fast
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/renderD128 vaInitialize failed
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/renderD129 fd open failed
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/renderD130 fd open failed
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/card0 vaInitialize failed
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/card1 fd open failed
2016-02-01 14:09:31.369 libav: mfx init: /dev/dri/card2 fd open failed

group video has rw rights over /dev/dri/renderD128 and /dev/dri/card0

There is not X11 install on the server. libva is compiled with drm only.

Could someone help me ?

#81

Updated by B C almost 9 years ago

so Intel Media Server Studio samples did work??? libva is the one included with Intel Media Server Studio?

#82

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

so Intel Media Server Studio samples did work??? libva is the one included with Intel Media Server Studio?

I run sample_decode_drm and sample_encode_drm without problems (h264 and mpeg2). libva is the one included with Intel MSS (but compiled to not include X11).

#83

Updated by B C almost 9 years ago

I have no idea if you need to build with X11, my setup is with x11, although I'm not using it.
BTW, I'm running tvh in a jail for the custom libva so that e.g. Kodi is using current libva.

#84

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

I have no idea if you need to build with X11, my setup is with x11, although I'm not using it.
BTW, I'm running tvh in a jail for the custom libva so that e.g. Kodi is using current libva.

What commit of tvh are you using ? What Linux distro (CentOS 7.1, Debian 8, Ubuntu 14.04, any other)?

#85

Updated by B C almost 9 years ago

Debian 8
Kernel 4.1.16 with patches I attached here
latest master (no tweaking necessary since a few months) configured with --enable-libffmpeg_static --enable-libmfx --enable-libx265
copy of /opt/intel/mediasdk/lib64 in my libs dir

#86

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

Debian 8
Kernel 4.1.16 with patches I attached here
latest master (no tweaking necessary since a few months) configured with --enable-libffmpeg_static --enable-libmfx --enable-libx265
copy of /opt/intel/mediasdk/lib64 in my libs dir

I install CentOS 7.1 with MSS R6 step by step as intel say with the same result, so I reinstall Ubuntu, recompile libdrm and libva (included on MSS R6) to not use libva_x11. And after think a little I found that vaInitilized problems was related to enviroment variables not present on tvheadend execution scope. Solve this problem with a soft link. Now the problem is other.

2016-02-05 10:04:39.644 mpegts: #0 in Imagenio - tuning on IPTV
2016-02-05 10:04:39.644 subscription: 0005: "HTTP" subscribing on channel "#0", weight: 150, adapter: "IPTV", network: "Imagenio", mux: "#0", profile="webtv-h264-aac-mpegts", hostname="xx.xx.xx.xx", username="xx", client="VLC/2.2.2 LibVLC/2.2.2"
2016-02-05 10:04:39.841 transcode: 0004: 1:H264 720x576 > H264 720x576 (h264_qsv)
2016-02-05 10:04:39.841 transcode: 0004: 3:TELETEXT > Filtered
2016-02-05 10:04:39.841 transcode: 0004: 4:MPEG2AUDIO ==> AAC (aac)
2016-02-05 10:04:40.002 transcode: 0004: missing meta data for H264
2016-02-05 10:04:40.006 transcode: 0004: Using preset faster
2016-02-05 10:04:40.153 transcode: 0004: Detected framedrop in audio
2016-02-05 10:04:40.694 libav: Application provided invalid, non monotonically increasing dts to muxer in stream 0: 102254 >= 91462
2016-02-05 10:04:40.694 libav: Failed to write frame
2016-02-05 10:04:40.694 webui: Stop streaming /stream/channel/ecf82db06e81742a9ce43c28d691e893, muxer reported errors
2016-02-05 10:04:40.694 subscription: 0005: "HTTP" unsubscribing from "#0", hostname="xx.xx.xx.xx", username="xx", client="VLC/2.2.2 LibVLC/2.2.2"
2016-02-05 10:04:40.698 libav: 2 frames left in the queue on closing

If i change to libx264 all is working ok.

2016-02-05 10:03:23.649 mpegts: #0 in Imagenio - tuning on IPTV
2016-02-05 10:03:23.649 subscription: 0004: "HTTP" subscribing on channel "#0", weight: 150, adapter: "IPTV", network: "Imagenio", mux: "#0", profile="webtv-h264-aac-mpegts", hostname="xx.xx.xx.xx", username="xx", client="VLC/2.2.2 LibVLC/2.2.2"
2016-02-05 10:03:23.789 transcode: 0003: 1:H264 720x576 > H264 720x576 (libx264)
2016-02-05 10:03:23.789 transcode: 0003: 3:TELETEXT > Filtered
2016-02-05 10:03:23.789 transcode: 0003: 4:MPEG2AUDIO ==> AAC (aac)
2016-02-05 10:03:24.825 transcode: 0003: Detected framedrop in audio
2016-02-05 10:03:24.841 transcode: 0003: missing meta data for H264
2016-02-05 10:03:24.847 transcode: 0003: Using preset faster
2016-02-05 10:03:24.847 libav: using SAR=16/11
2016-02-05 10:03:24.847 libav: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
2016-02-05 10:03:24.849 libav: profile High, level 3.0
2016-02-05 10:03:24.849 libav: 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=4 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=125 keyint_min=12 scenecut=40 intra_refresh=0 rc_lookahead=20 rc=abr mbtree=1 bitrate=1024 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=1280 vbv_bufsize=3840 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
2016-02-05 10:03:25.950 libav: forced frame type (5) at 4 was changed to frame type (3)
2016-02-05 10:03:25.979 libav: forced frame type (5) at 9 was changed to frame type (3)
2016-02-05 10:03:26.220 libav: forced frame type (5) at 17 was changed to frame type (3)
2016-02-05 10:03:26.776 libav: forced frame type (5) at 26 was changed to frame type (3)
2016-02-05 10:03:27.048 libav: forced frame type (5) at 34 was changed to frame type (3)
2016-02-05 10:03:27.321 libav: forced frame type (5) at 42 was changed to frame type (3)
2016-02-05 10:03:27.769 libav: forced frame type (5) at 55 was changed to frame type (3)
2016-02-05 10:03:28.152 libav: forced frame type (5) at 63 was changed to frame type (3)
2016-02-05 10:03:28.371 libav: forced frame type (5) at 71 was changed to frame type (3)
2016-02-05 10:03:28.891 libav: forced frame type (5) at 82 was changed to frame type (3)

Could you help me ?

Thanks.

#87

Updated by B C almost 9 years ago

try with matroska (mkv/built in) container in your streaming profile

#88

Updated by Gustavo Sánchez almost 9 years ago

B C wrote:

try with matroska (mkv/built in) container in your streaming profile

YES !!!! YES !!! YES !!!

Now is working like a charm !!!!

Thanks for your support !!!!

#89

Updated by The Troll almost 9 years ago

Hey!

I did not come on this thread for a while, and I see your new patches for kernel 4.1. Very nice :)
I wonder if I should finally upgrade from 3.14 now...

#90

Updated by The Troll almost 9 years ago

Linux tm 4.1.17 #1 SMP Fri Feb 5 17:57:21 CET 2016 x86_64 GNU/Linux

works great, thanks again for the patches!

#91

Updated by MinGyoon Woo almost 9 years ago

saen acro wrote

@MinGyoon Woo
Check GPU Usage with intel_gpu_top

Thanks, saen acro
It works like charm... It's my mistake, testing with 4K@60 file. When I tried test with 1080p@60, it is really fast.:)

#92

Updated by MinGyoon Woo over 8 years ago

MediaServerStudioEssentials2016.tar is released.
Kernel patches also updated ( but still use 3.14.5)

#93

Updated by Milan Cizek over 8 years ago

Hi all, I have questions...
I use Ubuntu Linux OS.

Replaces your patch original patches included in Intel MMS 2015r6 (original patches doesn't applied)?
Are your patches compatible with latest MMS2016?
We are waiting for MMS Skylake CPUs support (qsv_hevc), is your patch ready for working with Skylake?
Can I transcode HEVC on lower CPU generations (Haswell/Broadwell) via QSV? I see on wikipedia that older CPUs than Skylake doesn't support hevc. (ok?)

Thank zoufor answers.

#94

Updated by B C over 8 years ago

Milan

Patches are standalone (you MUST NOT apply original patches). As written, 4.1 patches are working with Haswell only, 4.0 are working also with Broadwell. Currently there is no HEVC HW support for Linux on these platforms, nor is Skylake/Braswell supported in current IMSS2016. I did not test current IMSS with my modified patches as sooner or later vaapi accelerated encoding will hit ffmpeg and make all this obsolete.

#95

Updated by MinGyoon Woo over 8 years ago

B C wrote:

As written, 4.1 patches are working with Haswell only, 4.0 are working also with Broadwell.

Hi B C
Did you have any problem when test USB tuners and TVHeadend with your kernel patches?
My friend who using 'DViCO Fusion HDTV5 USB' tuner have problem with kernel 3.18.26 (qsv patched).
With connected tuner, boot process freezing. Also without tuner, system booted but if he plug USB tuner into USB port, system freezing.
Do you have any idea on this?

#96

Updated by MinGyoon Woo over 8 years ago

Another one.
B C wrote:

As written, 4.1 patches are working with Haswell only, 4.0 are working also with Broadwell.

With 4.1 kernel patches on Broadwell CPU.
Standalone FFMPEG can encode using h264_qsv, only TVHeadend transcoding did not work.

Thanks,

#97

Updated by B C over 8 years ago

as the patches do not touch the usb subsystem it's unlikely to be related

as the intel samples do not work on broadwell with 4.1 it's not tvh's fault

#98

Updated by Milan Cizek over 8 years ago

Hi friends!

I can confirm functional samples on:
Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz (fam: 06, model: 3c, stepping: 03)
Latest MMS 2016
4.1.18 #1 SMP Wed Feb 24 15:00:52 CET 2016 x86_64 x86_64 x86_64 GNU/Linux (from kernel org + 4.1.12-patches.tar)

@~# vainfo
error: can't connect to X server!
libva info: VA-API version 0.99.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_0_32
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.99 (libva 1.67.0.pre1)
vainfo: Driver version: 16.4.4.47109-ubit
vainfo: Supported profile and entrypoints
VAProfileH264Baseline : VAEntrypointEncSlice
VAProfileH264Baseline : <unknown entrypoint>
VAProfileH264Baseline : <unknown entrypoint>
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: <unknown entrypoint>
VAProfileH264ConstrainedBaseline: <unknown entrypoint>
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : <unknown entrypoint>
VAProfileH264Main : <unknown entrypoint>
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : <unknown entrypoint>
VAProfileH264High : <unknown entrypoint>
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : <unknown entrypoint>
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointEncSlice
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile0 : <unknown entrypoint>
<unknown profile> : VAEntrypointVideoProc
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : <unknown entrypoint>

  1. ./sample_multi_transcode -i::h264 content/test_stream.264 -o::h264 content/test_out.h264 -hw
    Multi Transcoding Sample Version 6.0.16043361.361

libva info: VA-API version 0.99.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_0_32
libva info: va_openDriver() returns 0
Pipeline surfaces number: 42
MFX HARDWARE Session 0 API ver 1.17 parameters:
Input video: AVC
Output video: AVC

Session 0 was NOT joined with other sessions

Transcoding started

Transcoding finished

Common transcoding time is 0.16 sec
MFX session 0 transcoding PASSED:
Processing time: 0.16 sec
Number of processed frames: 101

The test PASSED
@

But I have question for MMS samples. I wanted transcode my H264 file, but the original samples are binary files/videos without header:
  1. file ./test_stream.264
    ./test_stream.264: data
Other video from internet:
  1. file legend_trailet.264
    legend_trailer.264: ISO Media, MPEG v4 system, version 1

Result is: Return on error: error code 1, /home/lab_msdk/buildAgentDir/buildAgent_MediaSDK1/git/mdp_msdk-samples/samples/sample_encode/src/sample_encode.cpp 744

So I cannot test encoding larger video files now.
Now, I have problem with MFX in ffmpeg (MFX init failed)... I'm going to research next steps...

Milan

#99

Updated by Milan Cizek over 8 years ago

kernel 4.2.0, patches doesn't work.

/BUILD/linux-4.2# for i in ../4.1.12-patches/*.patch; do patch -p1 < $i; done
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 461.
Hunk #2 succeeded at 719 (offset 32 lines).
1 out of 2 hunks FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 7822 (offset 497 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 463.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 7823 (offset 497 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 467.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 7827 (offset 497 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 467.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 7827 (offset 497 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 426.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 5764 (offset 450 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 426.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 5766 (offset 450 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 443.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_gem_execbuffer.c
Hunk #1 FAILED at 1571.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_gem_execbuffer.c.rej
patching file drivers/gpu/drm/i915/i915_gem_userptr.c
Hunk #1 succeeded at 340 (offset 3 lines).
Hunk #2 succeeded at 394 (offset 3 lines).
patching file drivers/gpu/drm/i915/i915_debugfs.c
Hunk #1 succeeded at 3095 (offset 107 lines).
Hunk #2 succeeded at 5113 (offset 358 lines).
patching file drivers/gpu/drm/i915/i915_debugfs.c
Hunk #1 succeeded at 3104 (offset 107 lines).
Hunk #2 succeeded at 3124 (offset 107 lines).
patching file drivers/gpu/drm/i915/i915_drv.c
Hunk #1 succeeded at 528 (offset 13 lines).
patching file drivers/gpu/drm/i915/i915_gem_execbuffer.c
Hunk #1 succeeded at 1620 (offset 4 lines).
patching file drivers/gpu/drm/i915/i915_cmd_parser.c
Hunk #1 FAILED at 466.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_cmd_parser.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 succeeded at 7827 (offset 497 lines).

Updated by B C over 8 years ago

Milan Cizek wrote:

kernel 4.2.0, patches doesn't work.

as there are no 4.2 patches....

Updated by Milan Cizek over 8 years ago

I know. I have try it also for other users. ;-)

Updated by S K over 8 years ago

Hi B C,

Have you maybe tried the new vaapi encoding in ffmpeg?

https://ffmpeg.org/pipermail/ffmpeg-user/2016-May/032153.html

Is there any chance it will work in Debian 8? Is it necessary to compile 4.5 kernel, libva and liva-intel-driver from git?

Updated by Alfred Zastrow over 8 years ago

I'm not shure if this information is helpfully for you, but Debian Stretch (is running very stable for me) has Kernel 4.5 in. Under /dev/dri is a device "renderD128" witch is used in your linked mail.

Updated by S K over 8 years ago

alfred gundersen
Thanks for the tip. I actually got ffmpeg and h264_vaapi to work on Debian Jessie with 4.5 kernel, libva and liva-intel-driver from master git.

Now I need to find out how to enable it in tvheadend...

Updated by B C over 8 years ago

tvh needs some code adaption to use the vaapi encoders, I'm sure some dev will take a look into it sometimes...

Updated by Jan g over 8 years ago

hi,

can u tell me how u compile kernel 4.0.9 or 4.1.12 ? i have a intel nuc with i5-5250U

greetz

Updated by B C over 8 years ago

for i5-5250U use Kernel 3.18.x

you might also wait for vaapi encoding support for tvh

Updated by Jan g over 8 years ago

Thank you. I Need No Transcoding Support in tvh. I use only ffmpeg via Pipe in tvh. Ok i try 3.18

Updated by Remi Os almost 8 years ago

I have installed the MediaServerStudioEssentials2017R2 SDK and
build the linux-4.4 kernel with the supplied patches
However i can't get the mediasamples working !

I think the Brasswell chipset (N3700 CPU) still is not supported....
Maybe someone can modify the kernel-patches somewhat wo make them
work for Braswell (BSW) systems ?

Updated by saen acro almost 8 years ago

intel + software = mission impossible
Same as shame to have product as Xeon Phi and no software for transcoding

Updated by Renato Riolino over 7 years ago

B C wrote:

@Renato: Celeron J1900 is Bay Trail and AFAIK not supported on Linux

Just got an email from Intel announcing the release of Intel® Media SDK for Embedded Linux. Amongs the features, it says this:

The new Intel Media SDK supports the latest Intel Atom®, Intel® Pentium®, and Intel® Celeron® processors,1 as well as Yocto Project* (a comprehensive embedded Linux development environment). Together, the SDK and Intel® processor-based platforms help bring real-time computing to digital surveillance and new in-vehicle experiences.

I'm downloading it now to try with my Celeron J1900. Anyone have tried it yet? Any recomendations?

Thanks

Updated by Jan g over 7 years ago

can u write a howto to install it?

Updated by Jan g over 7 years ago

i compiled tvheadend with

AUTOBUILD_CONFIGURE_EXTRA="--enable-ffmpeg_*static* --enable-libffmpeg_static --enable-libx264 --enable-libx265 --enable-libfdkaac --enable-libmfx" ./Autobuild.sh -t precise-amd64

and get this error:

/usr/bin/tvheadend: relocation error: /usr/bin/tvheadend: symbol vaCreateSurfaces, version VA_API_0.33.0 not defined in file libva.so.1 with link time reference

my compiled ffmpeg with qsv works in console... mediask is all ok

Also available in: Atom PDF