mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks in plugins
This commit is contained in:
parent
741400fa66
commit
6b35173789
@ -1968,6 +1968,8 @@ Petri Hintukainen <Petri.Hintukainen@hut.fi>
|
|||||||
for pointing out that plugins from cRemote::PutMacro() and cRemote::CallPlugin()
|
for pointing out that plugins from cRemote::PutMacro() and cRemote::CallPlugin()
|
||||||
need to be handled separately
|
need to be handled separately
|
||||||
for making cTimeMs use the monotonic clock
|
for making cTimeMs use the monotonic clock
|
||||||
|
for implementing the cStatus, cDevice and cPlayer functions for setting subtitle
|
||||||
|
tracks in plugins
|
||||||
|
|
||||||
Marcel Schaeben <mts280@gmx.de>
|
Marcel Schaeben <mts280@gmx.de>
|
||||||
for his "Easy Input" patch
|
for his "Easy Input" patch
|
||||||
|
2
HISTORY
2
HISTORY
@ -5631,3 +5631,5 @@ Video Disk Recorder Revision History
|
|||||||
recordings are removed, that actually are on the video directory file system(s).
|
recordings are removed, that actually are on the video directory file system(s).
|
||||||
This prevents VDR from accidentally deleting recordings on other file systems,
|
This prevents VDR from accidentally deleting recordings on other file systems,
|
||||||
which would not add any free space to the video directory.
|
which would not add any free space to the video directory.
|
||||||
|
- Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks
|
||||||
|
in plugins (thanks to Petri Hintukainen).
|
||||||
|
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.152 2008/02/09 16:10:56 kls Exp $
|
* $Id: device.c 1.153 2008/02/16 13:52:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -890,6 +890,10 @@ void cDevice::SetAudioTrackDevice(eTrackType Type)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cDevice::SetSubtitleTrackDevice(eTrackType Type)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
bool cDevice::ToggleMute(void)
|
bool cDevice::ToggleMute(void)
|
||||||
{
|
{
|
||||||
int OldVolume = volume;
|
int OldVolume = volume;
|
||||||
@ -1037,6 +1041,10 @@ bool cDevice::SetCurrentSubtitleTrack(eTrackType Type, bool Manual)
|
|||||||
DELETENULL(dvbSubtitleConverter);
|
DELETENULL(dvbSubtitleConverter);
|
||||||
}
|
}
|
||||||
DELETENULL(liveSubtitle);
|
DELETENULL(liveSubtitle);
|
||||||
|
if (player)
|
||||||
|
player->SetSubtitleTrack(currentSubtitleTrack, GetTrack(currentSubtitleTrack));
|
||||||
|
else
|
||||||
|
SetSubtitleTrackDevice(currentSubtitleTrack);
|
||||||
if (currentSubtitleTrack != ttNone && !Replaying() && !Transferring()) {
|
if (currentSubtitleTrack != ttNone && !Replaying() && !Transferring()) {
|
||||||
const tTrackId *TrackId = GetTrack(currentSubtitleTrack);
|
const tTrackId *TrackId = GetTrack(currentSubtitleTrack);
|
||||||
if (TrackId && TrackId->id) {
|
if (TrackId && TrackId->id) {
|
||||||
|
4
device.h
4
device.h
@ -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.h 1.89 2008/02/09 16:05:24 kls Exp $
|
* $Id: device.h 1.90 2008/02/16 13:50:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -386,6 +386,8 @@ private:
|
|||||||
protected:
|
protected:
|
||||||
virtual void SetAudioTrackDevice(eTrackType Type);
|
virtual void SetAudioTrackDevice(eTrackType Type);
|
||||||
///< Sets the current audio track to the given value.
|
///< Sets the current audio track to the given value.
|
||||||
|
virtual void SetSubtitleTrackDevice(eTrackType Type);
|
||||||
|
///< Sets the current subtitle track to the given value.
|
||||||
public:
|
public:
|
||||||
void ClrAvailableTracks(bool DescriptionsOnly = false, bool IdsOnly = false);
|
void ClrAvailableTracks(bool DescriptionsOnly = false, bool IdsOnly = false);
|
||||||
///< Clears the list of currently availabe tracks. If DescriptionsOnly
|
///< Clears the list of currently availabe tracks. If DescriptionsOnly
|
||||||
|
4
menu.c
4
menu.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: menu.c 1.476 2008/02/16 12:04:12 kls Exp $
|
* $Id: menu.c 1.477 2008/02/16 13:53:26 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -3702,7 +3702,7 @@ void cDisplaySubtitleTracks::Show(void)
|
|||||||
{
|
{
|
||||||
displayTracks->SetTrack(track, descriptions);
|
displayTracks->SetTrack(track, descriptions);
|
||||||
displayTracks->Flush();
|
displayTracks->Flush();
|
||||||
//cStatus::MsgSetSubtitleTrack(track, descriptions); //TODO better make a more general cStatus::MsgSetTrack(tr("Subtitles"), track, descriptions)
|
cStatus::MsgSetSubtitleTrack(track, descriptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
cDisplaySubtitleTracks *cDisplaySubtitleTracks::Create(void)
|
cDisplaySubtitleTracks *cDisplaySubtitleTracks::Create(void)
|
||||||
|
7
player.h
7
player.h
@ -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: player.h 1.20 2007/10/13 12:18:10 kls Exp $
|
* $Id: player.h 1.21 2008/02/16 13:50:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __PLAYER_H
|
#ifndef __PLAYER_H
|
||||||
@ -22,6 +22,7 @@ protected:
|
|||||||
void DeviceClrAvailableTracks(bool DescriptionsOnly = false) { if (device) device->ClrAvailableTracks(DescriptionsOnly); }
|
void DeviceClrAvailableTracks(bool DescriptionsOnly = false) { if (device) device->ClrAvailableTracks(DescriptionsOnly); }
|
||||||
bool DeviceSetAvailableTrack(eTrackType Type, int Index, uint16_t Id, const char *Language = NULL, const char *Description = NULL) { return device ? device->SetAvailableTrack(Type, Index, Id, Language, Description) : false; }
|
bool DeviceSetAvailableTrack(eTrackType Type, int Index, uint16_t Id, const char *Language = NULL, const char *Description = NULL) { return device ? device->SetAvailableTrack(Type, Index, Id, Language, Description) : false; }
|
||||||
bool DeviceSetCurrentAudioTrack(eTrackType Type) { return device ? device->SetCurrentAudioTrack(Type) : false; }
|
bool DeviceSetCurrentAudioTrack(eTrackType Type) { return device ? device->SetCurrentAudioTrack(Type) : false; }
|
||||||
|
bool DeviceSetCurrentSubtitleTrack(eTrackType Type) { return device ? device->SetCurrentSubtitleTrack(Type) : false; }
|
||||||
bool DevicePoll(cPoller &Poller, int TimeoutMs = 0) { return device ? device->Poll(Poller, TimeoutMs) : false; }
|
bool DevicePoll(cPoller &Poller, int TimeoutMs = 0) { return device ? device->Poll(Poller, TimeoutMs) : false; }
|
||||||
bool DeviceFlush(int TimeoutMs = 0) { return device ? device->Flush(TimeoutMs) : true; }
|
bool DeviceFlush(int TimeoutMs = 0) { return device ? device->Flush(TimeoutMs) : true; }
|
||||||
bool DeviceHasIBPTrickSpeed(void) { return device ? device->HasIBPTrickSpeed() : false; }
|
bool DeviceHasIBPTrickSpeed(void) { return device ? device->HasIBPTrickSpeed() : false; }
|
||||||
@ -58,6 +59,10 @@ public:
|
|||||||
// Sets the current audio track to the given value.
|
// Sets the current audio track to the given value.
|
||||||
// This is just a virtual hook for players that need to do special things
|
// This is just a virtual hook for players that need to do special things
|
||||||
// in order to switch audio tracks.
|
// in order to switch audio tracks.
|
||||||
|
virtual void SetSubtitleTrack(eTrackType Type, const tTrackId *TrackId) {}
|
||||||
|
// Sets the current subtitle track to the given value.
|
||||||
|
// This is just a virtual hook for players that need to do special things
|
||||||
|
// in order to switch subtitle tracks.
|
||||||
};
|
};
|
||||||
|
|
||||||
class cControl : public cOsdObject {
|
class cControl : public cOsdObject {
|
||||||
|
8
status.c
8
status.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: status.c 1.8 2005/12/31 15:10:10 kls Exp $
|
* $Id: status.c 1.9 2008/02/16 13:50:15 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "status.h"
|
#include "status.h"
|
||||||
@ -59,6 +59,12 @@ void cStatus::MsgSetAudioChannel(int AudioChannel)
|
|||||||
sm->SetAudioChannel(AudioChannel);
|
sm->SetAudioChannel(AudioChannel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cStatus::MsgSetSubtitleTrack(int Index, const char * const *Tracks)
|
||||||
|
{
|
||||||
|
for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
|
||||||
|
sm->SetSubtitleTrack(Index, Tracks);
|
||||||
|
}
|
||||||
|
|
||||||
void cStatus::MsgOsdClear(void)
|
void cStatus::MsgOsdClear(void)
|
||||||
{
|
{
|
||||||
for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
|
for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
|
||||||
|
6
status.h
6
status.h
@ -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: status.h 1.10 2007/08/12 10:34:40 kls Exp $
|
* $Id: status.h 1.11 2008/02/16 13:50:15 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __STATUS_H
|
#ifndef __STATUS_H
|
||||||
@ -44,6 +44,9 @@ protected:
|
|||||||
virtual void SetAudioChannel(int AudioChannel) {}
|
virtual void SetAudioChannel(int AudioChannel) {}
|
||||||
// The audio channel has been set to the given value.
|
// The audio channel has been set to the given value.
|
||||||
// 0=stereo, 1=left, 2=right, -1=no information available.
|
// 0=stereo, 1=left, 2=right, -1=no information available.
|
||||||
|
virtual void SetSubtitleTrack(int Index, const char * const *Tracks) {}
|
||||||
|
// The subtitle track has been set to the one given by Index, which
|
||||||
|
// points into the Tracks array of strings. Tracks is NULL terminated.
|
||||||
virtual void OsdClear(void) {}
|
virtual void OsdClear(void) {}
|
||||||
// The OSD has been cleared.
|
// The OSD has been cleared.
|
||||||
virtual void OsdTitle(const char *Title) {}
|
virtual void OsdTitle(const char *Title) {}
|
||||||
@ -77,6 +80,7 @@ public:
|
|||||||
static void MsgSetVolume(int Volume, bool Absolute);
|
static void MsgSetVolume(int Volume, bool Absolute);
|
||||||
static void MsgSetAudioTrack(int Index, const char * const *Tracks);
|
static void MsgSetAudioTrack(int Index, const char * const *Tracks);
|
||||||
static void MsgSetAudioChannel(int AudioChannel);
|
static void MsgSetAudioChannel(int AudioChannel);
|
||||||
|
static void MsgSetSubtitleTrack(int Index, const char * const *Tracks);
|
||||||
static void MsgOsdClear(void);
|
static void MsgOsdClear(void);
|
||||||
static void MsgOsdTitle(const char *Title);
|
static void MsgOsdTitle(const char *Title);
|
||||||
static void MsgOsdStatusMessage(const char *Message);
|
static void MsgOsdStatusMessage(const char *Message);
|
||||||
|
Loading…
Reference in New Issue
Block a user