bugtracker icon indicating copy to clipboard operation
bugtracker copied to clipboard

GStreamerFilter setElementProperty doesn't support UInt64 properties

Open hgcummings opened this issue 5 years ago • 1 comments

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:

  1. Create the following element:
GStreamerFilter filter = new GStreamerFilter.Builder(pipeline, "queue max-size-time=1000000000").build();
  1. 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

hgcummings avatar Apr 07 '20 23:04 hgcummings

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.

j1elo avatar Jun 18 '20 13:06 j1elo