Commit c48d981f authored by Sam Hocevar's avatar Sam Hocevar

. support pour --synchro I+ (images I et la premi�re P)

parent 6b890a3e
O.1.99i : 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. bugs in the video parser and video decoder.
* put names of authors under a lot of source files, for historical * put names of authors under a lot of source files, for historical
purposes. purposes.
* fixed another input_file exit bug for the beos version. * fixed another input_file exit bug for the beos version.
* fixed the aliases install. * fixed the aliases install.
* renamed an inconsistent varaible in src/input/input_file.c. * 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 Tue, 22 Aug 2000 01:31:58 +0200
0.1.99h : 0.1.99h :
......
...@@ -75,7 +75,7 @@ typedef struct video_synchro_s ...@@ -75,7 +75,7 @@ typedef struct video_synchro_s
int displayable_p; int displayable_p;
boolean_t b_all_B; boolean_t b_all_B;
int displayable_b; int displayable_b;
boolean_t b_dropped_last_B; boolean_t b_dropped_last;
} video_synchro_t; } video_synchro_t;
...@@ -84,9 +84,10 @@ typedef struct video_synchro_s ...@@ -84,9 +84,10 @@ typedef struct video_synchro_s
#define VPAR_SYNCHRO_DEFAULT 0 #define VPAR_SYNCHRO_DEFAULT 0
#define VPAR_SYNCHRO_I 1 #define VPAR_SYNCHRO_I 1
#define VPAR_SYNCHRO_IP 2 #define VPAR_SYNCHRO_Iplus 2
#define VPAR_SYNCHRO_IPplus 3 #define VPAR_SYNCHRO_IP 3
#define VPAR_SYNCHRO_IPB 4 #define VPAR_SYNCHRO_IPplus 4
#define VPAR_SYNCHRO_IPB 5
#endif #endif
......
...@@ -657,7 +657,7 @@ static void Usage( int i_fashion ) ...@@ -657,7 +657,7 @@ static void Usage( int i_fashion )
/* Synchro parameters */ /* Synchro parameters */
intf_Msg( "\n" intf_Msg( "\n"
"Synchro parameters:\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");
} }
/***************************************************************************** /*****************************************************************************
......
...@@ -301,7 +301,7 @@ static int InitThread( vpar_thread_t *p_vpar ) ...@@ -301,7 +301,7 @@ static int InitThread( vpar_thread_t *p_vpar )
p_vpar->synchro.displayable_p = 2 << 10; p_vpar->synchro.displayable_p = 2 << 10;
p_vpar->synchro.b_all_B = 0; p_vpar->synchro.b_all_B = 0;
p_vpar->synchro.displayable_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 */ /* 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_P_seen = p_vpar->synchro.i_P_kept = 1 << 10;
p_vpar->synchro.i_B_seen = p_vpar->synchro.i_B_kept = 1 << 10; p_vpar->synchro.i_B_seen = p_vpar->synchro.i_B_kept = 1 << 10;
...@@ -500,6 +500,10 @@ static int SynchroType( ) ...@@ -500,6 +500,10 @@ static int SynchroType( )
case '\0': case '\0':
return VPAR_SYNCHRO_I; return VPAR_SYNCHRO_I;
case '+':
if( *psz_synchro ) return 0;
return VPAR_SYNCHRO_Iplus;
case 'p': case 'p':
case 'P': case 'P':
switch( *psz_synchro++ ) switch( *psz_synchro++ )
......
...@@ -215,6 +215,10 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type, ...@@ -215,6 +215,10 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type,
if( p_vpar->synchro.i_type != VPAR_SYNCHRO_DEFAULT ) if( p_vpar->synchro.i_type != VPAR_SYNCHRO_DEFAULT )
{ {
/* I, IP, IP+, IPB */ /* I, IP, IP+, IPB */
if( p_vpar->synchro.i_type == VPAR_SYNCHRO_Iplus )
{
p_vpar->synchro.b_dropped_last = 1;
}
return( 1 ); return( 1 );
} }
...@@ -227,6 +231,19 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type, ...@@ -227,6 +231,19 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type,
return( 0 ); 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 */ if( p_vpar->synchro.i_type >= VPAR_SYNCHRO_IP ) /* IP, IP+, IPB */
{ {
return( 1 ); return( 1 );
...@@ -260,13 +277,13 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type, ...@@ -260,13 +277,13 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type,
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 ); return( 1 );
} }
p_vpar->synchro.b_dropped_last_B = 1; p_vpar->synchro.b_dropped_last = 1;
return( 0 ); return( 0 );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment