<div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Hi all,</span><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I've been working on H264 encode, decode, and JPEG decode VA-API programs recently, using the Intel va-driver on Sandy Bridge and Bay Trail.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">This has gone well, but I've hit a problem with the H264 decoder in some situations where I believe it is producing incorrect output. In some cases chroma, and less often luma, data does not agree with the reference decoder [1], often in Intra frames (but sometimes P frames too), always baseline profile. I have an intra-encoded test stream where the 389th frame of a stream encoded from the standard "paris (cif)" test stream is incorrect on both Sandy Bridge and Bay Trail. Many other test streams pass fine, leaving me to believe our decoder implementation is largely correct.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I've also implemented a mode where I am able to get the current encoded picture out of the VA-API encoder. I can then compare this, byte-for-byte, against a decode of the frame just encoded. I use this with out software codecs to ensure our encode and decode match exactly. Using this technique I can easily compare our software codec, and the VA-API H264 codecs in any combination. I've found the VA-API encode always agrees with our decoder, but the VA-API decoder does not always agree with the encode - either our software encoder or the VA-API encoder (this testing just on Bay Trail).</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I'd like to get to the bottom of this. The first step is removing our decode implementation from the test, and using one you believe to be good. What tools do you use for regression testing? Is this perhaps ffmpeg invoked in some way? Is your test setup open source, such that I can modify it to include my new test stream?</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">I'd be happy to provide test a stream or two here, but before I do, I'd like to prove the problem isn't introduced in my software.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">Regards,</div><div style="font-family:arial,sans-serif;font-size:13px">Sam</div><div style="font-family:arial,sans-serif;font-size:13px">
<br></div><div style="font-family:arial,sans-serif;font-size:13px">PS: here's an extract of some of the chroma bytes where it has gone right. On the top, some bytes of reference decoder output, on the bottom, bytes of VA-API H264 decoder output. Note the 0x8f83 becomes 0x908f, then 0x8e8e becomes 0x8d8d, the 0x8e8e becomes 0x8d8e.</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px"><pre style="white-space:pre-wrap;margin-top:0px;margin-bottom:0px;padding:0px;font-family:'Courier New',Courier,monospace;line-height:1.3;color:rgb(51,51,51);font-size:14px">
9460 0024f30: 9894 8d8c 8d8f 9090 8f8e 8e8e 8e8e 8e8e ................</pre><pre style="white-space:pre-wrap;margin-top:0px;margin-bottom:0px;padding:0px;font-family:'Courier New',Courier,monospace;line-height:1.3;color:rgb(51,51,51);font-size:14px">
9460 0024f30: 9894 8d8c 8d8f 9090 908f 8d8d 8d8e 8e8e ................ </pre></div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">PPS: resend, I had initially sent from the wrong address</div>
<div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">[1]: <a href="http://iphome.hhi.de/suehring/tml/" target="_blank">http://iphome.hhi.de/suehring/tml/</a></div>
</div>