]> git.sesse.net Git - vlc/commitdiff
*the dvd netlist no longer stops when the fifo is empty ; it just waits
authorStéphane Borel <stef@videolan.org>
Wed, 13 Jun 2001 00:03:08 +0000 (00:03 +0000)
committerStéphane Borel <stef@videolan.org>
Wed, 13 Jun 2001 00:03:08 +0000 (00:03 +0000)
that there are free vectors again

plugins/dvd/dvd_netlist.c
plugins/dvd/input_dvd.c
src/audio_output/aout_spdif.c

index 7f4b36ce00d26ffd9c06cc7e708abf61a828ff99..92ad6fa80de0cb378a1dfede9ae84a86ffae4d27 100644 (file)
@@ -1,13 +1,13 @@
 /*****************************************************************************
  * dvd_netlist.c: Specific netlist for DVD packets
- * ---
+ *****************************************************************************
  * The original is in src/input.
  * There is only one major change from input_netlist.c : data is now a
  * pointer to an offset in iovec ; and iovec has a reference counter. It
  * will only be given back to netlist when refcount is zero.
  *****************************************************************************
  * Copyright (C) 1998, 1999, 2000, 2001 VideoLAN
- * $Id: dvd_netlist.c,v 1.9 2001/06/03 12:47:21 sam Exp $
+ * $Id: dvd_netlist.c,v 1.10 2001/06/13 00:03:08 stef Exp $
  *
  * Authors: Henri Fallon <henri@videolan.org>
  *          Stéphane Borel <stef@videolan.org>
@@ -238,9 +238,9 @@ dvd_netlist_t * DVDNetlistInit( int i_nb_iovec, int i_nb_data, int i_nb_pes,
 /*****************************************************************************
  * DVDGetiovec: returns an iovec pointer for a readv() operation
  *****************************************************************************
- * We return an iovec vector, so that readv can read many packets at a time,
- * and we set pp_data to direct to the fifo pointer, which will allow us
- * to get the corresponding data_packet.
+ * We return an iovec vector, so that readv can read many packets at a time.
+ * pp_data will be set to direct to the fifo pointer in DVDMviovec, which
+ * will allow us to get the corresponding data_packet.
  *****************************************************************************/
 struct iovec * DVDGetiovec( void * p_method_data )
 {
@@ -249,23 +249,21 @@ struct iovec * DVDGetiovec( void * p_method_data )
     /* cast */
     p_netlist = (dvd_netlist_t *)p_method_data;
     
-    /* check */
-    if( (
+    /* check that we have enough free iovec */
+    while( (
      (p_netlist->i_iovec_end - p_netlist->i_iovec_start)
         & p_netlist->i_nb_iovec ) < p_netlist->i_read_once )
     {
-        intf_ErrMsg("Empty iovec FIFO (%d:%d). Unable to allocate memory",
-                    p_netlist->i_iovec_start, p_netlist->i_iovec_end );
-        return (NULL);
+        intf_WarnMsg( 12, "input info: waiting for free iovec" );
+        msleep( INPUT_IDLE_SLEEP );
     }
 
-    if( (
+    while( (
      (p_netlist->i_data_end - p_netlist->i_data_start)
         & p_netlist->i_nb_data ) < p_netlist->i_read_once )
     {
-        intf_ErrMsg("Empty data FIFO (%d:%d). Unable to allocate memory", 
-                    p_netlist->i_data_start, p_netlist->i_data_end );
-        return (NULL);
+        intf_WarnMsg( 12, "input info: waiting for free data packet" );
+        msleep( INPUT_IDLE_SLEEP );
     }
     /* readv only takes contiguous buffers 
      * so, as a solution, we chose to have a FIFO a bit longer
index f82298756c1a353144b4bffd0943105e1ac19a0e..3512d8e2471c37bc0ca2c9e8f7628d115cd8d5b8 100644 (file)
@@ -10,7 +10,7 @@
  *  -dvd_udf to find files
  *****************************************************************************
  * Copyright (C) 1998-2001 VideoLAN
- * $Id: input_dvd.c,v 1.71 2001/06/12 22:14:44 sam Exp $
+ * $Id: input_dvd.c,v 1.72 2001/06/13 00:03:08 stef Exp $
  *
  * Author: Stéphane Borel <stef@via.ecp.fr>
  *
@@ -99,7 +99,7 @@
 #define DVD_DATA_READ_ONCE  (4 * DVD_BLOCK_READ_ONCE)
 
 /* Size of netlist */
-#define DVD_NETLIST_SIZE    2048
+#define DVD_NETLIST_SIZE    256
 
 /*****************************************************************************
  * Local prototypes
index 04d6f8cdefcce1036e14622a7222cee3ed798360..44e7276fe86c05630514a7fc81e3471d9a44e3d7 100644 (file)
@@ -2,7 +2,7 @@
  * aout_spdif: ac3 passthrough output
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: aout_spdif.c,v 1.13 2001/06/12 18:16:49 stef Exp $
+ * $Id: aout_spdif.c,v 1.14 2001/06/13 00:03:08 stef Exp $
  *
  * Authors: Michel Kaempf <maxx@via.ecp.fr>
  *          Stéphane Borel <stef@via.ecp.fr>
@@ -74,6 +74,7 @@ void aout_SpdifThread( aout_thread_t * p_aout )
      * last significant frame */
     i_blank = 0;
     mdelta = 0;
+    mplay = 0;
 
     /* Compute the theorical duration of an ac3 frame */
 
@@ -141,7 +142,7 @@ void aout_SpdifThread( aout_thread_t * p_aout )
 
         if( i_frame )
         {
-            mwait( mplay );
+            mwait( mplay + SLEEP_TIME );
         }
         else
         {