minisatip
minisatip copied to clipboard
RFE: Add support for pids=all & delpids= in the same HTTP request
Hi,
I suggest an interesting behaviour for the HTTP interface: when you connect with a tuning request including 'pids=all', then process also the parameter 'delpids' in the same call.
Here an example: "http://MINISATIP_HOST:8080/?msys=dvbs&freq=11623&pol=v&sr=27500&pids=all&delpids=8191"
The objective with this call is receive de full Transport Stream without NULL packets (pid=8191). This behaviour can be also be interesting for receiving all pids except some in a exclusion list. For sure you can try to do that using RTSP commands, but with the HTTP interface this is not possible (you can't send more than one command). However, this is not the only problem...
After my initial tests and debug I found that the minisatip server is parsing the "delpids" parameter, and processing it! However, the problem is the deleting command that is executed prior to setting the filter of the device to 8192 (all pids). This is correct because the magic pid 8192 is passed to DVB core for receive all pids, and then deleting a pid does nothing.
So perhaps the solution can be implement an special syntax like "pids=all-8191" (or "pids=all-8191,1,10..." or use current syntax of "pids=all&delpids=8191,..."). This indicates "receive all pids except pids in the exclude list". This behaviour can be implement without big changes in the current code. I suggest to add some pid filtering in the output. So when you send packets to the stream, you can remove the pids in this exclusion list. This is also a good solution when when two streams share the same tuner and each stream likes to receive only pids in his own list, and not pids from the other. This is supported by the standard when working with MULTICAST, but with UNICAST and HTTP is better to filter out unused pids. So, this point can be the best point to implement this exclude list.
What you think about that? I hope I do a good explain of my suggestion.
Hi,
I agree pid 8191 is a problem and some of my next commits will fix this (will not send pid 8191 at all).
I think your suggestion apply only when using pids=all because otherwise there is a pid filtering mechanism already implemented (basically if the pid matches the list of already added pids it will send it to the destination otherwise will ignore it). Right now as long as you specify the pods (or pids=all) you can have as many different streams using the same adapter as the hw pid filtering allows you.
Do you have any other real life scenario to exclude other pids when using pids=all except 8191 ?
Thanks
Hi,
Do you have any other real life scenario to exclude other pids when using pids=all except 8191 ?
Perhaps in the future (for receive all pids except some VPID & APID for unused programs inside the same TS), but for now I only request for receive all pids without padding (NULL packets). However, please, don't force this behaviour! I like to select if receive the full untouched TS or receive it without NULL packets. Perhaps the default can be without NULLs, but, please keep the option for receive also these packets!
Hi Catalin,
As this is related to my comment #139, I suggest to add it if you can... the idea is quite:
Any request (rtsp or http) with "pids=all" paramenter AND "delpids=X,Y,Z" in the SAME REQUEST is equivalent to send all pids except X,Y,Z.
This will be an special case, for example, for receiving all pids removing unused huge steams (i.e. video+padding).
Regards.