- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello Experts!,
I am working on a project which follows following steps: input feed is taken from camera, encoding (vp8 encoder used) is done, transferring over web, decoding feed (vp8 decoder used) and stream it on a web browser.
I wish to use hardware accelerated vp8 encoder and decoder for this purpose along with gstreamer-1.0 framework. As a result, I installed Intel media SDK 2018 R2.
Can anyone please help me to know whether media SDK supports hardware acceleration for VP8 encoder on windows?
Hardware Specifications:
1) MIO-2360N-S2A1E
2) Intel Pentium N4200 CPU (Kaby Lake)
-4c/4t @1.1GHz-2.5GHz
-Intel HD Graphics 505 (Apollo Lake) - 18 execution units
3) 8GB RAM
Thanks and Regards,
Saurabh Bora
- Tags:
- Development Tools
- Graphics
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
- Optimization
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Saurabh,
I think we support VP8 encode. A easy way to check is to run "simple_7_codec" in your platform.
This program is part of the tutorial package, you can download it from the following page:
https://software.intel.com/en-us/media-sdk/training
Let me know if you have any questions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Unfortunately simple_7_codec sample does not have VPx encoder related code:
//The task list for the encoder checking CodecTask enc_tasks[] = { { fillH264EncodeParams, false, false }, //Set "attach_option" to true to attached the extCodingOption2 parameters. { fillHEVCEncodeParams, true, false }, //H.265 plugin must be loaded during the runtime. { fillHEVC10EncodeParams, true, false }, //H.265 plugin must be loaded during the runtime. { fillMPEG2EncodeParams, false, false }, { fillMJPEGEncodeParams, false, false } };
It also looks like VPx encoder implementation is moved to a plugin.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Roman,
You can extend the tutorial code with VP8 and run the code again, it should be not very difficult. Did you try it?
I am also checking the document we had before, following old release notes has a table of the codec we support but it is on Linux and should be updated, so I am checking it internally now.
When you mentioned "looks like VPx encoder implementation is moved to a plugin", how did you get the conclusion?
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Liu, Mark (Intel) (Intel) wrote:
When you mentioned "looks like VPx encoder implementation is moved to a plugin", how did you get the conclusion?
I supposed that after looking into sample_common\src\plugin_utils.cpp code:
mfxStatus ConvertStringToGuid(const msdk_string & strGuid, mfxPluginUID & mfxGuid) { mfxStatus sts = MFX_ERR_NONE; // Check if symbolic GUID value std::map<msdk_string, mfxPluginUID> uid; uid[MSDK_STRING("hevcd_sw")] = MFX_PLUGINID_HEVCD_SW; uid[MSDK_STRING("hevcd_hw")] = MFX_PLUGINID_HEVCD_HW; uid[MSDK_STRING("hevce_sw")] = MFX_PLUGINID_HEVCE_SW; uid[MSDK_STRING("hevce_gacc")] = MFX_PLUGINID_HEVCE_GACC; uid[MSDK_STRING("hevce_hw")] = MFX_PLUGINID_HEVCE_HW; uid[MSDK_STRING("vp8d_hw")] = MFX_PLUGINID_VP8D_HW; uid[MSDK_STRING("vp8e_hw")] = MFX_PLUGINID_VP8E_HW; // <<-------- uid[MSDK_STRING("vp9d_hw")] = MFX_PLUGINID_VP9D_HW; uid[MSDK_STRING("vp9e_hw")] = MFX_PLUGINID_VP9E_HW;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Roman and Liu,
Thanks for your suggestions.
I have extended the tutorial simple_7_codec sample code in following manner:
1) Appended { fillVP8EncodeParams, true, false } to the CodecTask enc_tasks[] array
2) Provided definition for fillVP8EncodeParams as following:
char* fillVP8EncodeParams(mfxVideoParam *param, void* extOpts) {
static char strRet[] = "Encoder VP8 with resolution(1920x1080)";
memset(param, 0, sizeof(*param));
param->IOPattern = MFX_IOPATTERN_IN_SYSTEM_MEMORY;
param->mfx.CodecId = MFX_CODEC_VP8;
param->mfx.CodecProfile = MFX_PROFILE_VP8_3;
// - Width and height of buffer must be aligned, a multiple of 32
// - Frame surface array keeps pointers all surface planes and general frame info
param->mfx.FrameInfo.Width = MSDK_ALIGN16(1920);
param->mfx.FrameInfo.Height = MSDK_ALIGN16(1080);
param->mfx.FrameInfo.FourCC = MFX_FOURCC_NV12;
param->mfx.FrameInfo.PicStruct = MFX_PICSTRUCT_PROGRESSIVE;
param->mfx.FrameInfo.ChromaFormat = MFX_CHROMAFORMAT_YUV420;
return strRet;
}
3) Added following case(please look at italic one) in a function called msdkGetPluginUID present in common_utils.cpp
case MSDK_VENCODE:
switch (uCodecid)
{
case MFX_CODEC_HEVC:
return MFX_PLUGINID_HEVCE_HW;
case MFX_CODEC_VP8:
return MFX_PLUGINID_VP8E_HW;
}
After building the modified sample code, I am getting below output for VP8 encoder on console:
Check Encoder VP8 with resolution(1920x1080)
Loading Encoder VP8 with resolution(1920x1080) plugin failed
The encoder wasn't closed successfully.
Please guide me if I have missed anything in the code? OR
Can we conclude that VP8 encoder is not supported?
Thanks and Regards,
Saurabh Bora
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Saurabha and Roman,
Really apologized for the late response and might mis-guide you to check the runtime codec, I just confirmed with our development: we don't support hardware VP8 encoder.
This should apply both Windows and Linux platform.
Let me know if you have any request on this issue.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Liu,
Thanks! for your prompt response.
If you could you please highlight whether it is part of development in near future, it would be great help.
Thanks and Regards,
Saurabh Bora
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Saurabh,
As far as I know, there is no plan to develop support VP8 encoder although we may have a plan for VP9.
As you know, with AV1 is coming, both VP8 and VP9 is getting obsoleted, is any special reason to use VP8 encoder?
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Saurabh,
There is a news this week about our software encoder to support AV1, here is the detail:
Intel announced SVT-AV1 this week with Netflix. This is a software encoder on Xeon D/scalable processors. You can check https://01.org/svt for details but in general, this encoder supports HEVC, VP9 and AV1.
Let me know if you have any questions.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mark,
By http://github.com/intel/media-driver#supported-codecs, Intel is support vp8 after KBL.
What is difference? Thanks for your reply
Guan-Lin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks,
This is a good catch and I do notice the following difference:
- Default build table: support VP8 enc as you mentioned.
- Open source feature table: doesn't support VP8 enc.
I don't know what's the difference but it should be clear VP8 is not support for Open Source project like Media SDK. Not clear to me is the Windows platform.
Mark
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page