<div dir="ltr">Hi all,<div><br>Thanks for the quick replies!</div><div class="gmail_extra"><br><br><div class="gmail_quote">On 11 June 2014 05:54, Gwenole Beauchesne <span dir="ltr"><<a href="mailto:gb.devel@gmail.com" target="_blank">gb.devel@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi,<br>
<br>
2014-06-10 20:33 GMT+02:00 Sam Jansen <<a href="mailto:sam.jansen@starleaf.com">sam.jansen@starleaf.com</a>>:<br>
<div class=""><br>
> I've been working on H264 encode, decode, and JPEG decode VA-API programs<br>
> recently, using the Intel va-driver on Sandy Bridge and Bay Trail.<br>
><br>
> This has gone well, but I've hit a problem with the H264 decoder in some<br>
> situations where I believe it is producing incorrect output. In some cases<br>
> chroma, and less often luma, data does not agree with the reference decoder<br>
> [1], often in Intra frames (but sometimes P frames too), always baseline<br>
> profile. I have an intra-encoded test stream where the 389th frame of a<br>
> stream encoded from the standard "paris (cif)" test stream is incorrect on<br>
> both Sandy Bridge and Bay Trail. Many other test streams pass fine, leaving<br>
> me to believe our decoder implementation is largely correct.<br>
><br>
> I've also implemented a mode where I am able to get the current encoded<br>
> picture out of the VA-API encoder. I can then compare this, byte-for-byte,<br>
> against a decode of the frame just encoded. I use this with out software<br>
> codecs to ensure our encode and decode match exactly. Using this technique I<br>
> can easily compare our software codec, and the VA-API H264 codecs in any<br>
> combination. I've found the VA-API encode always agrees with our decoder,<br>
> but the VA-API decoder does not always agree with the encode - either our<br>
> software encoder or the VA-API encoder (this testing just on Bay Trail).<br>
><br>
> I'd like to get to the bottom of this. The first step is removing our decode<br>
> implementation from the test, and using one you believe to be good. What<br>
> tools do you use for regression testing? Is this perhaps ffmpeg invoked in<br>
> some way? Is your test setup open source, such that I can modify it to<br>
> include my new test stream?<br>
<br>
</div>The supported HW decoders that use VA-API and can be serve as<br>
reference are either GStreamer/vaapi, or FFmpeg/vaapi (for H.264).<br>
<<a href="http://gitorious.org/vaapi/gstreamer-vaapi/" target="_blank">http://gitorious.org/vaapi/gstreamer-vaapi/</a>><br>
<br>
Please provide me with a sample. We also have other tools, which I<br>
will publish later on.<br>
<div class=""><br></div></blockquote><div><br></div><div>I've made it temporarily available at: <a href="http://cam.starleaf.com/paris_cif_intra.264">http://cam.starleaf.com/paris_cif_intra.264</a></div><div><br></div>
<div>Feel free to have a look at it. You're welcome to add it to whatever test suite you have as well. However, I'm happy right now that I should first use your gstreamer-vaapi to decode it, and check I get the same result there. I would have thought the most likely explanation at this point in time is that I have a bug in my VA-API H264 decoder -- I'd rather you didn't waste your time on my bugs!</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="">
> PS: here's an extract of some of the chroma bytes where it has gone right.<br>
> On the top, some bytes of reference decoder output, on the bottom, bytes of<br>
> VA-API H264 decoder output. Note the 0x8f83 becomes 0x908f, then 0x8e8e<br>
> becomes 0x8d8d, the 0x8e8e becomes 0x8d8e.<br>
<br>
</div>Note: how do you retrieve the bytes for comparison? If this is through<br>
vaGetImage(), the result of the conversion is generally not bitexact.<br>
<br></blockquote><div><br></div><div>I use vaDeriveImage(), which gives me a VA_FOURCC_NV12 image. I then vaMapBuffer() it to get at the image data.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

Regards,<br>
Gwenole.<br>
</blockquote></div><br></div></div>