- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm porting a windows transcoder to Linux, and running into an issue on the speed of decoding a 1080p H.264 video frame - the encoding works as expected. Comparing the same feed from a low end Pentium Linux (N4200 - 1.1 GHz) to my Windows developer machine (i5-6500 - 3.2 GHz), the encode takes about 2x longer (as expected), but the decode takes 20x longer. (1+ milliseconds compared to over 26 milliseconds). I'm wondering if there is something obvious I am doing wrong, or if this CPU isn't fully supported, or what ?
I'm running Ubuntu 19.10 server.
CPU: Intel(R) Pentium(R) CPU N4200 @ 1.10GHz
Installed the mfx packages: sudo apt-get -y install libmfx1 libmfx-tools libva-drm2 vainfo intel-media-va-driver-non-free
export LIBVA_DRIVER_NAME=iHD
Running: I see
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: User requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_5
libva info: va_openDriver() returns 0
awk: fatal: cannot open file `/etc/network/interfaces' for reading (No such file or directory)
As to my code: I'm opening up the VA display (_vaDisplay is shared between my encode/decode sessions)
int _card = open("/dev/dri/card0", O_RDWR); /* primary card */
VADisplay _vaDisplay = vaGetDisplayDRM(_card);
VAStatus vaStatus = vaInitialize(_vaDisplay, &majorVersion, &minorVersion);
Opening up my session:
mfxVersion min_version = { 3, 1 }; // min version 1.3 to support Low Latency.
mfxStatus initStatus = MFXInit(MFX_IMPL_HARDWARE_ANY, &min_version, &session);
initStatus = MFXVideoCORE_SetHandle(session, MFX_HANDLE_VA_DISPLAY, (mfxHDL)_vaDisplay); // added for Linux
And the basic decode which I timed (obviously I do the DecodeHeader before, and necessary surface creation)
sts = MFXVideoDECODE_DecodeFrameAsync(_session, &bitstream, inputFrame, &surface, &syncPoint);
sts = MFXVideoCORE_SyncOperation(_session, syncPoint, MSDK_DEC_WAIT_INTERVAL);
- Tags:
- Development Tools
- Graphics
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
- Optimization
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Michael,
25 ms for decoder is a lot. There must be something wrong. A few things worth checking:
1) Please check behavior with "default" MSDK samples. E.g. does sample_decode demonstrate the same low perf issue? Please check with and without "-vaapi" option.
2) There is a known issue on APL (N4200) - video to system memory conversion takes much time (there still a way to mitigate this - use GPUCopy). However for transcoding scenarios, there should no such conversion because correctly written application should set IOPattern to OUT_VIDEO/IN_VIDEO both decoder and encoder.
BTW, please feel free to submit an issue at GitHub: https://github.com/Intel-Media-SDK/MediaSDK/issues . I'm checking update on Intel Developer Zone rarely.
Regards,
Dmitry
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Michael,
25 ms for decoder is a lot. There must be something wrong. A few things worth checking:
1) Please check behavior with "default" MSDK samples. E.g. does sample_decode demonstrate the same low perf issue? Please check with and without "-vaapi" option.
2) There is a known issue on APL (N4200) - video to system memory conversion takes much time (there still a way to mitigate this - use GPUCopy). However for transcoding scenarios, there should no such conversion because correctly written application should set IOPattern to OUT_VIDEO/IN_VIDEO both decoder and encoder.
BTW, please feel free to submit an issue at GitHub: https://github.com/Intel-Media-SDK/MediaSDK/issues . I'm checking update on Intel Developer Zone rarely.
Regards,
Dmitry
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page