[linux-dvb] problems and workaround when tuning to a channel with DD enabled

Wolfgang Rohdewald wolfgang at rohdewald.de
Mon Jun 6 09:31:30 CEST 2005


Hi,

first the errors:
Jun  6 08:24:09 mm vdr[17226]: switching to channel 2
Jun  6 08:24:10 mm vdr[17337]: transfer thread started (pid=17337, tid=114693)
Jun  6 08:24:10 mm vdr[17338]: receiver on device 1 thread started (pid=17338, tid=131078)
Jun  6 08:24:10 mm kernel: dvb-ttpci: warning: timeout waiting in BlitBitmap: -512, 1
Jun  6 08:24:10 mm vdr[17339]: TS buffer on device 1 thread started (pid=17339, tid=147463)
Jun  6 08:24:11 mm kernel: __av7110_send_fw_cmd: timeout waiting on busy MSG QUEUE
and lots more.

This happens with vdr-1.3.23 and vdr-1.3.25, firmware 261d and the latest experimental
firmware and unmodified 2.6.12-rc5 if I 
1. tune to ZDF (channel 2)
2. change audio to DolbyDigital
3. tune to another channel (I used channel 3, RTL)
4. tune back to ZDF

However if I omit step 2 and only change audio to DolbyDigital AFTER step 4 I get no errors.
It seems as if tuning has not yet finished when the change to DD should happen, so I added
some test code, see below.

msleep(10): still the same problems
msleep(15): I get the new message "first try" and the warning but no more errors.
msleep(20): I only get the new message "first try", the warning does not come anymore

The timeout 10*HZ does not trigger, I also tried 1000*HZ but wait_event_interruptible_timeout
always returns at once.

I suppose the msleep should not be here but after some function call that needs more time.
I should be able to find that place but maybe somebody already knows?

I also applied the patch from Peter Beutner from saturday, no changes.

I still have 2 problems:

1. after tuning to a channel with DD active, from 0 to 30 such messages:
Jun  6 09:11:34 mm vdr[19416]: ERROR: result buffer overflow, dropped 2048 out of 2048 byte

2. Replaying a record in dolby digital:
Jun  6 09:13:47 mm vdr[21614]: playing '/var/lib/video/ARD-Nachtkonzert/2005-04-15.02.04.50.50.rec/001.vdr'
Jun  6 09:13:47 mm kernel: dvb-ttpci: StartHWFilter error  buf 0b07 0010 012c b96a  ret fffffe00  handle c041
Jun  6 09:13:47 mm vdr[21672]: dvbplayer thread started (pid=21672, tid=65541)
Jun  6 09:13:47 mm vdr[21672]: resuming replay at index 34709 (0:23:08.10)
Jun  6 09:13:47 mm vdr[21673]: non blocking file reader thread started (pid=21673, tid=81926)
Jun  6 09:13:47 mm vdr[21672]: SetBrokenLink: no video packet in frame
Jun  6 09:13:47 mm vdr[21672]: setting audio track to 1
Jun  6 09:13:52 mm vdr[21614]: muggle: no translation found for 'Muggle' in language 1 (Deutsch)
Jun  6 09:13:58 mm kernel: StopHWFilter tried to stop invalid filter ffff, filter type = 1
Jun  6 09:14:37 mm kernel: av7110_fw_request: timeout waiting for COMMAND to complete
Jun  6 09:14:37 mm kernel: dvb-ttpci: StartHWFilter error  buf 0b07 0010 0190 b96a  ret ffffffff  handle c041
Jun  6 09:14:37 mm kernel: StopHWFilter tried to stop invalid filter ffff, filter type = 1
Jun  6 09:14:55 mm kernel: av7110_fw_request: timeout waiting for COMMAND to complete
Jun  6 09:14:55 mm kernel: dvb-ttpci: StartHWFilter error  buf 0b07 0010 044c b96a  ret ffffffff  handle c041
Jun  6 09:14:56 mm kernel: StopHWFilter tried to stop invalid filter ffff, filter type = 1

These HWFilter messages and corresponding dropouts are much more seldom with unmodified 2.6.10.
2.6.11 has them more often as 2.6.10 but (my impression) less than 2.6.12-rc5

--- linux-2.6.11.11/drivers/media/dvb/ttpci/av7110_hw.c 2005-06-06 09:08:08.000000000 +0200
+++ linux-2.6.12/drivers/media/dvb/ttpci/av7110_hw.c    2005-06-06 09:15:24.000000000 +0200
@@ -887,6 +887,13 @@
        ret = wait_event_interruptible_timeout(av7110->bmpq,
                                av7110->bmp_state != BMP_LOADING, 10*HZ);
        if (ret == -ERESTARTSYS || ret == 0) {
+               printk("dvb-ttpci: first try: waiting in BlitBitmap: %d, %d\n",
+                      ret, av7110->bmp_state);
+               msleep(20);
+               ret = wait_event_interruptible_timeout(av7110->bmpq,
+                               av7110->bmp_state != BMP_LOADING, 10*HZ);
+       }
+       if (ret == -ERESTARTSYS || ret == 0) {
                printk("dvb-ttpci: warning: timeout waiting in BlitBitmap: %d, %d\n",
                       ret, av7110->bmp_state);
                av7110->bmp_state = BMP_NONE;

-- 
Wolfgang





More information about the linux-dvb mailing list