Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
Announcements
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

input surface order

innes
Beginner
438 Views

Hi,

I am using sample_decode.exe to decode h264 streams. If I replace this code ()  :

mfxU16 GetFreeSurfaceIndex(mfxFrameSurface1* pSurfacesPool, mfxU16 nPoolSize)
{
if (pSurfacesPool)
{
for (mfxU16 i = 0: i< nPoolSize; i >= 0; i++)
{
if (0 == pSurfacesPool.Data.Locked)
{
return i;
}
}
}

return MSDK_INVALID_SURF_IDX;
}

by this one :

mfxU16 GetFreeSurfaceIndex(mfxFrameSurface1* pSurfacesPool, mfxU16 nPoolSize)
{
if (pSurfacesPool)
{
for (mfxI16 i = nPoolSize - 1; i >= 0; i--)
{
if (0 == pSurfacesPool.Data.Locked)
{
return i;
}
}
}

return MSDK_INVALID_SURF_IDX;
}

the decoder does not render the right frame. I use the hw implementation 1.1 (old hardware). However, it does run correctly using the sw implementation. Do you have any tip on this behaviour ? Do I have to send surfaces to the decoder in a precise order to have a correct rendering ?

Thanks

0 Kudos
10 Replies
Petter_L_Intel
Employee
438 Views
Hi, the order in which you pick frames from the pool does not matter. Just to make sure I implemented the same reverse order retrieval as you did (based on Media SDK 2012 R3 decode sample) but I do not see any frame order or issues related to that. HW and SW behaves the same. Not sure what the root of the issue is on your side. Did you make any other changes that may be impacting the behavior? If you're still having issues please let us know your driver version and what version of Media SDK version you are using. Regards, Petter
0 Kudos
innes
Beginner
438 Views
Hi Petter, This is really weird... My hardware is an Intel Core i5. Since I did not noticed the frame misordering on a more recent hardware, an Intel Core i7 (which allows me to use the hardware 1.3 API), I tried to update HD Graphics drivers. And now, the sample_decode software shows that the hardware API has been downgraded to 1.0 (it was 1.1 before the update). To update drivers, I used the Intel Driver Update Utility : http://www.intel.com/p/en_US/support/detect?iid=dc_iduu My old driver was Intel HD Graphics 8.15.10.2202 and he suggested me to update to the new 15.22.57.2827 (8.15.10.2827) driver. The same utility confirms now that I do have the 8.15.10.2827 driver now. To answer to your question, I use (now ?) this version of the MSDK : Intel(R) Media SDK Decoding Sample Version 3.5.811.41142 Regards,
0 Kudos
Petter_L_Intel
Employee
438 Views
Hi, Not clear on what may be causing different behavior on your side. The driver you have is not the latest one available for the platform. I guess the automated tool does not pick up the latest one. If you go to http://downloadcenter.intel.com/ and select "Graphics" and then your platform and bring up the list of drivers you should find a set of more recent drivers such as 15.28.2875. I also notice that you use the older R2 version of Media SDK 2012. You can download the 2012 R3 release from http://software.intel.com/en-us/vcsource/tools/media-sdk Regards, Petter
0 Kudos
innes
Beginner
438 Views

Hi Petter, and Happy New Year !

You are right, I used the bad version of the IMSDK. I now use the 2012 R3 :

Intel(R) Media SDK Decoding Sample Version 3.5.915.45327
However, I am still facing the same issue (only 1.0 API available in the hardware case)

I guess I know why the automated tool did not pick the latest driver. I tried to update my hardware with the 15.28.7.2875 driver, but it did not work. The setup.exe application dies without any message.

This version (15.28.7.2875) of the driver is available if I choose Graphics > Desktop Graphics Drivers > 2nd Generation Intel Core Processors with Intel HD Graphics 3000/2000 > Windows 7.

However, my chip is precisely this one : http://ark.intel.com/products/47341, and the Intel website references it as "previous generation". So I guess I can't pick "2nd Generation Intel Core Processors"

Using Graphics > Desktop Graphics Drivers > Intel Core Processors with Intel HD Graphics > Windows 7, the Intel website leads me to download exactly the same driver as the automated tool proposed me to install (15.22.57.2827).

As far as I know, the libmfxhw dll is embedded in the HD Graphics driver and the libmfxsw dll is released with the IMSDK software package. So I guess the question is : is there a more recent driver supported by this particular hardware (Core i5 520) ?

Thank you

0 Kudos
Petter_L_Intel
Employee
438 Views
Hi, I was assuming you had a 2nd generation code processor (aka. Sandy Bridge) or greater, but the part that you refer to is older that, thus no HW acceleration support using recent versions of Media SDK API. The processor you have HW decode only support but if you are interested in utilizing this with Media SDK you must use older graphics driver (likely the one the tool told you to download). Also, since you are using an old driver you must use (in your application) corresponding Media SDK API revision as was released with that driver. From what you shared earlier it seems to be version 1.0? So, based on this are you still facing any issues? As stated earlier I do not encounter the issues you described using the Media SDK 2012 R3 SW library with reverse order surfaces. Regards, Petter
0 Kudos
innes
Beginner
438 Views
Yes, I am. I use sample_decode.exe to decode a h264 video stream using my hardware (Core i5 520 Arrandale), IMSDK version 3.5.915.45327, and HD Graphics driver version 15.22.57.2827. sample_decode.exe tells me thhat the HW API available is 1.0 and rendered frames are still not in the right order in the case I mentioned before. Thanks
0 Kudos
Petter_L_Intel
Employee
438 Views
Hi, Thanks for clarifying. The issue is very likely due to limitation in graphics driver or Media SDK HW DLL for the specific driver you are using. Unfortunately the driver you are using is not being actively developed anymore. Unless there is an absolute high impact customer showstopper I do not expect any further fixes on this graphics driver branch. So for any development toward this platform I suggest you try to find a workaround so that you use surfaces in increasing order. Regards, Petter
0 Kudos
innes
Beginner
438 Views
Hi Petter, Thanks for your reply. Just one more question about this issue : since implementing such a workaround leads me to add bottlenecks in my application, is there any mean to know for sure that the workaround is required ? My software runs today on a Core i5 520 Arrandale, but may be used by our customers on more recent hardware, with more recent drivers which won't require this workaround... Thanks a lot Regards
0 Kudos
Petter_L_Intel
Employee
438 Views
Hi, you can check for the Media SDK API revision that the driver supports by initializing Media SDK session using MFX_IMPL_HARDWARE_ANY. Then call QueryIMPL to check for the Media SDK revision supported by the installed driver. If revision is 1.3 or greater then workaround will not be required. Regards, Petter
0 Kudos
innes
Beginner
438 Views
OK, fine. Thank you
0 Kudos
Reply