1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed setting the read index in cDvbPlayer::Goto() in case Still is false; The function cDvbPlayer::Goto() now automatically calls Play() if Still is false

This commit is contained in:
Klaus Schmidinger 2015-02-01 11:20:54 +01:00
parent 63372cd4aa
commit 0a5eb88696
4 changed files with 27 additions and 25 deletions

View File

@ -8414,7 +8414,7 @@ Video Disk Recorder Revision History
generated an index file with VDR version 2.0.6 you may want to do so again with this generated an index file with VDR version 2.0.6 you may want to do so again with this
version to make sure the index is OK. version to make sure the index is OK.
2015-01-31: Version 2.1.8 2015-02-01: Version 2.1.8
- Updated the Italian OSD texts (thanks to Diego Pierotto). - Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg - Fixed "warning: invalid suffix on literal" with GCC 4.8 and C++11 (thanks to Joerg
@ -8449,3 +8449,5 @@ Video Disk Recorder Revision History
- Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek - Added ARGSDIR to the ONEDIR section of Make.config.template (suggested by Derek
Kelly). Kelly).
- Made cRecording::GetResume() public (suggested by Stefan Braun). - Made cRecording::GetResume() public (suggested by Stefan Braun).
- Fixed setting the read index in cDvbPlayer::Goto() in case Still is false.
- The function cDvbPlayer::Goto() now automatically calls Play() if Still is false.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbplayer.c 3.2 2015/01/25 13:12:13 kls Exp $ * $Id: dvbplayer.c 3.3 2015/02/01 10:45:41 kls Exp $
*/ */
#include "dvbplayer.h" #include "dvbplayer.h"
@ -852,7 +852,9 @@ void cDvbPlayer::Goto(int Index, bool Still)
off_t FileOffset; off_t FileOffset;
int Length; int Length;
Index = index->GetNextIFrame(Index, false, &FileNumber, &FileOffset, &Length); Index = index->GetNextIFrame(Index, false, &FileNumber, &FileOffset, &Length);
if (Index >= 0 && NextFile(FileNumber, FileOffset) && Still) { if (Index >= 0) {
if (Still) {
if (NextFile(FileNumber, FileOffset)) {
uchar b[MAXFRAMESIZE]; uchar b[MAXFRAMESIZE];
int r = ReadFrame(replayFile, b, Length, sizeof(b)); int r = ReadFrame(replayFile, b, Length, sizeof(b));
if (r > 0) { if (r > 0) {
@ -862,10 +864,16 @@ void cDvbPlayer::Goto(int Index, bool Still)
ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index); ptsIndex.Put(isPesRecording ? PesGetPts(b) : TsGetPts(b, r), Index);
} }
playMode = pmStill; playMode = pmStill;
}
readIndex = Index; readIndex = Index;
} }
} }
else {
readIndex = Index - 1; // Action() will first increment it!
Play();
}
}
}
}
void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId) void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
{ {

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbplayer.h 2.1 2012/02/19 11:40:36 kls Exp $ * $Id: dvbplayer.h 3.1 2015/02/01 11:20:54 kls Exp $
*/ */
#ifndef __DVBPLAYER_H #ifndef __DVBPLAYER_H
@ -56,7 +56,7 @@ public:
// and >0 if this is multi speed mode. // and >0 if this is multi speed mode.
void Goto(int Index, bool Still = false); void Goto(int Index, bool Still = false);
// Positions to the given index and displays that frame as a still picture // Positions to the given index and displays that frame as a still picture
// if Still is true. // if Still is true. If Still is false, Play() will be called.
}; };
#endif //__DVBPLAYER_H #endif //__DVBPLAYER_H

14
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: menu.c 3.34 2015/01/31 14:50:55 kls Exp $ * $Id: menu.c 3.35 2015/02/01 10:42:11 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -5262,8 +5262,6 @@ void cReplayControl::TimeSearchProcess(eKeys Key)
Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds); Seconds = min(Total - STAY_SECONDS_OFF_END, Seconds);
bool Still = Key == kDown || Key == kPause || Key == kOk; bool Still = Key == kDown || Key == kPause || Key == kOk;
Goto(SecondsToFrames(Seconds, FramesPerSecond()), Still); Goto(SecondsToFrames(Seconds, FramesPerSecond()), Still);
if (!Still)
Play();
} }
timeSearchActive = false; timeSearchActive = false;
break; break;
@ -5332,7 +5330,6 @@ void cReplayControl::MarkJump(bool Forward)
int Speed; int Speed;
if (GetReplayMode(Playing, Fwd, Speed) && Playing && Forward && m->Position() < Total - SecondsToFrames(3, FramesPerSecond())) { if (GetReplayMode(Playing, Fwd, Speed) && Playing && Forward && m->Position() < Total - SecondsToFrames(3, FramesPerSecond())) {
Goto(m->Position()); Goto(m->Position());
Play();
return; return;
} }
} }
@ -5379,11 +5376,8 @@ void cReplayControl::MarkMove(int Frames, bool MarkRequired)
Goto(m->Position(), true); Goto(m->Position(), true);
marksModified = true; marksModified = true;
} }
else if (!MarkRequired) { else if (!MarkRequired)
Goto(SkipFrames(Frames), !Play); Goto(SkipFrames(Frames), !Play);
if (Play)
this->Play();
}
} }
} }
@ -5419,10 +5413,8 @@ void cReplayControl::EditTest(void)
if (m) { if (m) {
if ((m->Index() & 0x01) != 0 && !Setup.SkipEdited) // when skipping edited parts we also need to jump to end marks if ((m->Index() & 0x01) != 0 && !Setup.SkipEdited) // when skipping edited parts we also need to jump to end marks
m = marks.Next(m); m = marks.Next(m);
if (m) { if (m)
Goto(m->Position() - SecondsToFrames(3, FramesPerSecond())); Goto(m->Position() - SecondsToFrames(3, FramesPerSecond()));
Play();
}
} }
} }
} }