Black screen on some channels with vdr 1.7.6

Message ID 200905050959.09412.ajurik@quick.cz
State New
Headers

Commit Message

Ales Jurik May 5, 2009, 7:59 a.m. UTC
  On Tuesday 05 of May 2009, Klaus Schmidinger wrote:
> On 05/05/09 00:04, Ales Jurik wrote:
...
> >
> > Many thanks, it seems to works (with type of 2), but it is necessary to
> > set "Update channels" to "no".
>
> Please try this:
>
> --- remux.c     2009/05/03 14:43:25     2.20
> +++ remux.c     2009/05/05 07:27:21
> @@ -795,6 +795,7 @@
>                    scanner <<= 8;
>                    scanner |= Data[i];
>                    switch (type) {
> +                    case 0x01: // MPEG 1 video
>                      case 0x02: // MPEG 2 video
>                           if (scanner == 0x00000100) { // Picture Start
> Code if (synced && Processed)
>
> With this you should be able to turn "Update channels" on again.
>
> Klaus

Thanks for pointing me to the problem. But for working it it was necessary to 
add these two changes more:

                       vpid = stream.getPid();
@@ -702,7 +703,7 @@ cFrameDetector::cFrameDetector(int Pid, 
   newFrame = independentFrame = false;
   numPtsValues = 0;
   numIFrames = 0;
-  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
+  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1,2 or 4
   frameDuration = 0;
   framesInPayloadUnit = framesPerPayloadUnit = 0;
   payloadUnitOfFrame = 0;

Now it seems to works as on older vdr versions (with PES), but video 
discontinuities are still present on Spektrum (as on many other channels from 
other providers). On STB's these discontinuities are not present in video.

Thanks and BR,

Ales
  

Comments

Marek Hajduk May 5, 2009, 8:41 a.m. UTC | #1
I have tu confirm, that I used both patches and it now works-I get
picture. But picture has errors.

BR

Marky


Ales Jurik píše v Út 05. 05. 2009 v 09:59 +0200:
> On Tuesday 05 of May 2009, Klaus Schmidinger wrote:
> > On 05/05/09 00:04, Ales Jurik wrote:
> ...
> > >
> > > Many thanks, it seems to works (with type of 2), but it is necessary to
> > > set "Update channels" to "no".
> >
> > Please try this:
> >
> > --- remux.c     2009/05/03 14:43:25     2.20
> > +++ remux.c     2009/05/05 07:27:21
> > @@ -795,6 +795,7 @@
> >                    scanner <<= 8;
> >                    scanner |= Data[i];
> >                    switch (type) {
> > +                    case 0x01: // MPEG 1 video
> >                      case 0x02: // MPEG 2 video
> >                           if (scanner == 0x00000100) { // Picture Start
> > Code if (synced && Processed)
> >
> > With this you should be able to turn "Update channels" on again.
> >
> > Klaus
> 
> Thanks for pointing me to the problem. But for working it it was necessary to 
> add these two changes more:
> 
> --- remux.c	2009-05-05 09:44:01.000000000 +0200
> +++ remux.c	2009-05-05 09:50:56.854167360 +0200
> @@ -481,6 +481,7 @@ void cPatPmtParser::ParsePmt(const uchar
>       for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
>           dbgpatpmt("     stream type = %02X, pid = %d", 
> stream.getStreamType(), stream.getPid());
>           switch (stream.getStreamType()) {
> +           case 0x01: // MPEG1
>             case 0x02: // STREAMTYPE_13818_VIDEO
>             case 0x1B: // MPEG4
>                        vpid = stream.getPid();
> @@ -702,7 +703,7 @@ cFrameDetector::cFrameDetector(int Pid, 
>    newFrame = independentFrame = false;
>    numPtsValues = 0;
>    numIFrames = 0;
> -  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
> +  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1,2 or 4
>    frameDuration = 0;
>    framesInPayloadUnit = framesPerPayloadUnit = 0;
>    payloadUnitOfFrame = 0;
> 
> Now it seems to works as on older vdr versions (with PES), but video 
> discontinuities are still present on Spektrum (as on many other channels from 
> other providers). On STB's these discontinuities are not present in video.
> 
> Thanks and BR,
> 
> Ales
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Marek Hajduk May 5, 2009, 9:03 a.m. UTC | #2
I made recording with vdr 1.7.7 and prewious patches.
I get picture with several errors. Here: 
http://rapidshare.com/files/229350889/2009-05-05.10.45.1220-0.rec.tar.gz.html

BR

Marky
Marek Hajduk píše v Út 05. 05. 2009 v 10:41 +0200:
> I have tu confirm, that I used both patches and it now works-I get
> picture. But picture has errors.
> 
> BR
> 
> Marky
> 
> 
> Ales Jurik píše v Út 05. 05. 2009 v 09:59 +0200:
> > On Tuesday 05 of May 2009, Klaus Schmidinger wrote:
> > > On 05/05/09 00:04, Ales Jurik wrote:
> > ...
> > > >
> > > > Many thanks, it seems to works (with type of 2), but it is necessary to
> > > > set "Update channels" to "no".
> > >
> > > Please try this:
> > >
> > > --- remux.c     2009/05/03 14:43:25     2.20
> > > +++ remux.c     2009/05/05 07:27:21
> > > @@ -795,6 +795,7 @@
> > >                    scanner <<= 8;
> > >                    scanner |= Data[i];
> > >                    switch (type) {
> > > +                    case 0x01: // MPEG 1 video
> > >                      case 0x02: // MPEG 2 video
> > >                           if (scanner == 0x00000100) { // Picture Start
> > > Code if (synced && Processed)
> > >
> > > With this you should be able to turn "Update channels" on again.
> > >
> > > Klaus
> > 
> > Thanks for pointing me to the problem. But for working it it was necessary to 
> > add these two changes more:
> > 
> > --- remux.c	2009-05-05 09:44:01.000000000 +0200
> > +++ remux.c	2009-05-05 09:50:56.854167360 +0200
> > @@ -481,6 +481,7 @@ void cPatPmtParser::ParsePmt(const uchar
> >       for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
> >           dbgpatpmt("     stream type = %02X, pid = %d", 
> > stream.getStreamType(), stream.getPid());
> >           switch (stream.getStreamType()) {
> > +           case 0x01: // MPEG1
> >             case 0x02: // STREAMTYPE_13818_VIDEO
> >             case 0x1B: // MPEG4
> >                        vpid = stream.getPid();
> > @@ -702,7 +703,7 @@ cFrameDetector::cFrameDetector(int Pid, 
> >    newFrame = independentFrame = false;
> >    numPtsValues = 0;
> >    numIFrames = 0;
> > -  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
> > +  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1,2 or 4
> >    frameDuration = 0;
> >    framesInPayloadUnit = framesPerPayloadUnit = 0;
> >    payloadUnitOfFrame = 0;
> > 
> > Now it seems to works as on older vdr versions (with PES), but video 
> > discontinuities are still present on Spektrum (as on many other channels from 
> > other providers). On STB's these discontinuities are not present in video.
> > 
> > Thanks and BR,
> > 
> > Ales
> > 
> > _______________________________________________
> > vdr mailing list
> > vdr@linuxtv.org
> > http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
> 
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Alexw May 5, 2009, 11:52 a.m. UTC | #3
Hi,

You can also add one more case :

case 0x19: // advanced codec HD digital television service

Rgds,

Alex

Marek Hajduk wrote:
> I made recording with vdr 1.7.7 and prewious patches.
> I get picture with several errors. Here: 
> http://rapidshare.com/files/229350889/2009-05-05.10.45.1220-0.rec.tar.gz.html
>
> BR
>
> Marky
> Marek Hajduk píše v Út 05. 05. 2009 v 10:41 +0200:
>   
>> I have tu confirm, that I used both patches and it now works-I get
>> picture. But picture has errors.
>>
>> BR
>>
>> Marky
>>
>>
>> Ales Jurik píše v Út 05. 05. 2009 v 09:59 +0200:
>>     
>>> On Tuesday 05 of May 2009, Klaus Schmidinger wrote:
>>>       
>>>> On 05/05/09 00:04, Ales Jurik wrote:
>>>>         
>>> ...
>>>       
>>>>> Many thanks, it seems to works (with type of 2), but it is necessary to
>>>>> set "Update channels" to "no".
>>>>>           
>>>> Please try this:
>>>>
>>>> --- remux.c     2009/05/03 14:43:25     2.20
>>>> +++ remux.c     2009/05/05 07:27:21
>>>> @@ -795,6 +795,7 @@
>>>>                    scanner <<= 8;
>>>>                    scanner |= Data[i];
>>>>                    switch (type) {
>>>> +                    case 0x01: // MPEG 1 video
>>>>                      case 0x02: // MPEG 2 video
>>>>                           if (scanner == 0x00000100) { // Picture Start
>>>> Code if (synced && Processed)
>>>>
>>>> With this you should be able to turn "Update channels" on again.
>>>>
>>>> Klaus
>>>>         
>>> Thanks for pointing me to the problem. But for working it it was necessary to 
>>> add these two changes more:
>>>
>>> --- remux.c	2009-05-05 09:44:01.000000000 +0200
>>> +++ remux.c	2009-05-05 09:50:56.854167360 +0200
>>> @@ -481,6 +481,7 @@ void cPatPmtParser::ParsePmt(const uchar
>>>       for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
>>>           dbgpatpmt("     stream type = %02X, pid = %d", 
>>> stream.getStreamType(), stream.getPid());
>>>           switch (stream.getStreamType()) {
>>> +           case 0x01: // MPEG1
>>>             case 0x02: // STREAMTYPE_13818_VIDEO
>>>             case 0x1B: // MPEG4
>>>                        vpid = stream.getPid();
>>> @@ -702,7 +703,7 @@ cFrameDetector::cFrameDetector(int Pid, 
>>>    newFrame = independentFrame = false;
>>>    numPtsValues = 0;
>>>    numIFrames = 0;
>>> -  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
>>> +  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1,2 or 4
>>>    frameDuration = 0;
>>>    framesInPayloadUnit = framesPerPayloadUnit = 0;
>>>    payloadUnitOfFrame = 0;
>>>
>>> Now it seems to works as on older vdr versions (with PES), but video 
>>> discontinuities are still present on Spektrum (as on many other channels from 
>>> other providers). On STB's these discontinuities are not present in video.
>>>
>>> Thanks and BR,
>>>
>>> Ales
>>>
>>> _______________________________________________
>>> vdr mailing list
>>> vdr@linuxtv.org
>>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>>>       
>> _______________________________________________
>> vdr mailing list
>> vdr@linuxtv.org
>> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>>     
>
>
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
>
  
Klaus Schmidinger May 10, 2009, 2:34 p.m. UTC | #4
On 05/05/09 13:52, alexw wrote:
> Hi,
> 
> You can also add one more case :
> 
> case 0x19: // advanced codec HD digital television service

Can you please post a tested patch that implements this?

Klaus
  
Marek Hajduk May 13, 2009, 9:56 p.m. UTC | #5
I found out that errors in picture is caused by decryption of channel.
With every new ecm I get error (break up) in picture. Interesting thing
is that packet UPC has  about 70 channels, however only several has
problem with decryption.

Can somebody tell me, how can I provide more debug info?

BR

Marky




Marek Hajduk píše v Út 05. 05. 2009 v 10:41 +0200: 
> I have tu confirm, that I used both patches and it now works-I get
> picture. But picture has errors.
> 
> BR
> 
> Marky
> 
> 
> Ales Jurik píše v Út 05. 05. 2009 v 09:59 +0200:
> > On Tuesday 05 of May 2009, Klaus Schmidinger wrote:
> > > On 05/05/09 00:04, Ales Jurik wrote:
> > ...
> > > >
> > > > Many thanks, it seems to works (with type of 2), but it is necessary to
> > > > set "Update channels" to "no".
> > >
> > > Please try this:
> > >
> > > --- remux.c     2009/05/03 14:43:25     2.20
> > > +++ remux.c     2009/05/05 07:27:21
> > > @@ -795,6 +795,7 @@
> > >                    scanner <<= 8;
> > >                    scanner |= Data[i];
> > >                    switch (type) {
> > > +                    case 0x01: // MPEG 1 video
> > >                      case 0x02: // MPEG 2 video
> > >                           if (scanner == 0x00000100) { // Picture Start
> > > Code if (synced && Processed)
> > >
> > > With this you should be able to turn "Update channels" on again.
> > >
> > > Klaus
> > 
> > Thanks for pointing me to the problem. But for working it it was necessary to 
> > add these two changes more:
> > 
> > --- remux.c	2009-05-05 09:44:01.000000000 +0200
> > +++ remux.c	2009-05-05 09:50:56.854167360 +0200
> > @@ -481,6 +481,7 @@ void cPatPmtParser::ParsePmt(const uchar
> >       for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
> >           dbgpatpmt("     stream type = %02X, pid = %d", 
> > stream.getStreamType(), stream.getPid());
> >           switch (stream.getStreamType()) {
> > +           case 0x01: // MPEG1
> >             case 0x02: // STREAMTYPE_13818_VIDEO
> >             case 0x1B: // MPEG4
> >                        vpid = stream.getPid();
> > @@ -702,7 +703,7 @@ cFrameDetector::cFrameDetector(int Pid, 
> >    newFrame = independentFrame = false;
> >    numPtsValues = 0;
> >    numIFrames = 0;
> > -  isVideo = type == 0x02 || type == 0x1B; // MPEG 2 or MPEG 4
> > +  isVideo = type == 0x01 || type == 0x02 || type == 0x1B; // MPEG 1,2 or 4
> >    frameDuration = 0;
> >    framesInPayloadUnit = framesPerPayloadUnit = 0;
> >    payloadUnitOfFrame = 0;
> > 
> > Now it seems to works as on older vdr versions (with PES), but video 
> > discontinuities are still present on Spektrum (as on many other channels from 
> > other providers). On STB's these discontinuities are not present in video.
> > 
> > Thanks and BR,
> > 
> > Ales
> > 
> > _______________________________________________
> > vdr mailing list
> > vdr@linuxtv.org
> > http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
> 
> 
> _______________________________________________
> vdr mailing list
> vdr@linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
  
Marek Hajduk May 21, 2009, 7:02 p.m. UTC | #6
Marek Hajduk píše v St 13. 05. 2009 v 23:56 +0200:
> I found out that errors in picture is caused by decryption of channel.
> With every new ecm I get error (break up) in picture. Interesting thing
> is that packet UPC has  about 70 channels, however only several has
> problem with decryption.
> 
> Can somebody tell me, how can I provide more debug info?
> 
> BR
> 
> Marky
> 
> 
This problem is solved by new sc-plugin from today.

BR

Marky
  

Patch

--- remux.c	2009-05-05 09:44:01.000000000 +0200
+++ remux.c	2009-05-05 09:50:56.854167360 +0200
@@ -481,6 +481,7 @@  void cPatPmtParser::ParsePmt(const uchar
      for (SI::Loop::Iterator it; Pmt.streamLoop.getNext(stream, it); ) {
          dbgpatpmt("     stream type = %02X, pid = %d", 
stream.getStreamType(), stream.getPid());
          switch (stream.getStreamType()) {
+           case 0x01: // MPEG1
            case 0x02: // STREAMTYPE_13818_VIDEO
            case 0x1B: // MPEG4