After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 759720 - [HEVC][Decode]Allegro and BBC cases have different MD5 value from the reference data
[HEVC][Decode]Allegro and BBC cases have different MD5 value from the referen...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
git master
Other Linux
: High normal
: 1.7.91
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-12-21 07:29 UTC by Lu Hua
Modified: 2016-03-16 17:18 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Lu Hua 2015-12-21 07:29:35 UTC
1. Testing Steps:
========================================================================
gst-launch-1.0 -q filesrc location=/media/HEVC/BBC10.0/i_main/BasketballDrill_832x480_50_qp27.bin '!' vaapiparse_h265 '!' vaapidecode '!' checksumsink2 frame-checksum=FALSE file-checksum=TRUE

2.Log:
========================================================================
output:
libva info: VA-API version 0.38.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /opt/X11R7/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0
81205ede86fb8abe40cd25ae388588d8

Ref-MD5 is 304835f1a3321f0c70eef3c04227dff7

Run ./mv_decoder_adv --md5 --info --reorder --hevc --i420 --long --limit 25 -o out_i420_b.yuv -i /media/HEVC/BBC10.0/i_main/BasketballDrill_832x480_50_qp27.bin
libva info: VA-API version 0.38.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /opt/X11R7/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0
libva major ver: 0 minor ver: 38
GFX device [vaapi] is ready
Video bistream parser [hevc] is ready
Decode accelerator [vaapi:hevc] is ready
  codec: hevc
  accel: vaapi
  slice: long format
  width: 832
  height: 512
  surfaces: 20
Video renderer is ready
  fourcc: i420
  limit: 25
[0] - CVS:1, POC:0, frame:832x480, crop:832x480, show:true
[1] - CVS:1, POC:1, frame:832x480, crop:832x480, show:true
[2] - CVS:1, POC:2, frame:832x480, crop:832x480, show:true
[3] - CVS:1, POC:3, frame:832x480, crop:832x480, show:true
[4] - CVS:1, POC:4, frame:832x480, crop:832x480, show:true
[5] - CVS:1, POC:5, frame:832x480, crop:832x480, show:true
[6] - CVS:1, POC:6, frame:832x480, crop:832x480, show:true
[7] - CVS:1, POC:7, frame:832x480, crop:832x480, show:true
[8] - CVS:1, POC:8, frame:832x480, crop:832x480, show:true
[9] - CVS:1, POC:9, frame:832x480, crop:832x480, show:true
[10] - CVS:1, POC:10, frame:832x480, crop:832x480, show:true
[11] - CVS:1, POC:11, frame:832x480, crop:832x480, show:true
[12] - CVS:1, POC:12, frame:832x480, crop:832x480, show:true
[13] - CVS:1, POC:13, frame:832x480, crop:832x480, show:true
[14] - CVS:1, POC:14, frame:832x480, crop:832x480, show:true
[15] - CVS:1, POC:15, frame:832x480, crop:832x480, show:true
[16] - CVS:1, POC:16, frame:832x480, crop:832x480, show:true
[17] - CVS:1, POC:17, frame:832x480, crop:832x480, show:true
[18] - CVS:1, POC:18, frame:832x480, crop:832x480, show:true
[19] - CVS:1, POC:19, frame:832x480, crop:832x480, show:true
[20] - CVS:1, POC:20, frame:832x480, crop:832x480, show:true
[21] - CVS:1, POC:21, frame:832x480, crop:832x480, show:true
[22] - CVS:1, POC:22, frame:832x480, crop:832x480, show:true
[23] - CVS:1, POC:23, frame:832x480, crop:832x480, show:true
[24] - CVS:1, POC:24, frame:832x480, crop:832x480, show:true
Reach decode frames limits:25
Total 25 frames are presented in 2327332 us, 10.7419 fps.
MD5 digest: 304835f1a3321f0c70eef3c04227dff7


Run all Allegro and BBC cases, they got different MD5 value from the reference data.

3. Testing Env:
========================================================================
gst_plugins_vaapi10: (master)1a84348e766220831aa26bfa50b8aeefec0ebdd4
Gstreamer: 1.6
libva: (master)6ef997f03eba8fcabfe3a2ac1546bbaf924e519f
Libva_intel_driver:  (master)a7803c0642a8f2923ce3c51a0a717688fe2c5459

4. Frequency of Occurence:
========================================================================
100%
Comment 1 Lu Hua 2015-12-31 05:21:45 UTC
JVT10.0/DELTAQP_A_BRCM_4.bin also has this issue.

run:  gst-launch-1.0 -q filesrc location=HEVC/JVT10.0/DELTAQP_A_BRCM_4.bin '!' vaapiparse_h265 '!' vaapidecode '!' checksumsink2 frame-checksum=FALSE file-checksum=TRUE
libva info: VA-API version 0.38.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /opt/X11R7/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_38
libva info: va_openDriver() returns 0
5ab0f91a47fd3d41e76bc1117ee55b6c

ref-MD5: 1ceef83183197fd1f21472c17b53cbff
Comment 2 Scott D Phillips 2016-03-01 18:22:04 UTC
It looks like the problem with the 832x480 video is strides. The driver chooses a 128-aligned width where video-info calculates a 4-aligned width by default on I420 or NV12. I believe the fix is to update gstreamer-vaapi to send a GstVideoMeta along with the buffer that indicates the proper strides. I will begin working on that patch now.
Comment 3 Scott D Phillips 2016-03-01 21:55:42 UTC
Oops, looks like it was just my test checksumming code that wasn't adding the VIDEO_META in the allocation query. With that modification to my test code, gstreamer-vaapi sends me the video meta and then using that I am seeing frame checksums that match the reference decoder.

@Lu Hua, make sure your test code gets and uses the GstVideoMeta for strides.

Apart from that I am not seeing the issue reported in this bug with the tip of libva, libva-intel-driver, and GStreamer repos.