[linux-dvb] Stupid beginner-level code question...

BOUWSMA Barry freebeer.bouwsma at gmail.com
Tue Feb 10 04:02:49 CET 2009


Howdy,

whilst counting interrupts on my machines, I pondered whether
I could double the work one machine could handle by not parsing
a 33Mbit/sec transport stream, but only the PID carrying the
128kbit/sec payload.

I observed the following code for one device, the USB Opera
DVB-S receiver which supposedly delivers the full transponder
stream when attached to a USB2 controller, optionally filtered:

static int opera1_pid_filter_control(struct dvb_usb_adapter *adap, int onoff)
{
        int u = 0x04;
        u8 b_pid[3];
        struct i2c_msg msg[] = {
                {.addr = ADDR_B1A6_STREAM_CTRL,.buf = b_pid,.len = 3},
        };
        if (dvb_usb_opera1_debug)
                info("%s hw-pidfilter", onoff ? "enable" : "disable");
        for (; u < 0x7e; u += 2) {
                b_pid[0] = u;
                b_pid[1] = 0;
                b_pid[2] = 0x80;
                i2c_transfer(&adap->dev->i2c_adap, msg, 1);
        }
        return 0;
}

Full source within dvb-usb/opera1.c; in particular the code which
precedes this and actually sets selected PIDs and is quite 
similar.


Anyway, what bothers me about the above code is that I can't see
that it acts any different, save for possibly printing out a
different debug message, regardless of the intent to enable the
internal hardware PID filter, or disable it and pass the entire
stream.


Or have I been awake too long, and can no longer think or see
straight?

thanks
barry bouwsma



More information about the linux-dvb mailing list