set property value from a string

Gary Metalle Gary.Metalle at rvl.co.uk
Thu Jul 23 10:00:22 UTC 2020


Is there a way to set a property value from a given string, i.e convert from G_STRING to whatever type is required for that property?


I have a string such as the following:


"byte-stream=TRUE rc-lookahead=0 tune=zerolatency speed-preset=ultrafast sync-lookahead=0"


That I split up into name/value pairs and then need to set each property.


I first use g_object_class_find_property() to find out if the named property exists and this is ok and it returns a GParamSpec which tells me the type of the property.


I've tried using g_value_transform() but this only seems to be able to cope with simple stuff like converting a double to an int etc. Is there no simple way to convert say a string of "TRUE" to a gboolean?

I have also tried g_param_convert() but didn't get anywhere with that either.


Someone must be doing it somehow because if you pass a pipeline string to gst_parse_launch() then it has to cope with this. It would be easy to custom write something for "TRUE"/"FALSE" to gboolean but not so for the enum types and the x264enc plugin has quite a few of those.


On a positive note I think g_param_value_validate() works when you want to check that a given value is within the range for the defined property, but it implies you've converted it to the correct type first.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200723/d92fca6e/attachment.htm>


More information about the gstreamer-devel mailing list