O.1.99i :
- * fixed the support for the field pictures, which involved a few dozens
+ * fixed the support for field pictures, which involved a few dozens
bugs in the video parser and video decoder.
* put names of authors under a lot of source files, for historical
purposes.
* fixed another input_file exit bug for the beos version.
* fixed the aliases install.
* renamed an inconsistent varaible in src/input/input_file.c.
+ * added support for I+ synchro (all Is and the first P).
Tue, 22 Aug 2000 01:31:58 +0200
0.1.99h :
int displayable_p;
boolean_t b_all_B;
int displayable_b;
- boolean_t b_dropped_last_B;
+ boolean_t b_dropped_last;
} video_synchro_t;
#define VPAR_SYNCHRO_DEFAULT 0
#define VPAR_SYNCHRO_I 1
-#define VPAR_SYNCHRO_IP 2
-#define VPAR_SYNCHRO_IPplus 3
-#define VPAR_SYNCHRO_IPB 4
+#define VPAR_SYNCHRO_Iplus 2
+#define VPAR_SYNCHRO_IP 3
+#define VPAR_SYNCHRO_IPplus 4
+#define VPAR_SYNCHRO_IPB 5
#endif
/* Synchro parameters */
intf_Msg( "\n"
"Synchro parameters:\n"
- " " VPAR_SYNCHRO_VAR "={I|IP|IP+|IPB} \tsynchro algorithm\n");
+ " " VPAR_SYNCHRO_VAR "={I|I+|IP|IP+|IPB} \tsynchro algorithm\n");
}
/*****************************************************************************
p_vpar->synchro.displayable_p = 2 << 10;
p_vpar->synchro.b_all_B = 0;
p_vpar->synchro.displayable_b = 0;
- p_vpar->synchro.b_dropped_last_B = 0;
+ p_vpar->synchro.b_dropped_last = 0;
/* assume there were about 3 P and 6 B images between I's */
p_vpar->synchro.i_P_seen = p_vpar->synchro.i_P_kept = 1 << 10;
p_vpar->synchro.i_B_seen = p_vpar->synchro.i_B_kept = 1 << 10;
case '\0':
return VPAR_SYNCHRO_I;
+ case '+':
+ if( *psz_synchro ) return 0;
+ return VPAR_SYNCHRO_Iplus;
+
case 'p':
case 'P':
switch( *psz_synchro++ )
if( p_vpar->synchro.i_type != VPAR_SYNCHRO_DEFAULT )
{
/* I, IP, IP+, IPB */
+ if( p_vpar->synchro.i_type == VPAR_SYNCHRO_Iplus )
+ {
+ p_vpar->synchro.b_dropped_last = 1;
+ }
return( 1 );
}
return( 0 );
}
+ if( p_vpar->synchro.i_type == VPAR_SYNCHRO_Iplus ) /* I+ */
+ {
+ if( p_vpar->synchro.b_dropped_last )
+ {
+ p_vpar->synchro.b_dropped_last = 0;
+ return( 1 );
+ }
+ else
+ {
+ return( 0 );
+ }
+ }
+
if( p_vpar->synchro.i_type >= VPAR_SYNCHRO_IP ) /* IP, IP+, IPB */
{
return( 1 );
return( 1 );
}
- if( p_vpar->synchro.b_dropped_last_B ) /* IP+ */
+ if( p_vpar->synchro.b_dropped_last ) /* IP+ */
{
- p_vpar->synchro.b_dropped_last_B = 0;
+ p_vpar->synchro.b_dropped_last = 0;
return( 1 );
}
- p_vpar->synchro.b_dropped_last_B = 1;
+ p_vpar->synchro.b_dropped_last = 1;
return( 0 );
}