mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Implemented the cStatus, cDevice and cPlayer functions for setting subtitle tracks in plugins
This commit is contained in:
		| @@ -1968,6 +1968,8 @@ Petri Hintukainen <Petri.Hintukainen@hut.fi> | ||||
|  for pointing out that plugins from cRemote::PutMacro() and cRemote::CallPlugin() | ||||
|  need to be handled separately | ||||
|  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> | ||||
|  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). | ||||
|   This prevents VDR from accidentally deleting recordings on other file systems, | ||||
|   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 | ||||
|  * 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" | ||||
| @@ -890,6 +890,10 @@ void cDevice::SetAudioTrackDevice(eTrackType Type) | ||||
| { | ||||
| } | ||||
|  | ||||
| void cDevice::SetSubtitleTrackDevice(eTrackType Type) | ||||
| { | ||||
| } | ||||
|  | ||||
| bool cDevice::ToggleMute(void) | ||||
| { | ||||
|   int OldVolume = volume; | ||||
| @@ -1037,6 +1041,10 @@ bool cDevice::SetCurrentSubtitleTrack(eTrackType Type, bool Manual) | ||||
|         DELETENULL(dvbSubtitleConverter); | ||||
|         } | ||||
|      DELETENULL(liveSubtitle); | ||||
|      if (player) | ||||
|         player->SetSubtitleTrack(currentSubtitleTrack, GetTrack(currentSubtitleTrack)); | ||||
|      else | ||||
|         SetSubtitleTrackDevice(currentSubtitleTrack); | ||||
|      if (currentSubtitleTrack != ttNone && !Replaying() && !Transferring()) { | ||||
|         const tTrackId *TrackId = GetTrack(currentSubtitleTrack); | ||||
|         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 | ||||
|  * 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 | ||||
| @@ -386,6 +386,8 @@ private: | ||||
| protected: | ||||
|   virtual void SetAudioTrackDevice(eTrackType Type); | ||||
|        ///< Sets the current audio track to the given value. | ||||
|   virtual void SetSubtitleTrackDevice(eTrackType Type); | ||||
|        ///< Sets the current subtitle track to the given value. | ||||
| public: | ||||
|   void ClrAvailableTracks(bool DescriptionsOnly = false, bool IdsOnly = false); | ||||
|        ///< 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 | ||||
|  * 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" | ||||
| @@ -3702,7 +3702,7 @@ void cDisplaySubtitleTracks::Show(void) | ||||
| { | ||||
|   displayTracks->SetTrack(track, descriptions); | ||||
|   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) | ||||
|   | ||||
							
								
								
									
										7
									
								
								player.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								player.h
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * 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 | ||||
| @@ -22,6 +22,7 @@ protected: | ||||
|   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 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 DeviceFlush(int TimeoutMs = 0) { return device ? device->Flush(TimeoutMs) : true; } | ||||
|   bool DeviceHasIBPTrickSpeed(void) { return device ? device->HasIBPTrickSpeed() : false; } | ||||
| @@ -58,6 +59,10 @@ public: | ||||
|        // Sets the current audio track to the given value. | ||||
|        // This is just a virtual hook for players that need to do special things | ||||
|        // 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 { | ||||
|   | ||||
							
								
								
									
										8
									
								
								status.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								status.c
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * 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" | ||||
| @@ -59,6 +59,12 @@ void cStatus::MsgSetAudioChannel(int 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) | ||||
| { | ||||
|   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 | ||||
|  * 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 | ||||
| @@ -44,6 +44,9 @@ protected: | ||||
|   virtual void SetAudioChannel(int AudioChannel) {} | ||||
|                // The audio channel has been set to the given value. | ||||
|                // 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) {} | ||||
|                // The OSD has been cleared. | ||||
|   virtual void OsdTitle(const char *Title) {} | ||||
| @@ -77,6 +80,7 @@ public: | ||||
|   static void MsgSetVolume(int Volume, bool Absolute); | ||||
|   static void MsgSetAudioTrack(int Index, const char * const *Tracks); | ||||
|   static void MsgSetAudioChannel(int AudioChannel); | ||||
|   static void MsgSetSubtitleTrack(int Index, const char * const *Tracks); | ||||
|   static void MsgOsdClear(void); | ||||
|   static void MsgOsdTitle(const char *Title); | ||||
|   static void MsgOsdStatusMessage(const char *Message); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user