From: Sam Hocevar Date: Wed, 19 Jan 2000 06:00:49 +0000 (+0000) Subject: . ultimisation des calculs de pr�diction dans la synchro X-Git-Tag: 0.1.99e~212 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=edca99283e7d1d68cbda77a1d0b5b1de3ff31f64;p=vlc . ultimisation des calculs de pr�diction dans la synchro . squelette du subtitle_decoder --- diff --git a/Makefile b/Makefile index 1645e93a67..8f780571f7 100644 --- a/Makefile +++ b/Makefile @@ -188,6 +188,8 @@ ac3_decoder_obj = ac3_decoder/ac3_decoder.o \ audio_decoder_obj = audio_decoder/audio_decoder.o \ audio_decoder/audio_math.o +subtitle_decoder_obj = subtitle_decoder/subtitle_decoder.o + #??generic_decoder_obj = generic_decoder/generic_decoder.o # remeber to add it to OBJ @@ -231,6 +233,7 @@ C_OBJ = $(interface_obj) \ $(video_output_obj) \ $(ac3_decoder_obj) \ $(audio_decoder_obj) \ + $(subtitle_decoder_obj) \ $(generic_decoder_obj) \ $(video_parser_obj) \ $(video_decoder_obj) \ diff --git a/include/vpar_synchro.h b/include/vpar_synchro.h index 1a6bc2be91..baf21c0682 100644 --- a/include/vpar_synchro.h +++ b/include/vpar_synchro.h @@ -22,7 +22,6 @@ typedef struct video_synchro_tab_s { double mean; double deviation; - int count; } video_synchro_tab_t; diff --git a/src/video_parser/video_parser.c b/src/video_parser/video_parser.c index 2db1897c50..5401404968 100644 --- a/src/video_parser/video_parser.c +++ b/src/video_parser/video_parser.c @@ -100,22 +100,20 @@ vpar_thread_t * vpar_CreateThread( /* video_cfg_t *p_cfg, */ input_thread_t *p_i * Initialize the synchro properties */ p_vpar->synchro.modulo = 0; - /* assume there were about 3 P and 4 B images between I's */ + /* assume there were about 3 P and 6 B images between I's */ p_vpar->synchro.current_p_count = 1; p_vpar->synchro.p_count_predict = 3; p_vpar->synchro.current_b_count = 1; - p_vpar->synchro.b_count_predict = 4; + p_vpar->synchro.b_count_predict = 6; { int i; for( i=0; i<6; i++) { p_vpar->synchro.tab_p[i].mean = 3; - p_vpar->synchro.tab_p[i].deviation = 1; - p_vpar->synchro.tab_p[i].count = 0; + p_vpar->synchro.tab_p[i].deviation = .5; - p_vpar->synchro.tab_b[i].mean = 4; - p_vpar->synchro.tab_b[i].deviation = 1; - p_vpar->synchro.tab_b[i].count = 0; + p_vpar->synchro.tab_b[i].mean = 6; + p_vpar->synchro.tab_b[i].deviation = .5; } } diff --git a/src/video_parser/vpar_synchro.c b/src/video_parser/vpar_synchro.c index c2038d1f82..83e80ab85f 100644 --- a/src/video_parser/vpar_synchro.c +++ b/src/video_parser/vpar_synchro.c @@ -50,14 +50,9 @@ *****************************************************************************/ double vpar_SynchroUpdateTab( video_synchro_tab_t * tab, int count ) { - if( tab->count < MAX_COUNT) - tab->count++; - - tab->mean = ( (tab->count-1) * tab->mean + count ) - / tab->count; - - tab->deviation = ( (tab->count-1) * tab->deviation - + abs (tab->mean - count) ) / tab->count; + + tab->mean = ( tab->mean + 3 * count ) / 4; + tab->deviation = ( tab->deviation + 3 * abs (tab->mean - count) ) / 4; return tab->deviation; } @@ -155,6 +150,7 @@ boolean_t vpar_SynchroChoose( vpar_thread_t * p_vpar, int i_coding_type, intf_DbgMsg("vpar debug: synchro image %i - modulo is %i\n", i_coding_type, p_vpar->synchro.modulo); intf_DbgMsg("vpar debug: synchro predict P %e - predict B %e\n", p_vpar->synchro.p_count_predict, p_vpar->synchro.b_count_predict); + return(0); return( i_coding_type == I_CODING_TYPE ); }