mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Improved sending all frames to devices that can handle them in fast forward trick speeds, including subtitles
This commit is contained in:
parent
6520725bb2
commit
7ad17726d8
4
HISTORY
4
HISTORY
@ -5465,7 +5465,7 @@ Video Disk Recorder Revision History
|
|||||||
- Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
|
- Fixed a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode() (thanks to
|
||||||
Udo Richter).
|
Udo Richter).
|
||||||
- Implemented sending all frames to devices that can handle them in fast forward
|
- Implemented sending all frames to devices that can handle them in fast forward
|
||||||
trick speeds (thansk to Timo Eskola).
|
trick speeds (thanks to Timo Eskola).
|
||||||
- Updated the Hungarian language texts (thanks to Thomas Günther).
|
- Updated the Hungarian language texts (thanks to Thomas Günther).
|
||||||
- Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
|
- Fixed description of DeviceSetAvailableTrack() and cReceiver(), and added an
|
||||||
example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
|
example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
|
||||||
@ -5597,3 +5597,5 @@ Video Disk Recorder Revision History
|
|||||||
- Ignoring "repeat" and "release" keys in the time search entry mode during replay,
|
- Ignoring "repeat" and "release" keys in the time search entry mode during replay,
|
||||||
to avoid inadvertently leaving it in case a key is pressed too long (suggested
|
to avoid inadvertently leaving it in case a key is pressed too long (suggested
|
||||||
by Andreas Brugger).
|
by Andreas Brugger).
|
||||||
|
- Improved sending all frames to devices that can handle them in fast forward
|
||||||
|
trick speeds, including subtitles (thanks to Timo Eskola).
|
||||||
|
10
device.c
10
device.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: device.c 1.150 2008/02/08 13:48:31 kls Exp $
|
* $Id: device.c 1.151 2008/02/09 15:09:04 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -1231,7 +1231,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
|
|||||||
break;
|
break;
|
||||||
case 0xC0 ... 0xDF: // audio
|
case 0xC0 ... 0xDF: // audio
|
||||||
SetAvailableTrack(ttAudio, c - 0xC0, c);
|
SetAvailableTrack(ttAudio, c - 0xC0, c);
|
||||||
if (!VideoOnly && c == availableTracks[currentAudioTrack].id) {
|
if ((!VideoOnly || HasIBPTrickSpeed()) && c == availableTracks[currentAudioTrack].id) {
|
||||||
w = PlayAudio(Start, d, c);
|
w = PlayAudio(Start, d, c);
|
||||||
if (FirstLoop)
|
if (FirstLoop)
|
||||||
Audios.PlayAudio(Data, Length, c);
|
Audios.PlayAudio(Data, Length, c);
|
||||||
@ -1261,13 +1261,13 @@ pre_1_3_19_PrivateStreamDeteced:
|
|||||||
case 0x20: // SPU
|
case 0x20: // SPU
|
||||||
case 0x30: // SPU
|
case 0x30: // SPU
|
||||||
SetAvailableTrack(ttSubtitle, SubStreamIndex, SubStreamId);
|
SetAvailableTrack(ttSubtitle, SubStreamIndex, SubStreamId);
|
||||||
if (!VideoOnly && currentSubtitleTrack != ttNone && SubStreamId == availableTracks[currentSubtitleTrack].id)
|
if ((!VideoOnly || HasIBPTrickSpeed()) && currentSubtitleTrack != ttNone && SubStreamId == availableTracks[currentSubtitleTrack].id)
|
||||||
w = PlaySubtitle(Start, d);
|
w = PlaySubtitle(Start, d);
|
||||||
break;
|
break;
|
||||||
case 0x80: // AC3 & DTS
|
case 0x80: // AC3 & DTS
|
||||||
if (Setup.UseDolbyDigital) {
|
if (Setup.UseDolbyDigital) {
|
||||||
SetAvailableTrack(ttDolby, SubStreamIndex, SubStreamId);
|
SetAvailableTrack(ttDolby, SubStreamIndex, SubStreamId);
|
||||||
if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id) {
|
if ((!VideoOnly || HasIBPTrickSpeed()) && SubStreamId == availableTracks[currentAudioTrack].id) {
|
||||||
w = PlayAudio(Start, d, SubStreamId);
|
w = PlayAudio(Start, d, SubStreamId);
|
||||||
if (FirstLoop)
|
if (FirstLoop)
|
||||||
Audios.PlayAudio(Data, Length, SubStreamId);
|
Audios.PlayAudio(Data, Length, SubStreamId);
|
||||||
@ -1276,7 +1276,7 @@ pre_1_3_19_PrivateStreamDeteced:
|
|||||||
break;
|
break;
|
||||||
case 0xA0: // LPCM
|
case 0xA0: // LPCM
|
||||||
SetAvailableTrack(ttAudio, SubStreamIndex, SubStreamId);
|
SetAvailableTrack(ttAudio, SubStreamIndex, SubStreamId);
|
||||||
if (!VideoOnly && SubStreamId == availableTracks[currentAudioTrack].id) {
|
if ((!VideoOnly || HasIBPTrickSpeed()) && SubStreamId == availableTracks[currentAudioTrack].id) {
|
||||||
w = PlayAudio(Start, d, SubStreamId);
|
w = PlayAudio(Start, d, SubStreamId);
|
||||||
if (FirstLoop)
|
if (FirstLoop)
|
||||||
Audios.PlayAudio(Data, Length, SubStreamId);
|
Audios.PlayAudio(Data, Length, SubStreamId);
|
||||||
|
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 1.47 2007/10/13 12:20:58 kls Exp $
|
* $Id: dvbplayer.c 1.48 2008/02/09 15:10:54 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbplayer.h"
|
#include "dvbplayer.h"
|
||||||
@ -537,8 +537,10 @@ void cDvbPlayer::Pause(void)
|
|||||||
Play();
|
Play();
|
||||||
else {
|
else {
|
||||||
LOCK_THREAD;
|
LOCK_THREAD;
|
||||||
if (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))
|
if (playMode == pmFast || (playMode == pmSlow && playDir == pdBackward)) {
|
||||||
Empty();
|
if (!(DeviceHasIBPTrickSpeed() && playDir == pdForward))
|
||||||
|
Empty();
|
||||||
|
}
|
||||||
DeviceFreeze();
|
DeviceFreeze();
|
||||||
playMode = pmPause;
|
playMode = pmPause;
|
||||||
}
|
}
|
||||||
@ -548,8 +550,10 @@ void cDvbPlayer::Play(void)
|
|||||||
{
|
{
|
||||||
if (playMode != pmPlay) {
|
if (playMode != pmPlay) {
|
||||||
LOCK_THREAD;
|
LOCK_THREAD;
|
||||||
if (playMode == pmStill || playMode == pmFast || (playMode == pmSlow && playDir == pdBackward))
|
if (playMode == pmStill || playMode == pmFast || (playMode == pmSlow && playDir == pdBackward)) {
|
||||||
Empty();
|
if (!(DeviceHasIBPTrickSpeed() && playDir == pdForward))
|
||||||
|
Empty();
|
||||||
|
}
|
||||||
DevicePlay();
|
DevicePlay();
|
||||||
playMode = pmPlay;
|
playMode = pmPlay;
|
||||||
playDir = pdForward;
|
playDir = pdForward;
|
||||||
@ -572,7 +576,8 @@ void cDvbPlayer::Forward(void)
|
|||||||
// run into pmPlay
|
// run into pmPlay
|
||||||
case pmPlay: {
|
case pmPlay: {
|
||||||
LOCK_THREAD;
|
LOCK_THREAD;
|
||||||
Empty();
|
if (!(DeviceHasIBPTrickSpeed() && playDir == pdForward))
|
||||||
|
Empty();
|
||||||
DeviceMute();
|
DeviceMute();
|
||||||
playMode = pmFast;
|
playMode = pmFast;
|
||||||
playDir = pdForward;
|
playDir = pdForward;
|
||||||
|
Loading…
Reference in New Issue
Block a user