On 23 Sep 2007, at 17:06, Mircea Popescu wrote:
Can you be more specific? I mean where should I look for ... in
bios settings, directfb settings, compile options, etc?
2007/9/21, Torgeir Veimo < [EMAIL PROTECTED]>:
On Fri, 2007-09-21 at 11:30 +0300, Mircea Popescu wrote:
>
> By low quality I mean that the frame rate is significantly lower
than
> the normal one (the sound is also not synchronized) and the image is
> all fuzzy. By fuzzy I mean that, the image has some little
squares and
> every object's edge is not straight.
If playback is at average 10fps, it prob means you haven't gotten
irq on
vsync working. I think it then falls back to 100ms frame times.
I have an MSI MS-6723 board which has the cle266 chipset. With a
fedora core 7 install (w kernel 2.6.22) I had to add
pci=routeirq
to the kernel boot parameters in grub.conf to have the vsync irq
working.
You can test this yourself with the following little program which
tests the vsync irq. You might have to swap fb0 with fb1 in the source.
The fuzzyness might be the setting on the vt1622/3a hardware. There's
a little program called vt1622 that comes with the linux-viafb source
that can tweak output settings. Are you using composite video output?
Some useful links: http://git.directfb.org/?p=misc/linux-
viafb.git;a=summary and http://www.mellander.org/per/projects/linux/?
chapter=epia-hw-cle266
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <strings.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#define __u32 u_int32_t
#ifndef FBIO_WAITFORVSYNC
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
#endif
/* check functionality of VSYNC ioctl & determine approximate
vertical refresh frequency */
/* compile with gcc -o vsynctest vsynctest.c */
/* March 12th, 2005, torgeir at nothome dot com. */
int main(int argc, char** argv) {
int retval = 0;
int fd = 0;
int zero = 0;
static const int one = 1;
int i;
struct timeval start;
struct timeval end;
long total; float secs; float rate;
printf("testing refresh rate using FB_WAITFORVSYNC ioctl,
standby while i loop 5000 times..\n");
if ((fd = open( "/dev/fb0", O_RDWR )) < 0) {
printf("unable to access /dev/fb0, exiting..\n");
exit(1);
}
gettimeofday(&start, NULL);
for (i = 0; i < 50; i++) {
retval = ioctl(fd, FBIO_WAITFORVSYNC, &one);
if (retval != 0) {
//printf("ioctl failed, aborting...\n");
//exit(1);
}
}
gettimeofday(&end, NULL);
total = (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_usec
- start.tv_usec);
secs = total / 1000000.0;
rate = 50 * 1000000.0 / total;
printf("time elapsed: %2.2f secs, refresh rate is %2.2f Hz\n",
secs, rate);
close( fd );
}
--
Torgeir Veimo
[EMAIL PROTECTED]
_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users