We have a project in which 4 streams obtained from a capture card in YUV format should be encoded by using H264 all in D1 resolution. Meanwhile two 1080p videos compressed by H264 needs to be decoded. All these should be performed on a Linux distribution. To achieve this, we think on the following solution: Use Intel's EMGD driver and vaapi gstreamer plugins on an E3845 processor and to perform all those encodes and decodes expose GPU features of this processor. However, while researching on this solution, I note that some posts in related Intel forums and whitepapers imply that Intel Media SDK should be used above EMGD driver. While researching on Media SDK it is found that there are two different versions, Client and Server. Client is not distributed for Linux but Server is. However, documentation for Server is too fair and I cannot learn anything useful how these two different version seperate. Using Intel Media SDK is mandatory for a task like this.
To summarize I have following questions&requests:
1.Could you please assist me on which techniques and libraries should be used for a task similar to this?
2.Which Linux distribution should be used? Intel EMGD can be used on a Fedora and Yocto Project build. Is there any different possibilities?
3.Is Multi-threaded access possible to driver for all these encode and decode processes, ie. multiple gstreamer pipelines?
4. What is capabilities of Media SDK? It seems, it has sources, sinks, and filters like gstreamer but it is specialized for Intel's hardware. Is using Media SDK for such a scenario mandatory?
Options to access video hardware acceleration for Linux are limited for Atom processors.
Since the Linux Media SDK is targeted for servers, only Core and Xeon processors are supported. EMGD/vaapi support is out of scope of this forum.
The biggest difference today between the client and server versions is that server supports Linux and client does not, though there are a few differences motivated by server vs. client use cases and more differentiation will be added over time. Definitely understand the need for more documentation here.
For Core processors (even i3) -- and Xeon E3-1285/c226 chipset -- Media SDK is the one and only fully supported path to hardware accelerated video decode, encode, and a collection of core video processing algorithms (VPP). It is a C/C++ API and lower level than gstreamer.
If hardware acceleration is mandatory, could you consider an i3 processor? Even if the answer is no this will be very useful feedback for future product planning. Please feel free to reply by private message if there are any details you don't want to post publicly.
It seems that I need to write to a forum where I can find support for EMGD and vaapi. However I cannot find an appropriate forum for this, could you please help me to locate it?
There is a white paper about using EMGD driver on a Fedora and I think after setting up the driver gstreamer-vaapi plugins could be used for hadware encode and decode process. I cannot place Media SDK to an appropriate place in my mind, but after this post it becomes more clearer. By the way I understand that Media SDK is a lower level replacement for gstreamer, isn't it?
We are planning to use E3800 in an industrial application. This white paper really impacts us to choose that processor: http://www.intel.com.tr/content/dam/www/public/us/en/documents/white-papers/atom-e3800-graphics-medi...;However we have difficulties locating some useful technical documents about using GPU on this processor.
As a feedback, I find Intel's support too fair in supporting Linux distributions. For an another project, we have again some problems with Intel's support for GPU on Linux distributions: https://software.intel.com/en-us/forums/topic/402118 . Although I can understand Intel's commercial concerns, proprietary drivers cause a serious problem for linux community. I think, at this point, Intel should provide more and more support for Linux distributions.
Again, I will appreciate, if you help me to locate an appropriate place for EMGD and vappi.
Intel’s Embedded Media and Graphics Driver (EMGD) is for embedded designs and supported by the Embedded Design Center at http://edc.intel.com. The only Linux platforms supported with the Intel Media SDK API are server platforms, and EMGD is not supported.
The EMGD driver includes “libVA” support that can be used by gstreamer plugins. The Intel MediaSDK does not factor into this media pipeline.