[vlc-devel] commit: Fix decoder FIFO pacing. ( Rémi Denis-Courmont )

git version control git at videolan.org
Thu Oct 23 20:41:50 CEST 2008


vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Thu Oct 23 21:38:40 2008 +0300| [b64ada26f7e25a76c23b759be100d4b76e249b9f] | committer: Rémi Denis-Courmont 

Fix decoder FIFO pacing.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b64ada26f7e25a76c23b759be100d4b76e249b9f
---

 src/input/decoder.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/src/input/decoder.c b/src/input/decoder.c
index 06379e7..7043b4c 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -306,6 +306,7 @@ void input_DecoderDelete( decoder_t *p_dec )
 
 /**
  * Put a block_t in the decoder's fifo.
+ * Thread-safe w.r.t. the decoder. May be a cancellation point.
  *
  * \param p_dec the decoder object
  * \param p_block the data block
@@ -316,17 +317,12 @@ void input_DecoderDecode( decoder_t *p_dec, block_t *p_block )
 
     if( p_owner->p_input->p->b_out_pace_control )
     {
-        /* FIXME !!!!! */
-        while( vlc_object_alive( p_dec ) &&
-               block_FifoCount( p_owner->p_fifo ) > 10 )
-        {
-            msleep( 1000 );
-        }
+        block_FifoPace( p_owner->p_fifo, 10, SIZE_MAX );
     }
     else if( block_FifoSize( p_owner->p_fifo ) > 50000000 /* 50 MB */ )
     {
         /* FIXME: ideally we would check the time amount of data
-         * in the fifo instead of its size. */
+         * in the FIFO instead of its size. */
         msg_Warn( p_dec, "decoder/packetizer fifo full (data not "
                   "consumed quickly enough), resetting fifo!" );
         block_FifoEmpty( p_owner->p_fifo );




More information about the vlc-devel mailing list