Bug 59496 - [master gst-vaapi]Decoding error with some AVC raw stream.
Summary: [master gst-vaapi]Decoding error with some AVC raw stream.
Status: VERIFIED INVALID
Alias: None
Product: libva
Classification: Unclassified
Component: intel (show other bugs)
Version: unspecified
Hardware: Other All
: medium major
Assignee: Gwenole Beauchesne
QA Contact: Sean V Kelley
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-01-17 03:26 UTC by Du Yan
Modified: 2013-01-22 01:57 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Du Yan 2013-01-17 03:26:10 UTC
Environment:
--------------
Platform: IVB
Libva master:
commit 9f4dedc4de014cc665c32dfbac1c017f9396b563
Intel-driver master:
commit 88b21b9aba9be13e08109fe5d213973447f38558
Gstreamer 0.1 branch:
commit 935db833e236959c973e6c8ef59586d30f81a26c
gst-plugins-bad 0.1 branch:
commit d21edfecd149886c88a35a92803a0bcfabdc7630
Gst-vaapi master branch:
commit e13bca460944ea5f4affdc98200b46e8727fe5ee
gst-plugins-base 0.1 branch:
commit 95c384136a1dfc22ad656c13b547c4077566d80b
gst-plugins-good 0.1 branch:
commit 967fc61715fa854dacaa200069437fe57d4d8390
gst-plugins-ugly 0.1 branch:
commit 981912f29e54f6cacefe62ee2a24c38a227d0565
gst-plugins-bad 0.1 branch:
commit d21edfecd149886c88a35a92803a0bcfabdc7630
Gst-vaapi master branch:
commit e13bca460944ea5f4affdc98200b46e8727fe5ee


Bug Info:
--------------
Some AVC raw Stream can’t be decoded.

libva info: VA-API version 0.33.0
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_33
libva info: va_openDriver() returns 0
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
0:00:00.189461443 24103      0x211d5e0 ERROR                  vaapi gstvaapidecoder_h264.c:826:ensure_context: unsupported profile_idc 88
0:00:00.189485919 24103      0x211d5e0 ERROR            vaapidecode gstvaapidecode.c:250:gst_vaapidecode_handle_frame: decode error 9
ERROR: from element /GstPipeline:pipeline0/GstH264Parse:h264parse0: GStreamer encountered a general stream error.
Additional debug info:
gstbaseparse.c(2869): gst_base_parse_loop (): /GstPipeline:pipeline0/GstH264Parse:h264parse0:
streaming stopped, reason not-supported
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

Issue can be reproduced with below files:
SVA_CL1_E.264
BA3_SVA_C.264
SVA_NL1_B.264
BANM_MW_D.264
HCHP2_HHI_A.264
alphaconformanceG.264
SVA_NL2_E.264
CABA2_SVA_B.264
FREXT02_JVC_C.264
HCAMFF1_HHI.264
CANL1_SVA_B.264


Steps:
--------------
1.	xinit&
2.	gst-launch-0.10 filesrc location=/home/AVC_conformance/Base_Ext_Main_profile/BA3_SVA_C.264 ! h264parse ! vaapidecode ! vaapisink sync=false
Comment 1 Gwenole Beauchesne 2013-01-17 14:23:00 UTC
BA3_SVA_C.264 is a bitstream conforming to the Extended Profile (profile_idc == 88), which is normally not supported by the hardware. I don't know for the others. Please try to categorize the issues better.

For example, SVA_CL1_E.264 could be an h264parse element issue since gst-vaapi can decode the stream if you don't use that element in-between. e.g.
$ gst-launch-0.10 filesrc location=/Videos/h264/conformance/SVA_CL1_E.264 ! video/x-h264,width=176,height=144,framerate=25/1 ! vaapidecode ! vaapisink
Comment 2 Gwenole Beauchesne 2013-01-17 14:37:34 UTC
SVA_CL1_E.264. This is a codec parser issue. VUI parameters were wrong. IIRC, a fix for appeared in upstream 0.10 branch a couple of days ago. It's about memset() VUI parameters to zero, or the video parser would compare garbage values.
Comment 3 Gwenole Beauchesne 2013-01-17 14:53:27 UTC
SVA_CL1_E.264 is fixed with an update of the built-in codecparsers.
Comment 4 Gwenole Beauchesne 2013-01-17 15:06:05 UTC
I suggest you open as many bug reports as failing bitstreams since the causes can be different, so the solutions could be different. Except if they have a specific error in common. Here, "can't be decoded" is not a valid common error. It's too vague. Thanks.

Good categories could be:
- Unsupported profile_idc = 88 (Extended Profile)
- Number of decoded frames mismatch with number of rendered frames (probably a common reset/flush issue)
- vaapidecode reports "video sink rejected the video buffer" with error = -4 ("not negotiated")
- ... the same with error = XX (something else)
Note: for the vaapidecode errors, this currently requires to GST_DEBUG=vaapidecode:5 and grep for this kind of error.

etc.
Comment 5 Du Yan 2013-01-18 07:05:17 UTC
I categorized different error with the stream which can't be decoded and found that:

1. ** (gst-launch-0.10:11570): CRITICAL **: gst_video_calculate_display_ratio: assertion `num > 0' failed

Manually set resolution can solve the problem.
e.g. SVA_CL1_E.264 , BANM_MW_D.264 , HCHP2_HHI_A.264.

and we don't need to set resolution in qa branch, clips can be decoded normally.


2. Pipeline is PREROLLING ...
0:00:00.191657617 11521      0x18365e0 ERROR                  vaapi gstvaapidecoder_h264.c:838:ensure_context: unsupported chroma_format_idc 0
0:00:00.191681530 11521      0x18365e0 ERROR            vaapidecode gstvaapidecode.c:250:gst_vaapidecode_handle_frame: decode error 10

BA3_SVA_C.264 
alphaconformanceG.264
HPCVMOLQ_BRCM_B.264
HPCAMOLQ_BRCM_B.264
There 4 files has the above error. and they can be decoded by mplayer.
but fail to decode with gst-vaapi.


3. no error and no disply when decoding some files, and i have filed another bug about this. pls refer to #bug 59545
Comment 6 Gwenole Beauchesne 2013-01-18 09:01:16 UTC
Hi,

(In reply to comment #5)
> I categorized different error with the stream which can't be decoded and
> found that:
> 
> 1. ** (gst-launch-0.10:11570): CRITICAL **:
> gst_video_calculate_display_ratio: assertion `num > 0' failed
> 
> Manually set resolution can solve the problem.
> e.g. SVA_CL1_E.264 , BANM_MW_D.264 , HCHP2_HHI_A.264.

This was fixed in git master branch yesterday. Please update and make sure the installed gstreamer-vaapi libs and elements are the latest (at least commit319f87f142ec49677b4e22aeec07468a2ab4eeae). Just git pull, build and install appropriately. This cannot be reproduced with those changes.

> 2. Pipeline is PREROLLING ...
> 0:00:00.191657617 11521      0x18365e0 ERROR                  vaapi
> gstvaapidecoder_h264.c:838:ensure_context: unsupported chroma_format_idc 0
> 0:00:00.191681530 11521      0x18365e0 ERROR            vaapidecode
> gstvaapidecode.c:250:gst_vaapidecode_handle_frame: decode error 10
> 
> BA3_SVA_C.264 

No, BA3_SVA_C will fail before with an unsupported profile_idc = 88 error.

As to chroma_format_idc = 0 (monochrome), this doesn't seem to be supported by the HW either: only 4:2:0 as NV12. VA-API is also missing some appropriate VA_RT_FORMAT_YUV800 format anyway.

> alphaconformanceG.264
> HPCVMOLQ_BRCM_B.264
> HPCAMOLQ_BRCM_B.264
> There 4 files has the above error. and they can be decoded by mplayer.
> but fail to decode with gst-vaapi.

With VA-API enabled too and chroma_format_idc = 0? Please check -msglevel vo=9 or whether there is something in the logs with LIBVA_TRACE set to some sensible output file.
Comment 7 Du Yan 2013-01-21 01:28:47 UTC
1. Test with commit b24752da4ff7dec70390912de4bc8568680cb8f5
SVA_CL1_E.264 , BANM_MW_D.264 , HCHP2_HHI_A.264 have fixed.

2. we check the profile BA3_SVA_C.264  with elecard, it is not monochrome

BA3_SVA_C.264  profile,level:Extend2.1    resolution176x144  chroma format4:2:0
Comment 8 Du Yan 2013-01-21 01:44:22 UTC
not support Extended and morochroma.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.