changeset 20758:e0f3254f3b76

Adding ability to check allowed frequency range.
author voroshil
date Wed, 08 Nov 2006 07:02:43 +0000
parents 2f71acee3657
children e18fc76c7a98
files DOCS/man/en/mplayer.1 help/help_mp-en.h stream/stream_radio.c
diffstat 3 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Wed Nov 08 03:23:02 2006 +0000
+++ b/DOCS/man/en/mplayer.1	Wed Nov 08 07:02:43 2006 +0000
@@ -1603,6 +1603,7 @@
 For listening to radio with MPlayer use 'radio://<frequency>'
 (if channels option is not given) or 'radio://<channel_number>'
 (if channels option is given) as a movie URL.
+You can see allowed frequency range by running MPlayer with '\-v'.
 To start the grabbing subsystem, use 'radio://<frequency or channel>/capture'.
 If the capture keyword is not given you can listen to radio
 using the line-in cable only.
--- a/help/help_mp-en.h	Wed Nov 08 03:23:02 2006 +0000
+++ b/help/help_mp-en.h	Wed Nov 08 07:02:43 2006 +0000
@@ -1846,6 +1846,7 @@
 // stream/stream_radio.c
 
 #define MSGTR_RADIO_ChannelNamesDetected "[radio] Radio channel names detected.\n"
+#define MSGTR_RADIO_FreqRange "[radio] Allowable frequency range is %.2f-%.2f MHz\n"
 #define MSGTR_RADIO_WrongFreqForChannel "[radio] Wrong frequency for channel %s\n"
 #define MSGTR_RADIO_WrongChannelNumberFloat "[radio] Wrong channel number: %.2f\n"
 #define MSGTR_RADIO_WrongChannelNumberInt "[radio] Wrong channel number: %d\n"
--- a/stream/stream_radio.c	Wed Nov 08 03:23:02 2006 +0000
+++ b/stream/stream_radio.c	Wed Nov 08 07:02:43 2006 +0000
@@ -112,6 +112,8 @@
     int                 frac;              ///< fraction value (see comment to init_frac)
     radio_channels_t*   radio_channel_list;
     radio_channels_t*   radio_channel_current;
+    float rangelow;                        ///< lowest tunable frequency in MHz
+    float rangehigh;                       ///< highest tunable frequency in MHz
     int                 driver;
     int                 old_snd_volume;
 #ifdef USE_RADIO_CAPTURE
@@ -186,7 +188,7 @@
 
             priv->radio_channel_current->freq=atof(tmp);
 
-            if (priv->radio_channel_current->freq == 0)
+            if ((priv->radio_channel_current->freq>priv->rangehigh)||(priv->radio_channel_current->freq<priv->rangelow))
                 mp_msg(MSGT_RADIO, MSGL_ERR, MSGTR_RADIO_WrongFreqForChannel,
                     priv->radio_channel_current->name);
 
@@ -272,6 +274,10 @@
         priv->frac=16;
         mp_msg(MSGT_RADIO,MSGL_DBG2,MSGTR_RADIO_TunerCapLowNo,priv->frac);
     }
+
+    priv->rangelow=((float)tuner.rangelow)/priv->frac;
+    priv->rangehigh=((float)tuner.rangehigh)/priv->frac;
+    mp_msg(MSGT_RADIO,MSGL_V,MSGTR_RADIO_FreqRange,priv->rangelow,priv->rangehigh);
     return STREAM_OK;
 }
 
@@ -415,6 +421,11 @@
         priv->frac=16;
         mp_msg(MSGT_RADIO,MSGL_DBG2,MSGTR_RADIO_TunerCapLowNo,priv->frac);
     }
+
+    priv->rangelow=((float)tuner.rangelow)/priv->frac;
+    priv->rangehigh=((float)tuner.rangehigh)/priv->frac;
+    mp_msg(MSGT_RADIO,MSGL_V,MSGTR_RADIO_FreqRange,priv->rangelow,priv->rangehigh);
+
     return STREAM_OK;
 }
 
@@ -524,6 +535,10 @@
     return STREAM_ERROR;
 }
 static inline int set_frequency(radio_priv_t* priv,float frequency){ 
+    if ((frequency<priv->rangelow)||(frequency>priv->rangehigh)){
+        mp_msg(MSGT_RADIO,MSGL_ERR,MSGTR_RADIO_WrongFreq,frequency);
+        return STREAM_ERROR;
+    }
     switch(priv->driver){
 #ifdef HAVE_RADIO_V4L
         case RADIO_DRIVER_V4L:
@@ -1034,7 +1049,7 @@
         return STREAM_ERROR;
     }
 
-    if (frequency==0){
+    if ((frequency<priv->rangelow)||(frequency>priv->rangehigh)){
         mp_msg(MSGT_RADIO, MSGL_ERR, MSGTR_RADIO_WrongFreq,frequency);
         close_s(stream);
         return STREAM_ERROR;