this might explain why vdr often dies when switching from/to a channel with DD sound -
like ZDF and Pro 7, at least I hope so. Not tested yet, but the bug seems clear enough:
--- xx 2005-06-05 20:59:08.000000000 +0200
+++ transfer.c 2005-06-05 20:59:16.000000000 +0200
@@ -68,7 +68,7 @@
int Result = 0;
#ifdef FW_NEEDS_BUFFER_RESERVE_FOR_AC3
bool GotBufferReserve = false;
- int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 288 : 576);
+ int RequiredBufferReserve = KILOBYTE(DvbCardWith4MBofSDRAM ? 576 : 288);
#endif
active = true;
while (active) {
Program received signal SIGILL, Illegal instruction.
[Switching to Thread 557063 (LWP 15183)]
0xb7db542e in main_arena () from /lib/libc.so.6
(gdb) bt
#0 0xb7db542e in main_arena () from /lib/libc.so.6
#1 0x0811db65 in cTransfer::Action (this=0xac88870) at transfer.c:84
#2 0x08114d9e in cThread::StartThread (Thread=0xac88990) at thread.c:233
#3 0xb7ea7e51 in pthread_start_thread () from /lib/libpthread.so.0
#4 0xb7ea7ecf in pthread_start_thread_event () from /lib/libpthread.so.0
#5 0xb7d5c92a in clone () from /lib/libc.so.6
(gdb) up
#1 0x0811db65 in cTransfer::Action (this=0xac88870) at transfer.c:84
84 if (ringBuffer->Available() < RequiredBufferReserve) { // used to be MAXFRAMESIZE, but the HDTV value of KILOBYTE(512) is way too much here
Current language: auto; currently c++
(gdb) p RequiredBufferReserve
$1 = 589824
(gdb) p DvbCardWith4MBofSDRAM
$4 = false
--
Wolfgang