Controller Troubles for setting brightness programmatically

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Controller Troubles for setting brightness programmatically

Hofer
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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

Tim Müller
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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

Hofer
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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

Sebastian Dröge-3
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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

Hofer

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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

Sebastian Dröge-3
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.
Using videobalance will likely be too slow on the RaspberryPi, and the
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.
Depends a bit on where you run it and what possibilities you have here
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
Reply | Threaded
Open this post in threaded view
|

Re: Controller Troubles for setting brightness programmatically

sk_gst
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