Xineliboutput + scart kuvasuhde pätsi

Juttua VDR:n ja VDR pluginien patcheistä

Xineliboutput + scart kuvasuhde pätsi

ViestiKirjoittaja tohelo » 19.09.2006 21:19

Tällaista päivällä tuli väsättyä, pistänpä tähän jos jotain sattuu kiinnostamaan...

Eli seuraavalla kytkiksellä/patchilla saa xineliboutputin ohjaamaan scartin kautta tv: 4:3 ja 16:9 moodien välillä. Eli kuva menee anamorfisena tv:lle, ja skaalaus jää kokonaan pois vdr/xinen harteilta.

Kuva

R1 - R4 = 4,7 KOhm vastus. Tai jotain 3 - 7 kOhm, kunhan R1 ja R2 on
samankokoisia.
Transistori: BC547 tai BC337 (tai muu vastaava NPN transistori)
Virrat otin suoraan virtalähteestä (liittimen napsaisin vanhasta tuulettimesta).

Luonnollisesti mitään vastuuta kytkennästä en ota ;)


xine-liboutiin piti tehdä seuraava viritys, koodi ei ole kovin nättiä, ja kaikki on puukotettu suoraan koodiin. Pitäisi toimia lpt1:n kanssa vakio-osoitteessa (0x378)... Ohjelmoida kun en juuri osaa, parempaan ei itse pysty :(

Koodi: Valitse kaikki
--- /usr/local/src/VDR/VDR/PLUGINS/src/xineliboutput/xine_frontend.c    2006-09-18 21:33:53.000000000 +0300
+++ ./xine_frontend.c   2006-09-19 20:29:18.000000000 +0300
@@ -18,6 +18,9 @@
 #include "logdefs.h"

 #include "xine/post.h"
+#include <stdio>
+#include <stdlib>
+#include <sys>

 #ifdef FE_STANDALONE
   /* next two symbols are dynamically linked from input plugin */
@@ -30,6 +33,9 @@
   int LogToSysLog __attribute__((visibility("default"))) = 1;    /* dynamically linked from input plugin */
 #endif

+static double prev_aspect = 0.0;
+static double video_aspect = 1.0;
+
 /* from vdr_input_plugin: */
 typedef struct {
   input_plugin_t           input_plugin;
@@ -286,6 +292,21 @@
@@ -286,6 +292,21 @@
     this->video_width = video_width;
     this->video_height = video_height;
   }
+
+  /* scartin ohjaukseen */
+  video_aspect = (video_pixel_aspect *
+                  (double)video_width / (double)video_height);
+  if(video_aspect != prev_aspect) {
+    ioperm(0x378,1,1);
+    prev_aspect = video_aspect;
+    if(video_aspect < 1.4) {
+      /* fprintf(stderr, "4:3 scartiin"); */
+      outb(0, 0x0378);
+    } else {
+      /* fprintf(stderr, "16:9 scartiin"); */
+      outb(255, 0x0378);
+    }
+  }
 }

 static void xine_event_cb (void *user_data, const xine_event_t *event)



Kytkiksestä kiitokset joukoyn suuntaan.
Avatar
tohelo
Vanhempi harrastaja
 
Viestit: 80
Liittynyt: 27.01.2005 3:00
Paikkakunta: Kokkola

Paluu Patchit

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Bing [Bot] ja 1 vierailijaa

cron