]> git.sesse.net Git - vlc/commitdiff
Add SNR and signal level for access_demux
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 10 May 2012 20:53:00 +0000 (23:53 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 10 May 2012 21:01:53 +0000 (00:01 +0300)
In particular, V4L is (usually) an access_demux rather than an access.

include/vlc_demux.h
src/input/input.c

index a5b525710ca3f41843e7a14298dbe06d4a7df06d..6d143e4ce3622d5df0b3d5af5a6fc294f5aeb0cb 100644 (file)
@@ -159,6 +159,8 @@ enum demux_query_e
     DEMUX_SET_RATE,             /* arg1= int*pi_rate                                        can fail */
 
     DEMUX_CAN_SEEK,            /* arg1= bool*    can fail (assume false)*/
+
+    DEMUX_GET_SIGNAL,          /* arg1= double * arg2= double * can fail */
 };
 
 VLC_API int demux_vaControlHelper( stream_t *, int64_t i_start, int64_t i_end, int64_t i_bitrate, int i_align, int i_query, va_list args );
index b6e5bd23aafc008e984d631e4a0b0c04fd05830f..bd7f859099a454383444186726eb4dbdd60f8574 100644 (file)
@@ -2253,6 +2253,18 @@ static void UpdateGenericFromDemux( input_thread_t *p_input )
         }
         p_demux->info.i_update &= ~INPUT_UPDATE_META;
     }
+    if( p_demux->info.i_update & INPUT_UPDATE_SIGNAL )
+    {
+        double quality;
+        double strength;
+
+        if( demux_Control( p_demux, DEMUX_GET_SIGNAL, &quality, &strength ) )
+            quality = strength = -1.;
+
+        input_SendEventSignal( p_input, quality, strength );
+
+        p_demux->info.i_update &= ~INPUT_UPDATE_SIGNAL;
+    }
 
     p_demux->info.i_update &= ~INPUT_UPDATE_SIZE;
 }