Kurento / kurento

Kurento WebRTC Media Server
Apache License 2.0
304 stars 58 forks source link

server: Rework EncoderBitrate. Improve Transcoding event #24

Closed j1elo closed 1 year ago

j1elo commented 1 year ago

Debug messages explaining what is going on with the different values were very confusing, so now they were rewritten to make them clearer.

The Transcoding event was not correctly emitted under some conditions like first connecting a compatible sink, then adding an incompatible one which needed transcoding; the latter would not cause a "transcoding active" event.

Handling of target/min/max bitrate for the encoder was very confusing, because it only took place at the beginning when loading those values from the Kurento .conf files. From that point, client calls to set new values would only have an effect if the agnosticbin / enctreebin was already active, i.e. this would not work:

  1. Start a pipeline without transcoding.
  2. Set new target/min/max bitrate values.
  3. Connect a new Element which requires transcoding.

All this should now be fixed. Debug logs are there to make it very clear where and when the new values are applied, so that should also help.

As an example, a test recording done with the HelloWorld-Recording Java tutorial, where:

  1. The server is configured with a global min/target/max of 1000, 2000, 3000 kbps.
  2. The server SDP config has H.264 disabled, to make sure it negotiates VP8 with the WebRTC source.
  3. The recorder is configured for MP4, i.e. H.264, so there will be transcoding happening in the WebRtcEndpoint.
  4. Recording starts. Target bitrate is the default 2000 kbps.
  5. After 1 minute, the app changes target to 500 kbps. As this is below the minimum, the applied bitrate is 1000 instead.
  6. After 1 minute, the app changes target to 3500 kbps. As this is above the maximum, the applied bitrate is 3000 instead.

The resulting bitrate graph looks like this:

image

Fixes https://github.com/Kurento/kurento/issues/18 Resolves https://github.com/orgs/Kurento/discussions/17

j1elo commented 1 year ago

Currently making a new build with this branch, that will be available at http://ubuntu.openvidu.io/dev-18-encoder-bitrate for apt-get and kurento/kurento-media-server:dev-18-encoder-bitrate for Docker

j1elo commented 1 year ago

@neilyoung seems that we're having difficulties with the infra and apt-get repos won't be available in the next days so I cannot ask you to test with packages built from https://github.com/Kurento/kurento/pull/24

But I know you can use a custom Kurento built from sources so maybe you can test it out already to see if it provides a good enough solution to the issue you were facing?

All the changes are in the 18-encoder-bitrate branch of this repository, so it should be a matter of checking it out and just building the server.

Note that for my tests I was using the RecorderEndpoint and plotbitrate to make the graph, and I found a very different behavior between the current versions of the VP8 encoder (vpx) and H.264 encoder (x264); the former does what it wants with the bitrate and didn't really follow the requested target bitrate, while the latter goes much closer to what I was requesting. This tells me that something might be wrong in the configuration of the encoder itself, but the whole mechanism of the EncoderBitrate API is working as expected (the values are correctly processed and passed to the encoder, then the encoder should honor them).

If there is a better configuration of GStreamer's vp8enc (here: kmsenctreebin.c:145), that would be a separate improvement to study and make.

neilyoung commented 1 year ago

Thanks. Will check it out and test

neilyoung commented 1 year ago

Looks as if I would have a little problem to install my new built. I'm running

bin/build-run.sh --build-only

since this was the command, which I ran with my very first build and it also installed the service.

Now, since I still could not see any improvement, I was checking version and date and location of what is run with kurento-media-server:

which kurento-media-server
/usr/bin/kurento-media-server

kurento-media-server --version

Kurento Media Server version: 7.0.0
Found modules:
        'core' version 7.0.0
        'elements' version 7.0.0
        'filters' version 7.0.0
        'webrtcarucocode' version 0.2.0~17.g4a42814
        'webrtcbarcode' version 0.2.0~8.g2dc7fb7
        'webrtccbr' version 0.2.0~9.ge481621

Looks the build command didn't install the newly built file. I found it here:

./build-Debug/media-server/server/kurento-media-server --version

/build-Debug/media-server/server/kurento-media-server --version
0:00:00.007931265 19231 0x559ec7fdda70 INFO    KurentoModuleManager ModuleManager.cpp:161:loadModules: Skip non-existent path: /usr/local/lib/kurento/modules
Kurento Media Server version: 7.0.1~8.g2fff9a80b

This now loads 7.0.1, which seems to be the most recent version. I can't load my modules with it but this is secondary.

If I set the KURENTO_MODULES_PATH I'm again loading some old version:

ubuntu@kms7:~/kurento/server$ export KURENTO_MODULES_PATH=/usr/lib/x86_64-linux-gnu/kurento/modules/
ubuntu@kms7:~/kurento/server$ ./build-Debug/media-server/server/kurento-media-server --version
0:00:00.008221354 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmscoremodule.so
0:00:00.008255233 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: core, version: 7.0.0, date: Mar 21 2023 16:57:44
0:00:00.010373558 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtccbrmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtccbrmodule.so
0:00:00.010394851 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: webrtccbr, version: 0.2.0~9.ge481621, date: Mar 28 2023 10:51:39
0:00:00.012080067 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcbarcodemodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcbarcodemodule.so
0:00:00.012101968 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: webrtcbarcode, version: 0.2.0~8.g2dc7fb7, date: Mar 28 2023 10:51:02
0:00:00.016527944 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmselementsmodule.so
0:00:00.016553621 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: elements, version: 7.0.0, date: Mar 21 2023 17:03:47
0:00:00.016709645 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmsfiltersmodule.so
0:00:00.016722672 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: filters, version: 7.0.0, date: Mar 21 2023 17:09:51
0:00:00.017280808 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcarucocodemodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcarucocodemodule.so
0:00:00.017297984 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: webrtcarucocode, version: 0.2.0~17.g4a42814, date: Mar 28 2023 10:51:21
0:00:00.017309708 18974 0x562b0e704a70 INFO    KurentoModuleManager ModuleManager.cpp:161:loadModules: Skip non-existent path: /usr/local/lib/kurento/modules
Kurento Media Server version: 7.0.1~8.g2fff9a80b
Found modules:
        'core' version 7.0.0
        'elements' version 7.0.0
        'filters' version 7.0.0
        'webrtcarucocode' version 0.2.0~17.g4a42814
        'webrtcbarcode' version 0.2.0~8.g2dc7fb7
        'webrtccbr' version 0.2.0~9.ge481621

Sorry for this. This explains, why I couldn't see an improvement in the first round. I compiled it, but it never did install.

What command could enable me to install the latest build?

As said, it seemed to have worked for the very first build only.

neilyoung commented 1 year ago

Copied the built file to /usr/bin/kurento-media-server as sudo. Seems to make more sense now (even though I'm not sure with the old versions of core elements and filters)

Kurento Media Server version: 7.0.1~19.ga2cd30b9e
Found modules:
        'core' version 7.0.0
        'elements' version 7.0.0
        'filters' version 7.0.0
        'webrtcarucocode' version 0.2.0~17.g4a42814
        'webrtcbarcode' version 0.2.0~8.g2dc7fb7
        'webrtccbr' version 0.2.0~9.ge481621

EDIT: No doesn't work

:00:26.084774638 33782 0x7f6a000022c0 WARN      GST_PLUGIN_LOADING gstplugin.c:1330:gst_plugin_load_by_name: load_plugin error: Opening module failed: /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libkmscore.so: undefined symbol: kms_enc_tree_bin_set_bitrate_limits

I have some mix of versions now

j1elo commented 1 year ago

The build done by bin/build-run.sh is intended to be a standalone build that doesn't depend on any other Kurento package installed in the system, so it's not at all intended to be used as you're doing, by copying the binary. Also even though that does seem to work, you'd only be copying the main binary (which has like only the boot code) and not the core/elements/filters libraries, which have like the actual 99% of functionality.

The correct way to work with this script is to run it without --build-only, and let it run the media server as an ad-hoc execution (no service integration).

In order to make it load your modules successfully, you'd have to set the variable KURENTO_MODULES_PATH before running the script; I'll verify a sample command that works and will let you know in a few minutes.

neilyoung commented 1 year ago

I tried to get rid of the old installation by deleting everything, which sounds like kurento and wasn't in my home dir. Unfortunately all /etc/kurento things were lost too.

Abandoned this VM. Will make a fresh install with 18-encoder-bitrate. Not an issue.

neilyoung commented 1 year ago

The build done by bin/build-run.sh is intended to be a standalone build that doesn't depend on any other Kurento package installed in the system, so it's not at all intended to be used as you're doing, by

Hmm. Not fully understanding this: Shouldn't be kmscore, kmsfilter and kmselements be built as well? I didn't install those separately. But after build-only (also tried --release, no --build-only) those were still at 7.0.0, while some modules where at 7.0.1

neilyoung commented 1 year ago

Well, no. I'm now not knowing what's cooking anymore. Fresh VM, fresh install of KMS7. Branch 18-encoder-bitrate.

ubuntu@kms7:~/kurento$ git branch
* 18-encoder-bitrate
  main
ubuntu@kms7:~/kurento$ git pull
Already up to date.

Compiled. Service terminated. Debug statements configured and KMS started:

export GST_DEBUG="2,Kurento*:4,kms*:4,sdp*:4,webrtc*:4,*rtpendpoint:4,rtp*handler:4,rtpsynchronizer:4,agnosticbin:4,enctreebin:5,agnosticbin:5"
kurento-media-server

My application once at startup configures this (order is deciding!)

                   await webRtcEndpoint.setMinEncoderBitrate((config.maxBandwidth - 0.5 * config.maxBandwidth) * 1000)
                   await webRtcEndpoint.setEncoderBitrate(config.maxBandwidth * 1000)
                   await webRtcEndpoint.setMaxEncoderBitrate((config.maxBandwidth + 0.5 * config.maxBandwidth) * 1000)

config.maxBandwidth = 3000

KMS traces this:

0:00:00.016578528  4373 0x559003967c60 INFO    KurentoServerMethods ServerMethods.cpp:88:ServerMethods: Using above 80% of system limits will throw NOT_ENOUGH_RESOURCES exception
0:00:00.016586129  4373 0x559003967c60 INFO    KurentoServerMethods ServerMethods.cpp:107:ServerMethods: System limits: 42898 threads, 1024 files
0:00:00.016635394  4373 0x559003967c60 INFO       KurentoWorkerPool WorkerPool.cpp:67:WorkerPool: Worker thread pool size: 6
0:00:00.016935034  4373 0x559003967c60 INFO    KurentoServerMethods ServerMethods.cpp:143:ServerMethods: RPC Request Cache is ENABLED
0:00:00.016999702  4373 0x559003967c60 INFO    KurentoWebSocketTransport WebSocketTransport.cpp:203:initWebSocket: WebSocket server (ws://) listening on address '::', port 8888
0:00:00.017006707  4373 0x559003967c60 INFO    KurentoWebSocketTransport WebSocketTransport.cpp:89:WebSocketTransport: Secure WebSocket server (wss://) not enabled
0:00:00.017191362  4373 0x559003967c60 INFO      KurentoMediaServer main.cpp:259:main: Kurento Media Server started
0:00:15.260627781  4373 0x7f8fe4001d80 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:160:generateDefaultCertificates: Unable to load the RSA certificate from file. Using the default certificate.
0:00:15.306547061  4373 0x7f8fe4001d80 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:169:generateDefaultCertificates: Unable to load the ECDSA certificate from file. Using the default certificate.
0:00:15.306699153  4373 0x7f8fe4001d80 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:00:15.306727768  4373 0x7f8fe4001d80 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint0> Removing not supported codec 'AMR/8000'
0:00:15.309767811  4373 0x7f90040022c0 DEBUG            agnosticbin kmsagnosticbin.c:1189:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> target-encoder-bitrate set: 300000
0:00:15.309839888  4373 0x7f90040022c0 DEBUG            agnosticbin kmsagnosticbin.c:1223:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> max-encoder-bitrate set: 2147483647
0:00:15.309869846  4373 0x7f90040022c0 DEBUG            agnosticbin kmsagnosticbin.c:1204:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> min-encoder-bitrate set: 0
0:00:15.310155762  4373 0x7f90040022c0 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:15.312369122  4373 0x7f8ffc001400 WARN                 default webrtccbrOpenCVImpl.cpp:329:set_params: Set params: filter: 'cbr', cbrWidth: 9, cbrHeight: 6, minImages: 20, debug: 1
0:00:15.396386829  4373 0x7f8ffc001400 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession0> STUN server not configured! NAT traversal requires STUN or TURN
0:00:15.396403945  4373 0x7f8ffc001400 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession0> TURN relay server not configured! NAT traversal requires STUN or TURN
0:00:15.399111616  4373 0x7f8fe8016860 INFO       KurentoWorkerPool WorkerPool.cpp:67:WorkerPool: Worker thread pool size: 6
0:00:17.065003589  4373 0x7f90040022c0 WARN       kmsbasertpsession kmsbasertpsession.c:774:kms_base_rtp_session_start_transport_send:<kmswebrtcsession0> Cannot configure connection for media (id=1)
0:00:17.138693950  4373 0x7f8fe0002300 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:17.223138581  4373 0x7f8fe0002300 INFO         basertpendpoint kmsbasertpendpoint.c:1956:kms_base_rtp_endpoint_jitterbuffer_set_latency:<rtpjitterbuffer0> Add probe: Set jitterbuffer latency
0:00:17.223235887  4373 0x7f8fe0002300 INFO         basertpendpoint kmsbasertpendpoint.c:2005:kms_base_rtp_endpoint_jitterbuffer_monitor_rtp_out:<rtpjitterbuffer0> Add probe: Adjust jitterbuffer PTS out
0:00:17.223853172  4373 0x7f8fe0002300 INFO         basertpendpoint kmsbasertpendpoint.c:2050:kms_base_rtp_endpoint_jitterbuffer_monitor_rtcp_in:<rtpjitterbuffer0> Add probe: Get jitterbuffer RTCP SR timing
0:00:17.224206700  4373 0x7f8ffc0091e0 INFO         basertpendpoint kmsbasertpendpoint.c:1941:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer0> Setting latency to 500 ms
0:00:17.224299347  4373 0x7f8ffc0091e0 INFO         basertpendpoint kmsbasertpendpoint.c:1944:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer0> Jitterbuffer latency set; remove probe
0:00:17.224843046  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:1189:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> target-encoder-bitrate set: 3000000
0:00:17.224905686  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:1223:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> max-encoder-bitrate set: 4500000
0:00:17.224920627  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:1204:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> min-encoder-bitrate set: 1500000
0:00:17.226593009  4373 0x7f8ffc0091e0 INFO                kmsutils kmsutils.c:1511:kms_utils_depayloader_monitor_pts_out:<rtph264depay0> Add probe: Adjust depayloader PTS out
0:00:17.231462909  4373 0x7f8ffc0091e0 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:17.231720715  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:900:input_bin_src_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:17.231768676  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:775:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Upstream provided caps: ANY
0:00:17.231872680  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:784:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Downstream wanted caps: video/x-raw, format=(string)BGRA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:17.263021589  4373 0x7f8ffc0091e0 INFO             agnosticbin kmsagnosticbin.c:730:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> TRANSCODING ACTIVE for video
0:00:17.274178125  4373 0x7f8ff4011640 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events
0:00:17.274230277  4373 0x7f8ff4011640 DEBUG            agnosticbin kmsagnosticbin.c:900:input_bin_src_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Set input caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:19.259535969  4373 0x7f9000002300 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:00:19.259580232  4373 0x7f9000002300 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint1> Removing not supported codec 'AMR/8000'
0:00:19.272381498  4373 0x7f8fec002240 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession1> STUN server not configured! NAT traversal requires STUN or TURN
0:00:19.272409133  4373 0x7f8fec002240 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession1> TURN relay server not configured! NAT traversal requires STUN or TURN
0:00:19.291337829  4373 0x7f8ff4002260 WARN       kmsbasertpsession kmsbasertpsession.c:774:kms_base_rtp_session_start_transport_send:<kmswebrtcsession1> Cannot configure connection for media (id=1)
0:00:19.360803647  4373 0x559003793700 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:19.360956642  4373 0x559003793700 DEBUG            agnosticbin kmsagnosticbin.c:775:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Upstream provided caps: ANY
0:00:19.361124614  4373 0x559003793700 DEBUG            agnosticbin kmsagnosticbin.c:784:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:19.363007613  4373 0x559003793700 DEBUG             enctreebin kmsenctreebin.c:141:configure_encoder: Configure encoder: <openh264enc0>
0:00:19.363097062  4373 0x559003793700 DEBUG             enctreebin kmsenctreebin.c:463:kms_enc_tree_bin_configure:<kmsenctreebin0> Encoder plugin found: '<openh264enc0>' for caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:19.385432158  4373 0x559003793700 INFO             agnosticbin kmsagnosticbin.c:730:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TRANSCODING ACTIVE for video
0:00:19.385610857  4373 0x559003793700 DEBUG            agnosticbin kmsagnosticbin.c:775:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Upstream provided caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline
0:00:19.385640858  4373 0x559003793700 DEBUG            agnosticbin kmsagnosticbin.c:784:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:37.338988377  4373 0x7f8ffc0091e0 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:37.339311273  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:900:input_bin_src_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:37.339671778  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:775:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Upstream provided caps: ANY
0:00:37.340907007  4373 0x7f8ffc0091e0 DEBUG            agnosticbin kmsagnosticbin.c:784:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Downstream wanted caps: video/x-raw, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA
0:00:37.363201982  4373 0x7f8ff4011640 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events
0:00:43.404305773  4373 0x7f8ffc0091e0 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:43.428182909  4373 0x7f8ff4011640 INFO                kmsutils kmsutils.c:518:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events
0:02:07.535243029  4373 0x7f8fe0002300 WARN         rtpjitterbuffer rtpjitterbuffer.c:734:rtp_jitter_buffer_calculate_pts: rtp delta too big, reset skew
0:02:07.717000638  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717024000  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717029613  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717039118  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717048616  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717057988  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717067063  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717071950  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717077131  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717082234  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717088927  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717096692  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717104107  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717110395  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717116823  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717123658  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717130142  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717136716  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.717142915  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.951083115  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.951101357  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:07.951105965  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.037431864  4373 0x7f8fe0002300 WARN         rtpjitterbuffer rtpjitterbuffer.c:764:rtp_jitter_buffer_calculate_pts: backward timestamps at server, schedule resync
0:02:08.042914746  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042926876  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042932175  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042937390  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042949408  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042954533  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042967005  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042976204  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.042994613  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.043003827  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.043011726  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.043019415  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.043028626  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.043038745  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044368858  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044378280  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044382779  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044395832  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044405703  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044414798  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044424431  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044429044  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044433375  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044440605  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044444915  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044449338  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044453716  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044457937  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044464491  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044884334  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044895890  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044900419  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044905672  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044910270  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044914915  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044921936  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044929332  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044935837  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044942248  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044948738  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044955192  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044961716  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.044966110  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045192867  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045200325  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045204969  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045211537  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045218211  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045225380  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045231927  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045240878  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045247323  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.045254578  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.047668686  4373 0x7f8ffc0091e0 WARN                kmsutils kmsutils.c:477:discont_detection_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> DISCONTINUITY at non-keyframe; will drop until keyframe
0:02:08.049868369  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050081806  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050089649  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050093961  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050353548  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050360913  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050365062  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050634142  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050641400  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050645519  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050923278  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050930580  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.050934689  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.051205431  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.051212711  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:08.051216835  4373 0x7f8fe0002300 WARN                 srtpdec gstsrtpdec.c:1429:gst_srtp_dec_decode_buffer:<srtpdec0:rtp_sink> Unable to unprotect buffer (unprotect failed code 10)
0:02:10.289899977  4373 0x7f8ffc0091e0 WARN                kmsutils kmsutils.c:477:discont_detection_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> DISCONTINUITY at non-keyframe; will drop until keyframe

Publisher pumps H.264 with 3M (720p, 30fps):

image

KMS reports transcoding (because of the filter):

0:00:19.385432158  4373 0x559003793700 INFO             agnosticbin kmsagnosticbin.c:730:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TRANSCODING ACTIVE for video

Subscriber receives terrible quality at around 300 (720p, 30fps):

image
neilyoung commented 1 year ago

Update not considered yet for the results above.

j1elo commented 1 year ago

I've made some improvements to the way plugins are loaded by scripts, and how the docs explain it, to make them clearer. New docs section: Install by copying files.

Basically, regardless of what you have in your system, bin/build-run.sh should be building (and running) an independent set of binary files. Those files should in principle not be copied elsewhere, but executed as-is from the build directory (build-Debug/).

In order to add additional plugins to this custom-built Kurento, that's where you'd export the KURENTO_MODULES_PATH and GST_PLUGIN_PATH. So, for example, this could be a typical build-and-run command with a custom plugin:

GST_PLUGIN_PATH="$HOME/my-module/build" \
KURENTO_MODULES_PATH="$HOME/my-module/build" \
bin/build-run.sh

Note, however, if your custom plugins are already installed in the system, the default search paths (/usr/lib/x86_64-linux-gnu/kurento and /usr/lib/x86_64-linux-gnu/gstreamer-1.0) are already included so you shouldn't need to export the vars if that's the case.

j1elo commented 1 year ago

I force-pushed so please update your branch with this commands (note: these assume there are no local commits that need to be preserved!):

git fetch --all
git switch -C 18-encoder-bitrate origin/18-encoder-bitrate
neilyoung commented 1 year ago

You need to explain to me, how I would be able to update to a new version.

Before git pull I checked which kurento-media-server is doing it:

ubuntu@kms7:~/kurento/server$ ls -lall /usr/bin/kurento-media-server 
-rwxr-xr-x 1 root root 2329280 Mar 21 17:14 /usr/bin/kurento-media-server

Note the timestamp: That time I re-created everything from scratch.

Then I git pulled your latest version (5 minutes ago). Compiled it. I think one relevant file was re-compiled.

I checked the file in /usr/bin. It is the same as before after the build.

My new version is here:

ubuntu@kms7:~/kurento/server$ ls -lall build-RelWithDebInfo/media-server/server/kurento-media-server
-rwxrwxr-x 1 ubuntu ubuntu 59188872 Apr  5 17:37 build-RelWithDebInfo/media-server/server/kurento-media-server

Version is 7.0.1:

buntu@kms7:~/kurento/server$ build-RelWithDebInfo/media-server/server/kurento-media-server --version
0:00:00.007662281  7529 0x55c7a6618a70 INFO    KurentoModuleManager ModuleManager.cpp:161:loadModules: Skip non-existent path: /usr/local/lib/kurento/modules
Kurento Media Server version: 7.0.1~19.ga2cd30b9e

You see: 7.0.1 and no filter, core, ... (of course also not my modules)

What to do now? This looks like the same as before, before I abandoned the previous VM. I haven't copied anything now, but I suppose, I'm unable to follow any change you are doing, since it doesn't land, where it should land.

neilyoung commented 1 year ago

Even with the git commands you posted below: Same old version in /usr/bin

ubuntu@kms7:~/kurento/server$ ls -lall /usr/bin/kurento-media-server -rwxr-xr-x 1 root root 2329280 Mar 21 17:14 /usr/bin/kurento-media-server

j1elo commented 1 year ago

Now, regarding the changes of this PR, please run with this GST_DEBUG variable:

export GST_DEBUG="2,Kurento*:4,kms*:4,sdp*:4,webrtc*:4,*rtpendpoint:4,rtp*handler:4,rtpsynchronizer:4,KurentoMediaElementImpl:5,agnosticbin*:6,enctreebin:5,kmselement:5"

The important bits are at the end: KurentoMediaElementImpl:5,agnosticbin*:6,enctreebin:5,kmselement:5.

I'd recommend doing it with bin/build-run.sh because if you run with /usr/bin/kurento-media-server you will most probably use the binaries from mainline and not the ones built from this branch.

neilyoung commented 1 year ago

Now, regarding the changes of this PR, please run with this GST_DEBUG variable:

export GST_DEBUG="2,Kurento*:4,kms*:4,sdp*:4,webrtc*:4,*rtpendpoint:4,rtp*handler:4,rtpsynchronizer:4,KurentoMediaElementImpl:5,agnosticbin*:6,enctreebin:5,kmselement:5"

The important bits are at the end: KurentoMediaElementImpl:5,agnosticbin*:6,enctreebin:5,kmselement:5.

I'd recommend doing it with bin/build-run.sh because if you run with /usr/bin/kurento-media-server you will most probably use the binaries from mainline and not the ones built from this branch.

My mainline is the 18-xxx branch. I made that clear at installation time

neilyoung commented 1 year ago

But looks like with bin/build-run.sh I have what I want.

0:00:00.105228420 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-core/src/server/libkmscoremodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-core/src/server/libkmscoremodule.so
0:00:00.105270106 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: core, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:36:15
0:00:00.110770468 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/datachannelexample/src/server/libkmsdatachannelexamplemodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/datachannelexample/src/server/libkmsdatachannelexamplemodule.so
0:00:00.110799396 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: datachannelexample, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:37:06
0:00:00.111974571 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/gstreamer-example/src/server/libkmsgstreamerexamplemodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/gstreamer-example/src/server/libkmsgstreamerexamplemodule.so
0:00:00.112002229 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: gstreamerexample, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:37:05
0:00:00.146856937 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/chroma/src/server/libkmschromamodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/chroma/src/server/libkmschromamodule.so
0:00:00.146895861 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: chroma, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:37:06
0:00:00.148127407 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/opencv-example/src/server/libkmsopencvexamplemodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-examples/opencv-example/src/server/libkmsopencvexamplemodule.so
0:00:00.148154813 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: opencvexample, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:37:06
0:00:00.157024118 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-filters/src/server/libkmsfiltersmodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-filters/src/server/libkmsfiltersmodule.so
0:00:00.157052222 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: filters, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:36:53
0:00:00.167315218 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-elements/src/server/libkmselementsmodule.so, module name: /home/ubuntu/kurento/server/build-RelWithDebInfo/module-elements/src/server/libkmselementsmodule.so
0:00:00.167347512 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: elements, version: 7.0.1~19.ga2cd30b9e, date: Apr  5 2023 17:36:42
0:00:00.168281065 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtccbrmodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtccbrmodule.so
0:00:00.168302995 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: webrtccbr, version: 0.2.0~9.ge481621, date: Apr  5 2023 17:48:49
0:00:00.169082685 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcarucocodemodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcarucocodemodule.so
0:00:00.169104371 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:136:loadModule: Loaded module: webrtcarucocode, version: 0.2.0~17.g4a42814, date: Apr  5 2023 17:48:27
0:00:00.170862161 10084 0x563e6332a390 INFO    KurentoModuleManager ModuleManager.cpp:89:loadModule: Load file: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcbarcodemodule.so, module name: /usr/lib/x86_64-linux-gnu/kurento/modules/libkmswebrtcbarcodemodule.so

Let me see with this...

j1elo commented 1 year ago

To be clear: all files under /usr come from the packages installed with apt-get, and those are Kurento 7.0.0 from the main branch.

Here you want to build and run Kurento version 7.0.1-dev from the 18-encoder-bitrate branch. Totally different things, so better not mix them up.

The last commit (as of this writing) of the 18-encoder-bitrate branch is 79311cf, and as such, this is what you should be seeing with --version:

$ bin/build-run.sh --version
[...]
Kurento Media Server version: 7.0.1~20.g79311cf01
Found modules:
        'chroma' version 7.0.1~20.g79311cf01
        'core' version 7.0.1~20.g79311cf01
        'datachannelexample' version 7.0.1~20.g79311cf01
        'elements' version 7.0.1~20.g79311cf01
        'filters' version 7.0.1~20.g79311cf01
        'gstreamerexample' version 7.0.1~20.g79311cf01
        'opencvexample' version 7.0.1~20.g79311cf01

Notice the "79311cf" everywhere, that's the current commit that has been build and injected into all version numbers of the server and its modules.

neilyoung commented 1 year ago

Got it now:

Kurento Media Server version: 7.0.1~19.ga2cd30b9e
Found modules:
    'chroma' version 7.0.1~19.ga2cd30b9e
    'core' version 7.0.1~19.ga2cd30b9e
    'datachannelexample' version 7.0.1~19.ga2cd30b9e
    'elements' version 7.0.1~19.ga2cd30b9e
    'filters' version 7.0.1~19.ga2cd30b9e
    'gstreamerexample' version 7.0.1~19.ga2cd30b9e
    'opencvexample' version 7.0.1~19.ga2cd30b9e
    'webrtcarucocode' version 0.2.0~17.g4a42814
    'webrtcbarcode' version 0.2.0~8.g2dc7fb7
    'webrtccbr' version 0.2.0~9.ge481621
~/kurento/server
j1elo commented 1 year ago

Ok but please don't forget to do this also: https://github.com/Kurento/kurento/pull/24#issuecomment-1497927405 Then re-run the build-run script.

Notice that the latest commit of the branch is 79311cf01; that's why you need to fetch + switch again.

I myself wouldn't dare getting into the mess that is copying stuff from build-Debug/ folder to the /usr/ system folder... so I wouldn't recommend doing that, at all! Better to just use that script and run the branch version of Kurento exclusively from the checkout directory, not from /usr... otherwise the confusion will be huge with all these version mismatches.

neilyoung commented 1 year ago

Sorry to disappoint you:

0:01:35.756742772 11694 0x7fa390002290 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:01:35.756845937 11694 0x7fa390002290 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint3> Removing not supported codec 'AMR/8000'
0:01:35.760924763 11694 0x7fa394002230 WARN                 default webrtcbarcodeOpenCVImpl.cpp:56:webrtcbarcodeOpenCVImpl: ZBar version: 0.23.0
0:01:35.761173394 11694 0x7fa2e8001e40 WARN                 default webrtcbarcodeOpenCVImpl.cpp:250:inferenceThread: Inference thread started
0:01:35.761588823 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement2> Output element requested for track video, stream default
0:01:35.761634745 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement2> New output element for track video, stream video_src_default
0:01:35.761926894 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:700:kms_element_set_video_output_properties:<kmsfilterelement2_kmsagnosticbin2-6> Setting property codec-config
0:01:35.761960880 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:703:kms_element_set_video_output_properties:<kmsfilterelement2_kmsagnosticbin2-6> Setting property target-encoder-bitrate
0:01:35.761989486 11694 0x7fa394002230 DEBUG            agnosticbin kmsagnosticbin.c:1198:kms_agnostic_bin2_set_property:<kmsfilterelement2_kmsagnosticbin2-6> "target-encoder-bitrate" set: 300000
0:01:35.762016077 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:706:kms_element_set_video_output_properties:<kmsfilterelement2_kmsagnosticbin2-6> Setting property max-encoder-bitrate
0:01:35.762040808 11694 0x7fa394002230 DEBUG            agnosticbin kmsagnosticbin.c:1226:kms_agnostic_bin2_set_property:<kmsfilterelement2_kmsagnosticbin2-6> "max-encoder-bitrate" set: 2147483647
0:01:35.762064726 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:709:kms_element_set_video_output_properties:<kmsfilterelement2_kmsagnosticbin2-6> Setting property min-encoder-bitrate
0:01:35.762080274 11694 0x7fa394002230 DEBUG            agnosticbin kmsagnosticbin.c:1208:kms_agnostic_bin2_set_property:<kmsfilterelement2_kmsagnosticbin2-6> "min-encoder-bitrate" set: 0
0:01:35.762597381 11694 0x7fa394002230 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:01:35.762692222 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmsfilterelement2> Generating average stats for pad <kmsfilterelement2:sink_video_default>
0:01:35.762772671 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement2> Output element requested for track audio, stream default
0:01:35.762811797 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement2> New output element for track audio, stream audio_src_default
0:01:35.763220675 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmsfilterelement2> Generating average stats for pad <kmsfilterelement2:sink_audio_default>
0:01:35.763265479 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement2> Output element requested for track data, stream default
0:01:35.763291890 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement2> New output element for track data, stream data_src_default
0:01:35.763522472 11694 0x7fa394002230 DEBUG             kmselement kmselement.c:956:kms_element_set_sink_input_stats: No stats collected for pad type 0
0:01:35.766332073 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/313907d4-0c38-4476-bc06-2b12f95f36cd_kurento.WebRtcEndpoint -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode params AUDIO default default
0:01:35.766433761 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint3> New output element for track audio, stream default
0:01:35.766452153 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint3> src pads on sometimes (by default)
0:01:35.766493902 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/313907d4-0c38-4476-bc06-2b12f95f36cd_kurento.WebRtcEndpoint -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode params VIDEO default default
0:01:35.766552913 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint3> New output element for track video, stream default
0:01:35.766574517 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint3> src pads on sometimes (by default)
0:01:35.766609458 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/313907d4-0c38-4476-bc06-2b12f95f36cd_kurento.WebRtcEndpoint -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode params DATA default default
0:01:35.766672870 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint3> New output element for track data, stream default
0:01:35.766694779 11694 0x7fa3a80022d0 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint3> src pads on sometimes (by default)
0:01:35.774322585 11694 0x55da7203b790 WARN              kmselement kmselement.c:1312:kms_element_set_property:<kmswebrtcendpoint3> "target-encoder-bitrate" (300000) < new min (1500000); increasing it to new min
0:01:35.774348017 11694 0x55da7203b790 DEBUG             kmselement kmselement.c:1320:kms_element_set_property:<kmswebrtcendpoint3> "min-encoder-bitrate" set: 1500000
0:01:35.774945731 11694 0x7fa398001410 DEBUG             kmselement kmselement.c:1293:kms_element_set_property:<kmswebrtcendpoint3> "target-encoder-bitrate" set: 3000000
0:01:35.775815354 11694 0x7fa398001410 DEBUG             kmselement kmselement.c:1347:kms_element_set_property:<kmswebrtcendpoint3> "max-encoder-bitrate" set: 4500000
0:01:35.825093944 11694 0x7fa388001d90 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession3> STUN server not configured! NAT traversal requires STUN or TURN
0:01:35.825190530 11694 0x7fa388001d90 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession3> TURN relay server not configured! NAT traversal requires STUN or TURN
0:01:37.494320218 11694 0x7fa3a80022d0 WARN       kmsbasertpsession kmsbasertpsession.c:775:kms_base_rtp_session_start_transport_send:<kmswebrtcsession3> Cannot configure connection for media (id=1)
0:01:37.556600379 11694 0x7fa390072d20 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:01:37.556737015 11694 0x7fa390072d20 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmswebrtcendpoint3> Generating average stats for pad <kmswebrtcendpoint3:sink_video_default>
0:01:37.646128795 11694 0x7fa390072d20 INFO         basertpendpoint kmsbasertpendpoint.c:1956:kms_base_rtp_endpoint_jitterbuffer_set_latency:<rtpjitterbuffer2> Add probe: Set jitterbuffer latency
0:01:37.646195527 11694 0x7fa390072d20 INFO         basertpendpoint kmsbasertpendpoint.c:2005:kms_base_rtp_endpoint_jitterbuffer_monitor_rtp_out:<rtpjitterbuffer2> Add probe: Adjust jitterbuffer PTS out
0:01:37.646762951 11694 0x7fa390072d20 INFO         basertpendpoint kmsbasertpendpoint.c:2050:kms_base_rtp_endpoint_jitterbuffer_monitor_rtcp_in:<rtpjitterbuffer2> Add probe: Get jitterbuffer RTCP SR timing
0:01:37.647067820 11694 0x7fa304005b60 INFO         basertpendpoint kmsbasertpendpoint.c:1941:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer2> Setting latency to 500 ms
0:01:37.647144730 11694 0x7fa304005b60 INFO         basertpendpoint kmsbasertpendpoint.c:1944:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer2> Jitterbuffer latency set; remove probe
0:01:37.647341498 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmswebrtcendpoint3> Output element requested for track video, stream default
0:01:37.647644818 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:700:kms_element_set_video_output_properties:<kmswebrtcendpoint3_kmsagnosticbin2-8> Setting property codec-config
0:01:37.647672050 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:703:kms_element_set_video_output_properties:<kmswebrtcendpoint3_kmsagnosticbin2-8> Setting property target-encoder-bitrate
0:01:37.647694636 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:1198:kms_agnostic_bin2_set_property:<kmswebrtcendpoint3_kmsagnosticbin2-8> "target-encoder-bitrate" set: 3000000
0:01:37.647717979 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:706:kms_element_set_video_output_properties:<kmswebrtcendpoint3_kmsagnosticbin2-8> Setting property max-encoder-bitrate
0:01:37.647733307 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:1226:kms_agnostic_bin2_set_property:<kmswebrtcendpoint3_kmsagnosticbin2-8> "max-encoder-bitrate" set: 4500000
0:01:37.647747785 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:709:kms_element_set_video_output_properties:<kmswebrtcendpoint3_kmsagnosticbin2-8> Setting property min-encoder-bitrate
0:01:37.647762298 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:1208:kms_agnostic_bin2_set_property:<kmswebrtcendpoint3_kmsagnosticbin2-8> "min-encoder-bitrate" set: 1500000
0:01:37.648121350 11694 0x7fa304005b60 DEBUG             kmselement kmselement.c:431:kms_element_set_target_on_linked:<kmswebrtcendpoint3:video_src_default_0> Setting target <kmswebrtcendpoint3_kmsagnosticbin2-8:src_0>
0:01:37.648166261 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8:src_0> Received reconfigure event
0:01:37.648209527 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8:src_0> Received reconfigure event
0:01:37.649148350 11694 0x7fa304005b60 INFO                kmsutils kmsutils.c:1515:kms_utils_depayloader_monitor_pts_out:<rtph264depay2> Add probe: Adjust depayloader PTS out
0:01:37.649592454 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Processing CAPS event
0:01:37.649626065 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1030:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> No previous input caps, starting
0:01:37.651074479 11694 0x7fa304005b60 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint3_kmsagnosticbin2-8:sink> Add probe: DISCONT buffers and GAP events
0:01:37.651330389 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:37.651374976 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint3_kmsagnosticbin2-8> Upstream provided caps: ANY
0:01:37.651468888 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint3_kmsagnosticbin2-8> Downstream wanted caps: video/x-raw, format=(string)BGRA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:01:37.651501622 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> Find TreeBin with wanted caps: video/x-raw, format=(string)BGRA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:01:37.651549800 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin5> TreeBin <kmsparsetreebin5> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:37.651580753 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> TreeBin not found! Transcoding required for video
0:01:37.651611122 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:611:kms_agnostic_bin2_get_or_create_dec_bin: Raw caps: video/x-raw
0:01:37.651655677 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin5> TreeBin <kmsparsetreebin5> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:37.652941204 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> Created TreeBin: <kmsdectreebin3>
0:01:37.652955041 11694 0x7fa304005b60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmswebrtcendpoint3> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmswebrtcendpoint3_kmsagnosticbin2-8', type: 'video'
0:01:37.652975151 11694 0x7fa304005b60 INFO             agnosticbin kmsagnosticbin.c:754:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> TRANSCODING ACTIVE for video
0:01:37.659574775 11694 0x7fa304005b60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint3> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
0:01:37.661090873 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Processing CAPS event
0:01:37.661108971 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1030:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> No previous input caps, starting
0:01:37.662531043 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8:src_0> Received reconfigure event
0:01:37.662562691 11694 0x7fa3780074c0 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement2_kmsagnosticbin2-6:sink> Add probe: DISCONT buffers and GAP events
0:01:37.662604444 11694 0x7fa3780074c0 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Set input caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:01:37.663471174 11694 0x7fa3940094c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsfilterelement2> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
0:01:37.663916146 11694 0x7fa3780074c0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmsfilterelement2> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
0:01:39.819635981 11694 0x7fa3a0002270 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:01:39.819719128 11694 0x7fa3a0002270 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint4> Removing not supported codec 'AMR/8000'
0:01:39.833466030 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/a09f0a53-de63-455c-82c5-e99438887000_kurento.WebRtcEndpoint params AUDIO default default
0:01:39.833656755 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/a09f0a53-de63-455c-82c5-e99438887000_kurento.WebRtcEndpoint params VIDEO default default
0:01:39.833727625 11694 0x7fa3a80022d0 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/ea30151b-836d-414f-8f59-9149116cc4e9_webrtcbarcode.webrtcbarcode -> 7f346d96-0ba4-455a-a4fe-588fec0f1963_kurento.MediaPipeline/a09f0a53-de63-455c-82c5-e99438887000_kurento.WebRtcEndpoint params DATA default default
0:01:39.889260182 11694 0x7fa388001d90 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession4> STUN server not configured! NAT traversal requires STUN or TURN
0:01:39.889387396 11694 0x7fa388001d90 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession4> TURN relay server not configured! NAT traversal requires STUN or TURN
0:01:39.903831531 11694 0x7fa390002290 WARN       kmsbasertpsession kmsbasertpsession.c:775:kms_base_rtp_session_start_transport_send:<kmswebrtcsession4> Cannot configure connection for media (id=1)
0:01:39.972832108 11694 0x7fa338008c60 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:01:39.972898783 11694 0x7fa338008c60 DEBUG             kmselement kmselement.c:431:kms_element_set_target_on_linked:<kmsfilterelement2:video_src_default_0> Setting target <kmsfilterelement2_kmsagnosticbin2-6:src_0>
0:01:39.972910753 11694 0x7fa338008c60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmsfilterelement2_kmsagnosticbin2-6:src_0> Received reconfigure event
0:01:39.972922889 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmsfilterelement2_kmsagnosticbin2-6> Upstream provided caps: ANY
0:01:39.972982971 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmsfilterelement2_kmsagnosticbin2-6> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:01:39.972997333 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> Find TreeBin with wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:01:39.973015682 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin6> TreeBin <kmsparsetreebin6> caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:01:39.973026489 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> TreeBin not found! Transcoding required for video
0:01:39.973475025 11694 0x7fa338008c60 DEBUG             enctreebin kmsenctreebin.c:140:configure_encoder: Configure encoder: <openh264enc1>
0:01:39.973495439 11694 0x7fa338008c60 DEBUG             enctreebin kmsenctreebin.c:448:kms_enc_tree_bin_configure:<kmsenctreebin1> Encoder plugin found: <openh264enc1> for caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:01:39.973500208 11694 0x7fa338008c60 DEBUG             enctreebin kmsenctreebin.c:273:kms_enc_tree_bin_get_bitrate:<kmsenctreebin1> Bitrate = Current value: 300000
0:01:39.973505914 11694 0x7fa338008c60 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<openh264enc1> "bitrate" set: 300000
0:01:39.986665444 11694 0x7fa338008c60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8:src_0> Received reconfigure event
0:01:39.988082531 11694 0x7fa338008c60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8:src_0> Received reconfigure event
0:01:39.988113920 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> Created TreeBin: <kmsenctreebin1>
0:01:39.988126242 11694 0x7fa338008c60 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmsfilterelement2> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmsfilterelement2_kmsagnosticbin2-6', type: 'video'
0:01:39.988140537 11694 0x7fa338008c60 INFO             agnosticbin kmsagnosticbin.c:754:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> TRANSCODING ACTIVE for video
0:01:39.988345920 11694 0x7fa338008c60 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmsfilterelement2_kmsagnosticbin2-6:src_0> Received reconfigure event
0:01:39.988362970 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmsfilterelement2_kmsagnosticbin2-6> Upstream provided caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline
0:01:39.988410618 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmsfilterelement2_kmsagnosticbin2-6> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:01:39.988422450 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> Find TreeBin with wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:01:39.988436754 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin6> TreeBin <kmsparsetreebin6> caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:01:39.988472340 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsenctreebin1> TreeBin <kmsenctreebin1> caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline
0:01:39.988482768 11694 0x7fa338008c60 DEBUG            agnosticbin kmsagnosticbin.c:757:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement2_kmsagnosticbin2-6> TreeBin found! Using <kmsenctreebin1> for video
0:01:39.988757696 11694 0x7fa338008c60 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmswebrtcendpoint4> Generating average stats for pad <kmswebrtcendpoint4:sink_video_default>
0:01:40.021565672 11694 0x7fa2e8007240 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmswebrtcendpoint4> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
0:01:55.723889386 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Processing CAPS event
0:01:55.724006411 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Current input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline
0:01:55.724073685 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1021:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Set new input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline
0:01:55.728248131 11694 0x7fa304005b60 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint3_kmsagnosticbin2-8:sink> Add probe: DISCONT buffers and GAP events
0:01:55.728652871 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:55.729028383 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint3_kmsagnosticbin2-8> Upstream provided caps: ANY
0:01:55.730528887 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint3_kmsagnosticbin2-8> Downstream wanted caps: video/x-raw, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA
0:01:55.730578451 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> Find TreeBin with wanted caps: video/x-raw, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA
0:01:55.730669252 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin7> TreeBin <kmsparsetreebin7> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:55.730700525 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> TreeBin not found! Transcoding required for video
0:01:55.730726690 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:611:kms_agnostic_bin2_get_or_create_dec_bin: Raw caps: video/x-raw
0:01:55.730798433 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin7> TreeBin <kmsparsetreebin7> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:01:55.733332447 11694 0x7fa304005b60 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint3_kmsagnosticbin2-8> Created TreeBin: <kmsdectreebin4>
0:01:55.751702381 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Processing CAPS event
0:01:55.751733522 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Current input caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:01:55.751740293 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> No need to set new input caps
0:01:55.751745178 11694 0x7fa3780074c0 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement2_kmsagnosticbin2-6:sink> Add probe: DISCONT buffers and GAP events
0:02:05.829144533 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Processing CAPS event
0:02:05.829238459 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> Current input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline
0:02:05.829259403 11694 0x7fa304005b60 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint3_kmsagnosticbin2-8> No need to set new input caps
0:02:05.829279077 11694 0x7fa304005b60 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint3_kmsagnosticbin2-8:sink> Add probe: DISCONT buffers and GAP events
0:02:05.855186329 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Processing CAPS event
0:02:05.855225095 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> Current input caps: video/x-raw, width=(int)960, height=(int)540, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:02:05.855235197 11694 0x7fa3780074c0 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement2_kmsagnosticbin2-6> No need to set new input caps
0:02:05.855243369 11694 0x7fa3780074c0 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement2_kmsagnosticbin2-6:sink> Add probe: DISCONT buffers and GAP events

Terrible subscriber video.

Publisher (as always) full speed ahead. Subscriber crawling at around 300 kBps.

image

Subscriber:

image
neilyoung commented 1 year ago

Ok but please don't forget to do this also: #24 (comment) Then re-run the build-run script.

Notice that the latest commit of the branch is 79311cf; that's why you need to fetch + switch again.

I myself wouldn't dare getting into the mess that is copying stuff from build-Debug/ folder to the /usr/ system folder... so I wouldn't recommend doing that, at all! Better to just use that script and run the branch version of Kurento exclusively from the checkout directory, not from /usr... otherwise the confusion will be huge with all these version mismatches.

Yes I did

EDIT: No, seems I don't have the last commit... What a sh...

neilyoung commented 1 year ago

But now... A clean command would be helpful..

Kurento Media Server version: 7.0.1~20.g79311cf01
Found modules:
    'chroma' version 7.0.1~20.g79311cf01
    'core' version 7.0.1~20.g79311cf01
    'datachannelexample' version 7.0.1~20.g79311cf01
    'elements' version 7.0.1~20.g79311cf01
    'filters' version 7.0.1~20.g79311cf01
    'gstreamerexample' version 7.0.1~20.g79311cf01
    'opencvexample' version 7.0.1~20.g79311cf01
    'webrtcarucocode' version 0.2.0~17.g4a42814
    'webrtcbarcode' version 0.2.0~8.g2dc7fb7
    'webrtccbr' version 0.2.0~9.ge481621
~/kurento/server

Repeating the test now

j1elo commented 1 year ago

Best delete the whole directory and clone + git checkout again to the branch, that'd be easiest to fix the issue with getting to the latest commit on the branch.

To clean a previous build, just delete the build-Debug/ directory. Next time the script is run, it will not find it and will compile a new build from scratch. And again, I wouldn't recommend at all to manually copy the main executable and all .so files to /usr/, that's a recipe for making some subtle mistake sooner or later

neilyoung commented 1 year ago

Clearly NOT working

0:00:00.086404435 22607 0x55a35ecea960 INFO    KurentoServerMethods ServerMethods.cpp:88:ServerMethods: Using above 80% of system limits will throw NOT_ENOUGH_RESOURCES exception
0:00:00.086413847 22607 0x55a35ecea960 INFO    KurentoServerMethods ServerMethods.cpp:107:ServerMethods: System limits: 42898 threads, 1048576 files
0:00:00.086466304 22607 0x55a35ecea960 INFO       KurentoWorkerPool WorkerPool.cpp:67:WorkerPool: Worker thread pool size: 6
0:00:00.086832836 22607 0x55a35ecea960 INFO    KurentoServerMethods ServerMethods.cpp:143:ServerMethods: RPC Request Cache is ENABLED
0:00:00.086905383 22607 0x55a35ecea960 INFO    KurentoWebSocketTransport WebSocketTransport.cpp:203:initWebSocket: WebSocket server (ws://) listening on address '::', port 8888
0:00:00.086913886 22607 0x55a35ecea960 INFO    KurentoWebSocketTransport WebSocketTransport.cpp:89:WebSocketTransport: Secure WebSocket server (wss://) not enabled
0:00:00.087135226 22607 0x55a35ecea960 INFO      KurentoMediaServer main.cpp:259:main: Kurento Media Server started
0:00:30.823645429 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:160:generateDefaultCertificates: Unable to load the RSA certificate from file. Using the default certificate.
0:00:30.848886071 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:169:generateDefaultCertificates: Unable to load the ECDSA certificate from file. Using the default certificate.
0:00:30.849053772 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:00:30.849085797 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint0> Removing not supported codec 'AMR/8000'
0:00:30.850811368 22607 0x7f6738001d90 WARN                 default webrtcbarcodeOpenCVImpl.cpp:56:webrtcbarcodeOpenCVImpl: ZBar version: 0.23.0
0:00:30.850947884 22607 0x7f673804cd60 WARN                 default webrtcbarcodeOpenCVImpl.cpp:250:inferenceThread: Inference thread started
0:00:30.851632488 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement0> Output element requested for track video, stream default
0:00:30.851646864 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement0> New output element for track video, stream video_src_default
0:00:30.852238086 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:700:kms_element_set_video_output_properties:<kmsfilterelement0_kmsagnosticbin2-0> Setting property codec-config
0:00:30.852252915 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:703:kms_element_set_video_output_properties:<kmsfilterelement0_kmsagnosticbin2-0> Setting property target-encoder-bitrate
0:00:30.852257559 22607 0x7f6738001d90 DEBUG            agnosticbin kmsagnosticbin.c:1198:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> "target-encoder-bitrate" set: 300000
0:00:30.852261769 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:706:kms_element_set_video_output_properties:<kmsfilterelement0_kmsagnosticbin2-0> Setting property max-encoder-bitrate
0:00:30.852265898 22607 0x7f6738001d90 DEBUG            agnosticbin kmsagnosticbin.c:1226:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> "max-encoder-bitrate" set: 2147483647
0:00:30.852271154 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:709:kms_element_set_video_output_properties:<kmsfilterelement0_kmsagnosticbin2-0> Setting property min-encoder-bitrate
0:00:30.852274681 22607 0x7f6738001d90 DEBUG            agnosticbin kmsagnosticbin.c:1208:kms_agnostic_bin2_set_property:<kmsfilterelement0_kmsagnosticbin2-0> "min-encoder-bitrate" set: 0
0:00:30.852502765 22607 0x7f6738001d90 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:30.852521865 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmsfilterelement0> Generating average stats for pad <kmsfilterelement0:sink_video_default>
0:00:30.852536900 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement0> Output element requested for track audio, stream default
0:00:30.852545335 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement0> New output element for track audio, stream audio_src_default
0:00:30.852668655 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmsfilterelement0> Generating average stats for pad <kmsfilterelement0:sink_audio_default>
0:00:30.852681840 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmsfilterelement0> Output element requested for track data, stream default
0:00:30.852687633 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:743:kms_element_get_output_element:<kmsfilterelement0> New output element for track data, stream data_src_default
0:00:30.852751147 22607 0x7f6738001d90 DEBUG             kmselement kmselement.c:956:kms_element_set_sink_input_stats: No stats collected for pad type 0
0:00:30.853922558 22607 0x7f6760002330 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/3807037e-3f16-4afa-9b93-a9a22bcbeca2_kurento.WebRtcEndpoint -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode params AUDIO default default
0:00:30.853962329 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint0> New output element for track audio, stream default
0:00:30.853968694 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint0> src pads on sometimes (by default)
0:00:30.853981444 22607 0x7f6760002330 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/3807037e-3f16-4afa-9b93-a9a22bcbeca2_kurento.WebRtcEndpoint -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode params VIDEO default default
0:00:30.853990474 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint0> New output element for track video, stream default
0:00:30.853994052 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint0> src pads on sometimes (by default)
0:00:30.854001188 22607 0x7f6760002330 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/3807037e-3f16-4afa-9b93-a9a22bcbeca2_kurento.WebRtcEndpoint -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode params DATA default default
0:00:30.854008062 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1496:kms_element_request_new_srcpad:<kmswebrtcendpoint0> New output element for track data, stream default
0:00:30.854011420 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1546:kms_element_request_new_src_element_default:<kmswebrtcendpoint0> src pads on sometimes (by default)
0:00:30.902969832 22607 0x7f6760002330 WARN              kmselement kmselement.c:1312:kms_element_set_property:<kmswebrtcendpoint0> "target-encoder-bitrate" (300000) < new min (1500000); increasing it to new min
0:00:30.903040637 22607 0x7f6760002330 DEBUG             kmselement kmselement.c:1320:kms_element_set_property:<kmswebrtcendpoint0> "min-encoder-bitrate" set: 1500000
0:00:30.905556529 22607 0x7f6748001410 DEBUG             kmselement kmselement.c:1293:kms_element_set_property:<kmswebrtcendpoint0> "target-encoder-bitrate" set: 3000000
0:00:30.908176718 22607 0x55a35ecea990 DEBUG             kmselement kmselement.c:1347:kms_element_set_property:<kmswebrtcendpoint0> "max-encoder-bitrate" set: 4500000
0:00:30.995219834 22607 0x7f6758002270 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession0> STUN server not configured! NAT traversal requires STUN or TURN
0:00:30.995246521 22607 0x7f6758002270 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession0> TURN relay server not configured! NAT traversal requires STUN or TURN
0:00:30.998246372 22607 0x7f6738013860 INFO       KurentoWorkerPool WorkerPool.cpp:67:WorkerPool: Worker thread pool size: 6
0:00:32.687342191 22607 0x55a35ecea990 WARN       kmsbasertpsession kmsbasertpsession.c:775:kms_base_rtp_session_start_transport_send:<kmswebrtcsession0> Cannot configure connection for media (id=1)
0:00:32.725650817 22607 0x7f675400ad20 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:32.725702071 22607 0x7f675400ad20 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmswebrtcendpoint0> Generating average stats for pad <kmswebrtcendpoint0:sink_video_default>
0:00:32.838226832 22607 0x7f675400ad20 INFO         basertpendpoint kmsbasertpendpoint.c:1956:kms_base_rtp_endpoint_jitterbuffer_set_latency:<rtpjitterbuffer0> Add probe: Set jitterbuffer latency
0:00:32.838261377 22607 0x7f675400ad20 INFO         basertpendpoint kmsbasertpendpoint.c:2005:kms_base_rtp_endpoint_jitterbuffer_monitor_rtp_out:<rtpjitterbuffer0> Add probe: Adjust jitterbuffer PTS out
0:00:32.838409873 22607 0x7f675400ad20 INFO         basertpendpoint kmsbasertpendpoint.c:2050:kms_base_rtp_endpoint_jitterbuffer_monitor_rtcp_in:<rtpjitterbuffer0> Add probe: Get jitterbuffer RTCP SR timing
0:00:32.838550290 22607 0x7f66f8005d20 INFO         basertpendpoint kmsbasertpendpoint.c:1941:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer0> Setting latency to 500 ms
0:00:32.838574028 22607 0x7f66f8005d20 INFO         basertpendpoint kmsbasertpendpoint.c:1944:kms_base_rtp_endpoint_jitterbuffer_set_latency_probe:<rtpjitterbuffer0> Jitterbuffer latency set; remove probe
0:00:32.838639452 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:733:kms_element_get_output_element:<kmswebrtcendpoint0> Output element requested for track video, stream default
0:00:32.838735429 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:700:kms_element_set_video_output_properties:<kmswebrtcendpoint0_kmsagnosticbin2-2> Setting property codec-config
0:00:32.838748884 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:703:kms_element_set_video_output_properties:<kmswebrtcendpoint0_kmsagnosticbin2-2> Setting property target-encoder-bitrate
0:00:32.838759562 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:1198:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> "target-encoder-bitrate" set: 3000000
0:00:32.838768860 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:706:kms_element_set_video_output_properties:<kmswebrtcendpoint0_kmsagnosticbin2-2> Setting property max-encoder-bitrate
0:00:32.838777598 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:1226:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> "max-encoder-bitrate" set: 4500000
0:00:32.838786487 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:709:kms_element_set_video_output_properties:<kmswebrtcendpoint0_kmsagnosticbin2-2> Setting property min-encoder-bitrate
0:00:32.838794667 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:1208:kms_agnostic_bin2_set_property:<kmswebrtcendpoint0_kmsagnosticbin2-2> "min-encoder-bitrate" set: 1500000
0:00:32.838901580 22607 0x7f66f8005d20 DEBUG             kmselement kmselement.c:431:kms_element_set_target_on_linked:<kmswebrtcendpoint0:video_src_default_0> Setting target <kmswebrtcendpoint0_kmsagnosticbin2-2:src_0>
0:00:32.838912802 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:src_0> Received reconfigure event
0:00:32.838927442 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:src_0> Received reconfigure event
0:00:32.839443437 22607 0x7f66f8005d20 INFO                kmsutils kmsutils.c:1515:kms_utils_depayloader_monitor_pts_out:<rtph264depay0> Add probe: Adjust depayloader PTS out
0:00:32.839622718 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Processing CAPS event
0:00:32.839633986 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1030:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> No previous input caps, starting
0:00:32.840889987 22607 0x7f66f8005d20 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:32.840971208 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:32.840985047 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Upstream provided caps: ANY
0:00:32.841014301 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Downstream wanted caps: video/x-raw, format=(string)BGRA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:32.841040851 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> Find TreeBin with wanted caps: video/x-raw, format=(string)BGRA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:32.841066600 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin0> TreeBin <kmsparsetreebin0> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:32.841076803 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> TreeBin not found! Transcoding required for video
0:00:32.841088212 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:611:kms_agnostic_bin2_get_or_create_dec_bin: Raw caps: video/x-raw
0:00:32.841103646 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin0> TreeBin <kmsparsetreebin0> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline, width=(int)640, height=(int)360, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:32.868939707 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> Created TreeBin: <kmsdectreebin0>
0:00:32.868961567 22607 0x7f66f8005d20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmswebrtcendpoint0> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmswebrtcendpoint0_kmsagnosticbin2-2', type: 'video'
0:00:32.869002524 22607 0x7f66f8005d20 INFO             agnosticbin kmsagnosticbin.c:754:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> TRANSCODING ACTIVE for video
0:00:32.877208822 22607 0x7f66f8005d20 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmswebrtcendpoint0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
0:00:32.878796601 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Processing CAPS event
0:00:32.878812426 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1030:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> No previous input caps, starting
0:00:32.880467387 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:src_0> Received reconfigure event
0:00:32.880501808 22607 0x7f673c010e40 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events
0:00:32.880545474 22607 0x7f673c010e40 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Set input caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:32.882164115 22607 0x7f66ec009800 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmsfilterelement0> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
0:00:32.882644566 22607 0x7f673c010e40 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:526:mediaFlowOutStateChanged:<kmsfilterelement0> MediaFlowOutStateChanged: FLOWING, pad: 'default', type: 'video'
0:00:35.269234554 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:572:WebRtcEndpointImpl: No QOS-DSCP value set
0:00:35.269333429 22607 0x7f6744002230 INFO    KurentoWebRtcEndpointImpl WebRtcEndpointImpl.cpp:112:remove_not_supported_codecs_from_array:<kmswebrtcendpoint1> Removing not supported codec 'AMR/8000'
0:00:35.289118791 22607 0x7f6748002350 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/012aa49a-ac71-4e1b-af56-a6f4688fbb4b_kurento.WebRtcEndpoint params AUDIO default default
0:00:35.289245607 22607 0x7f6748002350 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/012aa49a-ac71-4e1b-af56-a6f4688fbb4b_kurento.WebRtcEndpoint params VIDEO default default
0:00:35.289283131 22607 0x7f6748002350 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:1002:connect: Connecting 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/179f9bf6-4234-4505-b2c4-4a46a41e75a3_webrtcbarcode.webrtcbarcode -> 031894ee-731f-4b45-a63c-5088e4ad11b4_kurento.MediaPipeline/012aa49a-ac71-4e1b-af56-a6f4688fbb4b_kurento.WebRtcEndpoint params DATA default default
0:00:35.293848947 22607 0x7f674c0022f0 WARN        kmswebrtcsession kmswebrtcsession.c:818:kms_webrtc_session_set_stun_server_info:<kmswebrtcsession1> STUN server not configured! NAT traversal requires STUN or TURN
0:00:35.293865068 22607 0x7f674c0022f0 WARN        kmswebrtcsession kmswebrtcsession.c:838:kms_webrtc_session_set_relay_info:<kmswebrtcsession1> TURN relay server not configured! NAT traversal requires STUN or TURN
0:00:35.314131829 22607 0x7f6738001d90 WARN       kmsbasertpsession kmsbasertpsession.c:775:kms_base_rtp_session_start_transport_send:<kmswebrtcsession1> Cannot configure connection for media (id=1)
0:00:35.370059737 22607 0x7f673c010d80 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<'':sink_video_default> Add probe: DISCONT buffers and GAP events
0:00:35.370116117 22607 0x7f673c010d80 DEBUG             kmselement kmselement.c:431:kms_element_set_target_on_linked:<kmsfilterelement0:video_src_default_0> Setting target <kmsfilterelement0_kmsagnosticbin2-0:src_0>
0:00:35.370149180 22607 0x7f673c010d80 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmsfilterelement0_kmsagnosticbin2-0:src_0> Received reconfigure event
0:00:35.370157998 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Upstream provided caps: ANY
0:00:35.370219423 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:35.370231693 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> Find TreeBin with wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:35.370263070 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin1> TreeBin <kmsparsetreebin1> caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:35.370272594 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TreeBin not found! Transcoding required for video
0:00:35.371136762 22607 0x7f673c010d80 DEBUG             enctreebin kmsenctreebin.c:140:configure_encoder: Configure encoder: <openh264enc0>
0:00:35.371175124 22607 0x7f673c010d80 DEBUG             enctreebin kmsenctreebin.c:448:kms_enc_tree_bin_configure:<kmsenctreebin0> Encoder plugin found: <openh264enc0> for caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:35.371184903 22607 0x7f673c010d80 DEBUG             enctreebin kmsenctreebin.c:273:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = Current value: 300000
0:00:35.371190023 22607 0x7f673c010d80 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<openh264enc0> "bitrate" set: 300000
0:00:35.384903417 22607 0x7f673c010d80 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:src_0> Received reconfigure event
0:00:35.386215169 22607 0x7f673c010d80 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2:src_0> Received reconfigure event
0:00:35.386238949 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> Created TreeBin: <kmsenctreebin0>
0:00:35.386250976 22607 0x7f673c010d80 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:596:onMediaTranscodingStateChanged:<kmsfilterelement0> MediaTranscodingStateChanged: TRANSCODING, bin: 'kmsfilterelement0_kmsagnosticbin2-0', type: 'video'
0:00:35.386263524 22607 0x7f673c010d80 INFO             agnosticbin kmsagnosticbin.c:754:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TRANSCODING ACTIVE for video
0:00:35.386447192 22607 0x7f673c010d80 LOG              agnosticbin kmsagnosticbin.c:1061:kms_agnostic_bin2_src_reconfigure_probe:<kmsfilterelement0_kmsagnosticbin2-0:src_0> Received reconfigure event
0:00:35.386462824 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Upstream provided caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline
0:00:35.386490171 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmsfilterelement0_kmsagnosticbin2-0> Downstream wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:35.386501211 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> Find TreeBin with wanted caps: video/x-h264, profile=(string)constrained-baseline, stream-format=(string)avc, alignment=(string)au; video/x-h264, stream-format=(string)avc, alignment=(string)au; video/x-h264, profile=(string)constrained-baseline, stream-format=(string)byte-stream, alignment=(string){ nal, au }; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ nal, au }
0:00:35.386519111 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin1> TreeBin <kmsparsetreebin1> caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:35.386556176 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsenctreebin0> TreeBin <kmsenctreebin0> caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline
0:00:35.386566264 22607 0x7f673c010d80 DEBUG            agnosticbin kmsagnosticbin.c:757:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TreeBin found! Using <kmsenctreebin0> for video
0:00:35.386730934 22607 0x7f673c010d80 DEBUG             kmselement kmselement.c:970:kms_element_set_sink_input_stats:<kmswebrtcendpoint1> Generating average stats for pad <kmswebrtcendpoint1:sink_video_default>
0:00:35.416224632 22607 0x7f674000e520 DEBUG   KurentoMediaElementImpl MediaElementImpl.cpp:561:mediaFlowInStateChanged:<kmswebrtcendpoint1> MediaFlowInStateChanged: FLOWING, pad: 'default', type: 'video'
0:00:46.888056039 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Processing CAPS event
0:00:46.888507176 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Current input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c01fffe1000f6742c01f8c8d405017fcb00f08846a01000468ce3c80, level=(string)3.1, profile=(string)constrained-baseline
0:00:46.888679573 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1021:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Set new input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline
0:00:46.892398103 22607 0x7f66f8005d20 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:46.892522757 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:920:input_bin_src_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Set input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:46.892738186 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:795:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Upstream provided caps: ANY
0:00:46.893144895 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:804:kms_agnostic_bin2_link_pad:<kmswebrtcendpoint0_kmsagnosticbin2-2> Downstream wanted caps: video/x-raw, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA
0:00:46.893186182 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:722:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> Find TreeBin with wanted caps: video/x-raw, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA
0:00:46.893228104 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin2> TreeBin <kmsparsetreebin2> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:46.893253994 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:742:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> TreeBin not found! Transcoding required for video
0:00:46.893289301 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:611:kms_agnostic_bin2_get_or_create_dec_bin: Raw caps: video/x-raw
0:00:46.893321401 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:501:check_bin:<kmsparsetreebin2> TreeBin <kmsparsetreebin2> caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline, width=(int)960, height=(int)540, framerate=(fraction)0/1, interlace-mode=(string)progressive, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true
0:00:46.893756653 22607 0x7f66f8005d20 DEBUG            agnosticbin kmsagnosticbin.c:746:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmswebrtcendpoint0_kmsagnosticbin2-2> Created TreeBin: <kmsdectreebin1>
0:00:46.904677570 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Processing CAPS event
0:00:46.904704173 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Current input caps: video/x-raw, width=(int)640, height=(int)360, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:46.904711431 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> No need to set new input caps
0:00:46.904715833 22607 0x7f673c010e40 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events
0:00:56.988498257 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Processing CAPS event
0:00:56.988591719 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> Current input caps: video/x-h264, stream-format=(string)avc, alignment=(string)au, codec_data=(buffer)0142c020ffe1000f6742c0208c8d407808bf700f08846a01000468ce3c80, level=(string)3.2, profile=(string)constrained-baseline
0:00:56.988621380 22607 0x7f66f8005d20 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmswebrtcendpoint0_kmsagnosticbin2-2> No need to set new input caps
0:00:56.988641442 22607 0x7f66f8005d20 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmswebrtcendpoint0_kmsagnosticbin2-2:sink> Add probe: DISCONT buffers and GAP events
0:00:57.013121156 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1001:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Processing CAPS event
0:00:57.013151820 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1009:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> Current input caps: video/x-raw, width=(int)960, height=(int)540, interlace-mode=(string)progressive, multiview-mode=(string)mono, multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)0/1, format=(string)BGRA
0:00:57.013158683 22607 0x7f673c010e40 LOG              agnosticbin kmsagnosticbin.c:1025:kms_agnostic_bin2_sink_caps_probe:<kmsfilterelement0_kmsagnosticbin2-0> No need to set new input caps
0:00:57.013163869 22607 0x7f673c010e40 INFO                kmsutils kmsutils.c:522:kms_utils_pad_monitor_gaps:<kmsfilterelement0_kmsagnosticbin2-0:sink> Add probe: DISCONT buffers and GAP events

Publisher:

image

Subscriber:

image

Let me know if you want to see the VP8 situation.

neilyoung commented 1 year ago

Best delete the whole directory and clone + git checkout again to the branch, that'd be easiest to fix the issue with getting to the latest commit on the branch.

To clean a previous build, just delete the build-Debug/ directory. Next time the script is run, it will not find it and will compile a new build from scratch. And again, I wouldn't recommend at all to manually copy the main executable and all .so files to /usr/, that's a recipe for making some subtle mistake sooner or later

I was fine removing the build dirs.

j1elo commented 1 year ago

This is the key line:

DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<openh264enc0> "bitrate" set: 300000

It clearly says that openh264enc0 is being set to 300000 (bps), even though you had set a target bitrate of 3 Mbps. So yes, something is wrong there. At least we have everything set up now to check! Weirdly, I didn't have any problems when I tested it but now I'll try with your command sequence to verify your use case.

neilyoung commented 1 year ago

Quick test with VP8: Works

Publisher

image

Subscriber:

image
neilyoung commented 1 year ago

This is the key line:

DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<openh264enc0> "bitrate" set: 300000

It clearly says that openh264enc0 is being set to 300000 (bps), even though you had set a target bitrate of 3 Mbps. So yes, something is wrong there. At least we have everything set up now to check! Weirdly, I didn't have any problems when I tested it but now I'll try with your command sequence to verify your use case.

Cool. Then we should have that by tomorrow :)

neilyoung commented 1 year ago

Subscriber:

image

Difference like day and night with that output bitrate :)

j1elo commented 1 year ago

Can you share a drawing of the Pipeline you are using, and indicate where you're setting the encoding bitrate? From the logs, I'm getting the feeling that the EncoderBitrate is simply not set in the element where the encoding is taking place.

For example in this pipeline:

(Chrome browser) ---> WebRtcEndpoint1 ---|--> RecorderEndpoint ---> recording.mp4
                                         |--> WebRtcEndpoint2 ---> (Chrome browser)

The transcoding would happen in WebRtcEndpoint1. No use of setting values in any of the other 2 elements, although most applications would probably just opt out of the problem and set then in all elements.

I have the feeling that in your case the transcoding of H.264 is happening in the element that the logs mention as kmsfilterelement0. Which I assume is the filter that you're using for the test? And that this element is just using the default values that are configured in the .conf files, because nobody has set any other value for the encoding bitrate to them.

This, of course, contradicts the results you obtained with VP8 :)

neilyoung commented 1 year ago

The bitrate is set in the publisher WebRtcEndpoint. I also had the same setup in the subscriber WebRtcEndpoint first, but I could not find the appropriate traces in the KMS log, so I removed it from there.

And it wouldn't explain why it works with VP8.

But let me quickly test by also trying to pimp the subscriber WebRtcEndpoint (from the feeling I would say it rather belongs there, than in the publisher's)

neilyoung commented 1 year ago

Setting the bitrate in the subscriber's WebRtcEndpoint too gives a lot of traces like this:

0:01:09.587044625 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2595712
0:01:09.587094929 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2595712
0:01:09.823551405 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2622400
0:01:09.823598260 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2622400
0:01:10.024742794 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2663264
0:01:10.024801266 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2663264
0:01:10.253053735 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2704240
0:01:10.253100982 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2704240
0:01:10.498414226 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2746176
0:01:10.498453760 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2746176
0:01:10.956481433 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2796480
0:01:10.956541897 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2796480
0:01:11.161423941 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2840896
0:01:11.161470053 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2840896
0:01:11.394018564 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2892272
0:01:11.394060638 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2892272
0:01:11.595441009 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2937360
0:01:11.595488332 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2937360
0:01:11.816213180 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 2987808
0:01:11.816260281 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 2987808
0:01:12.062215560 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 3000000
0:01:12.062255736 27134 0x7fba74048920 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 3000000

But it finally ramps up to 3M.

image
neilyoung commented 1 year ago

With H.264, when I set it in the publisher and subscriber WebRtcEndpoint, same "Doesn't work". And same trace again:

0:03:45.350342937 27134 0x7fba4c007b60 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<openh264enc0> "bitrate" set: 300000

If you are in doubt, that I set it in the wrong WebRtcEndpoint, then I'm now setting it in all WebRtcEndpoints I'm managing. I think the VP8 "works" comes from REMB (?, not sure).

neilyoung commented 1 year ago

So given your picture above: Setting it in WebRtcEndpoint1 and WebRtcEndpoint2. There is no RecorderEndpoint, but a filter after WebRtcEndpoint1 and before WebRtcEndpoint2

neilyoung commented 1 year ago

I think the VP8 "OK" comes from REMB, which constantly increases the bitrate:

0:00:29.954442523 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 581288
0:00:29.954553490 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 581288
0:00:30.154692295 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 590308
0:00:30.154770552 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 590308
0:00:30.389872960 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 595624
0:00:30.389966561 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 595624
0:00:30.619372216 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 606248
0:00:30.619445486 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 606248
0:00:31.091154145 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 617340
0:00:31.091276357 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 617340
0:00:31.319638330 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 628316
0:00:31.319704167 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 628316
0:00:31.554745925 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 639784
0:00:31.554815983 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 639784
0:00:31.758139270 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 649820
0:00:31.758234117 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 649820
0:00:31.987890468 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:267:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = WebRTC REMB: 661440

But the very first setting is the same as for H.264:

0:00:14.088042805 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:273:kms_enc_tree_bin_get_bitrate:<kmsenctreebin0> Bitrate = Current value: 300000
0:00:14.088050769 29383 0x7f4c9800e980 DEBUG             enctreebin kmsenctreebin.c:324:kms_enc_tree_bin_set_target_bitrate:<vp8enc0> "target-bitrate" set: 300000

It was just coincidence caused by REMB

neilyoung commented 1 year ago

Shit. I see my fault: I have to set the bitrate to the filter element....

neilyoung commented 1 year ago

Yes, setting the bitrate to the filter does it.

But this raises now a general question: If there is no filter involved, WebRtcEndpoint1 is directly connected to WebRtcEndpoint2: Which one would need to be set? I suppose WebRtcEndpoint2?

neilyoung commented 1 year ago

And was everything you did regarding this issue for bin now? I hesitate to checkout master for comparison...

Sorry for that.

j1elo commented 1 year ago

For any given element there are 3 sources that can choose what bitrate is actually used for encoding. In order of precedence:

The REMB is network congestion adaptation from WebRTC, and it is selected regarless of what was the target encoder bitrate. If a subscriber browser requests 1,5Mbps, that's what gets sent. There are other Kurento API methods that can be used to manipulate this, but it's better if they are left by default and Chrome (or whatever WebRTC subscriber receives the video) uses REMB to indicate the ideal bitrate.

Lacking that, the EncoderBitrate is used. 300 kbps by default, or whatever is set by the application.

The potential problem is that this only applies to each element separately, and it might not be obvious where the values should be set to have effect. I thought about creating a new parameter that affects the whole Pipeline, but in the end it is just too difficult to do it correctly because there are so many combinations of elements that could potentially be done, that it makes sense to configure these values separately.

For apps that don't need to create too crazy of a pipeline, they typically implement a factory method to create elements and apply common properties to all of them, and setting encoder bitrate in there would be a good example.

In the case of

WebRtcEndpoint1 ---> WebRtcEndpoint2

the transcoding should happen in 1, because if it happened in 2 and then later you connected a third one, the transcoding would need to happen there also, thus it would be a waste. Instead, have it at 1 so any downstream element can benefit from it.

In the case of W1 ---> Filter ---> W2

there are 2 transcodings happening; from W1 to Filter, there is transcoding in W1 that decodes the video from encoded to RAW. And from Filter to W2, there is transcoding happening at Filter because W2 is requesting an encoded format (such as H.264) but Filter only has raw video so it must encode it before passing it down to W2.

neilyoung commented 1 year ago

OK, right now I'm setting it in W1 and W2 and in a potential filter. That should do it, right?

I'm now (seemingly) back on the 7.0.0 original version. And to my shame I have to admit, that it already seemed to work with this version... :/

neilyoung commented 1 year ago

But it is all still weird: No getting these traces in one and the same session:

0:00:30.144242120 57074 0x7f7dd407b580 INFO agnosticbin kmsagnosticbin.c:730:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> TRANSCODING ACTIVE for video

followed by

0:00:30.144552257 57074 0x7f7dd407b580 LOG agnosticbin kmsagnosticbin.c:747:kms_agnostic_bin2_find_or_create_bin_for_caps:<kmsfilterelement0_kmsagnosticbin2-0> Suppressed - TRANSCODING INACTIVE for video

neilyoung commented 1 year ago

I think I have enough for today. Sorry, sorry for all the hassle for nothing

j1elo commented 1 year ago

No worries, it's been a long day! Note please that it's a local bank holiday so I won't be back around here until next Monday.

neilyoung commented 1 year ago

Thanks for all. Enjoy

neilyoung commented 1 year ago

And Happy Easter (if you celebrate that).