[mythtv] FF/Rew Repositioning
David Engel
dlengel at attbi.com
Thu Jul 24 18:34:28 EDT 2003
This patch adds repositioning to allow for reaction time when exiting
fast-forward and rewind mode. The fudge factors may need some
tweaking but it works acceptably for me.
David
--
David Engel
dlengel at attbi.com
Index: libs/libmythtv/tv_play.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.cpp,v
retrieving revision 1.81
diff -u -r1.81 tv_play.cpp
--- libs/libmythtv/tv_play.cpp 21 Jul 2003 15:46:50 -0000 1.81
+++ libs/libmythtv/tv_play.cpp 24 Jul 2003 20:57:01 -0000
@@ -904,7 +904,7 @@
}
case Key_Z:
{
- doing_ff_rew = 0;
+ StopFFRew();
DoSkipCommercials(1);
break;
}
@@ -915,13 +915,13 @@
}
case Key_Q:
{
- doing_ff_rew = 0;
+ StopFFRew();;
DoSkipCommercials(-1);
break;
}
case Key_S: case Key_P:
{
- doing_ff_rew = 0;
+ StopFFRew();;
DoPause();
break;
}
@@ -929,8 +929,7 @@
{
if (!stickykeys)
{
- doing_ff_rew = 0;
- ff_rew_index = SSPEED_NORMAL;
+ StopFFRew();;
DoFF(fftime);
break;
}
@@ -952,8 +951,7 @@
{
if (!stickykeys)
{
- doing_ff_rew = 0;
- ff_rew_index = SSPEED_NORMAL;
+ StopFFRew();;
DoRew(rewtime);
break;
}
@@ -1031,7 +1029,7 @@
case Key_9: ff_rew_index = SSPEED_FAST_6; break;
default:
- doing_ff_rew = 0;
+ StopFFRew();;
was_doing_ff_rew = true;
break;
}
@@ -1423,6 +1421,38 @@
keyRepeat = false;
keyrepeatTimer->start(300, true);
}
+}
+
+void TV::StopFFRew(void)
+{
+ if (!doing_ff_rew)
+ return;
+
+ const double ff_offset = 7.00;
+ const double ff_scale = 6.00;
+ const double rew_offset = 0.00;
+ const double rew_scale = 6.00;
+
+ bool muted = false;
+
+ if (volumeControl && !volumeControl->GetMute())
+ {
+ volumeControl->ToggleMute();
+ muted = true;
+ }
+
+ ff_rew_scaling = seek_speed_array[ff_rew_index].scaling;
+ if (doing_ff_rew > 0)
+ activenvp->Rewind(ff_offset + ff_scale * ff_rew_scaling);
+ else
+ activenvp->FastForward(rew_offset + rew_scale * ff_rew_scaling);
+
+ if (muted)
+ muteTimer->start(600, true);
+
+ doing_ff_rew = 0;
+ ff_rew_index = SSPEED_NORMAL;
+ ff_rew_scaling = 1.0;
}
void TV::DoJumpAhead(void)
Index: libs/libmythtv/tv_play.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/tv_play.h,v
retrieving revision 1.38
diff -u -r1.38 tv_play.h
--- libs/libmythtv/tv_play.h 21 Jul 2003 15:46:50 -0000 1.38
+++ libs/libmythtv/tv_play.h 24 Jul 2003 20:57:02 -0000
@@ -119,6 +119,7 @@
void DoInfo(void);
void DoPause(void);
void DoFF(int time);
+ void StopFFRew(void);
void DoRew(int time);
void DoJumpAhead(void);
void DoJumpBack(void);
More information about the mythtv-dev
mailing list