On Fri, 2017-10-27 at 17:45 +0530, Amit Sadaphule wrote:
> Hi,
> 
> I am using RygelPlaybinRenderer APIs for implementing a dlna
> renderer. I 
> am using BubbleUPnP app on android to push the playback to my
> renderer. 
> Playback seems to work OK now. The playback controls and volume
> controls 
> from BubbleUPnP app are responsive and work fine. The reverse is what
> I 
> am trying to get working i.e. I am trying to find a way to get the 
> playback controls (play, pause, stop, seek, next, previous, shuffle, 
> repeat) and volume controls to work from my renderer.
> 
> Here is the list of things I tried for different controls:
> 1. Play, Pause, Stop: I just set the state of the playbin obtained
> by 
> calling 
> https://developer.gnome.org/librygel-renderer-gst/unstable/RygelPlayb
> inRenderer.html#rygel-playbin-renderer-get-playbin 
> and that changes the playback state properly and updates the
> playback 
> status in BubbleUPnP app too.
> 
> 2. Seek: With #1 as a guideline, I tried using gst_element_seek on
> the 
> playbin obtained using 
> https://developer.gnome.org/librygel-renderer-gst/unstable/RygelPlayb
> inRenderer.html#rygel-playbin-renderer-get-playbin, 
> but that seems to take a lot of time to actually apply the seek and 
> reflect the status in BubbleUPnP app. Sometimes almost 20 seconds.
> So, I 
> thought that maybe there is some other way to do this. So, I tried
> using 
> https://developer.gnome.org/librygel-renderer/unstable/RygelMediaPlay
> er.html#rygel-media-player-seek 
> by trying to get the player property of RygelMediaRenderer which is
> the 
> base class of RygelPlaybinRenderer. But that gave error 
> "GLib-GObject-WARNING **: g_object_get_valist: property 'player' of 
> object class 'RygelPlaybinRenderer' is not readable". Could you
> please 
> let me know how I can implement seek in the renderer?

In general, operating directly on the playbin is more of working by
luck than by design. It was supposed to work like that in the
beginning, but turned out to be too ugly to pull through.

For the renderer, you can use rygel_media_device_get_plugin and then
rygel_media_renderer_plugin_get_player to get the player. There seems
to be some design flaw in the library, but then again, this is really
just a very simple wrapper to get things up and running quickly.
> 
> 3. next, previous: I saw in Rygel's API documentation that there are 
> APIs rygel_player_controller_next() and 
> rygel_player_controller_previous() which could be used for
> implementing 
> these controls 
> (https://developer.gnome.org/librygel-renderer/unstable/RygelPlayerCo
> ntroller.html). 
> I tried to use those APIs, but they take the pointer to 
> RygelPlayerController instance as an argument. I could not find a way
> to 
> get that instance. So, I'm not sure whether I am on the right path. 
> Could you please point me in the right direction?

I would propose to not use the RygelMediaRenderer class and implement
the thin layer it provides yourself; then you have better access to all
the sub-classes.

> 4. shuffle, repeat: I could not find anything in Rygel's
> documentation 
> to implement these controls in my renderer.

Those do not exist, you can add them to a custom player controller
class.

> 
> 5. volume: Changing the volume from BubbleUPnP app changes the
> loudness 
> of the audio in playbin. I tried setting the "volume" property of
> the 
> Playbin obtained by calling 
> https://developer.gnome.org/librygel-renderer-gst/unstable/RygelPlayb
> inRenderer.html#rygel-playbin-renderer-get-playbin 
> which had effect on the loudness. But that did not sync the volume
> in 
> BubbleUPnP to the value set from the renderer. Also, I could not get 
> mute to work. When I tried setting the mute property of the playbin,
> it 
> complained that the mute property did not exist. So, I'm not sure how
> I 
> can implement volume/mute handling in my renderer.
> 
> Could you please help me to get #2 to #5 working?

Again, that is not supposed to work by manipulating the playbin
directly. The easiest way is to talk UPnP to your renderer locally. But
setting the volume property on the RygelMediaPlayer should work as
well.

_______________________________________________
rygel-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/rygel-list

Reply via email to