]> git.sesse.net Git - vlc/blobdiff - modules/access_output/udp.c
Replace vlc_bool_t by bool, VLC_TRUE by true and VLC_FALSE by false.
[vlc] / modules / access_output / udp.c
index 93a53cc38352b83bd0f1d751d8380563e5c15620..8e94d0f2cbe48db2734cadf7ca3fd3df80ff19f6 100644 (file)
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/vlc.h>
 
 #include <sys/types.h>
 
 #define MAX_EMPTY_BLOCKS 200
 
-#if defined(WIN32) || defined(UNDER_CE)
-# define WINSOCK_STRERROR_SIZE 20
-static const char *winsock_strerror( char *buf )
-{
-    snprintf( buf, WINSOCK_STRERROR_SIZE, "Winsock error %d",
-              WSAGetLastError( ) );
-    buf[WINSOCK_STRERROR_SIZE - 1] = '\0';
-    return buf;
-}
-#endif
-
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
@@ -90,13 +83,13 @@ vlc_module_begin();
     set_shortname( "UDP" );
     set_category( CAT_SOUT );
     set_subcategory( SUBCAT_SOUT_ACO );
-    add_integer( SOUT_CFG_PREFIX "caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, CACHING_LONGTEXT, VLC_TRUE );
+    add_integer( SOUT_CFG_PREFIX "caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, CACHING_LONGTEXT, true );
     add_integer( SOUT_CFG_PREFIX "group", 1, NULL, GROUP_TEXT, GROUP_LONGTEXT,
-                                 VLC_TRUE );
+                                 true );
     add_obsolete_integer( SOUT_CFG_PREFIX "late" );
     add_obsolete_bool( SOUT_CFG_PREFIX "raw" );
-    add_bool( SOUT_CFG_PREFIX "auto-mcast", VLC_FALSE, NULL, AUTO_MCAST_TEXT,
-              AUTO_MCAST_LONGTEXT, VLC_TRUE );
+    add_bool( SOUT_CFG_PREFIX "auto-mcast", false, NULL, AUTO_MCAST_TEXT,
+              AUTO_MCAST_LONGTEXT, true );
 
     set_capability( "sout access", 100 );
     add_shortcut( "udp" );
@@ -123,7 +116,7 @@ static const char *const ppsz_core_options[] = {
     NULL
 };
 
-static int  Write   ( sout_access_out_t *, block_t * );
+static ssize_t Write   ( sout_access_out_t *, block_t * );
 static int  Seek    ( sout_access_out_t *, off_t  );
 
 static void ThreadWrite( vlc_object_t * );
@@ -149,7 +142,7 @@ typedef struct sout_access_thread_t
 struct sout_access_out_sys_t
 {
     int                 i_mtu;
-    vlc_bool_t          b_mtu_warning;
+    bool          b_mtu_warning;
 
     block_t             *p_buffer;
 
@@ -158,7 +151,6 @@ struct sout_access_out_sys_t
 };
 
 #define DEFAULT_PORT 1234
-#define RTP_HEADER_LENGTH 12
 
 /*****************************************************************************
  * Open: open the file
@@ -239,7 +231,7 @@ static int Open( vlc_object_t *p_this )
     if( i_handle == -1 )
     {
          msg_Err( p_access, "failed to create raw UDP socket" );
-         vlc_object_destroy (p_sys->p_thread);
+         vlc_object_release (p_sys->p_thread);
          free (p_sys);
          return VLC_EGENERIC;
     }
@@ -274,11 +266,11 @@ static int Open( vlc_object_t *p_this )
     p_sys->p_buffer = NULL;
 
     if( vlc_thread_create( p_sys->p_thread, "sout write thread", ThreadWrite,
-                           VLC_THREAD_PRIORITY_HIGHEST, VLC_FALSE ) )
+                           VLC_THREAD_PRIORITY_HIGHEST, false ) )
     {
         msg_Err( p_access->p_sout, "cannot spawn sout access thread" );
         net_Close (i_handle);
-        vlc_object_destroy( p_sys->p_thread );
+        vlc_object_release( p_sys->p_thread );
         free (p_sys);
         return VLC_EGENERIC;
     }
@@ -302,6 +294,8 @@ static void Close( vlc_object_t * p_this )
     int i;
 
     vlc_object_kill( p_sys->p_thread );
+    block_FifoWake( p_sys->p_thread->p_fifo );
+
     for( i = 0; i < 10; i++ )
     {
         block_t *p_dummy = block_New( p_access, p_sys->i_mtu );
@@ -321,7 +315,7 @@ static void Close( vlc_object_t * p_this )
     net_Close( p_sys->p_thread->i_handle );
 
     vlc_object_detach( p_sys->p_thread );
-    vlc_object_destroy( p_sys->p_thread );
+    vlc_object_release( p_sys->p_thread );
     /* update p_sout->i_out_pace_nocontrol */
     p_access->p_sout->i_out_pace_nocontrol--;
 
@@ -332,7 +326,7 @@ static void Close( vlc_object_t * p_this )
 /*****************************************************************************
  * Write: standard write on a file descriptor.
  *****************************************************************************/
-static int Write( sout_access_out_t *p_access, block_t *p_buffer )
+static ssize_t Write( sout_access_out_t *p_access, block_t *p_buffer )
 {
     sout_access_out_sys_t *p_sys = p_access->p_sys;
     int i_len = 0;
@@ -347,7 +341,7 @@ static int Write( sout_access_out_t *p_access, block_t *p_buffer )
         {
             msg_Warn( p_access, "packet size > MTU, you should probably "
                       "increase the MTU" );
-            p_sys->b_mtu_warning = VLC_TRUE;
+            p_sys->b_mtu_warning = true;
         }
 
         /* Check if there is enough space in the buffer */
@@ -431,13 +425,13 @@ static block_t *NewUDPPacket( sout_access_out_t *p_access, mtime_t i_dts)
     sout_access_out_sys_t *p_sys = p_access->p_sys;
     block_t *p_buffer;
 
-    while ( p_sys->p_thread->p_empty_blocks->i_depth > MAX_EMPTY_BLOCKS )
+    while ( block_FifoCount( p_sys->p_thread->p_empty_blocks ) > MAX_EMPTY_BLOCKS )
     {
         p_buffer = block_FifoGet( p_sys->p_thread->p_empty_blocks );
         block_Release( p_buffer );
     }
 
-    if( p_sys->p_thread->p_empty_blocks->i_depth == 0 )
+    if( block_FifoCount( p_sys->p_thread->p_empty_blocks ) == 0 )
     {
         p_buffer = block_New( p_access->p_sout, p_sys->i_mtu );
     }
@@ -463,10 +457,6 @@ static void ThreadWrite( vlc_object_t *p_this )
     mtime_t              i_date_last = -1;
     mtime_t              i_to_send = p_thread->i_group;
     int                  i_dropped_packets = 0;
-#if defined(WIN32) || defined(UNDER_CE)
-    char strerror_buf[WINSOCK_STRERROR_SIZE];
-# define strerror( x ) winsock_strerror( strerror_buf )
-#endif
 
     while( !p_thread->b_die )
     {
@@ -485,6 +475,8 @@ static void ThreadWrite( vlc_object_t *p_this )
         }
 #endif
         p_pk = block_FifoGet( p_thread->p_fifo );
+        if( p_pk == NULL )
+            continue; /* forced wake-up */
 
         i_date = p_thread->i_caching + p_pk->i_dts;
         if( i_date_last > 0 )
@@ -519,7 +511,7 @@ static void ThreadWrite( vlc_object_t *p_this )
                             p_pk->i_buffer, 0 );
         if (val == -1)
         {
-            msg_Warn( p_thread, "send error: %s", strerror(errno) );
+            msg_Warn( p_thread, "send error: %m" );
         }
 
         if( i_dropped_packets )
@@ -575,5 +567,3 @@ static const char *MakeRandMulticast (int family, char *buf, size_t buflen)
 #endif
     return NULL;
 }
-
-