mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed resuming replay of PES recordings
This commit is contained in:
parent
a67fe0663d
commit
f7645402ff
@ -696,6 +696,7 @@ Oliver Endriss <o.endriss@gmx.de>
|
|||||||
Makefile
|
Makefile
|
||||||
for helping to debug a problem with reduced number of retries in Transfer Mode on
|
for helping to debug a problem with reduced number of retries in Transfer Mode on
|
||||||
SD-FF cards
|
SD-FF cards
|
||||||
|
for reporting a problem with resuming replay of PES recordings
|
||||||
|
|
||||||
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
Reinhard Walter Buchner <rw.buchner@freenet.de>
|
||||||
for adding some satellites to 'sources.conf'
|
for adding some satellites to 'sources.conf'
|
||||||
|
1
HISTORY
1
HISTORY
@ -7721,3 +7721,4 @@ Video Disk Recorder Revision History
|
|||||||
"Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
|
"Input Stream Identifier" (ISI) (based on a patch from Rolf Ahrenberg).
|
||||||
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
|
With this VDR now supports "multi streaming" on DVB-S2 and DVB-T2 transponders.
|
||||||
- Fixed a possible deadlock when changing the audio track while replaying a recording.
|
- Fixed a possible deadlock when changing the audio track while replaying a recording.
|
||||||
|
- Fixed resuming replay of PES recordings (reported by Oliver Endriss).
|
||||||
|
17
dvbplayer.c
17
dvbplayer.c
@ -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 2.33 2013/03/07 13:05:15 kls Exp $
|
* $Id: dvbplayer.c 2.34 2013/03/07 14:38:26 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbplayer.h"
|
#include "dvbplayer.h"
|
||||||
@ -33,6 +33,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
cPtsIndex(void);
|
cPtsIndex(void);
|
||||||
void Clear(void);
|
void Clear(void);
|
||||||
|
bool IsEmpty(void);
|
||||||
void Put(uint32_t Pts, int Index);
|
void Put(uint32_t Pts, int Index);
|
||||||
int FindIndex(uint32_t Pts);
|
int FindIndex(uint32_t Pts);
|
||||||
};
|
};
|
||||||
@ -49,6 +50,12 @@ void cPtsIndex::Clear(void)
|
|||||||
w = r = 0;
|
w = r = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cPtsIndex::IsEmpty(void)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
|
return w == r;
|
||||||
|
}
|
||||||
|
|
||||||
void cPtsIndex::Put(uint32_t Pts, int Index)
|
void cPtsIndex::Put(uint32_t Pts, int Index)
|
||||||
{
|
{
|
||||||
cMutexLock MutexLock(&mutex);
|
cMutexLock MutexLock(&mutex);
|
||||||
@ -811,9 +818,11 @@ void cDvbPlayer::Goto(int Index, bool Still)
|
|||||||
void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
|
void cDvbPlayer::SetAudioTrack(eTrackType Type, const tTrackId *TrackId)
|
||||||
{
|
{
|
||||||
if (playMode == pmPlay) {
|
if (playMode == pmPlay) {
|
||||||
int Current, Total;
|
if (!ptsIndex.IsEmpty()) {
|
||||||
if (GetIndex(Current, Total, true))
|
int Current, Total;
|
||||||
Goto(Current);
|
if (GetIndex(Current, Total, true))
|
||||||
|
Goto(Current);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (playMode == pmPause)
|
else if (playMode == pmPause)
|
||||||
resyncAfterPause = true;
|
resyncAfterPause = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user