From: | "Steve O'Hara-Smith" <steve@xxxxxxxxxx> |
Date: | Fri, 8 Aug 2008 22:58:12 +0100 |
Hi, I've been taking another crack at the problem with DVD playback producing error messages like this: ata0: FAILURE - non aligned DMA transfer attempted acd0: setting up DMA failed I got it down to a teet program that reliably produces the error messages consisting of: int main (void) { dvdcss_t css = dvdcss_open("/dev/acd0c"); if (NULL == css) { perror ("Open failed"); return 1; } return 0; } A bit of tracing led me to discover that setting DVDCSS_CACHE=off was enough to prevent the errors from this little test program. So I copied the dvdcss_open function and enough of the private header declarations to make it work into my test program, called in x_dvdcss_open and no error messages even with DVDCSS_CACHE unset. I compiled my test program with cc -O -pipe t.c -o t -I /usr/pkg/include -L /usr/pkg/lib -l dvdcss I noticed that libdvdcss is compiled with O2 - so I compiled with: cc -O2 -pipe t.c -o t -I /usr/pkg/include -L /usr/pkg/lib -l dvdcss That was enough to bring the problem back! I've attached my test code (t.c) in the hope that someone more familiar with the vagaries of gcc optimisation levels may be able to see what the real problem is. Meanwhile I'm going to try and build libdvdcss with -O and see if that makes dvd playback work. More later. -- C:>WIN | Directable Mirror Arrays The computer obeys and wins. | A better way to focus the sun You lose and Bill collects. | licences available see | http://www.sohara.org/
Attachment:
t.c
Description: Binary data