Rocco Rutte wrote:
Hi,
Fuer Video fehlt allerdings noch ein 'mpeg2ascii'. ;-)
Hm. Dank aalib dürfte das garnicht sooo schwierig sein. Immerhin kann ich mit aatv problem Fernsehen auf der Text-Console schauen. Du müßtest ja nur die Videodaten statt vom video4linux-Device von einem mpeg-Decoder holen ...
Hmm, was ist ein 'video4linux'-Device bzw. wie einfach kann man 'aatv' auch beibringen, stattdessen ein Framegrabber-Device zu nehmen?
# ls -l /dev/video0 crw-rw---- 1 root video 81, 0 Sep 24 2001 /dev/video0
video4linux ist ein Treiber für Video-Capture-Karten in Linux. Hier bei mir läuft halt die WinTV drüber. Sollte aber grundsätzlich für alles gehen, was Bild oder/und Ton zurückliefert, sofern du halt einen Video4Linux-Treiber dafür hast. Auf der aatv-Homepage (http://n00n.free.fr/aatv/) ist noch von Webcams die Rede ...
aatv-fb ... Mal einen Blick in den Source werfen ...
[schnipp]
#include <linux/videodev.h>
[...]
grab_one(int *width, int *height) { int rc; for (;;) { if (have_mmap) { if (ioctl(grab_fd,VIDIOCMCAPTURE,&grab_buf[current_buffer]) == -1) { perror("ioctl VIDIOCMCAPTURE"); } else { current_buffer = (current_buffer + 1) % buffers_nb; if (ioctl(grab_fd,VIDIOCSYNC,&grab_buf[current_buffer]) == -1) { perror("ioctl VIDIOCSYNC"); } else { *width = grab_buf[current_buffer].width; *height = grab_buf[current_buffer].height; return grab_data[current_buffer]; } } } else { rc = read(grab_fd,grab_data[current_buffer],(size_t)grab_size); if (grab_size != rc) { fprintf(stderr,"grabber read error (rc=%d)\n",rc); return NULL; } else { *width = grab_win.width; *height = grab_win.height; return grab_data[current_buffer]; } } } }
[schnapp]
Sieht sehr übersichtlich aus. grab_one() holt also einen Frame ab. Zusätzlich gibt's noch grab_init() und grab_free(). Der Rest ist für TV gedacht (Frequenzen und so).
Wenn du die Funktionen ersetzt, solltest du auch deinen Framegrabber ansprechen können. Aber vielleicht hat der ja schon einen Video4Linux-Treiber ?
Cheers, Rocco.
Bye.
Jens