hzeller / gmrender-resurrect

Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer. Fork of GMediaRenderer to add some features to make it usable.
GNU General Public License v2.0
851 stars 206 forks source link

output modules #210

Open mchalain opened 4 years ago

mchalain commented 4 years ago

This collection of patches allows to use external output module. The module is a dynamic binary installed is @PREFIX@/lib/gmediarender and the core application is able to load it dynamically with dlopen. output_gstreamer.c is not inside the core application and move to the gmrendergst.so file. Now it exists two way to load the module: $ /usr/local/bin/gmediarender -o : this command looks for the file /usr/local/lib/gmediarender/gmrender.so or: $ LD_PRELOAD=/usr/local/lib/gmediarender/gmrender_gst.so /usr/local/bin/gmediarender But as the module may be load from the arguments of the application, the argument of the module needs to be separate from the others by '--'. $ /usr/local/bin/gmediarender -o gst --logfile=stderr -- --gstout-videosink=qtvideosink

To check the capabilities of the module, the gmrender_mp123.so module is available in the contribs directory. Others modules should be available in the future (mpd and another for my own application putv).

mill1000 commented 4 years ago

Ok...but why?

I understand you have an application where gstreamer is an undesirable output backend. But is there really a common use case for having an output module that can be loaded at run-time?

mchalain commented 4 years ago

Hello, My motivation is to add new modules without modification of the core application. Gmrender contains a mechanism to use output modules, but only gstreamer has been available for a long time. I tried to send a support of mpg123 without success, and now I would like to use gmediarender to drive my own playback application ( https://github.com/mchalain/putv). The load of an external library allows to extend the usage of gmrender. Break the link between the UPnP features and the Output, allows to integrate Gmrender in different projects on different targets.

If gmrender may be used by more people, the application may receive more contributions.

My goal is a connected speaker ( https://www.lesimprimantes3d.fr/forum/topic/31906-enceinte-wifi-raspberry-pi-0-w/ ). All softwares is in Open-Source. I need to keep the memory and the CPU resource for the streaming and keep the MMC space to store music. Gstreamer is too fat, and yet glib is useless for me.

Le dim. 28 juin 2020 à 01:17, Tucker Kern notifications@github.com a écrit :

Ok...but why?

I understand you have an application where gstreamer is an undesirable output backend. But is there really a common use case for having an output module that can be loaded at run-time?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/hzeller/gmrender-resurrect/pull/210#issuecomment-650647342, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA7UFJC2IQXB3NB3TRIWUJ3RYZ4ZBANCNFSM4OJKH3QQ .