Barracuda09 / SATPI

SATIP server for linux, suitable to run on an Raspberry Pi, Vu+, GigaBlue or any other linux box. currently supporting DVB-S/S2/T/C and transform DVB-S requests to DVB-C
http://barracuda09.github.io/SATPI
GNU General Public License v2.0
151 stars 32 forks source link

Request: Transformation mappings with FE support #135

Open lars18th opened 3 years ago

lars18th commented 3 years ago

Hi @Barracuda09 ,

At time I'm using the SATPI server to drive some "virtual" sources. These sources are broadcasts from the air using and external capture tool. So using the ChildPipe frontend I'm injecting the full transport stream from a PIPE, and tunning using fake satellite frequencies. It's easy and robust, so thank you for supporting this functionality.

However, now I want to expand this to use TWO virtual inputs. The idea is quite simple: As I've two external tuners, I want to drive two different ChildPipe frontends sharing the same frequencies but with different parameters. One example to illustrate it:

#EXTINF:-1 satip-freq="10714", Translation-1
rtsp://%1/?msys=childpipe&exec="inject-tool%20source1"&pcrtimer=1

That's my current mapping.m3u. In this case when you request the freq 10714 then the child pipe executes inject-tool source1 and reads from the PIPE. So, I can configure a second ChildPipe frontend and configure the same translation. But in this case the inject-tool requires to be reentrant, in the sense that it can handle more than one call at the same time. But this is false in my environment. However, if for example this tool can receive an additional parameter then it will possible to receive it and execute an alternative path based on this parameter. As example:

#EXTINF:-1 satip-freq="10714", Translation-1
rtsp://%1/?msys=childpipe&exec="inject-tool%20source1"&pcrtimer=1&addfe-param="-%d"

In this case, the child call will be inject-tool source1-0 or inject-tool source1-1, based on the fe 0 or 1 in use. Other options could be inject-tool source1 --frontend 1 if the mapping was addfe-param=" --frontend %d".

You think this has sense? It will be difficult to implement it? You have another different idea to achieve the same? Remember: my objective is to drive TWO different external "tuners" using the same FREQ mappings. Then I'll have from the point of view of the SAT>IP client a DUAL TUNER using the ChildPipe inputs.

Regards.

Barracuda09 commented 3 years ago

Hi @lars18th

I am not sure what you mean (It seems very specific).

Kind Regards

lars18th commented 3 years ago

Hi @Barracuda09 ,

Instead of a direct response to your questions, let me to explain first the use:

  SAT>IP client 1  -----
                       |                                    |--- ChildPipe ---> "external tuner A"  <--/ Freq=999.9
  SAT>IP client 2  ----+----> SATPI (mapping freq=999.9) ---+
                       |                                    |--- ChildPipe ---> "external tuner B"  <--/ Freq=999.9
  SAT>IP client 3  -----

So, take note that:

Please, note that this is only a suggestion. My problem is how to call to the childpipe binary/script multiple times from different "Tuner numbers". I ask if you can provide without much changes a method to pass as a parameter the tuner number. This is to grant that SATPI only executes the child process one time with the same parameters.

I hope you have now a more clear view of the use case. Regards.