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 764874 - [VC1][decode]Filter caps do not completely specify the output format
[VC1][decode]Filter caps do not completely specify the output format
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer-vaapi
git master
Other Linux
: High major
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on: 743948
Blocks:
 
 
Reported: 2016-04-11 06:00 UTC by Fei
Modified: 2016-10-31 14:17 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Fei 2016-04-11 06:00:08 UTC
1. Testing Steps:
========================================================================
gst-launch-1.0 -q filesrc location=/media/HEVC/JVT10.0/$filename ! h265parse ! vaapidecode ! vaapipostproc format=i420 ! checksumsink2 frame-checksum=FALSE file-checksum=TRUE | tail -1 >> file_checksum_vaapi.txt

2. error log:
root@x-kbl01:~/media_tools/decoder/bitstreams_vc1# LD_PRELOAD=/opt/X11R7/lib/libva.so:/GFX/Test/Infrastructure/infrastructure/tests/media_tools/i965_drv_video_hook_op.so gst-launch-1.0 filesrc location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 '!' 'video/x-wmv,profile=(string)advanced,' width=176, height=144 '!' vaapidecode '!' vaapisink sync=false libva info: VA-API version 0.39.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_39 libva info: va_openDriver() returns 0 Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'pipeline0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)NULL;
ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Filter caps do not completely specify the output format Additional debug info:
gstcapsfilter.c(455): gst_capsfilter_prepare_buf (): /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
Output caps are unfixed: video/x-wmv, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], wmvversion=(int)3, format=(string)WVC1, profile=(string)advanced
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


3. Testing Env:
========================================================================
gst_plugins_vaapi:   (master)506c9e2b5bbc50730b0083598b346b0fcc41ec78
libva:               (master)2339d10b9a39ba4f7173053b9eab8d6a151717a5 
Libva_intel_driver:  (master)2c1bec03889fe759a33c087a7c107ad84bbb72fb

3. Frequency of Occurence:
========================================================================
100%
Comment 1 sreerenj 2016-04-14 09:10:20 UTC
Fei,

(In reply to Fei from comment #0)
> 1. Testing Steps:
> ========================================================================
> gst-launch-1.0 -q filesrc location=/media/HEVC/JVT10.0/$filename ! h265parse
> ! vaapidecode ! vaapipostproc format=i420 ! checksumsink2
> frame-checksum=FALSE file-checksum=TRUE | tail -1 >> file_checksum_vaapi.txt
> 

This is HEVC test case, not vc1 ;)

gst-launch-1.0 filesrc
location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 '!'
video/x-wmv,profile=(string)advanced,' width=176, height=144 '!'
vaapidecode '!' vaapisink sync=false
Comment 2 sreerenj 2016-04-14 09:11:55 UTC
@Victor: This is something you have fixed many times before ;)

Either test case is wrong or we are making same regression again and again.
Could you please have a look?
Comment 3 Fei 2016-04-14 09:50:48 UTC
(In reply to sreerenj from comment #1)
> Fei,
> 
> (In reply to Fei from comment #0)
> > 1. Testing Steps:
> > ========================================================================
> > gst-launch-1.0 -q filesrc location=/media/HEVC/JVT10.0/$filename ! h265parse
> > ! vaapidecode ! vaapipostproc format=i420 ! checksumsink2
> > frame-checksum=FALSE file-checksum=TRUE | tail -1 >> file_checksum_vaapi.txt
> > 
> 
> This is HEVC test case, not vc1 ;)
> 
> gst-launch-1.0 filesrc
> location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 '!'
> video/x-wmv,profile=(string)advanced,' width=176, height=144 '!'
> vaapidecode '!' vaapisink sync=false

Sree, you are right, sorry for duplicated the wrong cmd line.
Comment 4 sreerenj 2016-04-14 14:03:38 UTC
Raising the severity since it preventing all vc1 decode test cases.
Comment 5 Víctor Manuel Jáquez Leal 2016-04-14 15:59:31 UTC
(In reply to Fei from comment #0)
> gst-launch-1.0 filesrc
> location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 '!'
> 'video/x-wmv,profile=(string)advanced,' width=176, height=144 '!'
> vaapidecode '!' vaapisink sync=false 
> libva info: VA-API version 0.39.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_39 
> libva info: va_openDriver() returns 0
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> Got context from element 'pipeline0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)NULL;
> ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Filter caps do not completely specify the output format
> Additional debug info: gstcapsfilter.c(455): gst_capsfilter_prepare_buf (): /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
> Output caps are unfixed: video/x-wmv, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], wmvversion=(int)3, format=(string)WVC1, profile=(string)advanced
> ERROR: pipeline doesn't want to preroll.
> Setting pipeline to NULL ...
> Freeing pipeline ...

Damn vc1parser.

Before you could run this pipeline because vaapidecode was laxer, accepting incomplete sink caps, but I suspect since commit 548528c8 this is not the possible anymore.

Nonetheless the error is quite clear: the pipeline needs to specify the framerate since it has a non-fixed value: 

framerate=(fraction)[ 0/1, 2147483647/1 ]

If you run this pipeline it should work:

gst-launch-1.0 filesrc location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 ! \
  video/x-wmv, profile=advanced, width=176, height=144,framerate=14/1 !  \
  vaapidecode ! vaapisink sync=false
Comment 6 Fei 2016-04-15 05:12:54 UTC
(In reply to Víctor Manuel Jáquez Leal from comment #5)
> (In reply to Fei from comment #0)
> > gst-launch-1.0 filesrc
> > location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 '!'
> > 'video/x-wmv,profile=(string)advanced,' width=176, height=144 '!'
> > vaapidecode '!' vaapisink sync=false 
> > libva info: VA-API version 0.39.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_39 
> > libva info: va_openDriver() returns 0
> > Setting pipeline to PAUSED ...
> > Pipeline is PREROLLING ...
> > Got context from element 'pipeline0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)NULL;
> > ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Filter caps do not completely specify the output format
> > Additional debug info: gstcapsfilter.c(455): gst_capsfilter_prepare_buf (): /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
> > Output caps are unfixed: video/x-wmv, width=(int)176, height=(int)144, framerate=(fraction)[ 0/1, 2147483647/1 ], wmvversion=(int)3, format=(string)WVC1, profile=(string)advanced
> > ERROR: pipeline doesn't want to preroll.
> > Setting pipeline to NULL ...
> > Freeing pipeline ...
> 
> Damn vc1parser.
> 
> Before you could run this pipeline because vaapidecode was laxer, accepting
> incomplete sink caps, but I suspect since commit 548528c8 this is not the
> possible anymore.
> 
> Nonetheless the error is quite clear: the pipeline needs to specify the
> framerate since it has a non-fixed value: 
> 
> framerate=(fraction)[ 0/1, 2147483647/1 ]
> 
> If you run this pipeline it should work:
> 
> gst-launch-1.0 filesrc
> location=/root/media_tools/decoder/bitstreams_vc1/SA00040.vc1 ! \
>   video/x-wmv, profile=advanced, width=176, height=144,framerate=14/1 !  \
>   vaapidecode ! vaapisink sync=false

@Victor, with you cmdline, vc1 decode pass rate back to 47/49. So I will update my test script and close this bug.