centricular / gstcefsrc Goto Github PK
View Code? Open in Web Editor NEWA simple gstreamer wrapper around Chromium Embedded Framework
A simple gstreamer wrapper around Chromium Embedded Framework
Hi Mathieu,
I have a question of substance to ask you on the CEF demuxer.
Indeed, once the demux done, I transcode separately audio and video before sending it to a live site like facebook, twitch or youtube.
If I use the pipeline that you put on the gitbub page of gstcef:
gst-launch-1.0 cefsrc url = "https://soundcloud.com/platform/sama"! tail! cefdemux name = d \
d.video! video / x-raw! tail! videoconvert! autovideosink \
d. ! audio / x-raw! tail! audioconvert! autoaudiosink async-handling = true
In this pipeline, once the cefsrc module that generates an audio and video stream muxed from a url, we pass it to the demuxer cefdemux, then each stream (audio) ouis (video) is played on a local sink. Until it's perfect.
In my case, once the demuxage done, I have to transcode the audio (to AAC-LC/MPEG4) and the video (to H264) separately before putting it back in flv to a tier like twitch:
gst-launch-1.0 -v cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d \
> d.video ! video/x-raw,format=BGRA,framerate=30/1 ! queue ! videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency ! mux. \
> d. ! queue ! decodebin ! voaacenc bitrate=96000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux. \
> flvmux streamable=true name=mux ! \
> rtmpsink location="rtmp://live-cdg.twitch.tv/app/live_452134949_IbkVFGvmV50qounKaLE1085nOGTt7R"
$ gst-launch-1.0 -v cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d \
> d.video ! video/x-raw,format=BGRA,framerate=30/1 ! queue ! videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency ! mux. \
> d. ! queue ! decodebin ! voaacenc bitrate=96000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux. \
> flvmux streamable=true name=mux ! \
> rtmpsink location="rtmp://live-cdg.twitch.tv/app/live_452134949_IbkVFGvmV50qounKaLE1085nOGTt7R"
Setting pipeline to PAUSED ...
0:00:00.062106389 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.110082790 5887 0x55676a3dd940 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<cefsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstCefSrc:cefsrc0.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCefDemux:d.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCefDemux:d.GstPad:video: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
0:00:00.158992160 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = video/x-h264, codec_data=(buffer)01f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc4480, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high-4:4:4, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
0:00:00.159200006 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
/GstPipeline:pipeline0/GstFlvMux:mux.GstFlvMuxPad:sink_0: caps = video/x-h264, codec_data=(buffer)01f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc4480, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high-4:4:4, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
0:00:00.159225953 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.159244066 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.159265250 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.159282382 5887 0x55676a31f4a0 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
(...)
When I request the generation of the .dot file, I see that I demuxer is detached from the audio part. which generates a stream without sound.
However, if instead of demux.audio I use audiotestsrc, the flow included this time a sound:
gst-launch-1.0 -v cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d d.video ! video/x-raw,format=BGRA,framerate=30/1 ! queue ! videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency ! mux. audiotestsrc ! queue ! audioconvert ! audiorate ! voaacenc bitrate=96000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux. flvmux streamable=true name=mux ! rtmpsink location="rtmp://live-cdg.twitch.tv/app/live_452134949_IbkVFGvmV50qounKaLE1085nOGTt7R"
$ gst-launch-1.0 -v cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d \
> d.video ! video/x-raw,format=BGRA,framerate=30/1 ! queue ! videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency ! mux. \
> audiotestsrc ! queue ! audioconvert ! audiorate ! voaacenc bitrate=96000 ! audio/mpeg ! aacparse ! audio/mpeg, mpegversion=4 ! mux. \
> flvmux streamable=true name=mux ! \
> rtmpsink location="rtmp://live-cdg.twitch.tv/app/live_452134949_IbkVFGvmV50qounKaLE1085nOGTt7R"
Setting pipeline to PAUSED ...
0:00:00.066099343 5539 0x5590542da320 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.066291012 5539 0x559054315e30 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<audiotestsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.066381147 5539 0x5590542da320 WARN aggregator gstaggregator.c:1717:gst_aggregator_query_latency_unlocked:<mux> Latency query failed
0:00:00.110671359 5539 0x5590543d1630 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<cefsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstAudioTestSrc:audiotestsrc0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstQueue:queue2.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstQueue:queue2.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstAudioRate:audiorate0.GstPad:src: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstVoAacEnc:voaacenc0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstAudioRate:audiorate0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstAudioConvert:audioconvert0.GstPad:sink: caps = audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1
/GstPipeline:pipeline0/GstVoAacEnc:voaacenc0.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208, framed=(boolean)true
/GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:src: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208, framed=(boolean)true
/GstPipeline:pipeline0/GstFlvMux:mux.GstFlvMuxPad:sink_1: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208, framed=(boolean)true
/GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208, framed=(boolean)true
/GstPipeline:pipeline0/GstAacParse:aacparse0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = audio/mpeg, mpegversion=(int)4, channels=(int)1, rate=(int)44100, level=(string)2, base-profile=(string)lc, profile=(string)lc, stream-format=(string)raw, codec_data=(buffer)1208
/GstPipeline:pipeline0/GstCefSrc:cefsrc0.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCefDemux:d.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCefDemux:d.GstPad:video: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:src: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoScale:videoscale0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoRate:videorate0.GstPad:sink: caps = video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, format=(string)Y444
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)BGRA, width=(int)1280, height=(int)720, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:src: caps = video/x-h264, codec_data=(buffer)01f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc4480, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high-4:4:4, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
/GstPipeline:pipeline0/GstFlvMux:mux.GstFlvMuxPad:sink_0: caps = video/x-h264, codec_data=(buffer)01f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc4480, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high-4:4:4, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
0:00:00.157024237 5539 0x5590542da320 FIXME basesink gstbasesink.c:3145:gst_base_sink_default_event:<rtmpsink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
/GstPipeline:pipeline0/GstFlvMux:mux.GstAggregatorPad:src: caps = video/x-flv
/GstPipeline:pipeline0/GstRTMPSink:rtmpsink0.GstPad:sink: caps = video/x-flv
/GstPipeline:pipeline0/GstFlvMux:mux.GstAggregatorPad:src: caps = video/x-flv, streamheader=(buffer)< 464c5601050000000900000000, 1200012c0000000000000002000a6f6e4d65746144617461080000000b000c766964656f636f646563696400401c000000000000000577696474680040940000000000000006686569676874004086800000000000000c417370656374526174696f58003ff0000000000000000c417370656374526174696f59003ff000000000000000096672616d657261746500403e000000000000000d766964656f64617461726174650040a0000000000000000c617564696f636f6465636964004024000000000000000d617564696f6461746172617465000000000000000000000f6d6574616461746163726561746f7202001a4753747265616d657220312e31342e3520464c56206d75786572000c6372656174696f6e64617465020017467269204e6f7620382030383a35343a3133203230313900000900000137, 0900003100000000000000170000000001f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc44800000003c, 0800000400000000000000af0012080000000f >
/GstPipeline:pipeline0/GstRTMPSink:rtmpsink0.GstPad:sink: caps = video/x-flv, streamheader=(buffer)< 464c5601050000000900000000, 1200012c0000000000000002000a6f6e4d65746144617461080000000b000c766964656f636f646563696400401c000000000000000577696474680040940000000000000006686569676874004086800000000000000c417370656374526174696f58003ff0000000000000000c417370656374526174696f59003ff000000000000000096672616d657261746500403e000000000000000d766964656f64617461726174650040a0000000000000000c617564696f636f6465636964004024000000000000000d617564696f6461746172617465000000000000000000000f6d6574616461746163726561746f7202001a4753747265616d657220312e31342e3520464c56206d75786572000c6372656174696f6e64617465020017467269204e6f7620382030383a35343a3133203230313900000900000137, 0900003100000000000000170000000001f4001fffe1001c67f4001f91964014016ec05a808080a0000003002000000791e3064901000568ebcc44800000003c, 0800000400000000000000af0012080000000f >
0:00:01.732939317 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_1> Got backwards dts! (0:00:00.023000000 < 0:00:00.033000000)
0:00:01.733435252 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_1> Got backwards dts! (0:00:00.069000000 < 0:00:00.100000000)
0:00:01.733623093 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_1> Got backwards dts! (0:00:00.092000000 < 0:00:00.100000000)
0:00:01.759836701 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.133000000 < 0:00:01.578000000)
0:00:01.783009898 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.166000000 < 0:00:01.602000000)
0:00:01.783047479 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.200000000 < 0:00:01.602000000)
0:00:01.806704207 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.233000000 < 0:00:01.625000000)
0:00:01.829652540 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.266000000 < 0:00:01.648000000)
0:00:01.829732890 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.300000000 < 0:00:01.648000000)
0:00:01.829763609 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.333000000 < 0:00:01.648000000)
0:00:01.852771316 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.366000000 < 0:00:01.671000000)
0:00:01.852830769 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.400000000 < 0:00:01.671000000)
0:00:01.875917725 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.433000000 < 0:00:01.695000000)
0:00:01.875962499 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.466000000 < 0:00:01.695000000)
0:00:01.875974198 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.500000000 < 0:00:01.695000000)
0:00:01.899238758 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.533000000 < 0:00:01.718000000)
0:00:01.899321029 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.566000000 < 0:00:01.718000000)
0:00:01.922437932 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.600000000 < 0:00:01.741000000)
0:00:01.922577644 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.633000000 < 0:00:01.741000000)
0:00:01.922593249 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.666000000 < 0:00:01.741000000)
0:00:01.945720980 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.700000000 < 0:00:01.764000000)
0:00:01.945907338 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.733000000 < 0:00:01.764000000)
0:00:01.968746270 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.766000000 < 0:00:01.787000000)
0:00:01.968778268 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.800000000 < 0:00:01.787000000)
0:00:01.968790102 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.833000000 < 0:00:01.787000000)
0:00:01.991975555 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.866000000 < 0:00:01.811000000)
0:00:01.992023448 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.900000000 < 0:00:01.811000000)
0:00:01.992038739 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.933000000 < 0:00:01.811000000)
0:00:02.015338490 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:00.966000000 < 0:00:01.834000000)
0:00:02.015400084 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.000000000 < 0:00:01.834000000)
0:00:02.038403783 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.033000000 < 0:00:01.857000000)
0:00:02.038435279 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.066000000 < 0:00:01.857000000)
0:00:02.038446200 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.100000000 < 0:00:01.857000000)
0:00:02.061748276 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.133000000 < 0:00:01.880000000)
0:00:02.061826128 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.166000000 < 0:00:01.880000000)
0:00:02.084934081 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.200000000 < 0:00:01.904000000)
0:00:02.084967203 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.233000000 < 0:00:01.904000000)
0:00:02.108097245 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.266000000 < 0:00:01.927000000)
0:00:02.108128019 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.300000000 < 0:00:01.927000000)
0:00:02.108141979 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.333000000 < 0:00:01.927000000)
0:00:02.131333070 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.366000000 < 0:00:01.950000000)
0:00:02.131382255 5539 0x5590542da320 WARN flvmux gstflvmux.c:1082:gst_flv_mux_buffer_to_tag_internal:<mux:sink_0> Got backwards dts! (0:00:01.400000000 < 0:00:01.950000000)
(...)
For me, the structure of my pipeline is correct but when I want to transcode the sound but also the video out from demux to give it to a muxer and although it does not work because I have only the video without any sound.
Would you have an idea that could explain why I do this behavior with your demuxer? Indeed, if I transpose with another demuxer it works too. I only have this problem with your demuxer.
I think it could be an issue of the cefdemux.
Thank you in advance for your return.
BR
Thierry
The following PR broke the x64 Linux build: #67
[ 96%] Building CXX object CMakeFiles/gstcefsubprocess.dir/gstcefsubprocess.cc.o
make[2]: *** No rule to make target 'libcef_lib-NOTFOUND', needed by 'Release/gstcefsubprocess'. Stop.
make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/gstcefsubprocess.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
Reverting to the prior commit fixes the build.
Is it possible to enable the sandbox?
Hey,
I wanted to say big thank you for this project.
On the side note. I'was building pipeline with decklink video and audio sinks which are taken from the cefsrc plugin, but I found an issue with audio caps, in the plugin inspect and in the dot fiels I see format to be F32BE, but when I actually add it in the caps it shows me that it failed to negotiate.
Some code:
cef_audio_filter.set_property("caps", &gst::Caps::builder("audio/x-raw")
// here is a bug with invalid format, shows that it is F32BE, but when added in the caps fails to negotiate
// .field("format", &"F32BE")
.field("rate", &44100)
.field("channels", &2)
.field("layout", &"interleaved")
.build()
).unwrap();
Some logs:
0:00:05.547767871 903835 0x561f142ca180 WARN basesrc gstbasesrc.c:3072:gst_base_src_loop:<cefsrc0> error: Internal data stream error.
0:00:05.547796675 903835 0x561f142ca180 WARN basesrc gstbasesrc.c:3072:gst_base_src_loop:<cefsrc0> error: streaming stopped, reason not-negotiated (-4)
Error received Some("/GstPipeline:pipeline0/GstCefSrc:cefsrc0"): Internal data stream error.
If I don't add the field, it works fine.
Test pipeline:
cefbin name=cef cefsrc::url="https://soundcloud.com/platform/sama" \
audiotestsrc do-timestamp=true is-live=true volume=0.0 ! audiomixer name=mixer \
mixer. ! audioconvert ! queue ! matroskamux streamable=true name=muxer ! queue ! fakesink sync=1 \
cef.audio ! queue ! audioconvert ! mixer. \
cef.video ! video/x-raw, width=1920, height=1080 ! videoconvert ! queue ! muxer.
When I launch this pipeline with gst-launch-1.0 it stuck at random time positions. Here's gdb backtrace when it happens:
[New LWP 10188]
[New LWP 10189]
[New LWP 10190]
[New LWP 10191]
[New LWP 10192]
[New LWP 10193]
[New LWP 10194]
[New LWP 10195]
[New LWP 10196]
[New LWP 10199]
[New LWP 10200]
[New LWP 10202]
[New LWP 10204]
[New LWP 10205]
[New LWP 10207]
[New LWP 10208]
[New LWP 10209]
[New LWP 10210]
[New LWP 10214]
[New LWP 10215]
[New LWP 10224]
[New LWP 10236]
[New LWP 10280]
[New LWP 10288]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
0x0000ffff97adbc78 in __GI___poll (fds=0xaaab02ed7770, nfds=2, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
41 ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
Thread 25 (Thread 0xffff1e00b980 (LWP 10288) "AudioInputDevic"):
#0 __GI___libc_read (nbytes=4, buf=0xffff1e00b024, fd=<optimized out>) at ../sysdeps/unix/sysv/linux/read.c:26
#1 __GI___libc_read (fd=<optimized out>, buf=0xffff1e00b024, nbytes=4) at ../sysdeps/unix/sysv/linux/read.c:24
#2 0x0000ffff9d38cfa8 in base::ReadFromFD(int, char*, unsigned long) () at ../../base/files/file_util_posix.cc:462
#3 0x0000ffff9d393d94 [PAC] in Receive() () at ../../base/sync_socket_posix.cc:107
#4 0x0000ffff9a93649c [PAC] in ThreadMain() () at ../../media/audio/audio_device_thread.cc:84
#5 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#6 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#7 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 24 (Thread 0xffff1e81b980 (LWP 10280) "BatteryStatusNo"):
#0 0x0000ffff97ae5ebc in __GI_epoll_pwait (epfd=<optimized out>, events=0xffff08002360, maxevents=32, timeout=-1, set=0x0) at ../sysdeps/unix/sysv/linux/epoll_pwait.c:40
#1 0x0000ffff9d4cd324 in epoll_dispatch () at ../../third_party/libevent/epoll.c:198
#2 0x0000ffff9d4caddc [PAC] in event_base_loop () at ../../third_party/libevent/event.c:512
#3 0x0000ffff9d3a2470 [PAC] in Run() () at ../../base/message_loop/message_pump_libevent.cc:356
#4 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#5 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#6 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#7 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#8 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#9 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#10 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 23 (Thread 0xffff51fbe980 (LWP 10236) "gmain"):
#0 0x0000ffff97adbc78 in __GI___poll (fds=0xaaab02ecb610, nfds=1, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff97cdb738 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff97c82f14 in g_main_context_iteration () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#3 0x0000ffff97c82f6c in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#4 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#5 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#6 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 22 (Thread 0xffff527ce980 (LWP 10224) "cefsrc:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff9493935c in gst_queue_chain_buffer_or_list (pad=0xaaab02e86ea0 [GstPad|sink], parent=0xaaab02e8e420 [GstObject|audio-queue], obj=0xffff7c01bc60, is_list=0) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1251
#3 0x0000ffff94939a80 in gst_queue_chain (pad=0xaaab02e86ea0 [GstPad|sink], parent=0xaaab02e8e420 [GstObject|audio-queue], buffer=0xffff7c01bc60) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1349
#4 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02e86ea0 [GstPad|sink], type=4112, data=0xffff7c01bc60) at ../subprojects/gstreamer/gst/gstpad.c:4447
#5 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e867b0 [GstPad|audio], type=4112, data=0xffff7c01bc60) at ../subprojects/gstreamer/gst/gstpad.c:4711
#6 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e867b0 [GstPad|audio], buffer=0xffff7c01bc60) at ../subprojects/gstreamer/gst/gstpad.c:4830
#7 0x0000ffff94d803f4 in gst_cef_demux_push_audio_buffer(_GstBuffer**, unsigned int, AudioPushData*) () at /usr/cef/libgstcef.so
#8 0x0000ffff97ddb0c4 in gst_buffer_list_foreach (list=0xffff0c006570, func=0xffff94d803b0 <gst_cef_demux_push_audio_buffer(_GstBuffer**, unsigned int, AudioPushData*)>, user_data=0xffff527cdc18) at ../subprojects/gstreamer/gst/gstbufferlist.c:280
#9 0x0000ffff94d80790 in gst_cef_demux_chain(_GstPad*, _GstObject*, _GstBuffer*) () at /usr/cef/libgstcef.so
#10 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02e86310 [GstPad|sink], type=4112, data=0xffff8400a5a0) at ../subprojects/gstreamer/gst/gstpad.c:4447
#11 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e860c0 [GstPad|src], type=4112, data=0xffff8400a5a0) at ../subprojects/gstreamer/gst/gstpad.c:4711
#12 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e860c0 [GstPad|src], buffer=0xffff8400a5a0) at ../subprojects/gstreamer/gst/gstpad.c:4830
#13 0x0000ffff94b291d8 in gst_base_src_loop (pad=0xaaab02e860c0 [GstPad|src]) at ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c:3030
#14 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed4830 [GstTask|cefsrc:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#15 0x0000ffff97e802bc in default_func (tdata=0xaaab02e7ae20, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#16 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#17 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#18 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#19 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 21 (Thread 0xffff52fde980 (LWP 10215) "ThreadPoolSingl"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff52fdde40) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff52fdde40) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff52fdde40, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff52fddde8, cond=0xffff52fdde18) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff52fdde18, mutex=0xffff52fddde8) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9d394b0c [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:212
#7 0x0000ffff9d36c224 [PAC] in base::internal::WorkerThread::Delegate::WaitForWork(base::WaitableEvent*) () at ../../base/task/thread_pool/worker_thread.cc:132
#8 0x0000ffff9d36ccb4 [PAC] in RunWorker() () at ../../base/task/thread_pool/worker_thread.cc:439
#9 0x0000ffff9d36c94c [PAC] in base::internal::WorkerThread::RunSharedWorker() () at ../../base/task/thread_pool/worker_thread.cc:345
#10 0x0000ffff9d36c834 [PAC] in ThreadMain() () at ../../base/task/thread_pool/worker_thread.cc:318
#11 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#12 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 20 (Thread 0xffff537ee980 (LWP 10214) "CacheThread_Blo"):
#0 0x0000ffff97ae5ebc in __GI_epoll_pwait (epfd=<optimized out>, events=0xffff28002360, maxevents=32, timeout=30000, set=0x0) at ../sysdeps/unix/sysv/linux/epoll_pwait.c:40
#1 0x0000ffff9d4cd324 in epoll_dispatch () at ../../third_party/libevent/epoll.c:198
#2 0x0000ffff9d4caddc [PAC] in event_base_loop () at ../../third_party/libevent/event.c:512
#3 0x0000ffff9d3a2594 [PAC] in Run() () at ../../base/message_loop/message_pump_libevent.cc:356
#4 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#5 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#6 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#7 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#8 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#9 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#10 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 19 (Thread 0xffff58f9e980 (LWP 10210) "VideoCaptureThr"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff58f9dd20) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff58f9dd20) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff58f9dd20, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff58f9dcc8, cond=0xffff58f9dcf8) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff58f9dcf8, mutex=0xffff58f9dcc8) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9d394b0c [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:212
#7 0x0000ffff9d394800 [PAC] in base::WaitableEvent::Wait() () at ../../base/synchronization/waitable_event_posix.cc:158
#8 0x0000ffff9d30a438 [PAC] in Run() () at ../../base/message_loop/message_pump_default.cc:55
#9 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#10 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#11 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#12 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#13 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#14 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#15 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 18 (Thread 0xffff597ae980 (LWP 10209) "ThreadPoolSingl"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff597ade40) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff597ade40) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff597ade40, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff597adde8, cond=0xffff597ade18) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff597ade18, mutex=0xffff597adde8) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9d394b0c [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:212
#7 0x0000ffff9d36c224 [PAC] in base::internal::WorkerThread::Delegate::WaitForWork(base::WaitableEvent*) () at ../../base/task/thread_pool/worker_thread.cc:132
#8 0x0000ffff9d36ccb4 [PAC] in RunWorker() () at ../../base/task/thread_pool/worker_thread.cc:439
#9 0x0000ffff9d36c980 [PAC] in base::internal::WorkerThread::RunDedicatedWorker() () at ../../base/task/thread_pool/worker_thread.cc:355
#10 0x0000ffff9d36c828 [PAC] in ThreadMain() () at ../../base/task/thread_pool/worker_thread.cc:321
#11 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#12 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 17 (Thread 0xffff59fbe980 (LWP 10208) "CompositorTileW"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff700ae704) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff700ae704) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff700ae704, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff700ae668, cond=0xffff700ae6d8) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff700ae6d8, mutex=0xffff700ae668) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9e96ab14 [PAC] in non-virtual thunk to cc::SingleThreadTaskGraphRunner::Run() () at ../../cc/raster/single_thread_task_graph_runner.cc:129
#7 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#8 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#9 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 16 (Thread 0xffff5a7ce980 (LWP 10207) "inotify_reader"):
#0 0x0000ffff97adbc78 in __GI___poll (fds=0xffff5a7cdfc0, nfds=1, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff9d39c9f8 in ThreadMain() () at ../../base/files/file_path_watcher_inotify.cc:295
#2 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#3 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#4 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 15 (Thread 0xffff5b7ee980 (LWP 10205) "ThreadPoolSingl"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff5b7ede40) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff5b7ede40) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff5b7ede40, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff5b7edde8, cond=0xffff5b7ede18) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff5b7ede18, mutex=0xffff5b7edde8) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9d394b0c [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:212
#7 0x0000ffff9d36c224 [PAC] in base::internal::WorkerThread::Delegate::WaitForWork(base::WaitableEvent*) () at ../../base/task/thread_pool/worker_thread.cc:132
#8 0x0000ffff9d36ccb4 [PAC] in RunWorker() () at ../../base/task/thread_pool/worker_thread.cc:439
#9 0x0000ffff9d36c94c [PAC] in base::internal::WorkerThread::RunSharedWorker() () at ../../base/task/thread_pool/worker_thread.cc:345
#10 0x0000ffff9d36c834 [PAC] in ThreadMain() () at ../../base/task/thread_pool/worker_thread.cc:318
#11 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#12 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 14 (Thread 0xffff53ffe980 (LWP 10204) "MemoryInfra"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0xffff53ffdd20) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0x0, clockid=0, expected=0, futex_word=0xffff53ffdd20) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff53ffdd20, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7c8fc in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0xffff53ffdcc8, cond=0xffff53ffdcf8) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_wait (cond=0xffff53ffdcf8, mutex=0xffff53ffdcc8) at ./nptl/pthread_cond_wait.c:627
#5 0x0000ffff9d394224 in Wait() () at ../../base/synchronization/condition_variable_posix.cc:79
#6 0x0000ffff9d394b0c [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:212
#7 0x0000ffff9d394800 [PAC] in base::WaitableEvent::Wait() () at ../../base/synchronization/waitable_event_posix.cc:158
#8 0x0000ffff9d30a438 [PAC] in Run() () at ../../base/message_loop/message_pump_default.cc:55
#9 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#10 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#11 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#12 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#13 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#14 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#15 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 13 (Thread 0xffff80eb5980 (LWP 10202) "Chrome_IOThread"):
#0 0x0000ffff97ae5ebc in __GI_epoll_pwait (epfd=<optimized out>, events=0xffff54002360, maxevents=32, timeout=18139, set=0x0) at ../sysdeps/unix/sysv/linux/epoll_pwait.c:40
#1 0x0000ffff9d4cd324 in epoll_dispatch () at ../../third_party/libevent/epoll.c:198
#2 0x0000ffff9d4caddc [PAC] in event_base_loop () at ../../third_party/libevent/event.c:512
#3 0x0000ffff9d3a2594 [PAC] in Run() () at ../../base/message_loop/message_pump_libevent.cc:356
#4 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#5 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#6 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#7 0x0000ffff9b38cfc0 [PAC] in content::BrowserProcessIOThread::IOThreadRun(base::RunLoop*) () at ../../content/browser/browser_process_io_thread.cc:119
#8 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#9 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#10 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#11 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 12 (Thread 0xffff81ed5980 (LWP 10200) "ThreadPoolForeg"):
#0 __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0xffff81ed4ce0, op=137, expected=0, futex_word=0xffff81ed4e40) at ./nptl/futex-internal.c:57
#1 __futex_abstimed_wait_common (cancel=true, private=0, abstime=0xffff81ed4ce0, clockid=-1750622760, expected=0, futex_word=0xffff81ed4e40) at ./nptl/futex-internal.c:87
#2 __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0xffff81ed4e40, expected=expected@entry=0, clockid=clockid@entry=1, abstime=abstime@entry=0xffff81ed4ce0, private=private@entry=0) at ./nptl/futex-internal.c:139
#3 0x0000ffff97a7cc10 in __pthread_cond_wait_common (abstime=0xffff81ed4ce0, clockid=1, mutex=0xffff81ed4de8, cond=0xffff81ed4e18) at ./nptl/pthread_cond_wait.c:503
#4 ___pthread_cond_timedwait64 (cond=0xffff81ed4e18, mutex=0xffff81ed4de8, abstime=0xffff81ed4ce0) at ./nptl/pthread_cond_wait.c:652
#5 0x0000ffff9d39438c in TimedWait() () at ../../base/synchronization/condition_variable_posix.cc:132
#6 0x0000ffff9d394b20 [PAC] in TimedWait() () at ../../base/synchronization/waitable_event_posix.cc:214
#7 0x0000ffff9d36c224 [PAC] in base::internal::WorkerThread::Delegate::WaitForWork(base::WaitableEvent*) () at ../../base/task/thread_pool/worker_thread.cc:132
#8 0x0000ffff9d36ccb4 [PAC] in RunWorker() () at ../../base/task/thread_pool/worker_thread.cc:439
#9 0x0000ffff9d36c918 [PAC] in base::internal::WorkerThread::RunPooledWorker() () at ../../base/task/thread_pool/worker_thread.cc:335
#10 0x0000ffff9d36c7ec [PAC] in ThreadMain() () at ../../base/task/thread_pool/worker_thread.cc:315
#11 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#12 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 11 (Thread 0xffff826e5980 (LWP 10199) "ThreadPoolServi"):
#0 0x0000ffff97ae5ebc in __GI_epoll_pwait (epfd=<optimized out>, events=0xffff68002390, maxevents=32, timeout=-1, set=0x0) at ../sysdeps/unix/sysv/linux/epoll_pwait.c:40
#1 0x0000ffff9d4cd324 in epoll_dispatch () at ../../third_party/libevent/epoll.c:198
#2 0x0000ffff9d4caddc [PAC] in event_base_loop () at ../../third_party/libevent/event.c:512
#3 0x0000ffff9d3a2470 [PAC] in Run() () at ../../base/message_loop/message_pump_libevent.cc:356
#4 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#5 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#6 0x0000ffff9d3754cc [PAC] in base::Thread::Run(base::RunLoop*) () at ../../base/threading/thread.cc:337
#7 0x0000ffff9d3650e8 [PAC] in base::internal::ServiceThread::Run(base::RunLoop*) () at ../../base/task/thread_pool/service_thread.cc:15
#8 0x0000ffff9d375654 [PAC] in ThreadMain() () at ../../base/threading/thread.cc:408
#9 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#10 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#11 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 10 (Thread 0xffff82ef5980 (LWP 10196) "sandbox_ipc_thr"):
#0 0x0000ffff97adbc78 in __GI___poll (fds=0xffff82ef4ee0, nfds=2, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff9b8e5ab0 in Run() () at ../../content/browser/sandbox_ipc_linux.cc:46
#2 0x0000ffff9d39834c [PAC] in ThreadFunc() () at ../../base/threading/platform_thread_posix.cc:101
#3 0x0000ffff97a7d5c8 [PAC] in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#4 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 9 (Thread 0xffff90ede980 (LWP 10195) "CrBrowserMain"):
#0 0x0000ffff97adbc78 in __GI___poll (fds=0xffff70189930, nfds=3, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff97cdb738 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff97c82f14 in g_main_context_iteration () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#3 0x0000ffff9d30a824 in Run() () at ../../base/message_loop/message_pump_glib.cc:400
#4 0x0000ffff9d359354 [PAC] in Run() () at ../../base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:577
#5 0x0000ffff9d32a738 [PAC] in Run() () at ../../base/run_loop.cc:141
#6 0x0000ffff9a07cdd8 [PAC] in RunMessageLoop() () at ../../cef/libcef/browser/main_runner.cc:281
#7 0x0000ffff94d7e784 [PAC] in run_cef(_GstCefSrc*) () at /usr/cef/libgstcef.so
#8 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#9 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#10 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 8 (Thread 0xffff916ee980 (LWP 10194) "audio-queue:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff94aefb58 in gst_aggregator_pad_chain_internal (self=0xaaab02e9c1d0 [GstAggregator|mixer], aggpad=0xaaab02eca8b0 [GstAggregatorPad|sink_1], buffer=0xffff74012b40, head=1) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:3079
#3 0x0000ffff94af03c8 in gst_aggregator_pad_chain (pad=0xaaab02eca8b0 [GstPad|sink_1], object=0xaaab02e9c1d0 [GstObject|mixer], buffer=0xffff74012b40) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:3159
#4 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02eca8b0 [GstPad|sink_1], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4447
#5 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02ea4d50 [GstPad|src], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4711
#6 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02ea4d50 [GstPad|src], buffer=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4830
#7 0x0000ffff94b332c0 in gst_base_transform_chain (pad=0xaaab02ea4b00 [GstPad|sink], parent=0xaaab02eb9e20 [GstObject|audioconvert1], buffer=0xffff74012b40) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:2377
#8 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02ea4b00 [GstPad|sink], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4447
#9 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e7e2c0 [GstPad|audio], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4711
#10 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e7e2c0 [GstPad|audio], buffer=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4830
#11 0x0000ffff97e10e2c in gst_proxy_pad_chain_default (pad=0xaaab02e80320 [GstPad|proxypad1], parent=0xaaab02e7e2c0 [GstObject|audio], buffer=0xffff74012b40) at ../subprojects/gstreamer/gst/gstghostpad.c:127
#12 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02e80320 [GstPad|proxypad1], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4447
#13 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e870f0 [GstPad|src], type=4112, data=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4711
#14 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e870f0 [GstPad|src], buffer=0xffff74012b40) at ../subprojects/gstreamer/gst/gstpad.c:4830
#15 0x0000ffff94939bfc in gst_queue_push_one (queue=0xaaab02e8e420 [GstQueue|audio-queue]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1388
#16 0x0000ffff9493a9d0 in gst_queue_loop (pad=0xaaab02e870f0 [GstPad|src]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1541
#17 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed4710 [GstTask|audio-queue:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#18 0x0000ffff97e802bc in default_func (tdata=0xaaab02ea0e60, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#19 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#20 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#21 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#22 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 7 (Thread 0xffff91efe980 (LWP 10193) "video-queue:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff9493a5a8 in gst_queue_loop (pad=0xaaab02e86c50 [GstPad|src]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1529
#3 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed45f0 [GstTask|video-queue:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#4 0x0000ffff97e802bc in default_func (tdata=0xaaab02e83120, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#5 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#6 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#7 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#8 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 6 (Thread 0xffff9270e980 (LWP 10192) "audiotestsrc0:s"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff94aefb58 in gst_aggregator_pad_chain_internal (self=0xaaab02e9c1d0 [GstAggregator|mixer], aggpad=0xaaab02ec5230 [GstAggregatorPad|sink_0], buffer=0xffff74013000, head=1) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:3079
#3 0x0000ffff94af03c8 in gst_aggregator_pad_chain (pad=0xaaab02ec5230 [GstPad|sink_0], object=0xaaab02e9c1d0 [GstObject|mixer], buffer=0xffff74013000) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:3159
#4 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02ec5230 [GstPad|sink_0], type=4112, data=0xffff74013000) at ../subprojects/gstreamer/gst/gstpad.c:4447
#5 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e87340 [GstPad|src], type=4112, data=0xffff74013000) at ../subprojects/gstreamer/gst/gstpad.c:4711
#6 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e87340 [GstPad|src], buffer=0xffff74013000) at ../subprojects/gstreamer/gst/gstpad.c:4830
#7 0x0000ffff94b291d8 in gst_base_src_loop (pad=0xaaab02e87340 [GstPad|src]) at ../subprojects/gstreamer/libs/gst/base/gstbasesrc.c:3030
#8 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed44d0 [GstTask|audiotestsrc0:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#9 0x0000ffff97e802bc in default_func (tdata=0xaaab02e83000, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#10 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#11 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#12 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 5 (Thread 0xffff92f1e980 (LWP 10191) "mixer:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff9493935c in gst_queue_chain_buffer_or_list (pad=0xaaab02e87a30 [GstPad|sink], parent=0xaaab02e8e720 [GstObject|queue0], obj=0xffff0c0aec60, is_list=0) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1251
#3 0x0000ffff94939a80 in gst_queue_chain (pad=0xaaab02e87a30 [GstPad|sink], parent=0xaaab02e8e720 [GstObject|queue0], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1349
#4 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02e87a30 [GstPad|sink], type=4112, data=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4447
#5 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e877e0 [GstPad|src], type=4112, data=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4711
#6 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e877e0 [GstPad|src], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4830
#7 0x0000ffff94b332c0 in gst_base_transform_chain (pad=0xaaab02e87590 [GstPad|sink], parent=0xaaab02ea1960 [GstObject|audioconvert0], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:2377
#8 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02e87590 [GstPad|sink], type=4112, data=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4447
#9 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e9e440 [GstPad|src], type=4112, data=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4711
#10 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e9e440 [GstPad|src], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/gst/gstpad.c:4830
#11 0x0000ffff94ae45c0 in gst_aggregator_default_finish_buffer (self=0xaaab02e9c1d0 [GstAggregator|mixer], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:688
#12 0x0000ffff94ae46c0 in gst_aggregator_finish_buffer (aggregator=0xaaab02e9c1d0 [GstAggregator|mixer], buffer=0xffff0c0aec60) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:714
#13 0x0000ffff94bbe448 in gst_audio_aggregator_aggregate (agg=0xaaab02e9c1d0 [GstAggregator|mixer], timeout=0) at ../subprojects/gst-plugins-base/gst-libs/gst/audio/gstaudioaggregator.c:2549
#14 0x0000ffff94ae7ed8 in gst_aggregator_aggregate_func (self=0xaaab02e9c1d0 [GstAggregator|mixer]) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:1389
#15 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed43b0 [GstTask|mixer:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#16 0x0000ffff97e802bc in default_func (tdata=0xaaab02ea0a80, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#17 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#18 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#19 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#20 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 4 (Thread 0xffff9372e980 (LWP 10190) "queue0:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff94b45934 in gst_collect_pads_chain (pad=0xaaab02ea58e0 [GstPad|audio_0], parent=0xaaab02eb2040 [GstObject|muxer], buffer=0xffff7800e6c0) at ../subprojects/gstreamer/libs/gst/base/gstcollectpads.c:2244
#3 0x0000ffff97e37f28 in gst_pad_chain_data_unchecked (pad=0xaaab02ea58e0 [GstPad|audio_0], type=4112, data=0xffff7800e6c0) at ../subprojects/gstreamer/gst/gstpad.c:4447
#4 0x0000ffff97e38d18 in gst_pad_push_data (pad=0xaaab02e87c80 [GstPad|src], type=4112, data=0xffff7800e6c0) at ../subprojects/gstreamer/gst/gstpad.c:4711
#5 0x0000ffff97e39480 in gst_pad_push (pad=0xaaab02e87c80 [GstPad|src], buffer=0xffff7800e6c0) at ../subprojects/gstreamer/gst/gstpad.c:4830
#6 0x0000ffff94939bfc in gst_queue_push_one (queue=0xaaab02e8e720 [GstQueue|queue0]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1388
#7 0x0000ffff9493a9d0 in gst_queue_loop (pad=0xaaab02e87c80 [GstPad|src]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1541
#8 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed4170 [GstTask|queue0:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#9 0x0000ffff97e802bc in default_func (tdata=0xaaab02ea0e80, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#10 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#11 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#12 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#13 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 3 (Thread 0xffff93f3e980 (LWP 10189) "queue1:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff9493a5a8 in gst_queue_loop (pad=0xaaab02ea4660 [GstPad|src]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1529
#3 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed4050 [GstTask|queue1:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#4 0x0000ffff97e802bc in default_func (tdata=0xaaab02ea0ab0, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#5 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#6 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#7 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#8 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 2 (Thread 0xffff9474e980 (LWP 10188) "queue2:src"):
#0 syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1 0x0000ffff97cd571c in g_cond_wait () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff9493a5a8 in gst_queue_loop (pad=0xaaab02ea5690 [GstPad|src]) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1529
#3 0x0000ffff97e7ed5c in gst_task_func (task=0xaaab02ed4290 [GstTask|queue2:src]) at ../subprojects/gstreamer/gst/gsttask.c:384
#4 0x0000ffff97e802bc in default_func (tdata=0xaaab02ea0c60, pool=0xaaab02ed2490 [GstTaskPool|taskpool0]) at ../subprojects/gstreamer/gst/gsttaskpool.c:70
#5 0x0000ffff97cb8678 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#6 0x0000ffff97cb59a0 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#7 0x0000ffff97a7d5c8 in start_thread (arg=0x0) at ./nptl/pthread_create.c:442
#8 0x0000ffff97ae5d1c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:79
Thread 1 (Thread 0xffff979fd040 (LWP 10187) "gst-launch-1.0"):
#0 0x0000ffff97adbc78 in __GI___poll (fds=0xaaab02ed7770, nfds=2, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:41
#1 0x0000ffff97cdb738 in () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#2 0x0000ffff97c85024 in g_main_loop_run () at /lib/aarch64-linux-gnu/libglib-2.0.so.0
#3 0x0000aaaae831707c in main (argc=41, argv=0xffffcaa813f8) at ../subprojects/gstreamer/tools/gst-launch.c:1305
[Inferior 1 (process 10187) detached]
Can't reproduce the issue when GST_DEBUG=5 or higher, so can't provide detailed logs.
How could we use a build of CEF that has all codecs, like H264?
I noticed this commit changin remote port numbers, but is there one to tell CEF to use a different Chromium build? Or has CEF to be built completely from scratch?
Hi Mathieu,
I'm Ghizlane, and I just discovered the module gstcef that you come to write and published in open source under github.
It's really great because it's a project that will help me a lot to get the audio but also the video I want to send to an RTSP server.
In rtsp the audio and the video are not muxed but a SDP declares the audio and video flows in a first exchanges (always in RTSP).
Then each one is retransmitted separately by RTP.
Starting from the pipeline that you propose for the test, I tried several variants and now I have the following pipeline:
gst-launch-1.0 cefsrc url="file:///......" ! queue max-size-buffers = 500 ! cefdemux name=d d.video ! video/x-raw,format=BGRA,framerate=30/1 ! videoconvert ! videorate max-rate = 2500 ! videoscale ! x264enc bitrate = 2500 tune = zerolatency speed-preset = superfast key-int-max = 60 ! rtspclientsink debug=1 latency=0 stream-name=”......” location=rtsp://...... d.audio ! audio/x-raw channels = 1, rate = 48000 ! queue max-size-buffers = 500 ! audioconvert ! audiorate! voaacenc bitrate = 96000 ! rtspclientsink debug=1 latency=0 stream-name=”.......” location=rtsp://.......
You will recognize the beginning; but the end has been cut in half for each Audio and Video stream. Indeed, I use your cefdemux module because I have to convert video to H264 and audio to AAC-LC separately.
For each stream, it performs a RTSP request separately but I do not think this way is the most ideal.
According to you, do you think it is possible to recover the A / V streams once converted to the rtspclientsink module in order to make only one rtsp request?
Thank you very much for your return.
Best regards
Ghizlane
Hi! First of all, thanks for the work on this Gstreamer plugin.
I want to use gstcefsrc
to render webpages in a Gtk4 app. To integrate GStreamer into Gtk4, currently, there are 2 possible solutions:
clappersink
that is distributed with Clapper.gstcefsrc
works fine with xvimagesink
. However, this isn't the case for gtk4paintablesink
and clappersink
.
When using gstcefsrc
with gtk4paintablesink
, the pipeline will go to the PLAYING state. (Tested with gst-launch-1.0
. Nothing will be shown but audio will be played.) However, when integrated into Gtk4, it shows nothing.
When using gstcefsrc
with clappersink
, the pipeline will stuck at the PAUSED state forever. When integrated into Gtk4, it shows nothing as well.
To demonstrate the issue, I wrote a minimal Gtk4 video player app in Gjs. You can check it here:
https://github.com/jeffshee/web-renderer-test
Thanks.
My issue is very similar to #59. The difference is my state flow is different.
gstreamer 1.20.3
gstcefsrc master
with this patch applied: philn@3b9d7eb
My coded pipeline is identical to the one in the README. I enter into PAUSED to preload a web page. After it has loaded I enter into PLAYING. This will cause a deadlock when trying to send an EOS on the message bus. If I remove the audio then everything works as expected. Also replacing gstcefsrc/demux with a simple audio and video test source works fine. I did try setting queues to leaky, but this ends up causing AV sync issues.
My only thoughts are to maybe dynamically configure the output to the pipeline prior to going into PLAYING state, or modifying gstcefsrc to monitor the states and simply dump all AV data unless in PLAYING state. I really need the page to be preloaded and data flowing but not recording while in the PAUSED state. Maybe using a splitmuxsink might work. I am totally open to any ideas anyone may have.
Hi All,
I'm trying to use cefsrc without drawing to a screen and without a GPU in my hardware. Does anyone know if GPU is a requirement for cefsrc or can it be run in a headless mode?
For an example, (note that I'm using a virtual environment with Xvfb), and a simple test pipeline produces:
Xvfb :99 &
export DISPLAY=:99
GST_PLUGIN_PATH=Release:$GST_PLUGIN_PATH gst-launch-1.0 cefsrc num-buffers=1 url=file:///home/root/urls/text.html ! video/x-raw,format=BGRA,width=1920,height=1080,framerate=60/1 ! filesink location=/home/root/buffer.raw
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[1223/133936.433163:FATAL:gpu_data_manager_impl_private.cc(407)] GPU process isn't usable. Goodbye.
Trace/breakpoint trap
Thanks,
Przemek
I'm using a Wayland-only build of gstreamer inside a docker container, and currently using wpesrc for bringing in web content. I'd love to include this element in my build as well, but would rather avoid bringing in x11 if I can.
I'm curious if Wayland support is on the roadmap or what blockers might be in the way of Wayland support.
For reference: https://www.collabora.com/news-and-blog/blog/2019/05/08/cef-on-wayland-upstreamed/
Hi Mathieu,
I am trying to build the CEF Version 77.1.14+g4fb61d2+chromium-77.0.3865.120 from spotify (http://opensource.spotify.com/cefbuilds/index.html).
For that purpose i have modified the CMakeList.txt as follow :
set(CEF_VERSION "77.1.14+g4fb61d2+chromium-77.0.3865.120")
set(CEF_ESCAPED_VERSION "77.1.14%2Bg4fb61d2%2Bchromium-77.0.3865.120")
Then, i have followed the several steps :
$ mkdir build && cd build/
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading /data/gstcefsrc/third_party/cef/cef_binary_77.1.14%2Bg4fb61d2%2Bchromium-77.0.3865.120_linux64.tar.bz2.sha1...
-- Downloading /data/gstcefsrc/third_party/cef/cef_binary_77.1.14%2Bg4fb61d2%2Bchromium-77.0.3865.120_linux64.tar.bz2...
-- [download 0% complete]
-- [download 1% complete]
-- [download 2% complete]
-- [download 3% complete]
-- [download 4% complete]
-- [download 5% complete]
-- [download 6% complete]
-- [download 7% complete]
-- [download 8% complete]
-- [download 9% complete]
-- [download 10% complete]
-- [download 11% complete]
-- [download 12% complete]
-- [download 13% complete]
-- [download 14% complete]
-- [download 15% complete]
-- [download 16% complete]
-- [download 17% complete]
-- [download 18% complete]
-- [download 19% complete]
-- [download 20% complete]
-- [download 21% complete]
-- [download 22% complete]
-- [download 23% complete]
-- [download 24% complete]
-- [download 25% complete]
-- [download 26% complete]
-- [download 27% complete]
-- [download 28% complete]
-- [download 29% complete]
-- [download 30% complete]
-- [download 31% complete]
-- [download 32% complete]
-- [download 33% complete]
-- [download 34% complete]
-- [download 35% complete]
-- [download 36% complete]
-- [download 37% complete]
-- [download 38% complete]
-- [download 39% complete]
-- [download 40% complete]
-- [download 41% complete]
-- [download 42% complete]
-- [download 43% complete]
-- [download 44% complete]
-- [download 45% complete]
-- [download 46% complete]
-- [download 47% complete]
-- [download 48% complete]
-- [download 49% complete]
-- [download 50% complete]
-- [download 51% complete]
-- [download 52% complete]
-- [download 53% complete]
-- [download 54% complete]
-- [download 55% complete]
-- [download 56% complete]
-- [download 57% complete]
-- [download 58% complete]
-- [download 59% complete]
-- [download 60% complete]
-- [download 61% complete]
-- [download 62% complete]
-- [download 63% complete]
-- [download 64% complete]
-- [download 65% complete]
-- [download 66% complete]
-- [download 67% complete]
-- [download 68% complete]
-- [download 69% complete]
-- [download 70% complete]
-- [download 71% complete]
-- [download 72% complete]
-- [download 73% complete]
-- [download 74% complete]
-- [download 75% complete]
-- [download 76% complete]
-- [download 77% complete]
-- [download 78% complete]
-- [download 79% complete]
-- [download 80% complete]
-- [download 81% complete]
-- [download 82% complete]
-- [download 83% complete]
-- [download 84% complete]
-- [download 85% complete]
-- [download 86% complete]
-- [download 87% complete]
-- [download 88% complete]
-- [download 89% complete]
-- [download 90% complete]
-- [download 91% complete]
-- [download 92% complete]
-- [download 93% complete]
-- [download 94% complete]
-- [download 95% complete]
-- [download 96% complete]
-- [download 97% complete]
-- [download 98% complete]
-- [download 99% complete]
-- [download 100% complete]
-- Extracting /data/gstcefsrc/third_party/cef/cef_binary_77.1.14%2Bg4fb61d2%2Bchromium-77.0.3865.120_linux64.tar.bz2...
-- Performing Test COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE
-- Performing Test COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE - Success
-- Performing Test COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS
-- Performing Test COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS - Success
-- Performing Test COMPILER_SUPPORTS_NO_LITERAL_SUFFIX
-- Performing Test COMPILER_SUPPORTS_NO_LITERAL_SUFFIX - Success
-- Performing Test COMPILER_SUPPORTS_NO_NARROWING
-- Performing Test COMPILER_SUPPORTS_NO_NARROWING - Success
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for modules 'gstreamer-1.0;gstreamer-video-1.0;gstreamer-audio-1.0'
-- Found gstreamer-1.0, version 1.14.5
-- Found gstreamer-video-1.0, version 1.14.5
-- Found gstreamer-audio-1.0, version 1.14.5
-- Configuring done
-- Generating done
-- Build files have been written to: /data/gstcefsrc/build
$ make
Scanning dependencies of target libcef_dll_wrapper
[ 1%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/shutdown_checker.cc.o
[ 2%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/transfer_util.cc.o
[ 2%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_atomicops_x86_gcc.cc.o
[ 3%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_bind_helpers.cc.o
[ 3%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_callback_helpers.cc.o
[ 4%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_callback_internal.cc.o
[ 4%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_lock.cc.o
[ 5%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_lock_impl.cc.o
[ 6%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_logging.cc.o
[ 6%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_ref_counted.cc.o
[ 7%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_string16.cc.o
[ 7%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_thread_checker_impl.cc.o
[ 8%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_weak_ptr.cc.o
[ 8%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/accessibility_handler_cpptoc.cc.o
[ 9%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/app_cpptoc.cc.o
[ 9%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/base_ref_counted_cpptoc.cc.o
[ 10%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/base_scoped_cpptoc.cc.o
[ 11%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/browser_process_handler_cpptoc.cc.o
[ 11%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/client_cpptoc.cc.o
[ 12%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/completion_callback_cpptoc.cc.o
[ 12%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/context_menu_handler_cpptoc.cc.o
regarde[ 13%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/cookie_access_filter_cpptoc.cc.o
en b[ 13%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/cookie_visitor_cpptoc.cc.o
as
[ 14%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/delete_cookies_callback_cpptoc.cc.o
[ 15%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/dialog_handler_cpptoc.cc.o
[ 15%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/display_handler_cpptoc.cc.o
[ 16%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/domvisitor_cpptoc.cc.o
[ 16%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/download_handler_cpptoc.cc.o
[ 17%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/download_image_callback_cpptoc.cc.o
[ 17%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/drag_handler_cpptoc.cc.o
[ 18%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/end_tracing_callback_cpptoc.cc.o
[ 19%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/extension_handler_cpptoc.cc.o
[ 19%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/find_handler_cpptoc.cc.o
[ 20%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/focus_handler_cpptoc.cc.o
[ 20%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/jsdialog_handler_cpptoc.cc.o
[ 21%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/keyboard_handler_cpptoc.cc.o
[ 21%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/life_span_handler_cpptoc.cc.o
[ 22%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/load_handler_cpptoc.cc.o
[ 22%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/menu_model_delegate_cpptoc.cc.o
[ 23%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/navigation_entry_visitor_cpptoc.cc.o
[ 24%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/pdf_print_callback_cpptoc.cc.o
[ 24%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/print_handler_cpptoc.cc.o
[ 25%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/read_handler_cpptoc.cc.o
[ 25%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/register_cdm_callback_cpptoc.cc.o
[ 26%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/render_handler_cpptoc.cc.o
[ 26%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/render_process_handler_cpptoc.cc.o
[ 27%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/request_context_handler_cpptoc.cc.o
[ 28%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/request_handler_cpptoc.cc.o
[ 28%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resolve_callback_cpptoc.cc.o
[ 29%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_bundle_handler_cpptoc.cc.o
[ 29%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_handler_cpptoc.cc.o
[ 30%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_request_handler_cpptoc.cc.o
[ 30%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/response_filter_cpptoc.cc.o
[ 31%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/run_file_dialog_callback_cpptoc.cc.o
[ 32%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/scheme_handler_factory_cpptoc.cc.o
[ 32%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/server_handler_cpptoc.cc.o
[ 33%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/set_cookie_callback_cpptoc.cc.o
[ 33%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/string_visitor_cpptoc.cc.o
[ 34%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/task_cpptoc.cc.o
[ 34%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/urlrequest_client_cpptoc.cc.o
[ 35%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8accessor_cpptoc.cc.o
[ 35%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8array_buffer_release_callback_cpptoc.cc.o
[ 36%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8handler_cpptoc.cc.o
[ 37%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8interceptor_cpptoc.cc.o
[ 37%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/web_plugin_info_visitor_cpptoc.cc.o
[ 38%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/web_plugin_unstable_callback_cpptoc.cc.o
[ 38%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/write_handler_cpptoc.cc.o
[ 39%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_ref_ptr_client_child_cpptoc.cc.o
[ 39%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_ref_ptr_client_cpptoc.cc.o
[ 40%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_scoped_client_child_cpptoc.cc.o
[ 41%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_scoped_client_cpptoc.cc.o
[ 41%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/browser_view_delegate_cpptoc.cc.o
[ 42%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/button_delegate_cpptoc.cc.o
[ 42%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/menu_button_delegate_cpptoc.cc.o
[ 43%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/panel_delegate_cpptoc.cc.o
[ 43%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/textfield_delegate_cpptoc.cc.o
[ 44%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/view_delegate_cpptoc.cc.o
[ 45%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/window_delegate_cpptoc.cc.o
[ 45%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/auth_callback_ctocpp.cc.o
[ 46%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/before_download_callback_ctocpp.cc.o
[ 46%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/binary_value_ctocpp.cc.o
[ 47%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/browser_ctocpp.cc.o
[ 47%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/browser_host_ctocpp.cc.o
[ 48%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/callback_ctocpp.cc.o
[ 48%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/command_line_ctocpp.cc.o
[ 49%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/context_menu_params_ctocpp.cc.o
[ 50%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/cookie_manager_ctocpp.cc.o
[ 50%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/dictionary_value_ctocpp.cc.o
[ 51%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/domdocument_ctocpp.cc.o
[ 51%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/domnode_ctocpp.cc.o
[ 52%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/download_item_callback_ctocpp.cc.o
[ 52%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/download_item_ctocpp.cc.o
[ 53%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/drag_data_ctocpp.cc.o
[ 54%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/extension_ctocpp.cc.o
[ 54%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/file_dialog_callback_ctocpp.cc.o
[ 55%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/frame_ctocpp.cc.o
[ 55%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/get_extension_resource_callback_ctocpp.cc.o
[ 56%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/image_ctocpp.cc.o
[ 56%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/jsdialog_callback_ctocpp.cc.o
[ 57%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/list_value_ctocpp.cc.o
[ 58%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/menu_model_ctocpp.cc.o
[ 58%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/navigation_entry_ctocpp.cc.o
[ 59%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/post_data_ctocpp.cc.o
[ 59%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/post_data_element_ctocpp.cc.o
[ 60%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_dialog_callback_ctocpp.cc.o
[ 60%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_job_callback_ctocpp.cc.o
[ 61%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_settings_ctocpp.cc.o
[ 61%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/process_message_ctocpp.cc.o
[ 62%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_callback_ctocpp.cc.o
[ 63%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_context_ctocpp.cc.o
[ 63%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_ctocpp.cc.o
[ 64%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_bundle_ctocpp.cc.o
[ 64%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_read_callback_ctocpp.cc.o
[ 65%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_skip_callback_ctocpp.cc.o
[ 65%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/response_ctocpp.cc.o
[ 66%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/run_context_menu_callback_ctocpp.cc.o
[ 67%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/scheme_registrar_ctocpp.cc.o
[ 67%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/select_client_certificate_callback_ctocpp.cc.o
[ 68%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/server_ctocpp.cc.o
[ 68%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/sslinfo_ctocpp.cc.o
[ 69%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/sslstatus_ctocpp.cc.o
[ 69%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/stream_reader_ctocpp.cc.o
[ 70%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/stream_writer_ctocpp.cc.o
[ 71%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/task_runner_ctocpp.cc.o
[ 71%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/thread_ctocpp.cc.o
[ 72%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/urlrequest_ctocpp.cc.o
[ 72%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8context_ctocpp.cc.o
[ 73%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8exception_ctocpp.cc.o
[ 73%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8stack_frame_ctocpp.cc.o
[ 74%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8stack_trace_ctocpp.cc.o
[ 74%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8value_ctocpp.cc.o
[ 75%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/value_ctocpp.cc.o
[ 76%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/waitable_event_ctocpp.cc.o
[ 76%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/web_plugin_info_ctocpp.cc.o
[ 77%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/x509cert_principal_ctocpp.cc.o
[ 77%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/x509certificate_ctocpp.cc.o
[ 78%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/xml_reader_ctocpp.cc.o
[ 78%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/zip_reader_ctocpp.cc.o
[ 79%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ctocpp.cc.o
[ 80%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_child_child_ctocpp.cc.o
[ 80%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_child_ctocpp.cc.o
[ 81%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_ctocpp.cc.o
[ 81%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_child_child_ctocpp.cc.o
[ 82%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_child_ctocpp.cc.o
[ 82%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_ctocpp.cc.o
[ 83%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/box_layout_ctocpp.cc.o
[ 84%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/browser_view_ctocpp.cc.o
[ 84%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/button_ctocpp.cc.o
[ 85%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/display_ctocpp.cc.o
[ 85%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/fill_layout_ctocpp.cc.o
[ 86%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/label_button_ctocpp.cc.o
[ 86%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/layout_ctocpp.cc.o
[ 87%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/menu_button_ctocpp.cc.o
[ 87%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/menu_button_pressed_lock_ctocpp.cc.o
[ 88%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/panel_ctocpp.cc.o
[ 89%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/scroll_view_ctocpp.cc.o
[ 89%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/textfield_ctocpp.cc.o
[ 90%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/view_ctocpp.cc.o
[ 90%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/window_ctocpp.cc.o
[ 91%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_byte_read_handler.cc.o
[ 91%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_closure_task.cc.o
[ 92%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_message_router.cc.o
[ 93%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_resource_manager.cc.o
[ 93%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_scoped_temp_dir.cc.o
[ 94%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_stream_resource_handler.cc.o
[ 94%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_xml_object.cc.o
[ 95%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_zip_archive.cc.o
[ 95%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/libcef_dll_wrapper.cc.o
[ 96%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/libcef_dll_wrapper2.cc.o
[ 97%] Linking CXX static library libcef_dll_wrapper.a
[ 97%] Built target libcef_dll_wrapper
Scanning dependencies of target gstcefsubprocess
[ 98%] Building CXX object CMakeFiles/gstcefsubprocess.dir/gstcefsubprocess.cc.o
[ 98%] Linking CXX executable Release/gstcefsubprocess
[ 98%] Built target gstcefsubprocess
Scanning dependencies of target gstcef
[ 98%] Building CXX object CMakeFiles/gstcef.dir/gstcef.cc.o
[ 99%] Building CXX object CMakeFiles/gstcef.dir/gstcefsrc.cc.o
/data/gstcefsrc/gstcefsrc.cc:88:1: error: expected class-name before ‘{’ token
{
^
/data/gstcefsrc/gstcefsrc.cc:103:29: error: ‘ChannelLayout’ has not been declared
ChannelLayout channel_layout,
^~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:100:8: error: ‘void AudioHandler::OnAudioStreamStarted(CefRefPtr<CefBrowser>, int, int, int, int, int)’ marked ‘override’, but does not override
void OnAudioStreamStarted(CefRefPtr<CefBrowser> browser,
^~~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:121:8: error: ‘void AudioHandler::OnAudioStreamPacket(CefRefPtr<CefBrowser>, int, const float**, int, int64_t)’ marked ‘override’, but does not override
void OnAudioStreamPacket(CefRefPtr<CefBrowser> browser,
^~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:163:8: error: ‘void AudioHandler::OnAudioStreamStopped(CefRefPtr<CefBrowser>, int)’ marked ‘override’, but does not override
void OnAudioStreamStopped(CefRefPtr<CefBrowser> browser,
^~~~~~~~~~~~~~~~~~~~
In file included from /data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_app.h:41:0,
from /data/gstcefsrc/gstcefsrc.cc:5:
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_base.h:128:8: error: ‘void AudioHandler::AddRef() const’ marked ‘override’, but does not override
void AddRef() const OVERRIDE { ref_count_.AddRef(); } \
^
/data/gstcefsrc/gstcefsrc.cc:180:5: note: in expansion of macro ‘IMPLEMENT_REFCOUNTING’
IMPLEMENT_REFCOUNTING(AudioHandler);
^~~~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_base.h:129:8: error: ‘bool AudioHandler::Release() const’ marked ‘override’, but does not override
bool Release() const OVERRIDE { \
^
/data/gstcefsrc/gstcefsrc.cc:180:5: note: in expansion of macro ‘IMPLEMENT_REFCOUNTING’
IMPLEMENT_REFCOUNTING(AudioHandler);
^~~~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_base.h:136:8: error: ‘bool AudioHandler::HasOneRef() const’ marked ‘override’, but does not override
bool HasOneRef() const OVERRIDE { return ref_count_.HasOneRef(); } \
^
/data/gstcefsrc/gstcefsrc.cc:180:5: note: in expansion of macro ‘IMPLEMENT_REFCOUNTING’
IMPLEMENT_REFCOUNTING(AudioHandler);
^~~~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_base.h:137:8: error: ‘bool AudioHandler::HasAtLeastOneRef() const’ marked ‘override’, but does not override
bool HasAtLeastOneRef() const OVERRIDE { \
^
/data/gstcefsrc/gstcefsrc.cc:180:5: note: in expansion of macro ‘IMPLEMENT_REFCOUNTING’
IMPLEMENT_REFCOUNTING(AudioHandler);
^~~~~~~~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:187:63: error: ‘CefAudioHandler’ was not declared in this scope
BrowserClient(CefRefPtr<CefRenderHandler> rptr, CefRefPtr<CefAudioHandler> aptr) :
^~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:187:63: note: suggested alternative: ‘AudioHandler’
BrowserClient(CefRefPtr<CefRenderHandler> rptr, CefRefPtr<CefAudioHandler> aptr) :
^~~~~~~~~~~~~~~
AudioHandler
/data/gstcefsrc/gstcefsrc.cc:187:78: error: template argument 1 is invalid
BrowserClient(CefRefPtr<CefRenderHandler> rptr, CefRefPtr<CefAudioHandler> aptr) :
^
/data/gstcefsrc/gstcefsrc.cc:198:23: error: ‘CefAudioHandler’ was not declared in this scope
virtual CefRefPtr<CefAudioHandler> GetAudioHandler() override
^~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:198:23: note: suggested alternative: ‘AudioHandler’
virtual CefRefPtr<CefAudioHandler> GetAudioHandler() override
^~~~~~~~~~~~~~~
AudioHandler
/data/gstcefsrc/gstcefsrc.cc:198:38: error: template argument 1 is invalid
virtual CefRefPtr<CefAudioHandler> GetAudioHandler() override
^
/data/gstcefsrc/gstcefsrc.cc:206:15: error: ‘CefAudioHandler’ was not declared in this scope
CefRefPtr<CefAudioHandler> audio_handler;
^~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc:206:15: note: suggested alternative: ‘GetAudioHandler’
CefRefPtr<CefAudioHandler> audio_handler;
^~~~~~~~~~~~~~~
GetAudioHandler
/data/gstcefsrc/gstcefsrc.cc:206:30: error: template argument 1 is invalid
CefRefPtr<CefAudioHandler> audio_handler;
^
/data/gstcefsrc/gstcefsrc.cc:198:40: error: ‘virtual int BrowserClient::GetAudioHandler()’ marked ‘override’, but does not override
virtual CefRefPtr<CefAudioHandler> GetAudioHandler() override
^~~~~~~~~~~~~~~
/data/gstcefsrc/gstcefsrc.cc: In function ‘gboolean gst_cef_src_start(GstBaseSrc*)’:
/data/gstcefsrc/gstcefsrc.cc:308:64: error: invalid user-defined conversion from ‘CefRefPtr<AudioHandler> {aka scoped_refptr<AudioHandler>}’ to ‘int’ [-fpermissive]
browserClient = new BrowserClient(renderHandler, audioHandler);
^
In file included from /data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/internal/cef_ptr.h:35:0,
from /data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_base.h:39,
from /data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/cef_app.h:41,
from /data/gstcefsrc/gstcefsrc.cc:5:
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/base/cef_ref_counted.h:322:3: note: candidate is: scoped_refptr<T>::operator T*() const [with T = AudioHandler] <near match>
operator T*() const { return ptr_; }
^~~~~~~~
/data/gstcefsrc/third_party/cef/cef_binary_77.1.14+g4fb61d2+chromium-77.0.3865.120_linux64/include/base/cef_ref_counted.h:322:3: note: no known conversion from ‘AudioHandler*’ to ‘int’
/data/gstcefsrc/gstcefsrc.cc:187:5: note: initializing argument 2 of ‘BrowserClient::BrowserClient(CefRefPtr<CefRenderHandler>, int)’
BrowserClient(CefRefPtr<CefRenderHandler> rptr, CefRefPtr<CefAudioHandler> aptr) :
^~~~~~~~~~~~~
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-undefined-var-template’ [-Werror]
cc1plus: all warnings being treated as errors
CMakeFiles/gstcef.dir/build.make:86: recipe for target 'CMakeFiles/gstcef.dir/gstcefsrc.cc.o' failed
make[2]: *** [CMakeFiles/gstcef.dir/gstcefsrc.cc.o] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/gstcef.dir/all' failed
make[1]: *** [CMakeFiles/gstcef.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
But it seem that there is some change with the audio that make the build crash. Maybe a modification with the latest CEF audio api ?
Did you see that problem on your side too ?
Thanks in advance of your reply.
BR
Thierry
Hi,
Because i wanted to upgrade the cef version i needed to add the h264 support for webrtc usage.
I have used the following version :
The build of this cef version that include the h264 support works fine.
Your gstcef module works fine with the cef version that you declare within your CMakelist.txt buy when i overrride yours by replacing your cef files by ours it work file on a computer, not on an Amazon server (Virtualized).
When i start your pipeline test, i always crash with the following trace 👍
gst-launch-1.0 cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d d.video ! video/x-raw ! queue ! videoconvert ! fakesink dump=true
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Received signal 11 SEGV_MAPERR 000000000020
#0 0x7fac4492f489 base::debug::CollectStackTrace()
#1 0x7fac448899b3 base::debug::StackTrace::StackTrace()
#2 0x7fac4492f001 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#3 0x7fac3f523890 <unknown>
#4 0x7fac3f51afa0 <unknown>
#5 0x7fac4493a3c8 base::internal::LockImpl::Lock()
#6 0x7fac447b41ba CefFrameHostImpl::RefreshAttributes()
#7 0x7fac44789941 CefBrowserHostImpl::DidFinishNavigation()
#8 0x7fac434a1000 content::WebContentsImpl::DidFinishNavigation()
#9 0x7fac431d4609 content::NavigationHandleImpl::~NavigationHandleImpl()
#10 0x7fac431d491e content::NavigationHandleImpl::~NavigationHandleImpl()
#11 0x7fac431d80dc content::NavigationRequest::~NavigationRequest()
#12 0x7fac431d856e content::NavigationRequest::~NavigationRequest()
#13 0x7fac431afb7d content::FrameTreeNode::ResetNavigationRequest()
#14 0x7fac431d8cf2 content::NavigationRequest::OnRequestFailedInternal()
#15 0x7fac431dd366 content::NavigationRequest::OnRequestFailed()
#16 0x7fac4329ffb0 content::NavigationURLLoaderImpl::OnComplete()
#17 0x7fac448dceca base::TaskAnnotator::RunTask()
#18 0x7fac448ec0be base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl()
#19 0x7fac448ebcfe base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork()
#20 0x7fac448a3fb6 base::MessagePumpGlib::Run()
#21 0x7fac448ecab9 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run()
#22 0x7fac448bf927 base::RunLoop::RunWithTimeout()
#23 0x7fac44797f40 CefDoMessageLoopWork()
#24 0x7fac3637ec82 cef_do_work_func()
#25 0x7fac3f77cd03 <unknown>
#26 0x7fac3f77c285 g_main_context_dispatch
#27 0x7fac3f77c650 <unknown>
#28 0x7fac3f77c962 g_main_loop_run
#29 0x7fac3fce09f3 gst_bus_poll
#30 0x560794d31bb3 <unknown>
#31 0x560794d30a1e <unknown>
#32 0x7fac3f141b97 __libc_start_main
#33 0x560794d310da <unknown>
r8: 0000000000000000 r9: 00007ffdcafed101 r10: 0000000000000000 r11: 000005e96d22da80
r12: 0000000000000000 r13: 000005e96d1d5e40 r14: 00007ffdcafed098 r15: 000005e96d1a2600
di: 0000000000000010 si: 00007fac4493a3ae bp: 00007ffdcafed0c0 bx: 0000000000000010
dx: 0000000000000010 ax: 00007fac4493a3ae cx: 0000000000000001 sp: 00007ffdcafed088
ip: 00007fac3f51afa0 efl: 0000000000010202 cgf: 002b000000000033 erf: 0000000000000004
trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000020
[end of stack trace]
Calling _exit(1). Core file will not be generated.
And the core dump say :
gdb gst-launch-1.0 /data/cores/core.gst-launch-1.0.23910
bt
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `gst-launch-1.0 cefsrc url=https://soundcloud.com/platform/sama ! queue ! cefdem'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 __GI___pthread_mutex_lock (mutex=0x10) at ../nptl/pthread_mutex_lock.c:65
65 ../nptl/pthread_mutex_lock.c: No such file or directory.
[Current thread is 1 (Thread 0x7fbe8e0fd740 (LWP 23910))]
(gdb) bt
#0 0x00007fbe8d448fa0 in __GI___pthread_mutex_lock (mutex=0x10) at ../nptl/pthread_mutex_lock.c:65
#1 0x00007fbe874aa188 in base::internal::LockImpl::Lock() () at ./libcef.so
#2 0x00007fbe8732413a in CefFrameHostImpl::RefreshAttributes() () at ./libcef.so
#3 0x00007fbe872f98c1 in CefBrowserHostImpl::DidFinishNavigation(content::NavigationHandle*) () at ./libcef.so
#4 0x00007fbe86010dd0 in content::WebContentsImpl::DidFinishNavigation(content::NavigationHandle*) () at ./libcef.so
#5 0x00007fbe85d443d9 in content::NavigationHandleImpl::~NavigationHandleImpl() () at ./libcef.so
#6 0x00007fbe85d446ee in content::NavigationHandleImpl::~NavigationHandleImpl() () at ./libcef.so
#7 0x00007fbe85d47eac in content::NavigationRequest::~NavigationRequest() () at ./libcef.so
#8 0x00007fbe85d4833e in content::NavigationRequest::~NavigationRequest() () at ./libcef.so
#9 0x00007fbe85d1f94d in content::FrameTreeNode::ResetNavigationRequest(bool, bool) () at ./libcef.so
#10 0x00007fbe85d48ac2 in content::NavigationRequest::OnRequestFailedInternal(network::URLLoaderCompletionStatus const&, bool, base::Optional<std::__1::basic_string<char, std::__1::char_traits<char>, std:
:__1::allocator<char> > > const&, bool) () at ./libcef.so
#11 0x00007fbe85d4d136 in content::NavigationRequest::OnRequestFailed(network::URLLoaderCompletionStatus const&) () at ./libcef.so
#12 0x00007fbe85e0fd80 in content::NavigationURLLoaderImpl::OnComplete(network::URLLoaderCompletionStatus const&) () at ./libcef.so
#13 0x00007fbe8744cd8a in base::TaskAnnotator::RunTask(char const*, base::PendingTask*) () at ./libcef.so
#14 0x00007fbe8745bf7e in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow*, bool*) () at ./libcef.so
#15 0x00007fbe8745bbbe in base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork() () at ./libcef.so
#16 0x00007fbe8741cd37 in base::(anonymous namespace)::WorkSourceDispatch(_GSource*, int (*)(void*), void*) () at ./libcef.so
#17 0x00007fbe8d6aa417 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007fbe8d6aa650 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007fbe8d6aa6dc in g_main_context_iteration () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007fbe87413e5e in base::MessagePumpGlib::Run(base::MessagePump::Delegate*) () at ./libcef.so
#21 0x00007fbe8745c979 in non-virtual thunk to base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) () at ./libcef.so
#22 0x00007fbe8742f7e7 in base::RunLoop::RunWithTimeout(base::TimeDelta) () at ./libcef.so
#23 0x00007fbe87307ec0 in CefDoMessageLoopWork() () at ./libcef.so
#24 0x00007fbe8bf73c82 in cef_do_work_func(_GstCefSrc*) () at /overlay/cef-gstreamer/Release/libgstcef.so
#25 0x00007fbe8d6aad03 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#26 0x00007fbe8d6aa285 in g_main_context_dispatch () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007fbe8d6aa650 in () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007fbe8d6aa962 in g_main_loop_run () at /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007fbe8dc0e9f3 in gst_bus_poll () at /usr/lib/x86_64-linux-gnu/libgstreamer-1.0.so.0
#30 0x000055820a0b0bb3 in ()
#31 0x000055820a0afcb7 in ()
#32 0x00007fbe8d06fb97 in __libc_start_main (main=0x55820a0af460, argc=17, argv=0x7fffc028bce8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffc028bcd8)
at ../csu/libc-start.c:310
#33 0x000055820a0b00da in ()
As far i know, google told me that it can be reproduce with a virtualbox image.
The problem seen that one :
I have declare a CEF issue :
Any idea of the problem ?
BR
Thierry
Hi,
I'm trying to register custom callback from JS to C++ using this tutorial: https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration#markdown-header-using-js-callbacks. I wrote something like that:
class App : public CefApp, public CefRenderProcessHandler
with OnContextCreated(...)
and
virtual CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler()
returning this
.
Unfortunately the callback OnContextCreated
is never called.
Maybe it is related to a wrong thread. The V8 execution must take place on TID_RENDERER thread.
Do you know how to handle callback registration. Is it possible? Maybe another way to achieve it?
It will be nice to have direct communication between C++ and js.
We want something like: https://github.com/Igalia/gst-wpe-webrtc-demo. but without additional server.
I've noticed that with gst-inspect-1.0 -b
, the plugin files are blacklisted even though the plugin seems to work fine. I'm not sure if this is something wrong with my setup or whether it's a symptom of another issue that is yet to present itself. I've cleared the cache with rm -R ~/.cache/gstreamer-1.0/
and re-run gst-inspect-1.0 -b
, but still see the files blacklisted.
I ran a test in a Vagrant environment (Ubuntu 22.04 where I installed gstreamer via apt, and then built cefsrc from this repo). Below is the output of some commands from this test.
This is the Vagrantfile I used for the test environment: https://gist.github.com/sidsethupathi/86474e38b1161ae9b81c3df2dd08be11
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ ls
chrome-sandbox chrome_200_percent.pak icudtl.dat libGLESv2.so libgstcef.so libvulkan.so.1 resources.pak v8_context_snapshot.bin
chrome_100_percent.pak gstcefsubprocess libEGL.so libcef.so libvk_swiftshader.so locales snapshot_blob.bin vk_swiftshader_icd.json
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ pwd
/home/vagrant/gstcefsrc/build/Release
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ echo $GST_PLUGIN_PATH
/home/vagrant/gstcefsrc/build/Release:
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ gst-inspect-1.0 -b
Blacklisted files:
libEGL.so
libGLESv2.so
libcef.so
libgstmsdk.so
libvk_swiftshader.so
Total count: 5 blacklisted files
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ gst-inspect-1.0 cef
Plugin Details:
Name cef
Description Chromium Embedded src plugin
Filename /home/vagrant/gstcefsrc/build/Release/libgstcef.so
Version 1.0
License LGPL
Source module gstcef
Binary package gstcef
Origin URL centricular.com
cefbin: Chromium Embedded Framework source bin
cefdemux: Chromium Embedded Framework demuxer
cefsrc: Chromium Embedded Framework source
3 features:
+-- 3 elements
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ gst-inspect-1.0 --version
gst-inspect-1.0 version 1.20.3
GStreamer 1.20.3
https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ rm -R ~/.cache/gstreamer-1.0/
vagrant@ubuntu-jammy:~/gstcefsrc/build/Release$ GST_DEBUG=3 gst-inspect-1.0 -b
0:00:00.044170011 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x120000: 'AVR (Audio Visual Research)' is not mapped
0:00:00.044241144 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x180000: 'CAF (Apple Core Audio File)' is not mapped
0:00:00.044262204 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x100000: 'HTK (HMM Tool Kit)' is not mapped
0:00:00.044855455 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0xc0000: 'MAT4 (GNU Octave 2.0 / Matlab 4.2)' is not mapped
0:00:00.044911127 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0xd0000: 'MAT5 (GNU Octave 2.1 / Matlab 5.0)' is not mapped
0:00:00.044930489 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x210000: 'MPC (Akai MPC 2k)' is not mapped
0:00:00.045637002 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0xe0000: 'PVF (Portable Voice Format)' is not mapped
0:00:00.045706079 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x160000: 'SD2 (Sound Designer II)' is not mapped
0:00:00.045763026 1801 0x55bbcaed1730 WARN default gstsfelement.c:97:gst_sf_create_audio_template_caps: format 0x190000: 'WVE (Psion Series 3)' is not mapped
0:00:00.085606540 1801 0x55bbcaed1730 WARN nvcodec gstcudaloader.c:139:gst_cuda_load_library: Could not open library libcuda.so.1, libcuda.so.1: cannot open shared object file: No such file or directory
0:00:00.085668971 1801 0x55bbcaed1730 WARN nvcodec plugin.c:73:plugin_init: Failed to load cuda library
0:00:00.091267341 1801 0x55bbcaed1730 WARN msdk msdk.c:303:msdk_init_msdk_session: Failed to initialize a MFX session (undeveloped feature)
0:00:00.007880302 1802 0x559d83774320 WARN msdk msdk.c:303:msdk_init_msdk_session: Failed to initialize a MFX session (undeveloped feature)
0:00:00.008191193 1802 0x559d83774320 ERROR GST_PLUGIN_LOADING gstpluginloader.c:1161:exchange_packets: write fd 0 errored
0:00:00.113245128 1800 0x5619b5389a00 ERROR GST_PLUGIN_LOADING gstpluginloader.c:279:plugin_loader_replay_pending: Plugin file /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstmsdk.so failed to load. Blacklisting
0:00:00.335766754 1803 0x5568b83cb6a0 WARN ladspa gstladspa.c:508:plugin_init:<plugin128> no LADSPA plugins found, check LADSPA_PATH
Blacklisted files:
libEGL.so
libGLESv2.so
libcef.so
libgstmsdk.so
libvk_swiftshader.so
Total count: 5 blacklisted files
We're trying to run cefsrc in a headless (no x-server) environment. We've been able to get pipelines to flow using xvfb-run
, however that virtual x-server doesn't support GPU pass-through, so for webgl pages, the frame rates are low.
Does anyone have experience running this element in a headless environment?
Hey,
GStreamer fails to load this plugin.
(gst-inspect-1.0:19248): GStreamer-WARNING **: 13:31:43.321: Failed to load plugin 'C:\Users\trigg\Dev\gstreamer\gstcefsrc\build\Release\gstcef.dll': 'C:\Users\trigg\Dev\gstreamer\gstcefsrc\build\Release\gstcef.dll': The specified module could not be found.
(gst-inspect-1.0:19248): GStreamer-WARNING **: 13:31:43.330: Failed to load plugin 'C:\Users\trigg\Dev\gstreamer\gstcefsrc\build\Release\libcef.dll': 'C:\Users\trigg\Dev\gstreamer\gstcefsrc\build\Release\libcef.dll': The specified module could not be found.
I used this command:
cmake -DCMAKE_BUILD_TYPE=Release ..
followed by building solution with Visual Studio 19.
I set the GST_PLUGIN_PATH environment variable in system properties after.
GStreamer version 1.19.1 - MinGW 64-bit runtime and development installers.
Am I missing something?
i have ubuntu 20.04 running on jetson nano and try to use it for livestreaming. i would like to make an overlay with an webpage...
so i tried to use gstcefsrc for that i compiled and try to run, but get the following error:
No such element or plugin 'cefsrc'
jetson@nano:~/.sources/gstcefsrc/build/Release$ gst-launch-1.0 cefsrc
(gst-plugin-scanner:67316): GStreamer-WARNING **: 23:45:03.954: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libcef.so': /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libcef.so: cannot allocate memory in static TLS block
(gst-plugin-scanner:67316): GStreamer-WARNING **: 23:45:04.022: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstcef.so': ./libcef.so: cannot allocate memory in static TLS block
ERROR: pipeline could not be constructed: no element "cefsrc".
jetson@nano:~/.sources/gstcefsrc/build/Release$
any idea/hint ??
thanks in advance
Lars
Sometimes pipeline fails to construct because of some strange caps negotiation error between cefsrc
and cefdemux
.
In our logs we see:
gstpad.c:3235:gst_pad_query_accept_caps_default
cefdemux_overlay:sink
caps: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)BGRA were not compatible with: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, format=(string)BGRA, interlace-mode=(string)progressive
I have dug a bit into gstpad.c
and seen that this happens because gst_caps_can_intersect (caps, allowed)
or gst_caps_is_subset (caps, allowed)
checks fail.
Unfortunately, I can't provide a simple reproduction case, because it's not reproducible in gst-launch1.0 and rarely happens only in our production.
What is the license of this plugin? The LICENSE file is missing.
I'm using GStreamer from Git as of right now and trying to use this to render a web page.
Relevant part of pipeline looks like cefsrc -> cefdemux -> queue -> videoconvert
just like in the readme.
However, for me it crashes like this:
[0121/112213.800301:FATAL:browser_host_impl.cc(265)] Check failed: false. called on invalid thread
Thread 17 "x" received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0x7f25f0519700 (LWP 7187)]
0x00007f25f669487a in operator() () at ../../base/logging.cc:880
880 ../../base/logging.cc: No such file or directory.
(gdb) bt
#0 0x00007f25f669487a in operator() () at ../../base/logging.cc:880
#1 0x00007f25f669487a in ~LogMessage() () at ../../base/logging.cc:880
#2 0x00007f25f64f854e in CreateBrowserSync() () at ../../buildtools/third_party/libc++/trunk/include/ostream:864
#3 0x00007f25f3274eca in cef_browser_host_create_browser_sync() () at ../../cef/libcef_dll/cpptoc/browser_host_cpptoc.cc:103
#4 0x00007f2604d3f512 in CefBrowserHost::CreateBrowserSync(CefWindowInfo const&, scoped_refptr<CefClient>, CefStringBase<CefStringTraitsUTF16> const&, CefStructBase<CefBrowserSettingsTraits> const&, scoped_refptr<CefDictionaryValue>, scoped_refptr<CefRequestContext>)
(windowInfo=..., client=..., url=..., settings=..., extra_info=..., request_context=...) at /gstcefsrc/third_party/cef/cef_binary_75.0.6+g90ecd35+chromium-75.0.3770.80_linux64/libcef_dll/ctocpp/browser_host_ctocpp.cc:71
#5 0x00007f2604d36d5c in gst_cef_src_start(GstBaseSrc*) (base_src=0x7f26300be170 [GstBaseSrc|cefsrc0]) at /gstcefsrc/gstcefsrc.cc:322
#6 0x00007f263ed664f2 in gst_base_src_start (basesrc=basesrc@entry=0x7f26300be170 [GstBaseSrc|cefsrc0]) at ../libs/gst/base/gstbasesrc.c:3465
#7 0x00007f263ed66aa0 in gst_base_src_activate_push (pad=0x7f26300ac840 [GstPad|src], active=1, parent=<optimized out>) at ../libs/gst/base/gstbasesrc.c:3839
#8 0x00007f263ed66aa0 in gst_base_src_activate_mode (pad=0x7f26300ac840 [GstPad|src], parent=<optimized out>, mode=<optimized out>, active=1) at ../libs/gst/base/gstbasesrc.c:3916
#9 0x00007f263ec5fbab in activate_mode_internal (pad=0x7f26300ac840 [GstPad|src], parent=0x7f26300be170 [GstObject|cefsrc0], mode=GST_PAD_MODE_PUSH, active=1) at ../gst/gstpad.c:1217
#10 0x00007f263ec602c8 in gst_pad_set_active (pad=pad@entry=0x7f26300ac840 [GstPad|src], active=1) at ../gst/gstpad.c:1100
#11 0x00007f263ec3aa85 in activate_pads (vpad=<optimized out>, ret=0x7f25f0518140, active=0x7f25f051819c) at ../gst/gstelement.c:3121
#12 0x00007f263ec4ff0c in gst_iterator_fold (it=it@entry=0x7f25e8001a90, func=func@entry=0x7f263ec3aa60 <activate_pads>, ret=ret@entry=0x7f25f0518140, user_data=user_data@entry=0x7f25f051819c) at ../gst/gstiterator.c:617
#13 0x00007f263ec3b4a6 in iterator_activate_fold_with_resync (iter=iter@entry=0x7f25e8001a90, user_data=user_data@entry=0x7f25f051819c, func=0x7f263ec3aa60 <activate_pads>) at ../gst/gstelement.c:3145
#14 0x00007f263ec3d758 in gst_element_pads_activate (element=element@entry=0x7f26300be170 [GstElement|cefsrc0], active=<optimized out>, active@entry=1) at ../gst/gstelement.c:3181
Segmentation fault (core dumped)
Is this an issue in gstcefsrc, gstreamer or chromium itself?
Hello,
In order to send the video and audio from the cefsrc module to facebook or twitch , i'm using this gstreamer pipeline:
gst-launch-1.0 cefsrc url="file:///home/…." ! queue !
cefdemux name=d d.video ! video/x-raw,format=BGRA,width=1280,height=720,framerate=30/1 ! queue !
videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency speed-preset=superfast key-int-max=60 ref=2 !
mux. d.audio_0 !
audio/x-raw,rate=48000 ! queue ! audioconvert ! audiorate ! voaacenc bitrate=96000 !
flvmux streamable=true name=mux ! queue !
rtmpsink location="rtmps://live-api-s.facebook.com:443/rtmp/<facebook key> live=1"
Therefore, it does not connect to facebook (offline status)
On the other hand, when I send the video of the cefsrc module and a test audio as follows:
gst-launch-1.0 cefsrc url="file:///home/…." ! queue !
cefdemux name=d d.video ! video/x-raw,format=BGRA,width=1280,height=720,framerate=30/1 ! queue !
videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune=zerolatency speed-preset=superfast key-int-max=60 ref=2 !
mux. audiotestsrc !
audio/x-raw,rate=48000 ! queue ! audioconvert ! audiorate ! voaacenc bitrate=96000 !
flvmux streamable=true name=mux ! queue !
rtmpsink location="rtmps://live-api-s.facebook.com:443/rtmp/<facebook key> live=1"
I can see the video and I hear the sound of audiotestsrc.
Is there anyone who would have a gstreamer based functional pipeline to push an Audio + Video muxed stream, of cefsrc module, using the rtmpsink module.
Thank you
Best regards
Hi Mathieu,
I am testing a local record using the cefsrc and cefdemux modules. What I observe is a problem out of the sound and I would like to have your opinion on what can happen.
The pipeline I use for a local recording is:
$ export GST_DEBUG = 4
$ export GST_PLUGIN_PATH = $ PWD
$ export GST_DEBUG_DUMP_DOT_DIR = $ PWD
$ gst-launch-1.0 cefsrc url = "https://soundcloud.com/platform/sama" ! cefdemux name = d d.video ! video / x-raw, format = BGRA, framerate = 30/1! tail! videoconvert! videorate max-rate = 3000! videoscale! x264enc tune = speed-preset zerolatency = superfast key-int-max = 60 ref = 2! mux. d.audio_0! audio / x-raw, rate = 48000! tail! audioconvert! audiorate! voaacenc bitrate = 96000! mux. matroskamux name = mux! filesink location = out-sample01.mkv
As you can see, I get an empty file:
$ ls -al sample01.mkv
-rw-rw-r-- 1 tgayet tgayet 0 Oct 25 14:03 sample01.mkv
$ file sample01.mkv
sample01.mkv: empty
$ gst-discoverer-1.0 out-cef.mkv
Analyzing sample01.mkv
Done discovering sample01.mkv
An error was encountered while discovering the file
Stream contains no data.
What I can see is that I do not get a dot file for the PLAYING state; i just get READY then PAUSE.
However, when I use another source for the sound, namely the gstreamer module audiotestsrc, what I get seems ok with sound this time:
$ export GST_DEBUG = 4
$ export GST_PLUGIN_PATH = $ PWD
$ export GST_DEBUG_DUMP_DOT_DIR = $ PWD
$ gst-launch-1.0 cefsrc url = "https://soundcloud.com/platform/sama" ! cefdemux name = d d.video ! video/x-raw,format=BGRA,framerate=30/1 ! queue ! videoconvert ! videorate max-rate=3000 ! videoscale ! x264enc tune = speed-preset zerolatency = superfast key-int-max = 60 ref = 2 ! mux. audiotestsrc ! audio/x-raw ! queue ! audioconvert ! audiorate ! voaacenc bitrate = 96000 ! mux. matroskamux name = mux ! filesink location = sample02.mkv
$ ls -al sample02.mkv
-rw-rw-r-- 1 tgayet tgayet 1194840 Oct 25 14:08 sample02.mkv
$ file sample02.mkv
sample02.mkv: Matroska data
$ gst-discoverer-1.0 sample02.mkv
Analyzing sample02.mkv
Done discovering sample02.mkv
Topology:
container: Matroska
audio: MPEG-4 AAC
video: H.264 (High 4: 4: 4 Profile)
Properties:
Duration: 0: 00: 04.566000001
Seekable: yes
Live: no
tags:
container format: Matroska
audio codec: MPEG-4 AAC audio
language code: in
video codec: H264
Do you have an idea what could happen? Any idea?
Thank you in advance for your return.
Thierry
Hi,
I have tried to upgrade the latest stable release of the libcef in the CMakeLists.txt file and it builds up to release 92.0.27+g274abcf+chromium-92.0.4515.159:
set(CEF_VERSION "93.1.11+g9e254fa+chromium-93.0.4577.63")
set(CEF_ESCAPED_VERSION "93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63")
From release 93.1.11+g9e254fa+chromium-93.0.4577.63, the following error appears:
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .. && make
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Downloading /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linux64.tar.bz2.sha1...
-- Downloading /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linux64.tar.bz2...
-- [download 0% complete]
-- [download 1% complete]
-- [download 2% complete]
-- [download 3% complete]
-- [download 4% complete]
-- [download 5% complete]
-- [download 6% complete]
-- [download 7% complete]
-- [download 8% complete]
-- [download 9% complete]
-- [download 10% complete]
-- [download 11% complete]
-- [download 12% complete]
-- [download 13% complete]
-- [download 14% complete]
-- [download 15% complete]
-- [download 16% complete]
-- [download 17% complete]
-- [download 18% complete]
-- [download 19% complete]
-- [download 20% complete]
-- [download 21% complete]
-- [download 22% complete]
-- [download 23% complete]
-- [download 24% complete]
-- [download 25% complete]
-- [download 26% complete]
-- [download 27% complete]
-- [download 28% complete]
-- [download 29% complete]
-- [download 30% complete]
-- [download 31% complete]
-- [download 32% complete]
-- [download 33% complete]
-- [download 34% complete]
-- [download 35% complete]
-- [download 36% complete]
-- [download 37% complete]
-- [download 38% complete]
-- [download 39% complete]
-- [download 40% complete]
-- [download 41% complete]
-- [download 42% complete]
-- [download 43% complete]
-- [download 44% complete]
-- [download 45% complete]
-- [download 46% complete]
-- [download 47% complete]
-- [download 48% complete]
-- [download 49% complete]
-- [download 50% complete]
-- [download 51% complete]
-- [download 52% complete]
-- [download 53% complete]
-- [download 54% complete]
-- [download 55% complete]
-- [download 56% complete]
-- [download 57% complete]
-- [download 58% complete]
-- [download 59% complete]
-- [download 60% complete]
-- [download 61% complete]
-- [download 62% complete]
-- [download 63% complete]
-- [download 64% complete]
-- [download 65% complete]
-- [download 66% complete]
-- [download 67% complete]
-- [download 68% complete]
-- [download 69% complete]
-- [download 70% complete]
-- [download 71% complete]
-- [download 72% complete]
-- [download 73% complete]
-- [download 74% complete]
-- [download 75% complete]
-- [download 76% complete]
-- [download 77% complete]
-- [download 78% complete]
-- [download 79% complete]
-- [download 80% complete]
-- [download 81% complete]
-- [download 82% complete]
-- [download 83% complete]
-- [download 84% complete]
-- [download 85% complete]
-- [download 86% complete]
-- [download 87% complete]
-- [download 88% complete]
-- [download 89% complete]
-- [download 90% complete]
-- [download 91% complete]
-- [download 92% complete]
-- [download 93% complete]
-- [download 94% complete]
-- [download 95% complete]
-- [download 96% complete]
-- [download 97% complete]
-- [download 98% complete]
-- [download 99% complete]
-- [download 100% complete]
-- Extracting /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11%2Bg9e254fa%2Bchromium-93.0.4577.63_linux64.tar.bz2...
-- Performing Test COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE
-- Performing Test COMPILER_SUPPORTS_NO_UNDEFINED_VAR_TEMPLATE - Success
-- Performing Test COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS
-- Performing Test COMPILER_SUPPORTS_NO_UNUSED_LOCAL_TYPEDEFS - Success
-- Performing Test COMPILER_SUPPORTS_NO_LITERAL_SUFFIX
-- Performing Test COMPILER_SUPPORTS_NO_LITERAL_SUFFIX - Success
-- Performing Test COMPILER_SUPPORTS_NO_NARROWING
-- Performing Test COMPILER_SUPPORTS_NO_NARROWING - Success
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for modules 'gstreamer-1.0;gstreamer-video-1.0;gstreamer-audio-1.0'
-- Found gstreamer-1.0, version 1.16.2
-- Found gstreamer-video-1.0, version 1.16.2
-- Found gstreamer-audio-1.0, version 1.16.2
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tgayet/gstcefsrc/build
Scanning dependencies of target libcef_dll_wrapper
[ 0%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/shutdown_checker.cc.o
[ 1%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/transfer_util.cc.o
[ 1%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_atomic_flag.cc.o
[ 2%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_callback_helpers.cc.o
[ 2%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_callback_internal.cc.o
[ 3%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_lock.cc.o
[ 4%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_lock_impl.cc.o
[ 4%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_logging.cc.o
[ 5%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_ref_counted.cc.o
[ 5%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_thread_checker_impl.cc.o
[ 6%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/base/cef_weak_ptr.cc.o
[ 6%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/accessibility_handler_cpptoc.cc.o
[ 7%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/app_cpptoc.cc.o
[ 7%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/audio_handler_cpptoc.cc.o
[ 8%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/base_ref_counted_cpptoc.cc.o
[ 8%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/base_scoped_cpptoc.cc.o
[ 9%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/browser_process_handler_cpptoc.cc.o
[ 9%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/client_cpptoc.cc.o
[ 10%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/completion_callback_cpptoc.cc.o
[ 11%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/context_menu_handler_cpptoc.cc.o
[ 11%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/cookie_access_filter_cpptoc.cc.o
[ 12%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/cookie_visitor_cpptoc.cc.o
[ 12%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/delete_cookies_callback_cpptoc.cc.o
[ 13%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/dev_tools_message_observer_cpptoc.cc.o
[ 13%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/dialog_handler_cpptoc.cc.o
[ 14%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/display_handler_cpptoc.cc.o
[ 14%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/domvisitor_cpptoc.cc.o
[ 15%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/download_handler_cpptoc.cc.o
[ 15%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/download_image_callback_cpptoc.cc.o
[ 16%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/drag_handler_cpptoc.cc.o
[ 16%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/end_tracing_callback_cpptoc.cc.o
[ 17%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/extension_handler_cpptoc.cc.o
[ 18%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/find_handler_cpptoc.cc.o
[ 18%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/focus_handler_cpptoc.cc.o
[ 19%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/frame_handler_cpptoc.cc.o
[ 19%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/jsdialog_handler_cpptoc.cc.o
[ 20%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/keyboard_handler_cpptoc.cc.o
[ 20%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/life_span_handler_cpptoc.cc.o
[ 21%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/load_handler_cpptoc.cc.o
[ 21%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/media_observer_cpptoc.cc.o
[ 22%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/media_route_create_callback_cpptoc.cc.o
[ 22%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/media_sink_device_info_callback_cpptoc.cc.o
[ 23%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/menu_model_delegate_cpptoc.cc.o
[ 23%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/navigation_entry_visitor_cpptoc.cc.o
[ 24%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/pdf_print_callback_cpptoc.cc.o
[ 25%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/print_handler_cpptoc.cc.o
[ 25%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/read_handler_cpptoc.cc.o
[ 26%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/render_handler_cpptoc.cc.o
[ 26%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/render_process_handler_cpptoc.cc.o
[ 27%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/request_context_handler_cpptoc.cc.o
[ 27%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/request_handler_cpptoc.cc.o
[ 28%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resolve_callback_cpptoc.cc.o
[ 28%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_bundle_handler_cpptoc.cc.o
[ 29%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_handler_cpptoc.cc.o
[ 29%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/resource_request_handler_cpptoc.cc.o
[ 30%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/response_filter_cpptoc.cc.o
[ 30%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/run_file_dialog_callback_cpptoc.cc.o
[ 31%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/scheme_handler_factory_cpptoc.cc.o
[ 32%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/server_handler_cpptoc.cc.o
[ 32%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/set_cookie_callback_cpptoc.cc.o
[ 33%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/string_visitor_cpptoc.cc.o
[ 33%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/task_cpptoc.cc.o
[ 34%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/urlrequest_client_cpptoc.cc.o
[ 34%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8accessor_cpptoc.cc.o
[ 35%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8array_buffer_release_callback_cpptoc.cc.o
[ 35%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8handler_cpptoc.cc.o
[ 36%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/v8interceptor_cpptoc.cc.o
[ 36%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/web_plugin_info_visitor_cpptoc.cc.o
[ 37%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/web_plugin_unstable_callback_cpptoc.cc.o
[ 37%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/write_handler_cpptoc.cc.o
[ 38%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_ref_ptr_client_child_cp
[ 39%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_ref_ptr_client_cpptoc.c
[ 39%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_scoped_client_child_cpp
[ 40%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/test/translator_test_scoped_client_cpptoc.cc
[ 40%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/browser_view_delegate_cpptoc.cc.o
[ 41%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/button_delegate_cpptoc.cc.o
[ 41%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/menu_button_delegate_cpptoc.cc.o
[ 42%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/panel_delegate_cpptoc.cc.o
[ 42%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/textfield_delegate_cpptoc.cc.o
[ 43%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/view_delegate_cpptoc.cc.o
[ 43%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/cpptoc/views/window_delegate_cpptoc.cc.o
[ 44%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/auth_callback_ctocpp.cc.o
[ 44%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/before_download_callback_ctocpp.cc.o
[ 45%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/binary_value_ctocpp.cc.o
[ 46%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/browser_ctocpp.cc.o
[ 46%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/browser_host_ctocpp.cc.o
[ 47%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/callback_ctocpp.cc.o
[ 47%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/command_line_ctocpp.cc.o
[ 48%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/context_menu_params_ctocpp.cc.o
[ 48%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/cookie_manager_ctocpp.cc.o
[ 49%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/dictionary_value_ctocpp.cc.o
[ 49%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/domdocument_ctocpp.cc.o
[ 50%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/domnode_ctocpp.cc.o
[ 50%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/download_item_callback_ctocpp.cc.o
[ 51%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/download_item_ctocpp.cc.o
[ 51%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/drag_data_ctocpp.cc.o
[ 52%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/extension_ctocpp.cc.o
[ 52%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/file_dialog_callback_ctocpp.cc.o
[ 53%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/frame_ctocpp.cc.o
[ 54%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/get_extension_resource_callback_ctocpp.cc.o
[ 54%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/image_ctocpp.cc.o
[ 55%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/jsdialog_callback_ctocpp.cc.o
[ 55%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/list_value_ctocpp.cc.o
[ 56%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/media_route_ctocpp.cc.o
[ 56%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/media_router_ctocpp.cc.o
[ 57%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/media_sink_ctocpp.cc.o
[ 57%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/media_source_ctocpp.cc.o
[ 58%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/menu_model_ctocpp.cc.o
[ 58%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/navigation_entry_ctocpp.cc.o
[ 59%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/post_data_ctocpp.cc.o
[ 59%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/post_data_element_ctocpp.cc.o
[ 60%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_dialog_callback_ctocpp.cc.o
[ 61%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_job_callback_ctocpp.cc.o
[ 61%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/print_settings_ctocpp.cc.o
[ 62%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/process_message_ctocpp.cc.o
[ 62%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/registration_ctocpp.cc.o
[ 63%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_callback_ctocpp.cc.o
[ 63%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_context_ctocpp.cc.o
[ 64%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/request_ctocpp.cc.o
[ 64%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_bundle_ctocpp.cc.o
[ 65%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_read_callback_ctocpp.cc.o
[ 65%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/resource_skip_callback_ctocpp.cc.o
[ 66%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/response_ctocpp.cc.o
[ 66%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/run_context_menu_callback_ctocpp.cc.o
[ 67%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/scheme_registrar_ctocpp.cc.o
[ 68%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/select_client_certificate_callback_ctocpp.cc
[ 68%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/server_ctocpp.cc.o
[ 69%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/sslinfo_ctocpp.cc.o
[ 69%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/sslstatus_ctocpp.cc.o
[ 70%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/stream_reader_ctocpp.cc.o
[ 70%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/stream_writer_ctocpp.cc.o
[ 71%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/task_runner_ctocpp.cc.o
[ 71%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/thread_ctocpp.cc.o
[ 72%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/urlrequest_ctocpp.cc.o
[ 72%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8context_ctocpp.cc.o
[ 73%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8exception_ctocpp.cc.o
[ 73%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8stack_frame_ctocpp.cc.o
[ 74%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8stack_trace_ctocpp.cc.o
[ 75%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/v8value_ctocpp.cc.o
[ 75%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/value_ctocpp.cc.o
[ 76%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/waitable_event_ctocpp.cc.o
[ 76%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/web_plugin_info_ctocpp.cc.o
[ 77%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/x509cert_principal_ctocpp.cc.o
[ 77%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/x509certificate_ctocpp.cc.o
[ 78%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/xml_reader_ctocpp.cc.o
[ 78%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/zip_reader_ctocpp.cc.o
[ 79%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ctocpp.cc.o
[ 79%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_child_c
[ 80%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_child_c
[ 80%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_ref_ptr_library_ctocpp.
[ 81%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_child_ch
[ 82%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_child_ct
[ 82%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/test/translator_test_scoped_library_ctocpp.c
[ 83%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/box_layout_ctocpp.cc.o
[ 83%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/browser_view_ctocpp.cc.o
[ 84%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/button_ctocpp.cc.o
[ 84%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/display_ctocpp.cc.o
[ 85%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/fill_layout_ctocpp.cc.o
[ 85%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/label_button_ctocpp.cc.o
[ 86%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/layout_ctocpp.cc.o
[ 86%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/menu_button_ctocpp.cc.o
[ 87%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/menu_button_pressed_lock_ctocpp.cc.o
[ 87%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/panel_ctocpp.cc.o
[ 88%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/scroll_view_ctocpp.cc.o
[ 89%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/textfield_ctocpp.cc.o
[ 89%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/view_ctocpp.cc.o
[ 90%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/ctocpp/views/window_ctocpp.cc.o
[ 90%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_byte_read_handler.cc.o
[ 91%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_closure_task.cc.o
[ 91%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_message_router.cc.o
[ 92%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_resource_manager.cc.o
[ 92%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_scoped_temp_dir.cc.o
[ 93%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_stream_resource_handler.cc.o
[ 93%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_xml_object.cc.o
[ 94%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/cef_zip_archive.cc.o
[ 94%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/libcef_dll_wrapper.cc.o
[ 95%] Building CXX object libcef_dll_wrapper/CMakeFiles/libcef_dll_wrapper.dir/wrapper/libcef_dll_wrapper2.cc.o
[ 96%] Linking CXX static library libcef_dll_wrapper.a
[ 96%] Built target libcef_dll_wrapper
Scanning dependencies of target gstcef
[ 96%] Building CXX object CMakeFiles/gstcef.dir/gstcef.cc.o
[ 97%] Building CXX object CMakeFiles/gstcef.dir/gstcefsrc.cc.o
In file included from /usr/include/dirent.h:245,
from /usr/include/glib-2.0/glib/gdir.h:32,
from /usr/include/glib-2.0/glib.h:45,
from /usr/include/gstreamer-1.0/gst/gst.h:27,
from /home/tgayet/gstcefsrc/gstcefsrc.h:4,
from /home/tgayet/gstcefsrc/gstcefsrc.cc:14:
/home/tgayet/gstcefsrc/gstcefsrc.cc: In member function ‘virtual void BrowserClient::OnBeforeClose(CefRefPtr<CefBrowser>)’:
/home/tgayet/gstcefsrc/gstcefsrc.cc:278:23: error: ambiguous overload for ‘operator=’ (operand types are ‘CefRefPtr<CefBrowser>’ {a
278 | mElement->browser = NULL;
| ^~~~
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/inte
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/cef_
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/cef_
from /home/tgayet/gstcefsrc/gstcefsrc.cc:5:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_scoped_refptr.h:2refptr<T>::operator=(std::nullptr_t) [with T = CefBrowser; std::nullptr_t = std::nullptr_t]’
274 | scoped_refptr& operator=(std::nullptr_t) {
| ^~~~~~~~
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_scoped_refptr.h:2refptr<T>::operator=(T*) [with T = CefBrowser]’
279 | scoped_refptr& operator=(T* p) { return *this = scoped_refptr(p); }
| ^~~~~~~~
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_scoped_refptr.h:2refptr<T>::operator=(scoped_refptr<T>) [with T = CefBrowser]’
282 | scoped_refptr& operator=(scoped_refptr r) noexcept {
| ^~~~~~~~
/home/tgayet/gstcefsrc/gstcefsrc.cc: In destructor ‘ShutdownEnforcer::~ShutdownEnforcer()’:
/home/tgayet/gstcefsrc/gstcefsrc.cc:489:57: error: invalid use of incomplete type ‘base::Callback<void()>’ {aka ‘class base::Repeat
489 | CefPostTask(TID_UI, base::Bind(&quit_message_loop, 0));
| ^
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_callback_forward.)>’ {aka ‘class base::RepeatingCallback<void()>’}
49 | class RepeatingCallback;
| ^~~~~~~~~~~~~~~~~
/home/tgayet/gstcefsrc/gstcefsrc.cc: In function ‘gboolean gst_cef_src_start(GstBaseSrc*)’:
/home/tgayet/gstcefsrc/gstcefsrc.cc:537:85: error: invalid use of incomplete type ‘base::Callback<void()>’ {aka ‘class base::Repeat
537 | CefPostTask(TID_UI, base::Bind(&BrowserClient::MakeBrowser, browserClient.get(), 0));
| ^
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_callback_forward.)>’ {aka ‘class base::RepeatingCallback<void()>’}
49 | class RepeatingCallback;
| ^~~~~~~~~~~~~~~~~
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h: In instan::BindTypeHelper<Functor, BoundArgs>::UnboundRunType> base::Bind(Functor&&, Args&& ...) [with Functor = void (*)(int); Args = {int}Helper<Functor, BoundArgs>::UnboundRunType> = base::RepeatingCallback<void()>; typename base::internal::BindTypeHelper<Functor, Bou
/home/tgayet/gstcefsrc/gstcefsrc.cc:489:57: required from here
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h:133:65: erass base::RepeatingCallback<void()>’} is incomplete
133 | inline Callback<internal::MakeUnboundRunType<Functor, Args...>> Bind(
| ^~~~
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h:136:29: erepeatingCallback<void()>’
136 | return base::BindRepeating(std::forward<Functor>(functor),
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137 | std::forward<Args>(args)...);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_callback_forward.gCallback<void()>’
49 | class RepeatingCallback;
| ^~~~~~~~~~~~~~~~~
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h: In instan::BindTypeHelper<Functor, BoundArgs>::UnboundRunType> base::Bind(Functor&&, Args&& ...) [with Functor = void (BrowserClient::*)(intpename base::internal::BindTypeHelper<Functor, BoundArgs>::UnboundRunType> = base::RepeatingCallback<void()>; typename base::internType = void()]’:
/home/tgayet/gstcefsrc/gstcefsrc.cc:537:85: required from here
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h:133:65: erass base::RepeatingCallback<void()>’} is incomplete
133 | inline Callback<internal::MakeUnboundRunType<Functor, Args...>> Bind(
| ^~~~
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_bind.h:136:29: erepeatingCallback<void()>’
136 | return base::BindRepeating(std::forward<Functor>(functor),
| ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137 | std::forward<Args>(args)...);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base
from /home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/wrap
from /home/tgayet/gstcefsrc/gstcefsrc.cc:10:
/home/tgayet/gstcefsrc/third_party/cef/cef_binary_93.1.11+g9e254fa+chromium-93.0.4577.63_linux64/include/base/cef_callback_forward.gCallback<void()>’
49 | class RepeatingCallback;
| ^~~~~~~~~~~~~~~~~
At global scope:
cc1plus: error: unrecognized command line option ‘-Wno-undefined-var-template’ [-Werror]
cc1plus: all warnings being treated as errors
make[2]: *** [CMakeFiles/gstcef.dir/build.make:76: CMakeFiles/gstcef.dir/gstcefsrc.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:98: CMakeFiles/gstcef.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
Did you notice this build error? This no longer builds from release 93.1.11+g9e254fa+chromium-93.0.4577.63 up to 96.0.16+g89c902b+chromium-96.0.4664.55 !
Feel free to contact us.
Regards
Thierry
Hey there! Thanks for working on this, it looks like it could be a promising solution to the current problem I'm working on solving :)
Eventually, I'll be running this on a Linux server, but during testing I'm using macOS. When I run the build steps in the README, things go pretty well until the very end. The cmake
command downloads cef and extracts it, and everything seems good with the cmake
command. When I run the make
command, the build process get's through 97% of the process, I see it builds the target libcef_dll_wrapper
successfully, but then I see these error lines at the end of the build process:
[ 97%] Linking CXX static library libcef_dll_wrapper.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(cef_atomicops_x86_gcc.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(cef_lock.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(libcef_dll_wrapper2.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(cef_atomicops_x86_gcc.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(cef_lock.cc.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: libcef_dll_wrapper.a(libcef_dll_wrapper2.cc.o) has no symbols
[ 97%] Built target libcef_dll_wrapper
Scanning dependencies of target gstcef
[ 97%] Building CXX object CMakeFiles/gstcef.dir/gstcef.cc.o
[ 98%] Building CXX object CMakeFiles/gstcef.dir/gstcefsrc.cc.o
[ 98%] Building CXX object CMakeFiles/gstcef.dir/gstcefdemux.cc.o
[ 99%] Building CXX object CMakeFiles/gstcef.dir/gstcefaudiometa.cc.o
make[2]: *** No rule to make target `libcef_lib-NOTFOUND', needed by `Release/libgstcef.dylib'. Stop.
make[1]: *** [CMakeFiles/gstcef.dir/all] Error 2
make: *** [all] Error 2
Any idea if there are some different steps I need to take to get this up and running on macOS? I don't have a lot of experience with cef, so maybe it's something I need to do differently in regard to building that?
Any help or pointers would be greatly appreciated! Thanks again!
I'm looking to add a vsync
type functionality to the cefsrc element that would only push buffers when a fresh one is painted in the RenderHandler.OnPaint
method. Ultimately I want to be able to record webgl applications that may have a variable frame rate into a constant frame rate video. In other words, I want one frame in my mp4 file per requestAnimationFrame
in js land.
Currently it's clear that (baring some initial paints), there is 1 OnPaint
call per animation frame.
I can sort of get there by controlling the duration and pts time in gst_cef_src_create
, but I was wondering if you had some better idea. Is the answer something to do with making the element non-live for this vsync use case?
Can't compile the plugin on MacBook Pro M1 (macOS Ventura):
Have all gstreamer-related dependencies installed. During cmake run, I saw this warning several times:
IMPORTED_LOCATION not set for imported target "libcef_lib" configuration
"Release".
UPD: Found possible reason. This build https://cef-builds.spotifycdn.com/index.html#macosarm64 has only sandboxed version of module cef_sandbox.a
and CMakeLists.txt
has no support if CEF sandboxed. Because in that case, env with paths to that module have a bit different names.
Hi Mathieu,
I just found your project github module gstreamer for CEF and I really love your idea. Indeed, I work with embedded cef and the approach of linking it as a gstreamer module is really great! Well done !
So I tested it a lot and it works really well.
I modified it to point to a newer version because my url is a website recovering Audio and Video sources in webrtc. Indeed, in versions prior of CEF, it has bug with the ICE protocol (STUN / TURN).
In addition, I observed an issue. Before testing your cef module, I mixed the sound with pulse audio mixer and it went well when I had two separate sounds: they were well added. As you know, the on_paint() callback from CEF also manages a callback for the audio but the latter remains unitary and two sounds from two different sources are not added.Previously, when I overloaded the audio and video callback, I also realized an internal audio mix based on the different audio callbacks.
Do you want to modify your module to manage the mix internally in the gstsrc module? Indeed, without this mix it adds a contrait because only the first audio source is heard, the second is not managed.
Sample of simple test page:
<html>
<body style="background-color:aliceblue;">
<embed type="video/mp4" src="Comptines_et_chansons_pour_enfants.mp4" autostart="true" width="600" height="720" volume="1"/>
<embed type="video/webm" src="Volcano_Lava_Sample.webm" autostart="true" width="400" height="720" volume="0.3"/>
</body>
</html>
Thank you in advance for your return.
Thierry
After #31 developers following readme won't be able to run examples
Setting pipeline to PAUSED ...
[0917/180736.657175:ERROR:context.cc(108)] The browser_subprocess_path directory (Release/gstcefsubprocess) is not an absolute path. Defaulting to empty.
[0917/180736.657298:ERROR:context.cc(108)] The locales_dir_path directory (Release/locales) is not an absolute path. Defaulting to empty.
Error initializing: Unknown option --type=zygote
Error initializing: Unknown option --type=zygote
Error initializing: Unknown option --type=utility
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[0917/180736.694625:FATAL:gpu_data_manager_impl_private.cc(407)] GPU process isn't usable. Goodbye.
Error initializing: Unknown option --type=utility
[1] 299009 trace trap (core dumped) GST_PLUGIN_PATH=Release:$GST_PLUGIN_PATH gst-launch-1.0 cefsrc ! video/x-raw
HI,
I have (re)build your module in debug mode with success. Indeed, I wanted to be able to investigate thanks to my debugger.
Indeed, two configurations types are defined within the CMakeList.txt file:
set(CMAKE_CONFIGURATION_TYPES Debug Release)
For that purpose, I have regenerated a cmake environment for the debug target.
The compilation succeed :
$ git clone https://github.com/centricular/gstcefsrc.git
$ cd gstcefsrc/
$ mkdir build-dbg && cd build-dbg
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
$ make
but the the runtime generate crashes :
$ GST_PLUGIN_PATH=$PWD/Debug:$GST_PLUGIN_PATH gst-launch-1.0 cefsrc url="https://soundcloud.com/platform/sama" ! queue ! cefdemux name=d d.video ! video/x-raw ! queue ! videoconvert ! autovideosink d. ! audio/x-raw ! queue ! audioconvert ! autoaudiosink async-handling=true
Setting pipeline to PAUSED ...
[1029/173958.135954:FATAL:resource_bundle.cc(953)] Check failed: false.
Trace/breakpoint trap (core dumped)
Any idea of the problem?
Did you experiment with this issue on your side too?
BR
Thierry
Test pipeline hangs when output window is closed or Ctrl+C in terminal. Also, I'll see a 'GPUCache' folder with some files (data_0, data_1, data_2, data_3, index).
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got context from element 'playsink': gst.d3d11.device.handle=context, device=(GstD3D11Device)"\(GstD3D11Device\)\ d3d11device4", adapter=(uint)0, adapter-luid=(gint64)66049, device-id=(uint)39520, vendor-id=(uint)32902, hardware=(boolean)true, description=(string)"Intel\(R\)\ UHD\ Graphics";
Redistribute latency...
ERROR: from element /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstAutoVideoSink:videosink/GstD3D11VideoSink:videosink-actual-sink-d3d11video: Output window was closed
Additional debug info:
../sys/d3d11/gstd3d11videosink.cpp(1195): gst_d3d11_video_sink_show_frame (): /GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstAutoVideoSink:videosink/GstD3D11VideoSink:videosink-actual-sink-d3d11video
Execution ended after 0:00:05.107888000
Setting pipeline to NULL ...
Freeing pipeline ...
Same happens when an EOS is sent.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'autovideosink0': gst.d3d11.device.handle=context, device=(GstD3D11Device)"\(GstD3D11Device\)\ d3d11device4", adapter=(uint)0, adapter-luid=(gint64)66049, device-id=(uint)39520, vendor-id=(uint)32902, hardware=(boolean)true, description=(string)"Intel\(R\)\ UHD\ Graphics";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:00.155079000
Setting pipeline to NULL ...
Freeing pipeline ...
Hi,
May i know the usage of the gstcefsubprocess binary with the gstcef module ?
How is it used with the gst pipeline ?
thanks in advance for your reply.
BR
Thierry
I have been running cefsrc in docker for a while now. Everything was fine until recently I updated docker images and it segfaults :( I assume issue is in this repo or https://github.com/restreamio/docker-gstreamer not sure.
Command to test
Xvfb :0 -screen 0 1920x1080x24 &
export GST_DEBUG=5
export GST_PLUGIN_PATH=/usr/cef:$GST_PLUGIN_PATH
export DISPLAY=:0
gst-launch-1.0 -e cefsrc url=https://soundcloud.com/platform/sama num-buffers=135000 gpu=false do-timestamp=true log-severity=1 ! \
video/x-raw,width=1920,height=1080,framerate=50/1 ! cefdemux name=demux ! \
queue max-size-bytes=4294967295 max-size-buffers=5000 max-size-time=18446744073709551615 ! \
videoconvert ! x264enc ! mp4mux ! filesink location=output.mp4
ARG GST_PLUGINS_RS_TAG=main
FROM catthehacker/ubuntu:rust-22.04 as builder
# https://ryandaniels.ca/blog/docker-dockerfile-arg-from-arg-trouble/
ARG GST_PLUGINS_RS_TAG
WORKDIR /usr/src/gst-plugins-rs
ENV DEST_DIR /opt/gst-plugins-rs
ENV CARGO_PROFILE_RELEASE_DEBUG false
RUN apt update \
&& apt install -yq --no-install-recommends \
libgstreamer-plugins-base1.0-dev \
libgstreamer1.0-dev \
libcsound64-dev \
libclang-11-dev \
libpango1.0-dev \
libdav1d-dev
# libgtk-4-dev # Only in bookworm
RUN git clone -c advice.detachedHead=false \
--branch ${GST_PLUGINS_RS_TAG} \
--single-branch https://github.com/sdroege/gst-plugin-rs \
/usr/src/gst-plugins-rs
RUN export CSOUND_LIB_DIR="/usr/lib/$(uname -m)-linux-gnu" && \
export PLUGINS_DIR=$(pkg-config --variable=pluginsdir gstreamer-1.0) && \
export SO_SUFFIX=so && \
cargo build --release \
--package gst-plugin-png \
&& \
install -v -d ${DEST_DIR}/${PLUGINS_DIR} && \
install -v -m 755 target/release/*.${SO_SUFFIX} ${DEST_DIR}${PLUGINS_DIR}
from restreamio/gstreamer:x86_64-latest-prod
COPY --from=builder /opt/gst-plugins-rs/ /
WORKDIR /usr/recorder
RUN apt update && \
apt install -yq --no-install-recommends curl xvfb && \
curl -s https://deb.nodesource.com/setup_16.x | bash && \
apt-get install -y nodejs
ENV CEFSRC_PLUGIN_DIR /usr/cef
COPY . .
CMD ./run.sh
#!/bin/bash
export DISPLAY=:0
while :
do
Xvfb :0 -screen 0 1920x1080x24
echo "Xvfb has Crashed"
sleep 1
done &
npm start
Debug log
0:00:00.561307153 12 0x55eee5cffb00 INFO cefsrc gstcefsrc.cc:713:run_cef: Initializing CEF
[0505/140854.168528:VERBOSE1:cdm_registration.cc(189)] Widevine enabled but no library found
[0505/140854.168530:VERBOSE1:cdm_registration.cc(189)] Widevine enabled but no library found
[0505/140854.168578:INFO:cpu_info.cc(53)] Available number of cores: 32
[0505/140854.168582:INFO:cpu_info.cc(53)] Available number of cores: 32
[0505/140854.168588:VERBOSE1:zygote_main_linux.cc(218)] ZygoteMain: initializing 0 fork delegates
[0505/140854.168586:VERBOSE1:zygote_main_linux.cc(218)] ZygoteMain: initializing 0 fork delegates
[0505/140854.172348:VERBOSE1:pref_proxy_config_tracker_impl.cc(187)] 0x7f8a08019d40: set chrome proxy config service to 0x7f8a08050180
[0505/140854.172524:VERBOSE1:cdm_registration.cc(189)] Widevine enabled but no library found
[0505/140854.173899:VERBOSE1:pulse_util.cc(236)] Failed to connect to the context. Error: Connection refused
[0505/140854.173916:WARNING:audio_manager_linux.cc(60)] Falling back to ALSA for audio output. PulseAudio is not available or could not be initialized.
[0505/140854.173955:VERBOSE1:webrtc_internals.cc(120)] Could not get the download directory.
[0505/140854.174124:VERBOSE1:media_stream_manager.cc(1065)] MSM::InitializeMaybeAsync([this=0x7f8a08003990])
[0505/140854.174137:VERBOSE1:media_stream_manager.cc(1065)] MDM::MediaDevicesManager()
[0505/140854.174140:VERBOSE1:media_stream_manager.cc(1065)] MSM::MediaStreamManager([this=0x7f8a08003990]))
[0505/140854.175577:VERBOSE1:first_party_sets_handler_impl.cc(432)] Empty path. Failed loading serialized First-Party Sets file.
[0505/140854.175579:VERBOSE1:component_installer.cc(285)] StartRegistration for Widevine Content Decryption Module
[0505/140854.175800:VERBOSE1:component_installer.cc(441)] FinishRegistration for Widevine Content Decryption Module
[0505/140854.175815:VERBOSE1:component_updater_service.cc(131)] CrxUpdateService starting up. First update attempt will take place in 60 seconds. Next update attempt will take place in 18000 seconds.
[0505/140854.177038:VERBOSE1:key_storage_util_linux.cc(54)] Password storage detected desktop environment: (unknown)
[0505/140854.177062:VERBOSE1:key_storage_linux.cc(123)] Selected backend for OSCrypt: BASIC_TEXT
[0505/140854.177068:VERBOSE1:key_storage_linux.cc(143)] OSCrypt did not initialize a backend.
[0505/140854.177137:VERBOSE1:pref_proxy_config_tracker_impl.cc(187)] 0x7f8a081748f0: set chrome proxy config service to 0x7f8a0816ea90
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
[0100/000000.180773:VERBOSE1:vaapi_wrapper.cc(844)] InitializeVaDriver_Locked(): vaInitialize failed: unknown libva error
Segmentation fault (core dumped)
root@1937c1edc00c:/usr/recorder# [0100/000000.453051:WARNING:sandbox_linux.cc(380)] InitializeSandbox() called with multiple threads in process gpu-process.
Running on Ubuntu any sample command gets me "Setting pipeline to PAUSED ...".
Any idea why?
Thank you!
Hi,
I'm pretty new with gstreamer. One thing I would like to do is save cef video + audio to file.
gst-launch-1.0 cefsrc url="https://soundcloud.com/platform/sama" ! \
video/x-raw, width=1920, height=1080, framerate=60/1 ! \
cefdemux name=demux ! videoconvert ! queue ! x264enc ! \
mp4mux name=muxer fragment-duration=1000 ! filesink location='test.mp4' \
demux. ! queue ! audioconvert ! audiorate ! audioresample ! faac bitrate=128000 ! muxer.
Stuck at
gst-launch-1.0 cefsrc url="https://soundcloud.com/platform/sama" ! \
video/x-raw, width=1920, height=1080, framerate=60/1 ! \
cefdemux name=demux ! videoconvert ! queue ! x264enc ! \
mp4mux name=muxer fragment-duration=1000 ! filesink location='test.mp4' \
demux. ! queue ! audioconvert ! audiorate ! audioresample ! faac bitrate=128000 ! muxer.
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
After reading this comment #10 (comment) I tried that and it worked, but only 20% of the time. The rest 80% it still stuck and didn't do anything.
I see that @MathieuDuponchelle mentions "pad-added / pad-removed signals"' Tho from last CEF updates we have consistent audio pad right?
Maybe someone could shine light on me on what I am doing wrong and how to fix it?
Thanks!
@MathieuDuponchelle first of all, great job on this plugin.
I love it because it does not need Wayland as wpe
so it was "easy" for me
to compile and use it in a container.
As I am not a big C/C++ developer (or not even at all) and I already tested a lot of HTML/JS use-cases, I have a question.
How could you/I enable WebSocket support?
As I already said, I tested threeJS
and a lot of JS/CSS stuff with this plugin also in LIVE and it was perfect, but WebSockets
is the last missing link for me to build an HTML5/CSS/JS-"graphic engine" for LIVE with this plugin.
I would really appreciate it if you give me a hint, maybe even feasibility?
Thank you in advance, Michael
The "UI" thread is at least one process. The 4 others I'm not sure yet what they're for. Stopping a source element should clean-up resources, it's currently not the case, until the app process is terminated.
Current master (79fbffc) makes our app explode:
GStreamer-Audio: gst_audio_buffer_map: assertion 'meta->samples <=
gst_buffer_get_size (gstbuffer) / GST_AUDIO_INFO_BPF (&meta->info)' failed
I think I can spot some issues:
audio_info
isn't updated when the caps change.gst_buffer_add_audio_meta
instead of the sample count.Hi @philn, @MathieuDuponchelle
Thanks for giving us this great plugin!
I've being playing around with it, using appsink for video only.
cefsrc name=cefsrc ! videoconvert ! x264enc name=encode pass=17 tune=zerolatency bitrate=2000 speed-preset=superfast ! appsink name=video sync=false
Lately I've being trying to add audio but with no luck.
cefsrc name=cefsrc ! cefdemux name=d d.video ! queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! videoconvert ! x264enc name=encode pass=17 tune=zerolatency bitrate=2000 speed-preset=superfast appsink name=video sync=false audiotestsrc do-timestamp=true is-live=true volume=0.00 ! audiomixer name=mix ! queue max-size-bytes=0 max-size-buffers=0 max-size-time=3000000000 ! audioconvert ! appsink name=audio sync=false d.audio ! mix.'
I'm running into all sort of issues, like stream get stuck, audio is noise etc...
I'm trying to debug it... got curious about the use audiotestsrc. Why is it required? and what does it do ? Aren't we creating the buffer of the audio buffer in OnAudioStreamPacket and then just push it down stream via the demux so why do we need the audiotestsrc?
To be fair Im not a gstreamer expect, but do have some experience with it.
gst-launch process uses 100% cpu load even on loading an empty html page.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.