Radio in analogtv plugin

Message ID 200505161515.51885.jareguero@telefonica.net
State New
Headers

Commit Message

Jose Alberto Reguero May 16, 2005, 1:15 p.m. UTC
  I am triying to make analogtv plugin with a pvr-350 to work with analog radio. 
I must set CBR for the radio work properly.
When I play a radio recording program the time that appear in vdr is 1/4 of 
the real time.
Any ideas?
Thanks.
Jose Alberto
  

Patch

diff -Naur /usr/local/src/analogtv/analogtv.c analogtv/analogtv.c
--- /usr/local/src/analogtv/analogtv.c	2005-01-12 09:28:55.000000000 +0100
+++ analogtv/analogtv.c	2005-04-03 22:55:11.000000000 +0200
@@ -303,6 +303,7 @@ 
   sc.backupHack = -1;
   sc.backupInterval = -1;
   sc.fastdigibox_change = -1;
+  fd_radio = -1;
 }
 
 cPluginAnalogtv::~cPluginAnalogtv()
diff -Naur /usr/local/src/analogtv/device.c analogtv/device.c
--- /usr/local/src/analogtv/device.c	2005-01-17 12:28:52.000000000 +0100
+++ analogtv/device.c	2005-05-16 15:07:07.000000000 +0200
@@ -284,11 +284,16 @@ 
 
   firstVideoPts = 0;
 
-
-  if (pids[2] == -1) {
-    Apid = pids[1]; // ptAudio
-    Vpid = pids[0]; // ptVideo
-    Ppid = -1;      // ptPcr
+  if (fd_radio >= 0) {
+    Apid = pids[0];
+    Vpid = -1;
+    Ppid = -1;
+    d(1, "NEW Audio-PID=%d", Apid);
+  }
+  else if (pids[2] == -1) {
+      Apid = pids[1]; // ptAudio
+      Vpid = pids[0]; // ptVideo
+      Ppid = -1;      // ptPcr
 
     d(1, "NEW Audio-PID=%d, Video-PID=%d", Apid, Vpid);
   }
@@ -300,12 +305,14 @@ 
   d(1, "NEW Audio-PID=%d, Video-PID=%d, PCR-PID=%d", Apid, Vpid, Ppid);
   }
 
+#if 0
   if (isPVR) {
     if (setPVRpids(Apid, Vpid, Ppid)) {
       d(0, "Cannot set Pids on PVR-card%s", ciao);
       return false;
     }
   }
+#endif
 
 #ifdef DBG
   log = fopen("/tmp/mpeg.log", "w");
diff -Naur /usr/local/src/analogtv/player-analogtv.h analogtv/player-analogtv.h
--- /usr/local/src/analogtv/player-analogtv.h	2005-01-12 09:28:55.000000000 +0100
+++ analogtv/player-analogtv.h	2005-04-03 22:54:26.000000000 +0200
@@ -171,6 +171,8 @@ 
 } CHANNELNAMES;
 
 
+_EXTERN int fd_radio;
+
 _EXTERN SETUP s, sx, sc, sy;
 
 _EXTERN char video_device[MAX_DEV_NAME];
diff -Naur /usr/local/src/analogtv/pvr.c analogtv/pvr.c
--- /usr/local/src/analogtv/pvr.c	2005-01-12 09:28:55.000000000 +0100
+++ analogtv/pvr.c	2005-04-03 22:59:38.000000000 +0200
@@ -183,9 +183,27 @@ 
       }
 
       if (opts & FREQUENCY) {
+        if (freq < 108000) {
+          if (fd_radio == -1) {
+            fd_radio = open ("/dev/radio",O_RDONLY);
+          }
+            freq = int((freq/1000.0f + .5/16) * 16);
+        }
+        else {
+          if (fd_radio >=0) {
+            close (fd_radio);
+            fd_radio = -1;
+          }
+          ofs = (ofs - 16) * FREQDELTA; // 16 is "ground zero"
+
+          freq = (freq + ofs) * 16 / 1000;
+        }
+        
+#if 0
         ofs = (ofs - 16) * FREQDELTA; // 16 is "ground zero"
 
         freq = (freq + ofs) * 16 / 1000;
+#endif
 
         memset(&vf, 0, sizeof(f));
         vf.tuner = analogModule; // FIXME??