[vlc-devel] Intel DXVA2 green screen issue

Jeremiah Gilbert jagged at vtnetworks.net
Mon Jun 28 13:30:54 CEST 2010


Hello,
 	j-b asked that I post the following information here. I hope it is 
of some help.

The Intel green screen issue seems to be shared by 2 projects (xbmc + vlc) 
who use ffmpeg code. I believe the issue actually lies in the ffmpeg dxva 
code.

Reading the document from Intel at the bottom of this page:

http://software.intel.com/en-us/articles/using-h264avc-directx-video-acceleration-with-the-intel-g45gm45-express-chipsets/

describing the implementation work they did w/ Casimir666 on implementing 
DXVA in MPC-HC a couple things stand out:

"The application/codec needs to inform the hardware it is sending a 
full list of reference pictures by setting the 
DXVA_PicEntry_H264.Reserved16Bits to 0x34c."

I believe this is an error in the document and that it should read 
DXVA_PicParam_H264.Reserved16Bits, as there is no such variable in the 
PicEntry_H264 structure (which is a member of the PicParam_H264 
structure.) Also reviewing Casimir666's current MPC-HC code reveals this:
Code:

 	if(m_pFilter->GetPCIVendor() == PCIV_Intel)
 		m_DXVAPicParams.Reserved16Bits = 0x534c;
 	else
 		m_DXVAPicParams.Reserved16Bits = 0;

Interestingly this differs from the article (setting it to 0x534c instead 
of 0x34c). Both of these are quite different from what Microsoft's DXVA 
doc specifies (this parameter should be set to 0, 1, 2, or 3). In the 
current ffmpeg source it is set to 3. (see Microsoft DXVA specification 
doc: http://www.microsoft.com/downloads/d...6-714063a6d7a6)

The next interesting peice in the Intel article was this:

"One of the fundamental differences about the implementation on the Intel 
Graphics Media Accelerator X4500HD should be called out at this point. In 
other implementations, the RefPicList[][].Index7Bits contains a index into 
the DXVA_PicParams_H264.RefFrameList[]. The index is its position in the 
.master. reference list. On the Intel GMA X4500HD, the 
RefPicList[][].Index7Bits needs to contain the surface index . so 
essentially the reference picture structure for slices has the same 
information that the master list has in its Index7Bits field."

They also include some of the code demonstrating how it was done (though 
from what I can tell, it's since changed). I think this is likely the 
heart of the issue. Unfortunately, I know next to nothing about the ffmpeg 
code (Which is where I think the main change would need to be implemented) 
and even less about h264 decoding. Though, I'm happy to help test.

-Jeremiah



More information about the vlc-devel mailing list