diff options
author | phintuka <phintuka> | 2007-01-22 23:11:50 +0000 |
---|---|---|
committer | phintuka <phintuka> | 2007-01-22 23:11:50 +0000 |
commit | ffea1e06df249b39d232e4bf93a344637b089f7d (patch) | |
tree | 1415816f08314ea4654607c0cbe4b7d61b5f773c | |
parent | ce716e38df486088aaad9c1e4f625b3ffa1d7f37 (diff) | |
download | xineliboutput-ffea1e06df249b39d232e4bf93a344637b089f7d.tar.gz xineliboutput-ffea1e06df249b39d232e4bf93a344637b089f7d.tar.bz2 |
Longer buffering time when playing realtime
Do not turn off de-interlacing if tvtime deinterlacer is selected
-rw-r--r-- | xine_input_vdr.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/xine_input_vdr.c b/xine_input_vdr.c index 2d8d37f6..b93c5500 100644 --- a/xine_input_vdr.c +++ b/xine_input_vdr.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: xine_input_vdr.c,v 1.71 2007-01-20 20:13:49 phintuka Exp $ + * $Id: xine_input_vdr.c,v 1.72 2007-01-22 23:11:50 phintuka Exp $ * */ @@ -772,7 +772,7 @@ static void vdr_adjust_realtime_speed(vdr_input_plugin_t *this) || this->still_mode || this->is_trickspeed || ( this->I_frames > 0 - && (this->I_frames > 1 || this->P_frames > 3 )) + && (this->I_frames > 2 || this->P_frames > 6 )) ) { LOGSCR("I %d B %d P %d", this->I_frames, this->B_frames, this->P_frames); LOGSCR("SCR tunning resetted by adjust_speed, " @@ -780,6 +780,7 @@ static void vdr_adjust_realtime_speed(vdr_input_plugin_t *this) /*num_vbufs*/0, this->paused_frames, monotonic_time_ms() - this->pause_start); + this->I_frames = 0; this->paused_frames = 0; this->pause_start = 0; reset_scr_tunning(this, this->speed_before_pause); @@ -2292,8 +2293,8 @@ static int set_deinterlace_method(vdr_input_plugin_t *this, const char *method_n } else if(!strncasecmp(method_name,"onefield_xv",11)) { method = 5; } else if(!strncasecmp(method_name,"linearblend",11)) { method = 6; } else if(!strncasecmp(method_name,"none",4)) { method = 0; - } else if(!*method_name) { method = 0; - } else if(!strncasecmp(method_name,"tvtime",6)) { method = 0; + } else if(!*method_name) { method = 0; + } else if(!strncasecmp(method_name,"tvtime",6)) { method = -1; /* old deinterlacing system must be switched off. tvtime will be configured as all other post plugins with "POST tvtime ..." control message */ @@ -2301,7 +2302,7 @@ static int set_deinterlace_method(vdr_input_plugin_t *this, const char *method_n this->stream->xine->config->update_num(this->stream->xine->config, "video.output.xv_deinterlace_method", - method); + method >= 0 ? method : 0); xine_set_param(this->stream, XINE_PARAM_VO_DEINTERLACE, method ? 1 : 0); return 0; @@ -4449,7 +4450,6 @@ static void update_frames(vdr_input_plugin_t *this, uint8_t *data, int len) if(!this->I_frames) this->P_frames = this->B_frames = 0; - i += data[i] + 1; // possible additional header bytes for (; i < Length-5; i++) { if (data[i] == 0 && data[i + 1] == 0 && data[i + 2] == 1 && data[i + 3] == 0) { @@ -4664,7 +4664,7 @@ static buf_element_t *vdr_plugin_read_block (input_plugin_t *this_gen, } } - if(this->live_mode && this->I_frames < 3 && + if(this->live_mode && this->I_frames < 4 && buf->content[3] == 0xe0 && buf->size > 32) update_frames(this, buf->content, buf->size); |