GStreamerFilter setElementProperty doesn't support UInt64 properties
Prerequisites
- [x] I have read the SUPPORT document
- [x] I have checked the Troubleshooting Guide
- [x] I have tested with the latest version of Kurento
Issue description
Setting a parameter of type Unsigned Integer64 (as reported by gst-inspect-1.5) results in the following:
warning KurentoGStreamerFilterImpl GStreamerFilterImpl.cpp:260
setElementProperty() Property type not implemented: GParamUInt64
This appears in the Java client as
org.kurento.client.internal.server.KurentoServerException: Property type not implemented: GParamUInt64 (Code:40006, Type:null, Data: {"type":"NOT_IMPLEMENTED"})
Context
I'm trying to set a property of a GStreamer element on-the-fly, as described in https://doc-kurento.readthedocs.io/en/6.13.0/project/relnotes/v6_8_1.html#added
I'm using the GStreamerFilter.setElementProperty() method in the Java client. The property I'm trying to set is listed by gst-inspect-1.5 as an Unsigned Integer64.
How to reproduce?
For example:
- Create the following element:
GStreamerFilter filter = new GStreamerFilter.Builder(pipeline, "queue max-size-time=1000000000").build();
- Update as follows:
filter.setElementProperty("max-size-time", "2000000000");
Expected & current behavior
The property of the filter should be updated, but I see the above errors instead.
(Optional) Possible solution
I have a speculative fix in the following commit: https://github.com/hgcummings/kms-filters/commit/3f4581439d5457385955e1894508537a056d249f
I haven't submitted this as a PR because I don't currently have a way of testing it. I can look into building the KMS from source, but I don't currently have a suitable dev environment set up.
(I'm also unsure whether I should be using gulong or guint64 here)
Note that my commit only adds Unsigned Int64. I think there are also cases missing for Unsigned Integer and (signed) Integer64.
Environment info
I'm running on a t2.nano EC2 instance creating using the vanilla out-of-the box CloudFormation stack https://s3-eu-west-1.amazonaws.com/aws.kurento.org/KMS-Coturn-cfn-6.13.0.yaml (as documented at https://doc-kurento.readthedocs.io/en/latest/user/installation.html)
INFO: Kurento Media Server
- Kurento version: 6.13.0
- Server OS: Ubuntu 16.04 (Xenial)
- Installation method:
- [ ] apt-get
- [ ] Docker
- [x] AWS
- [ ] Built from sources
INFO: Application Server
- Language: Java
- Kurento Client version: 6.13.0
INFO: End-user clients
- Device(s): PC
- OS(es): Windows 10
- Browser(s): Chrome 80
Version details
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
$ kurento-media-server -v
Kurento Media Server version: 6.13.0
Found modules:
'core' version 6.13.0
'elements' version 6.13.0
'filters' version 6.13.0
$ dpkg -l | grep -Pi 'kurento|kms-|gst.*1.5|nice'
ii gstreamer1.5-libav:amd64 1.8.1-1kurento1.16.04 amd64 libav plugin for GStreamer
ii gstreamer1.5-nice:amd64 0.1.15-1kurento3.16.04 amd64 ICE library (GStreamer 1.5 plugin)
ii gstreamer1.5-plugins-bad:amd64 1.8.1-1kurento4.16.04 amd64 GStreamer plugins
from the "bad" set
ii gstreamer1.5-plugins-base:amd64 1.8.1-1kurento2.16.04 amd64 GStreamer plugins
from the "base" set
ii gstreamer1.5-plugins-good:amd64 1.8.1-1kurento3.16.04 amd64 GStreamer plugins
from the "good" set
ii gstreamer1.5-plugins-ugly:amd64 1.8.1-1kurento1.16.04 amd64 GStreamer plugins
from the "ugly" set
ii gstreamer1.5-pulseaudio:amd64 1.8.1-1kurento3.16.04 amd64 GStreamer plugin for PulseAudio
ii gstreamer1.5-tools 1.8.1-1kurento2.16.04 amd64 Tools for use with GStreamer
ii gstreamer1.5-x:amd64 1.8.1-1kurento2.16.04 amd64 GStreamer plugins
for X11 and Pango
ii kms-core 6.13.0-0kurento1.16.04 amd64 Kurento Core module
ii kms-elements 6.13.0-0kurento1.16.04 amd64 Kurento Elements module
ii kms-filters 6.13.0-0kurento1.16.04 amd64 Kurento Filters module
ii kms-jsonrpc 6.13.0-0kurento1.16.04 amd64 Kurento JSON-RPC library
ii kmsjsoncpp 1.6.3-1kurento1.16.04 amd64 Kurento jsoncpp library
ii kurento-media-server 6.13.0-0kurento1.16.04 amd64 Kurento Media Server
ii libgstreamer-plugins-bad1.5-0:amd64 1.8.1-1kurento4.16.04 amd64 GStreamer development files for libraries from the "bad" set
ii libgstreamer-plugins-base1.5-0:amd64 1.8.1-1kurento2.16.04 amd64 GStreamer libraries from the "base" set
ii libgstreamer1.5-0:amd64 1.8.1-1kurento2.16.04 amd64 Core GStreamer libraries and elements
ii libnice10:amd64 0.1.15-1kurento3.16.04 amd64 ICE library (shared library)
ii libsrtp0:amd64 1.6.0-0kurento1.16.04 amd64 Secure RTP (SRTP)
and UST Reference Implementations - shared library
ii libusrsctp 0.9.2-1kurento1.16.04 amd64 sctp-refimpl library
ii openh264 1.4.0-1kurento1.16.04 amd64 OpenH264 library
ii openh264-gst-plugins-bad-1.5:amd64 1.8.1-1kurento4.16.04 amd64 GStreamer plugins
from openh264
ii openwebrtc-gst-plugins 0.10.0-1kurento1.16.04 amd64 OpenWebRTC specific GStreamer plugins
I saw this comment:
// else if (...) { Add here whatever types are needed }
which reminds me that this is just a "work in progress" and more types should just be liberally added as the need for them appears...
I think your change in https://github.com/hgcummings/kms-filters/commit/3f4581439d5457385955e1894508537a056d249f looks perfectly fine, make a PR if you still wish to get this added to Kurento and I'll get it merged.