Hi All
I'm in troubles with Controllers in Gstreamer 1.2. The following code compiles flawlessly, but does not do anything but throwing an GStreamer-CRITICAL Message gst_object_add_control_binding: assertion 'binding->pspec' failed. ------------------------------------- /* volume fades */ GstControlSource * cs1 = gst_interpolation_control_source_new (); GstControlBinding * binding = gst_direct_control_binding_new (GST_OBJECT_CAST (pipeline), "brightness", cs1); gst_object_add_control_binding (GST_OBJECT_CAST (pipeline), binding); /* set interpolation mode */ g_object_set (G_OBJECT(cs1), "mode", GST_INTERPOLATION_MODE_LINEAR, NULL); /* set control values */ GstTimedValueControlSource * tvcs = (GstTimedValueControlSource *) cs1; gst_timed_value_control_source_set (tvcs, 0 * GST_SECOND, 0); gst_timed_value_control_source_set (tvcs, 1 * GST_SECOND, 1); gst_object_unref (cs1); ------------------------------------- Same happens if I want to change "volume". It happens also if I am referring to the sink element or the playbin pipeline. Has anyone a hint? Best, Urs Hofer _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Tue, 2013-12-10 at 00:15 +0100, Urs Hofer wrote:
Hi Urs, > I'm in troubles with Controllers in Gstreamer 1.2. > > The following code compiles flawlessly, but does not do anything but throwing an GStreamer-CRITICAL Message > gst_object_add_control_binding: assertion 'binding->pspec' failed. The 'pspec' is the property specification for a GObject property, so this critical implies that this is not set for some reason. > ------------------------------------- > > /* volume fades */ > GstControlSource * cs1 = gst_interpolation_control_source_new (); > GstControlBinding * binding = gst_direct_control_binding_new (GST_OBJECT_CAST (pipeline), "brightness", cs1); > gst_object_add_control_binding (GST_OBJECT_CAST (pipeline), binding); I'm going to guess that your pipeline does not have a "brightness" property. If it's playbin, you can check the available properties (and if they are controllable) with: $ gst-inspect-1.0 playbin > ------------------------------------- > > Same happens if I want to change "volume". It happens also if I am referring to the > sink element or the playbin pipeline. Playbin's volume property is not controllable currently, it just proxies another element's volume property. If you want a controllable volume you should probably create a convenience bin that contains "volume ! audiosink" and then control the volume on the volume element directly via GstController. Alternatively (depending on how precise it has to be and what the use case is), you could just set up timers in your application thread and change playbin's volume property (or the sink's). Cheers -Tim -- Tim Müller, Centricular Ltd - http://www.centricular.com _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Dear Tim
Indeed, volume works now if I use a bin containing volume and autoaudiosink and attach it to the playbin setting the audio-sink property. Thanks for pointing to gst-inspect: indeed, brightness is not controllable in xvimagesink, so I could try for ages ;). As for sound, it also works if I use the videobalance element before xvimagesink. (This raises another question, which would be the fastest, most accelerated way of fading in and out) Thanks for your help, Urs Am 10.12.2013 um 17:56 schrieb Tim Müller <[hidden email]>: > On Tue, 2013-12-10 at 00:15 +0100, Urs Hofer wrote: > > Hi Urs, > >> I'm in troubles with Controllers in Gstreamer 1.2. >> >> The following code compiles flawlessly, but does not do anything but throwing an GStreamer-CRITICAL Message >> gst_object_add_control_binding: assertion 'binding->pspec' failed. > > The 'pspec' is the property specification for a GObject property, so > this critical implies that this is not set for some reason. > >> ------------------------------------- >> >> /* volume fades */ >> GstControlSource * cs1 = gst_interpolation_control_source_new (); >> GstControlBinding * binding = gst_direct_control_binding_new (GST_OBJECT_CAST (pipeline), "brightness", cs1); >> gst_object_add_control_binding (GST_OBJECT_CAST (pipeline), binding); > > I'm going to guess that your pipeline does not have a "brightness" > property. > > If it's playbin, you can check the available properties (and if they are > controllable) with: > > $ gst-inspect-1.0 playbin > >> ------------------------------------- >> >> Same happens if I want to change "volume". It happens also if I am referring to the >> sink element or the playbin pipeline. > > Playbin's volume property is not controllable currently, it just proxies > another element's volume property. > > If you want a controllable volume you should probably create a > convenience bin that contains "volume ! audiosink" and then control the > volume on the volume element directly via GstController. Alternatively > (depending on how precise it has to be and what the use case is), you > could just set up timers in your application thread and change playbin's > volume property (or the sink's). > > Cheers > -Tim > > -- > Tim Müller, Centricular Ltd - http://www.centricular.com > > > > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Mi, 2013-12-11 at 00:13 +0100, Urs Hofer wrote:
> Dear Tim > > Indeed, volume works now if I use a bin containing > volume and autoaudiosink and attach it to the playbin setting the audio-sink > property. > > Thanks for pointing to gst-inspect: indeed, brightness is not controllable in > xvimagesink, so I could try for ages ;). As for sound, it also works if I use > the videobalance element before xvimagesink. You could probably make the brightness (and others) properties of xvimagesink controllable. Note that many drivers don't support these settings anymore nowadays, especially in texture overlay mode which is used on most modern desktops (e.g. it does not work on my Intel GPU in GNOME3). > (This raises another question, which would be the fastest, most accelerated > way of fading in and out) Probably something that renders both videos in an OpenGL scene and fades them there. However you need to check if your hardware has fast ways of providing the video frames as GL textures. -- Sebastian Dröge <[hidden email]> Centricular Ltd - http://www.centricular.com Expertise, Straight from the Source _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (985 bytes) Download Attachment |
Am 11.12.2013 um 18:02 schrieb Sebastian Dröge <[hidden email]>: > On Mi, 2013-12-11 at 00:13 +0100, Urs Hofer wrote: >> Dear Tim >> >> Indeed, volume works now if I use a bin containing >> volume and autoaudiosink and attach it to the playbin setting the audio-sink >> property. >> >> Thanks for pointing to gst-inspect: indeed, brightness is not controllable in >> xvimagesink, so I could try for ages ;). As for sound, it also works if I use >> the videobalance element before xvimagesink. > > You could probably make the brightness (and others) properties of > xvimagesink controllable. Note that many drivers don't support these > settings anymore nowadays, especially in texture overlay mode which is > used on most modern desktops (e.g. it does not work on my Intel GPU in > GNOME3). > Right now, I'm using the videobalance element in the pipeline. That makes it a little bit more flexible if i'm using other sinks than xvimagesink (i.e. on other hardware like the RaspberryPi). I think I'll stick with that. >> (This raises another question, which would be the fastest, most accelerated >> way of fading in and out) > > Probably something that renders both videos in an OpenGL scene and fades > them there. However you need to check if your hardware has fast ways of > providing the video frames as GL textures. > I used gStreamer with openFrameworks, where everything is handled by OpenGL Textures. There it is quite easy to do fades, but the performance is very bad. So I switched to a direct approach using GTK and two Overlays and fading with gStreamer. Best, Urs > -- > Sebastian Dröge <[hidden email]> > Centricular Ltd - http://www.centricular.com > Expertise, Straight from the Source > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Mi, 2013-12-11 at 18:14 +0100, Urs Hofer wrote:
> Am 11.12.2013 um 18:02 schrieb Sebastian Dröge <[hidden email]>: > > > On Mi, 2013-12-11 at 00:13 +0100, Urs Hofer wrote: > >> Dear Tim > >> > >> Indeed, volume works now if I use a bin containing > >> volume and autoaudiosink and attach it to the playbin setting the audio-sink > >> property. > >> > >> Thanks for pointing to gst-inspect: indeed, brightness is not controllable in > >> xvimagesink, so I could try for ages ;). As for sound, it also works if I use > >> the videobalance element before xvimagesink. > > > > You could probably make the brightness (and others) properties of > > xvimagesink controllable. Note that many drivers don't support these > > settings anymore nowadays, especially in texture overlay mode which is > > used on most modern desktops (e.g. it does not work on my Intel GPU in > > GNOME3). > > > > Right now, I'm using the videobalance element in the pipeline. That makes > it a little bit more flexible if i'm using other sinks than xvimagesink (i.e. on > other hardware like the RaspberryPi). I think I'll stick with that. only way to do fast decoding there is to decode via hardware to a EGLImage, which then can only be used in OpenGL ES. > >> (This raises another question, which would be the fastest, most accelerated > >> way of fading in and out) > > > > Probably something that renders both videos in an OpenGL scene and fades > > them there. However you need to check if your hardware has fast ways of > > providing the video frames as GL textures. > > > > I used gStreamer with openFrameworks, where everything is handled by OpenGL > Textures. There it is quite easy to do fades, but the performance is very bad. So > I switched to a direct approach using GTK and two Overlays and fading with gStreamer. to decode and render video. On the Raspberry Pi for example your approach wouldn't work, already because there's no XV support there. -- Sebastian Dröge <[hidden email]> Centricular Ltd - http://www.centricular.com Expertise, Straight from the Source _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (985 bytes) Download Attachment |
In reply to this post by Hofer
Hi,
I am facing a similar problem, and I have explained the same here <http://gstreamer-devel.966125.n4.nabble.com/GStreamer-CRITICAL-gst-object-add-control-binding-assertion-binding-gt-pspec-failed-td4688007.html> . Could you help me out?? Regards -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |