]> git.sesse.net Git - vlc/commitdiff
* src/video_output/vout_synchro.c, include/vout_synchro.h: got rid of the dependency...
authorGildas Bazin <gbazin@videolan.org>
Tue, 4 Nov 2003 17:46:18 +0000 (17:46 +0000)
committerGildas Bazin <gbazin@videolan.org>
Tue, 4 Nov 2003 17:46:18 +0000 (17:46 +0000)
* modules/codec/libmpeg2.c: updated with the synchro api changes.

include/vout_synchro.h
modules/codec/libmpeg2.c
src/video_output/vout_synchro.c

index 50a7302cad1eaa62be467c8db90db82775503f77..57ecbcdd6943641993e1932ac096d9dc95642322 100644 (file)
@@ -2,7 +2,7 @@
  * vout_synchro.h: frame-dropping structures
  *****************************************************************************
  * Copyright (C) 1999-2003 VideoLAN
- * $Id: vout_synchro.h,v 1.2 2003/06/09 00:33:34 massiot Exp $
+ * $Id: vout_synchro.h,v 1.3 2003/11/04 17:46:18 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Jean-Marc Dressler <polux@via.ecp.fr>
@@ -46,7 +46,9 @@ struct vout_synchro_t
     /* decoding values */
     mtime_t         p_tau[4];                  /* average decoding durations */
     unsigned int    pi_meaningful[4];            /* number of durations read */
-    /* and p_vout->render_time (read with p_vout->change_lock) */
+
+    /* render_time filled by SynchroChoose() */
+    int i_render_time;
 
     /* stream context */
     int             i_nb_ref;                /* Number of reference pictures */
@@ -80,11 +82,11 @@ struct vout_synchro_t
 /*****************************************************************************
  * Prototypes
  *****************************************************************************/
-#define vout_SynchroInit(a,b,c) __vout_SynchroInit(VLC_OBJECT(a),b,c)
-VLC_EXPORT( vout_synchro_t *, __vout_SynchroInit, ( vlc_object_t *, vout_thread_t *, int ) );
+#define vout_SynchroInit(a,b) __vout_SynchroInit(VLC_OBJECT(a),b)
+VLC_EXPORT( vout_synchro_t *, __vout_SynchroInit, ( vlc_object_t *, int ) );
 VLC_EXPORT( void, vout_SynchroRelease,        ( vout_synchro_t * ) );
 VLC_EXPORT( void, vout_SynchroReset,          ( vout_synchro_t * ) );
-VLC_EXPORT( vlc_bool_t, vout_SynchroChoose,   ( vout_synchro_t *, int ) );
+VLC_EXPORT( vlc_bool_t, vout_SynchroChoose,   ( vout_synchro_t *, int, int ) );
 VLC_EXPORT( void, vout_SynchroTrash,          ( vout_synchro_t * ) );
 VLC_EXPORT( void, vout_SynchroDecode,         ( vout_synchro_t * ) );
 VLC_EXPORT( void, vout_SynchroEnd,            ( vout_synchro_t *, int, vlc_bool_t ) );
index f6d7f66269749c962a994015ae5ea7d47201a69f..bef10b689bf9d3773da8c6b2a071c4276489ebdc 100755 (executable)
@@ -2,7 +2,7 @@
  * libmpeg2.c: mpeg2 video decoder module making use of libmpeg2.
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: libmpeg2.c,v 1.31 2003/10/25 00:49:13 sam Exp $
+ * $Id: libmpeg2.c,v 1.32 2003/11/04 17:46:17 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -352,7 +352,7 @@ static int RunDecoder( decoder_t *p_dec, block_t *p_block )
             {
                 vout_SynchroRelease( p_sys->p_synchro );
             }
-            p_sys->p_synchro = vout_SynchroInit( p_dec, p_sys->p_vout,
+            p_sys->p_synchro = vout_SynchroInit( p_dec,
                 (uint32_t)((uint64_t)1001000000 * 27 /
                 p_sys->p_info->sequence->frame_period) );
             p_sys->b_after_sequence_header = 1;
@@ -410,7 +410,8 @@ static int RunDecoder( decoder_t *p_dec, block_t *p_block )
                          & PIC_MASK_CODING_TYPE) == P_CODING_TYPE))
                    && !vout_SynchroChoose( p_sys->p_synchro,
                               p_sys->p_info->current_picture->flags
-                                & PIC_MASK_CODING_TYPE ) )
+                                & PIC_MASK_CODING_TYPE,
+                              p_sys->p_vout->render_time ) )
             {
                 mpeg2_skip( p_sys->p_mpeg2dec, 1 );
                 p_sys->b_skip = 1;
index 02be0eab5b97ff4f310b95a4abdd1b75cb6079dc..380a033a7bf304eb77f4c76e20caedbbf47ce714 100644 (file)
@@ -2,7 +2,7 @@
  * vout_synchro.c : frame dropping routines
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: vout_synchro.c,v 1.4 2003/10/17 18:38:47 gbazin Exp $
+ * $Id: vout_synchro.c,v 1.5 2003/11/04 17:46:18 gbazin Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Samuel Hocevar <sam@via.ecp.fr>
  * vout_SynchroInit : You know what ?
  *****************************************************************************/
 vout_synchro_t * __vout_SynchroInit( vlc_object_t * p_object,
-                                   vout_thread_t * p_vout, int i_frame_rate )
+                                     int i_frame_rate )
 {
     vout_synchro_t * p_synchro = vlc_object_create( p_object,
                                                   sizeof(vout_synchro_t) );
@@ -143,7 +143,6 @@ vout_synchro_t * __vout_SynchroInit( vlc_object_t * p_object,
         p_synchro->i_pic = 0;
 
     p_synchro->i_frame_rate = i_frame_rate;
-    p_synchro->p_vout = p_vout;
 
     return p_synchro;
 }
@@ -169,14 +168,15 @@ void vout_SynchroReset( vout_synchro_t * p_synchro )
 /*****************************************************************************
  * vout_SynchroChoose : Decide whether we will decode a picture or not
  *****************************************************************************/
-vlc_bool_t vout_SynchroChoose( vout_synchro_t * p_synchro, int i_coding_type )
+vlc_bool_t vout_SynchroChoose( vout_synchro_t * p_synchro, int i_coding_type,
+                               int i_render_time )
 {
 #define TAU_PRIME( coding_type )    (p_synchro->p_tau[(coding_type)] \
                                     + (p_synchro->p_tau[(coding_type)] >> 1) \
-                                    + tau_yuv)
+                                    + p_synchro->i_render_time)
 #define S (*p_synchro)
     /* VPAR_SYNCHRO_DEFAULT */
-    mtime_t         now, period, tau_yuv;
+    mtime_t         now, period;
     mtime_t         pts = 0;
     vlc_bool_t      b_decode = 0;
 
@@ -184,9 +184,7 @@ vlc_bool_t vout_SynchroChoose( vout_synchro_t * p_synchro, int i_coding_type )
     period = 1000000 * 1001 / p_synchro->i_frame_rate
                      * p_synchro->i_current_rate / DEFAULT_RATE;
 
-    vlc_mutex_lock( &p_synchro->p_vout->change_lock );
-    tau_yuv = p_synchro->p_vout->render_time;
-    vlc_mutex_unlock( &p_synchro->p_vout->change_lock );
+    p_synchro->i_render_time = i_render_time;
 
     switch( i_coding_type )
     {
@@ -384,7 +382,7 @@ void vout_SynchroNewPicture( vout_synchro_t * p_synchro, int i_coding_type,
               p_synchro->i_n_p,
               p_synchro->p_tau[B_CODING_TYPE],
               p_synchro->i_n_b,
-              p_synchro->p_vout->render_time,
+              p_synchro->i_render_time,
               p_synchro->i_not_chosen_pic,
               p_synchro->i_trashed_pic -
               p_synchro->i_not_chosen_pic,