GNOME Bugzilla – Bug 792743
glcolorbalance causes decoderbin not to link with vaapih264enc !!
Last modified: 2018-01-21 13:35:22 UTC
If I use below pipeline then I can broadcast to youtube successfully: gst-launch-1.0 filesrc location=Recorded_live_streaming_on__2018_01_20___13_56_33.219076__-0800.flv ! decodebin name=demux ! queue ! videorate ! video/x-raw,framerate=30/1 ! glupload ! glcolorconvert ! gldownload ! video/x-raw ! vaapih264enc dct8x8=true cabac=true rate-control=cbr bitrate=8192 keyframe-period=60 max-bframes=0 ! flvmux name=mux ! rtmpsink sync=true async=true location="rtmp://x.rtmp.youtube.com/XXXXX live=1" demux. ! queue ! progressreport ! audioconvert ! audiorate ! audioresample ! faac bitrate=128000 ! audio/mpeg,mpegversion=4,stream-format=raw ! mux. error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_39 libva info: va_openDriver() returns 0 Setting pipeline to PAUSED ... error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_39 libva info: va_openDriver() returns 0 Pipeline is PREROLLING ... Got context from element 'vaapiencodeh264-0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx1"; Got context from element 'gldownloadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0"; Redistribute latency... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock progressreport0 (00:00:05): 4 / 1984 seconds ( 0.2 %) progressreport0 (00:00:10): 9 / 1984 seconds ( 0.5 %) progressreport0 (00:00:15): 14 / 1984 seconds ( 0.7 %) progressreport0 (00:00:20): 19 / 1984 seconds ( 1.0 %) However, if I use glcolorbalance in this pipeline then it gives me following error and I cannot stream to youtube any more: gst-launch-1.0 filesrc location=Recorded_live_streaming_on__2018_01_20___13_56_33.219076__-0800.flv ! decodebin name=demux ! queue ! videorate ! video/x-raw,framerate=30/1 ! glupload ! glcolorbalance ! glcolorconvert ! gldownload ! video/x-raw ! vaapih264enc dct8x8=true cabac=true rate-control=cbr bitrate=8192 keyframe-period=60 max-bframes=0 ! flvmux name=mux ! rtmpsink sync=true async=true location="rtmp://x.rtmp.youtube.com/XXXXX live=1" demux. ! queue ! progressreport ! audioconvert ! audiorate ! audioresample ! faac bitrate=128000 ! audio/mpeg,mpegversion=4,stream-format=raw ! mux. error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_39 libva info: va_openDriver() returns 0 Setting pipeline to PAUSED ... error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns 0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_0_39 libva info: va_openDriver() returns 0 Pipeline is PREROLLING ... Got context from element 'vaapiencodeh264-0': gst.vaapi.Display=context, gst.vaapi.Display=(GstVaapiDisplay)"\(GstVaapiDisplayGLX\)\ vaapidisplayglx1"; Got context from element 'gldownloadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0"; Redistribute latency... <b><i>WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:demux: Delayed linking failed. Additional debug info: ./grammar.y(510): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstDecodeBin:demux: failed delayed linking some pad of GstDecodeBin named demux to some pad of GstQueue named queue0</i></b> ^Chandling interrupt. Interrupt: Stopping pipeline ... ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ... It seems like glcolorbalanc is causing decodebin not to link with vaapih264enc since it is the only difference between above pipeline. I am new to gstreamer and Can any one tell me what is wrong with 2nd pipeline and why linking is failing ?
Thanks for taking the time to report this. We would like to note that GNOME Bugzilla is not a place to receive help for configuration or preferences issues, but a bug tracking system for errors in the software code. In order to receive help, please bring up your support question in a support forum (for example, the support forum of your distribution) or the mailing list of the project. Thank you for your understanding! p.s. Use gstreamer-devel for support. In this case, you are missing a color converter.