Mailing List archive

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

[linux-dvb] Volume bug for DVB_ADAC_CRYSTAL.



For driver version 0.9.4 in driver/dvb.c in the function SetVolume() the 
following code didn't work for me:

        case DVB_ADAC_CRYSTAL:
                volleft=127-((volleft*100)/255);
                volright=127-((volright*100)/255);
                i2c_writereg(dvb, 0x20, 0x03, volleft);
                i2c_writereg(dvb, 0x20, 0x04, volright);
                return 0;

The result is that the volume out form the tv card is very low. The reason is 
obvious since volleft/right never can reach 0. The correct way to scale 
volleft/right must be like this:

        case DVB_ADAC_CRYSTAL:
                volleft=127-((volleft*127)/255);
                volright=127-((volright*127)/255);
                i2c_writereg(dvb, 0x20, 0x03, volleft);
                i2c_writereg(dvb, 0x20, 0x04, volright);
                return 0;

But the values 64->127 gives almost Zero volume so the volume slider in VDR 
gets very sensitive. A better scaling is then:

        case DVB_ADAC_CRYSTAL:
                volleft=64-((volleft*64)/255);
                volright=64-((volright*64)/255);
                i2c_writereg(dvb, 0x20, 0x03, volleft);
                i2c_writereg(dvb, 0x20, 0x04, volright);
                return 0;

Which works very well for me :)

-- 
Mvh. Are Årseth
| aaarseth@atmel.com | Tlf: 72 89 75 44  | are@arseth.org  | Mob: 41 00 05 48


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index