vlc | branch: master | Felix Paul Kühne <[email protected]> | Sun Mar 24 18:59:35 
2019 +0100| [c23839de0240ebec339e64f774cef2b09fa08bf4] | committer: Felix Paul 
Kühne

macosx/player controller: expose subtitles FPS

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c23839de0240ebec339e64f774cef2b09fa08bf4
---

 modules/gui/macosx/playlist/VLCPlayerController.h | 13 +++++++++++
 modules/gui/macosx/playlist/VLCPlayerController.m | 27 ++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/modules/gui/macosx/playlist/VLCPlayerController.h 
b/modules/gui/macosx/playlist/VLCPlayerController.h
index 06b5d65a33..aac55005be 100644
--- a/modules/gui/macosx/playlist/VLCPlayerController.h
+++ b/modules/gui/macosx/playlist/VLCPlayerController.h
@@ -129,6 +129,12 @@ extern NSString *VLCPlayerAudioDelayChanged;
 extern NSString *VLCPlayerSubtitlesDelayChanged;
 
 /**
+ * Listen to VLCPlayerSubtitlesFPSChanged to be notified if the subtitles FPS 
of the current media changes
+ * @note the affected player object will be the object of the notification
+ */
+extern NSString *VLCPlayerSubtitlesFPSChanged;
+
+/**
  * Listen to VLCPlayerRecordingChanged to be notified if the recording state 
of the current media changes
  * @note the affected player object will be the object of the notification
  */
@@ -480,6 +486,13 @@ extern NSString *VLCPlayerMuteChanged;
 @property (readwrite, nonatomic) vlc_tick_t subtitlesDelay;
 
 /**
+ * the subtitles fps to correct mismatch between video and text
+ * the default value shall be 1.0
+ * @note listen to VLCPlayerSubtitlesFPSChanged to be notified about changes 
to this property
+ */
+@property (readwrite, nonatomic) float subtitlesFPS;
+
+/**
  * a scale factor for text based subtitles, range 10 - 500, default 100
  * @warning this does not have any effect on bitmapped subtitles
  */
diff --git a/modules/gui/macosx/playlist/VLCPlayerController.m 
b/modules/gui/macosx/playlist/VLCPlayerController.m
index 8931ffa645..5d899b7805 100644
--- a/modules/gui/macosx/playlist/VLCPlayerController.m
+++ b/modules/gui/macosx/playlist/VLCPlayerController.m
@@ -48,6 +48,7 @@ NSString *VLCPlayerTeletextPageChanged = 
@"VLCPlayerTeletextPageChanged";
 NSString *VLCPlayerTeletextTransparencyChanged = 
@"VLCPlayerTeletextTransparencyChanged";
 NSString *VLCPlayerAudioDelayChanged = @"VLCPlayerAudioDelayChanged";
 NSString *VLCPlayerSubtitlesDelayChanged = @"VLCPlayerSubtitlesDelayChanged";
+NSString *VLCPlayerSubtitlesFPSChanged = @"VLCPlayerSubtitlesFPSChanged";
 NSString *VLCPlayerSubtitleTextScalingFactorChanged = 
@"VLCPlayerSubtitleTextScalingFactorChanged";
 NSString *VLCPlayerRecordingChanged = @"VLCPlayerRecordingChanged";
 NSString *VLCPlayerRendererChanged = @"VLCPlayerRendererChanged";
@@ -95,6 +96,7 @@ NSString *VLCPlayerMuteChanged = @"VLCPlayerMuteChanged";
 - (void)audioDelayChanged:(vlc_tick_t)audioDelay;
 - (void)rendererChanged:(vlc_renderer_item_t *)newRendererItem;
 - (void)subtitlesDelayChanged:(vlc_tick_t)subtitlesDelay;
+- (void)subtitlesFPSChanged:(float)subtitlesFPS;
 - (void)recordingChanged:(BOOL)recording;
 - (void)inputStatsUpdated:(VLCInputStats *)inputStats;
 - (void)stopActionChanged:(enum vlc_player_media_stopped_action)stoppedAction;
@@ -263,6 +265,15 @@ static void cb_player_subtitle_delay_changed(vlc_player_t 
*p_player, vlc_tick_t
     });
 }
 
+static void cb_player_associated_subs_fps_changed(vlc_player_t *p_player, 
float subs_fps, void *p_data)
+{
+    VLC_UNUSED(p_player);
+    dispatch_async(dispatch_get_main_queue(), ^{
+        VLCPlayerController *playerController = (__bridge VLCPlayerController 
*)p_data;
+        [playerController subtitlesFPSChanged:subs_fps];
+    });
+}
+
 static void cb_player_renderer_changed(vlc_player_t *p_player,
                                        vlc_renderer_item_t *p_new_renderer,
                                        void *p_data)
@@ -375,7 +386,7 @@ static const struct vlc_player_cbs player_callbacks = {
     cb_player_teletext_transparency_changed,
     cb_player_audio_delay_changed,
     cb_player_subtitle_delay_changed,
-    NULL, //cb_player_associated_subs_fps_changed,
+    cb_player_associated_subs_fps_changed,
     cb_player_renderer_changed,
     cb_player_record_changed,
     NULL, //cb_player_signal_changed,
@@ -1044,6 +1055,20 @@ static const struct vlc_player_aout_cbs 
player_aout_callbacks = {
     vlc_player_Unlock(_p_player);
 }
 
+- (void)subtitlesFPSChanged:(float)subtitlesFPS
+{
+    _subtitlesFPS = subtitlesFPS;
+    [_defaultNotificationCenter 
postNotificationName:VLCPlayerSubtitlesFPSChanged
+                                              object:self];
+}
+
+- (void)setSubtitlesFPS:(float)subtitlesFPS
+{
+    vlc_player_Lock(_p_player);
+    vlc_player_SetAssociatedSubsFPS(_p_player, subtitlesFPS);
+    vlc_player_Unlock(_p_player);
+}
+
 - (unsigned int)subtitleTextScalingFactor
 {
     unsigned int ret = 100;

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to