Hoi,
Mangels genügend Cx-Praxiserfahrung suche jemandem, der ein kleines Programm schreibt, welches das Bildformat von der TV-Karte ausliest (normal/anamorph) und je nachdem einen Pin am seriellen Port low/high schaltet.
Nachtrag: Hab's doch selbst geschrieben, siehe unten.
Mein Gedankengang bisher:
Ein 4:3-Fernseher wird über SCART mit vom VDR einem PAL-Signal gespeist. In dem PAL-Signal können generell zwei verschiedenartige Formate enthalten sein: Einmal das gute alte 4:3-Bild (egal ob mit oder ohne Letterbox), oder zum anderen ein anamorphes 16:9-Bild (evtl. auch mit Letterbox, aber selten und nur via DVB/DVD, nicht von analogen Quellen).
Trivia: Wenn ich das richtig verstanden habe, gibt es im analogen Rundfunk bei PalPlus auch eine Möglichkeit, ein 4:3-Letterbox-Signal (mit 16:9-Inhalt) zu senden, bei dem sich in den schwarzen Balken noch Bildinformationen befinden, mit denen 16:9-Fernseher das aufgezoomte Bild noch aufhübschen können (die vertikale Auflösung wird damit wieder erhöht). Dieses Verfahren erlaubt eine verzerrungsfreie Wiedergabe des Bildes auch auf alten 4:3-Geräten, die nie was von 16:9 und anamorphen Bildern gehört haben. Wird beim digitalen Rundfunk meines Wissens aber nicht angewendet.
Zur verzerrungsfreien Wiedergabe muss der Fernseher ein 4:3-Signal so lassen, wie es ist, und ein anamorphes 16:9-Signal vertikal stauchen. Der Fernseher hat zwei Möglichkeiten, zu erkennen, was für ein Signal anliegt: Einmal über die Schaltspannung an Pin 8 vom Scart, oder über das im PAL-Signal in einer Austastlücke untergebrachte WSS-Signal.
Eine Schaltspannung an Pin 8 ist praktisch, weil der Fernseher dann automatisch auf die Scartbuchse umschaltet. Viele Fernseher messen dem Scart-Pin eine höhere Priorität zu als einem eventuellen WSS-Signal (einige Fernseher ignorieren das WSS bei RGB-Speisung ganz und richten sich nur nach der Schaltspannung).
Nun kann man dem VDR sagen, dass er grundsätzlich nur 4:3 ausgeben soll; zur Not muss er dann anamorphe 16:9-Bilder unter Verlust von Bildinformation umrechnen (entweder via Letterbox, Centercut oder Pan&Scan); dann kann die Schaltspannung immer 12V betragen.
Schöner wäre es, wenn der VDR anamorphes 16:9 an den Fernseher weiterreichen und dazu die passende Schaltspannung generieren würde.
Jetzt wünsche ich mir einen kleinen Daemon, der folgendes tut:
Prüfen, ob der DVB-Treiber für die FF-Karte geladen ist. Wenn ja, die Kontrolle über den seriellen Port 2 (RS-232) übernehmen. Ca. alle 0,2s den Treiber fragen, ob er gerade anamorphes oder normales 4:3-Bildsignal raussendet. Wenn anamorph, dann soll ein Pin der RS-232 auf high gelegt werden; bei normalem Bild und ungeladenem Treiber ist der Pin sonst low. Über diesen Pin kann man dann ganz einfach die Schaltspannung steuern.
Vielleicht wäre es auch sinnvoll, den Treiber zu überreden, eine Gerätedatei in /dev anzulegen, in der er mitteilt, was für ein Bildformat er gerade rausschickt. Aber das ist pure mutmaßung und nur ein wirrer Gedanke von mir, kenne mich mit der Treiber-Materie nicht wirklich aus.
Edit: Am Ort der besten Ideen (Donnerbalken) ist mir gerade aufgefallen, dass "/dev/dvb/adapter0/video0" ja schon eine solche Gerätedatei ist...
Ich weiß bloß, dass Bash-Scripte, die dauernd andere Programme (auch das gleiche immer wieder) aufrufen, unglaublich viel unnötige Systemlast verursachen, und das Problem deshalb meines Wissens via Daemon gelöst werden sollte. Wenn Unsinn schreibe, bitte korrigieren.
Das von Habichthugo ins Leben gerufene AVARDS ist in seiner ganzen Pracht dafür wohl überdimensoiniert. AVARDS stellt ja nicht nur fest, ob das Bild anamorph oder normal ist, sondern auch, ob es eine Letterbox gibt und wenn ja, welche. Damit kann einem 16:9-Fernseher via WSS mitgeteilt werden, wie weit er ins Bild reinzoomen muss. Außerdem passt AVARDS die Höhe des OSD-Menüs an die tatsächliche Bildhöhe an.
Für 4:3-Fernseher sind diese Features aber nicht notwendig.
e9hack schrieb hier:
[ANNOUNCE] Avards-Plugin 0.1.4
ZitatEin Erkennen von 4:3 bzw. 16:9 ist simpel. Die Info wird im MPEG-Header übertragen.
Hier die Ur-Version von dvb-aspect.c von Habichthugo (dürfte genau das Auslesen erledigen):
automatische 4:3/16:9-Umschaltung mit Letterbox-Erkennung!
#include <sys/ioctl.h>
#include <stdio.h>
#include <fcntl.h>
#include <linux/dvb/video.h>
int main(int argc, char **argv)
{
const char *videodev = "/dev/dvb/adapter0/video0";
int vfd;
if ((vfd = open(videodev,O_RDONLY|O_NONBLOCK)) < 0){
perror("VIDEO DEVICE: ");
return -1;
}
struct video_status status;
if (ioctl(vfd, VIDEO_GET_STATUS, &status) < 0) {
perror("VIDEO_GET_STATUS: ");
}
else
switch (status.video_format)
{
case VIDEO_FORMAT_4_3:
printf("4:3\n");
break;
case VIDEO_FORMAT_16_9:
printf("16:9\n");
break;
case VIDEO_FORMAT_221_1:
printf("2.21:1\n");
break;
default:
printf("?%d\n", status.video_format);
}
close(vfd);
return 0;
}
Alles anzeigen
Im Netz habe ich ein kleines Programm gefunden, dass eine LED an der RS232 viermal zum Aufblinken anregt (über TX/Pin 3):
http://www.linuxforen.de/forums/showthread.php?t=193255
#include <termios.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
int main()
{
int fd,i;
fd=open("/dev/ttyS0",O_RDWR);
if (fd>=0)
{
for (i=0;i<4;i++)
{
ioctl(fd,TIOCSBRK);
sleep(1);
ioctl(fd,TIOCCBRK);
sleep(1);
}
close(fd);
return 0;
}
else
{
perror("open failed ");
return -1;
}
}
Alles anzeigen
Wer fühlt sich nun berufen, daraus einen Daemon zu bauen? *liebguck*
e9hack? Habichthugo (war schon länger nicht mehr hier)? Oliver? Firefly? Jemand anderes?
Wäre prima, wenn das fertige Programm auf Mahlzeit 4beta2 lauffähig wäre. Zur Not stelle ich auf Debian Lenny um, dann kann ich auch selbst kompilieren.
Praktisch wäre es auch, wenn man die videodev-Nummer und den Comport (1 oder 2) beim Aufruf des Programms übergeben könnte.
Wenn das Programm erst mal läuft, könnte man es vielleicht auch in das Serial-Plugin integrieren (per Option zuschaltbar machen). Da langweilt sich der TX-Ausgang nur, und DTR zeigt auch bloß an, ob das Plugin gerade geladen ist oder nicht. Ist aber wieder nur Spinnerei von mir.
Gruß, Bartho