Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Ramashankar
New Contributor III
48 Views

RGB32->NV12 conversion issue using video memory on Microsoft Surface

Jump to solution

Hi,

I build a custom app, containing VPP+Encoder pipeline for converting RGB32 frames into NV12 first and then encoding these NV12 frames into h264. I developed this app using media SDK 6.0.0.349 and sample version 6.0.0.49. I am running this custom app on a Microsoft surface Pro 3 device which has Windows8.1 OS, Intel HD Graphics 4200 and driver version 10.18.14.4170. Sys analyzer log and intel processor identification utility's output (for graphics card confirmation) is also attached for further details.

Now problem is that when I use HW path + Video memory for color conversion+encoding on this surface device, then intermediate output of VPP module (which is NV12 frame) is getting corrupted (all white color in frames turned into black).

But if I use same app on following combination then there is no issue:

i. HW path + System memory on surface device => NV12 frames are proper

ii. SW path + System memory on surface device => NV12 frames are proper

iii. HW path + Video memory on a Windows8.1 desktop machine with higher version of intel driver (10.18.14.4294 or .4332)  => NV12 frames are proper 

I believe it could be driver issue on surface device as it is bit older version but then I am unable to update the latest intel driver (10.18.14.4294 or .4332) on it. Intel driver update utility is not detecting any driver update requirement. If I manually install the latest driver, it gives an error that driver is not validated for this system. Error snapshot is also attached.

Further, I checked the latest driver/FW updates on Microsoft site then it says my current driver (.4170) itself is the most updated one.

So please let me know:

1. Is this NV12 conversion issue actually a driver issue? Was it a known issue with this driver version? If yes than how can I update the driver on my device.

2. If it is not a driver issue, can you guide me how to debug it further?

~

Thanks,

0 Kudos

Accepted Solutions
48 Views

Hi Ramashankar,

Glad, issue was resolved with driver update. Specifically when installing manual driver, OS looks for path of located igd files (locally) for the driver installation. Hence providing complete path to content files is needed.  

1. Is there any link/docs available where all the issues/limitation of driver are captured? I gone through the driver's release notes also but it doesn't say anything about this issue. It covers only some high level changes or major issues.

-> With every driver release there are several known and also unknown ( found during internal testing) bug fixes. We do not have any such link/docs which capture all issues/limitations for specific driver and driver model followed and captured are high level changes/major issues in release notes with every driver release as seen. Hence, we always recommend updating to latest driver if you come across any issue, as issue could be already fixed in latest driver release or provides us a reference point for further investigation. 

2. I want to understand the relation between Graphic Card model, Graphics Card driver version and supported Media SDK API version? Is it correct understanding that Media SDK API version is directly driven by driver version only? Does same driver version expose same media SDK API version on different-different Graphics card model?

-> One way to understand the relationship b/w supported platform vs driver version vs MSDK API version is by using tool system_analyzer which logs and provides this information with driver installed on the machine and API version supported on the platform. MediaSDK  support for hardware acceleration is provided by the graphics drivers of each platform. So, answers to your questions "Is it correct understanding that Media SDK API version is directly driven by driver version only? Does same driver version expose same media SDK API version on different-different Graphics card model?" is yes and yes as these both are driven underlying platform/OS support.

Thanks, 

 

View solution in original post

9 Replies
48 Views

Hi Ramashankar,

Thank you for detailed description and the logs. From you description, I too suspect it could be related to old driver version(4170) currently on the machine. In general, there are several bug fixes with every driver release and I would recommend following for driver update to latest (15.36.4332) version. 

1) Manually update the driver (to 15.36.4332) on the machine by following steps at this link: http://www.intel.com/content/www/us/en/support/graphics-drivers/000005629.html. Let know after the update if issue is visible. Also, please expect a stability issue as this driver version is generic and is yet to be validated by OEM ("original equipment manufacturer"). 

2) You could consider upgrading your machine to Win10, as since Win10 MSFT is providing driver updates automatically through Software update. 

Thanks, 

 

 

 

Ramashankar
New Contributor III
48 Views

Hi Harsh,

Thanks for your reply and sharing these driver installation steps.

I was following almost same steps earlier also but still it could not be installed (due to one mistake by me). What I was doing wrong is that I was providing the root folder of unzipped driver content [win64_153628.4332] as the driver location. But when I provided [win64_153628.4332\Graphics] as path of driver then it got installed on Surface device successfully. I came to know about this mistake when I contacted to Microsoft Surface support team yesterday. They provided very detailed steps (it is moreover same as on Intel's site) where it was mentioned that: [ Browse to the location where you put the contents of the zip file, then go into the Graphics folder [it will be inside of that unzipped folder]. If you don't go into the Graphics folder, you will receive an error stating there is no compatible driver present].

I shared above detail just for other's reference (in case someone also faces same issue).

Well, the NV12 conversion issue is now resolved after this driver update. So my main concern is closed but I would like to know some further information if you can share:

1. Is there any link/docs available where all the issues/limitation of driver are captured? I gone through the driver's release notes also but it doesn't say anything about this issue. It covers only some high level changes or major issues.

2. I want to understand the relation between Graphic Card model, Graphics Card driver version and supported Media SDK API version? Is it correct understanding that Media SDK API version is directly driven by driver version only? Does same driver version expose same media SDK API version on different-different Graphics card model?

Thanks,

 

49 Views

Hi Ramashankar,

Glad, issue was resolved with driver update. Specifically when installing manual driver, OS looks for path of located igd files (locally) for the driver installation. Hence providing complete path to content files is needed.  

1. Is there any link/docs available where all the issues/limitation of driver are captured? I gone through the driver's release notes also but it doesn't say anything about this issue. It covers only some high level changes or major issues.

-> With every driver release there are several known and also unknown ( found during internal testing) bug fixes. We do not have any such link/docs which capture all issues/limitations for specific driver and driver model followed and captured are high level changes/major issues in release notes with every driver release as seen. Hence, we always recommend updating to latest driver if you come across any issue, as issue could be already fixed in latest driver release or provides us a reference point for further investigation. 

2. I want to understand the relation between Graphic Card model, Graphics Card driver version and supported Media SDK API version? Is it correct understanding that Media SDK API version is directly driven by driver version only? Does same driver version expose same media SDK API version on different-different Graphics card model?

-> One way to understand the relationship b/w supported platform vs driver version vs MSDK API version is by using tool system_analyzer which logs and provides this information with driver installed on the machine and API version supported on the platform. MediaSDK  support for hardware acceleration is provided by the graphics drivers of each platform. So, answers to your questions "Is it correct understanding that Media SDK API version is directly driven by driver version only? Does same driver version expose same media SDK API version on different-different Graphics card model?" is yes and yes as these both are driven underlying platform/OS support.

Thanks, 

 

View solution in original post

Ramashankar
New Contributor III
48 Views

Hi Harsh,

Thanks for your reply. I understood for point 1, but in point 2, I have some further query n doubt.

(a). System_analyzer tools shows the API version till 1.8 only. So is there any way I can check the maximum supported API version just as a naive user? They only way i know is by calling MFXQueryVersion() in a program.

(b). When I upgrade the driver on my win8.1 machine from 10.18.14.4294 to 10.18.14.4332, there was no change in my HW SDK API version. It still shows 1.16 when I call MFXQueryVersion(). Should it not be changed with driver update.

(c). Let me give you a small background before my next query.

As I informed above that older driver version is giving corrupted frames during RGB32 to NV12 conversion while using video memory, so now thinking from my product's end user perspective, i can not ask every surface user to upgrade their driver manually (unless it is included in windows update itself) but still i have to support the smooth video encoding on each device properly. So to overcome this issue, i was thinking to detect the HW SDK API version using MFXQueryVersion() and based on API version i can decide whether i should go for HW decoder or Software decoder, video memory or system memory.

But now my challenge is that if same Media SDK API version is mapped with more than one driver version (which i think now as per my query in Qn (b)) then I may not be able to fully rely on this solution in every case.

So can you help me out in this?

~ Thanks,

48 Views

Hi Ramashankar,

Let me answer your questions one by one so we do not miss any:

For Q(a): We have discussed this before on previous threads, are you using latest MSDK 2016? Did you run system_analyser tool 64 bit from latest MSDK 2016 package and still see tool report only till API 1.8? From your description looks like you are ran tool from previous MSDK versions (from INDE). Yes, MFXQueryVersion() is also another useful way to get  max version supported by current driver on the machine.

For Q(b): Let me clarify, MSDK API is a component in the driver package. When there is an update to MSDK API component, then MFXQueryVersion() does report the max version of API supported by the driver, but it is not to be expected that MSDK API version change for every driver version ( in this case, from 10.18.14.4294 to 10.18.14.4332). Here MSDK API version is 1.16, where in the driver (4332) version includes fixes over 4294 driver. 

For Q(c): As, I have reiterated on previous threads, with every new driver update includes fixes over previous driver. It is always recommended to customers to update to the latest drivers. I do agree it bit of hassle from end use experience, but, the issue here is just due to driver version availability for OEM.  In this case, as it is specifically isolated to surface users due to non-availability of latest 15.36.4332 driver from OEM. I would recommend contacting OEM support to get driver release date for version 10.18.14.4332 on surface and request customers to update to latest when available.

Thanks, 

Ramashankar
New Contributor III
48 Views

Hi Harsh,

For Q(a): I was using 32 bit system analyser from latest MSDK 2016 which was giving result till  API 1.8 only. Now I used 64 bit system analyser and it is giving complete result (till API 1.17). Thanks for detailing this info. 

For Q(b): OK, I got it now. Thanks for the clarification. I have one further query here: 

As MSDK API version may not change in driver version update, so is there any way (Intel API or other) through which I can detect the driver version programatically? E.g. I want to differentiate whether it is MSDK API 1.16 with driver version .4294 or with driver version .4332. 

For Q(c): OK. I will contact to OEM support also to get driver release date for version 10.18.14.4332 on surface. But meanwhile, I may need to provide that work around if I can identify the MSDK API version along with driver version.

Thanks.

48 Views

Hi Ramashankar, 

As MSDK API version may not change in *EVERY* driver version update, so is there any way (Intel API or other) through which I can detect the driver version programatically? E.g. I want to differentiate whether it is MSDK API 1.16 with driver version .4294 or with driver version .4332.

-> Here, the MSDK API 1.16 is same for both the driver versions, but driver version are different. Programmatically, I would suggest in this case using dxdiag and verify the driver version installed on the machine and if it is .4294 version you can either notify customers to upgrade to latest driver version (.4332) when available or fallback to SW. With SW fallback please expect a performance hit. 

Thanks, 

 

Ramashankar
New Contributor III
48 Views

Hi Harsh,

Thanks for the information, I understood. I have no further query on this so you can close this thread now.

~

Thanks,

48 Views

Hi Ramashankar,

Sure, will close this thread.