multistream support in VDR

Message ID 20130103112219.6064d4c4@bk.ru
State New
Headers

Commit Message

Goga777 Jan. 3, 2013, 7:22 a.m. UTC
  > >>> Recently in kernel was added full multistream support (DTV_STREAM_ID)
> >>> https://patchwork.kernel.org/patch/1351421/
> >>>
> >>> is there any plans to implement multistream support in vdr ?
> >>
> >> DTV_STREAM_ID is already used in VDR for DVB-T2.
> >
> > what about DTV_STREAM_ID for dvb-s2 ?
> 
> Which parameter would go in there, and where would it come from?

parameter "P" in channels.conf for identification of sub-stream 

WeddingTV;Tivuitalia:11914:HM5S1P2:S31.5E:27500:1026:1027=ita:0:0:4:8572:972:0

and small patch from crazycat for VDR 1.7.35


Goga
  

Comments

Klaus Schmidinger Jan. 3, 2013, 8:38 a.m. UTC | #1
On 03.01.2013 08:22, Goga777 wrote:
>>>>> Recently in kernel was added full multistream support (DTV_STREAM_ID)
>>>>> https://patchwork.kernel.org/patch/1351421/
>>>>>
>>>>> is there any plans to implement multistream support in vdr ?
>>>>
>>>> DTV_STREAM_ID is already used in VDR for DVB-T2.
>>>
>>> what about DTV_STREAM_ID for dvb-s2 ?
>>
>> Which parameter would go in there, and where would it come from?
>
> parameter "P" in channels.conf for identification of sub-stream
>
> WeddingTV;Tivuitalia:11914:HM5S1P2:S31.5E:27500:1026:1027=ita:0:0:4:8572:972:0
>
> and small patch from crazycat for VDR 1.7.35

Have you tested this and does it actually work?
I can hardly imagine that, because in

+     if (frontendType == SYS_DVBT2 || frontendType == SYS_DVBS2) {
+        // DVB-T2/DVB-S2
          SETCMD(DTV_STREAM_ID, dtp.PlpId());
          }

"frontendType" will never be SYS_DVBS2 because in line 816 this is
already limited to SYS_DVBT or SYS_DVBT2:

   else if (frontendType == SYS_DVBT || frontendType == SYS_DVBT2) {


I would assume that this also requires some additional code in VDR's nit.c
in order to store the "PlpId" in the transponder parameters of DVB-S2
transponders (see case case SI::T2DeliverySystemDescriptorTag).

Klaus
  
Manu Abraham Jan. 3, 2013, 8:55 a.m. UTC | #2
On Thu, Jan 3, 2013 at 2:08 PM, Klaus Schmidinger
<Klaus.Schmidinger@tvdr.de> wrote:
> On 03.01.2013 08:22, Goga777 wrote:
>>>>>>
>>>>>> Recently in kernel was added full multistream support (DTV_STREAM_ID)
>>>>>> https://patchwork.kernel.org/patch/1351421/
>>>>>>
>>>>>> is there any plans to implement multistream support in vdr ?
>>>>>
>>>>>
>>>>> DTV_STREAM_ID is already used in VDR for DVB-T2.
>>>>
>>>>
>>>> what about DTV_STREAM_ID for dvb-s2 ?
>>>
>>>
>>> Which parameter would go in there, and where would it come from?
>>
>>
>> parameter "P" in channels.conf for identification of sub-stream
>>
>>
>> WeddingTV;Tivuitalia:11914:HM5S1P2:S31.5E:27500:1026:1027=ita:0:0:4:8572:972:0
>>
>> and small patch from crazycat for VDR 1.7.35
>
>
> Have you tested this and does it actually work?
> I can hardly imagine that, because in
>
> +     if (frontendType == SYS_DVBT2 || frontendType == SYS_DVBS2) {
> +        // DVB-T2/DVB-S2
>          SETCMD(DTV_STREAM_ID, dtp.PlpId());
>          }
>
> "frontendType" will never be SYS_DVBS2 because in line 816 this is
> already limited to SYS_DVBT or SYS_DVBT2:
>
>   else if (frontendType == SYS_DVBT || frontendType == SYS_DVBT2) {
>

DTV_STREAM_ID is supposed to work with the following:

- DVB-S2 (the only current user as of now. Also to be noted
                is that, for any other current S2 demodulator in
                the kernel, this will not work)
- DVB-T2
- ISDB-T/S
- DVB-C2

so, it shouldn't be restricted to DVB-T/T2 alone.
  
Goga777 Jan. 3, 2013, 9:49 a.m. UTC | #3
> >>>>> Recently in kernel was added full multistream support (DTV_STREAM_ID)
> >>>>> https://patchwork.kernel.org/patch/1351421/
> >>>>>
> >>>>> is there any plans to implement multistream support in vdr ?
> >>>>
> >>>> DTV_STREAM_ID is already used in VDR for DVB-T2.
> >>>
> >>> what about DTV_STREAM_ID for dvb-s2 ?
> >>
> >> Which parameter would go in there, and where would it come from?
> >
> > parameter "P" in channels.conf for identification of sub-stream
> >
> > WeddingTV;Tivuitalia:11914:HM5S1P2:S31.5E:27500:1026:1027=ita:0:0:4:8572:972:0
> >
> > and small patch from crazycat for VDR 1.7.35
> 
> Have you tested this and does it actually work?

no, I have not tested

As Manu mentioned - my cx24116 based hvr4000 dvb-s2 card doesn't support multistream 

Goga
  

Patch

diff -ru vdr-1.7.35/dvbdevice.c vdr-1.7.35.new/dvbdevice.c
--- vdr-1.7.35/dvbdevice.c	2012-12-30 13:27:39.000000000 +0200
+++ vdr-1.7.35.new/dvbdevice.c	2013-01-02 22:22:23.900604880 +0200
@@ -230,7 +230,7 @@ 
   ST("ACST*")  q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
   ST("ACST*")  q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
   ST("  S 2")  q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
-  ST("   T2")  q += PrintParameter(q, 'P', plpId);
+  ST("  ST2")  q += PrintParameter(q, 'P', plpId);
   ST("  ST*")  q += PrintParameter(q, 'S', MapToUser(system, SystemValuesSat)); // we only need the numerical value, so Sat or Terr doesn't matter
   ST("   T*")  q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
   ST("   T*")  q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
@@ -823,8 +823,8 @@ 
      SETCMD(DTV_TRANSMISSION_MODE, dtp.Transmission());
      SETCMD(DTV_GUARD_INTERVAL, dtp.Guard());
      SETCMD(DTV_HIERARCHY, dtp.Hierarchy());
-     if (frontendType == SYS_DVBT2) {
-        // DVB-T2
+     if (frontendType == SYS_DVBT2 || frontendType == SYS_DVBS2) {
+        // DVB-T2/DVB-S2
         SETCMD(DTV_STREAM_ID, dtp.PlpId());
         }