summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2012-05-11 07:37:27 +0000
committerphintuka <phintuka>2012-05-11 07:37:27 +0000
commit1992faa3d3a1d5677381344a6eda8d924f3c86d1 (patch)
tree7471e391925b4c365a0757d6ccab8f2fccca93b2
parentb06530f5b5c12ecccd603ad1055764795019ce74 (diff)
downloadxineliboutput-1992faa3d3a1d5677381344a6eda8d924f3c86d1.tar.gz
xineliboutput-1992faa3d3a1d5677381344a6eda8d924f3c86d1.tar.bz2
Reverted part of 1.357 (pausing SCR instead of stream caused audio to be dropped while buffering)
-rw-r--r--xine_input_vdr.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/xine_input_vdr.c b/xine_input_vdr.c
index ace20f18..95ec2bb9 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.361 2012-03-27 12:02:50 phintuka Exp $
+ * $Id: xine_input_vdr.c,v 1.362 2012-05-11 07:37:27 phintuka Exp $
*
*/
@@ -136,7 +136,7 @@ typedef struct {
# include <linux/unistd.h> /* syscall(__NR_gettid) */
#endif
-static const char module_revision[] = "$Id: xine_input_vdr.c,v 1.361 2012-03-27 12:02:50 phintuka Exp $";
+static const char module_revision[] = "$Id: xine_input_vdr.c,v 1.362 2012-05-11 07:37:27 phintuka Exp $";
static const char log_module_input_vdr[] = "[input_vdr] ";
#define LOG_MODULENAME log_module_input_vdr
#define SysLogLevel iSysLogLevel
@@ -582,7 +582,10 @@ static void scr_tuning_set_paused(vdr_input_plugin_t *this)
this->scr_tuning = SCR_TUNING_PAUSED; /* marked as paused */
this->scr->set_speed_tuning(this->scr, 1.0);
- this->scr->set_buffering(this->scr, 1);
+
+ if (_x_get_fine_speed(this->stream) != XINE_SPEED_PAUSE) {
+ _x_set_fine_speed(this->stream, XINE_SPEED_PAUSE);
+ }
this->I_frames = this->P_frames = this->B_frames = 0;
}
@@ -600,9 +603,15 @@ static void reset_scr_tuning(vdr_input_plugin_t *this)
this->scr_tuning = SCR_TUNING_OFF; /* marked as normal */
this->scr->set_speed_tuning(this->scr, 1.0);
- this->scr->set_buffering(this->scr, 0);
- //this->scr->scr.set_fine_speed(&this->scr->scr, XINE_FINE_SPEED_NORMAL);
+ if (_x_get_fine_speed(this->stream) != XINE_FINE_SPEED_NORMAL) {
+ if (!this->is_paused)
+ _x_set_fine_speed(this->stream, XINE_FINE_SPEED_NORMAL);
+ else
+ LOGDBG("reset_scr_tuning: playback is paused");
+ }
+
+ this->scr->scr.set_fine_speed(&this->scr->scr, XINE_FINE_SPEED_NORMAL);
}
}
@@ -1665,7 +1674,8 @@ static void set_trick_speed(vdr_input_plugin_t *this, int speed, int backwards)
else
speed = XINE_FINE_SPEED_NORMAL * (-speed);
- if (_x_get_fine_speed(this->stream) != speed) {
+ if (this->scr_tuning != SCR_TUNING_PAUSED &&
+ _x_get_fine_speed(this->stream) != speed) {
_x_set_fine_speed (this->stream, speed);
}