]> git.sesse.net Git - vlc/commitdiff
Enhancement for very slooow machines.
authorChristophe Massiot <massiot@videolan.org>
Wed, 29 Nov 2000 11:34:22 +0000 (11:34 +0000)
committerChristophe Massiot <massiot@videolan.org>
Wed, 29 Nov 2000 11:34:22 +0000 (11:34 +0000)
src/video_parser/vpar_synchro.c

index 5d83b1214579a1c1d1963ce83170bd6fb6579348..b3ec2c4618e71ef0cea312cb98d186246baa1737 100644 (file)
@@ -247,9 +247,15 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type,
                 pts = S.current_pts + period * S.i_n_b;
             }
 
-            b_decode = ( (1 + S.i_n_p * (S.i_n_b + 1)) * period > 
-                           S.p_tau[I_CODING_TYPE] ) ||
-                       ( (pts - now) > (TAU_PRIME(I_CODING_TYPE) + DELTA) );
+            if( (1 + S.i_n_p * (S.i_n_b + 1)) * period >
+                    S.p_tau[I_CODING_TYPE] )
+            {
+                b_decode = 1;
+            }
+            else
+            {
+                b_decode = (pts - now) > (TAU_PRIME(I_CODING_TYPE) + DELTA);
+            }
             if( !b_decode )
                 intf_WarnMsg( 3, "vpar synchro warning: trashing I\n" );
             break;
@@ -270,20 +276,28 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type,
                 pts = S.current_pts + period * S.i_n_b;
             }
 
-            if( (S.i_n_b + 1) * period > S.p_tau[P_CODING_TYPE] )
+            if( (1 + S.i_n_p * (S.i_n_b + 1)) * period >
+                    S.p_tau[I_CODING_TYPE] )
             {
-                /* Security in case we're _really_ late */
-                b_decode = (pts - now > 0);
+                if( (S.i_n_b + 1) * period > S.p_tau[P_CODING_TYPE] )
+                {
+                    /* Security in case we're _really_ late */
+                    b_decode = (pts - now > 0);
+                }
+                else
+                {
+                    b_decode = (pts - now) > (TAU_PRIME(P_CODING_TYPE) + DELTA);
+                    /* next I */
+                    b_decode &= (pts - now
+                                  + period
+                              * ( (S.i_n_p - S.i_eta_p - 1) * (1 + S.i_n_b) - 1 ))
+                                > (TAU_PRIME(P_CODING_TYPE)
+                                    + TAU_PRIME(I_CODING_TYPE) + DELTA);
+                }
             }
             else
             {
-                b_decode = (pts - now) > (TAU_PRIME(P_CODING_TYPE) + DELTA);
-                /* next I */
-                b_decode &= (pts - now
-                              + period
-                          * ( (S.i_n_p - S.i_eta_p - 1) * (1 + S.i_n_b) - 1 ))
-                            > (TAU_PRIME(P_CODING_TYPE)
-                                + TAU_PRIME(I_CODING_TYPE) + DELTA);
+                b_decode = 0;
             }
             break;