Re: [1.7.16] problem with GetClippedNumProvidedSystems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Rainer,

Am 24.01.2011 11:36, schrieb Rainer Blickle:
Hi Lars,

from my point of view this is not a problem and no fault of gcc 4.4.3.

Why ?: When selecting a device for receiving (cDevice::GetDevice as
far i know) there are 3 bits for the count of modulation systems. Is
is the impact variable.

The method isn't used anywhere else.

I know that there's no real problem with selecting the device. But vdr 1.7.16 uses 4 bits for this piece of the impact computation.

cDevice::GetDevice:
  imp <<= 4; imp |= GetClippedNumProvidedSystems(4, device[i]) - 1;

GetClippedNumProvidedSystems:
  int MaxNumProvidedSystems = (1 << AvailableBits) - 1;
  int NumProvidedSystems = Device->NumProvidedSystems();
  if (NumProvidedSystems > MaxNumProvidedSystems) {

   AvailableBits == 4
=> 1 << 4 == 10000b
=> 10000b - 1 == 1111b == 15d
 Device->NumProvidedSystems() returns 7
 7 < 15
=> there should be no error message

 If I place a isyslog right before the comparison like
isyslog("AvailableBits = %d, MaxNumProvidedSystems = %d, NumProvidedSystems = %d",
         AvailableBits, MaxNumProvidedSystems, NumProvidedSystems);
 The expected values are printed at the syslog and there's no error message.
 If I remove the syslog call, the error message comes again.

 That's why I think, that the compiler is "optimizing" something, which leads to an error.
 And if the compiler is doing something wrong here - how can I be sure that there are no errors in other parts?

 What am I missing? I would like to be wrong - but I would like to understand... :-)

Lars.


The impact is smaller (numberic value) if a device has less modulation
systems. Perhaps (and only perhaps) in some situations another device
would be taken to receive a specific channel.

Regards Rainer

2011/1/19 L. Hanisch<dvb@xxxxxxxxxxxxxx>:
Hi,

  I get log messages like:
ERROR: device 1 supports 7 modulation systems but cDevice::GetDevice()
currently only supports 4 delivery systems which should be fixed

  It's a Satelco EasyWatch (DVB-C):
  frontend 0/0 provides DVB-C with QPSK,QAM16,QAM32,QAM64,QAM128,QAM256
("Philips TDA10023 DVB-C")

  But AvailableBits is 4, MaxNumProvidedSystems computes to 15 and
NumProvidedSystems is 7 if I write them with isyslog to the log.
  Is it a fault of gcc 4.4.3?
  Has anyone any idea? I just don't know what to do with this...

Regards,
Lars.

_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux