Add subtitle scale option to video player backend

This commit is contained in:
Avery 2023-12-02 16:10:23 -05:00
parent 26518e04b3
commit 8025156a25
10 changed files with 46 additions and 2 deletions

View File

@ -18,3 +18,4 @@ repos:
args: ["--", "-Dwarnings"]
- id: cargo-test
- id: cargo-fmt
exclude: video_player_mpv/

View File

@ -95,6 +95,9 @@ pub trait VideoPlayerBackend: fmt::Debug {
/// Set the current audio track.
fn set_audio_track(&self, audio_track_id: Option<usize>);
/// Set Subtitle scale.
fn set_subtitle_scale(&self, subtitle_scale: f64);
/// Get notified when video player reaches the end of the current video.
fn connect_end_of_stream(&mut self, callback: Box<dyn Fn() + Send + 'static>);

View File

@ -208,6 +208,10 @@ impl VideoPlayerBackend for VideoPlayerBackendMpv {
.set_audio_track(audio_track_id.map(|id| id as u32).unwrap_or(0));
}
fn set_subtitle_scale(&self, subtitle_scale: f64) {
self.widget.set_subtitle_scale(subtitle_scale);
}
fn disconnect_signal_handler(&mut self, id: &Uuid) {
match self.signal_handler_ids.remove(id) {
Some(signal_handler_id) => {

View File

@ -1,3 +1,3 @@
Generated by gir (https://github.com/gtk-rs/gir @ 428c880ecf0b)
from sys/build (@ 6aaf92b050cd)
from sys/build (@ c9cffe18b7d6)
from sys/gir-files (@ 20031a537e40)

View File

@ -111,6 +111,13 @@ impl VideoPlayerMpv {
}
}
#[doc(alias = "vpm_video_player_mpv_set_subtitle_scale")]
pub fn set_subtitle_scale(&self, subtitle_scale: f64) {
unsafe {
ffi::vpm_video_player_mpv_set_subtitle_scale(self.to_glib_none().0, subtitle_scale);
}
}
#[doc(alias = "vpm_video_player_mpv_set_subtitle_track")]
pub fn set_subtitle_track(&self, subtitle_track_id: u32) {
unsafe {

View File

@ -378,6 +378,22 @@ and/or use gtk-doc annotations. -->
</parameter>
</parameters>
</method>
<method name="set_subtitle_scale"
c:identifier="vpm_video_player_mpv_set_subtitle_scale">
<source-position filename="video-player-mpv/video-player-mpv.h"
line="39"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="self" transfer-ownership="none">
<type name="VideoPlayerMpv" c:type="VpmVideoPlayerMpv*"/>
</instance-parameter>
<parameter name="subtitle_scale" transfer-ownership="none">
<type name="gdouble" c:type="double"/>
</parameter>
</parameters>
</method>
<method name="set_subtitle_track"
c:identifier="vpm_video_player_mpv_set_subtitle_track">
<source-position filename="video-player-mpv/video-player-mpv.h"

View File

@ -1,3 +1,3 @@
Generated by gir (https://github.com/gtk-rs/gir @ 428c880ecf0b)
from build (@ 6aaf92b050cd)
from build (@ 26518e04b345)
from gir-files (@ 20031a537e40)

View File

@ -136,6 +136,10 @@ extern "C" {
audio_track_id: c_uint,
);
pub fn vpm_video_player_mpv_set_mute(self_: *mut VpmVideoPlayerMpv, mute: bool);
pub fn vpm_video_player_mpv_set_subtitle_scale(
self_: *mut VpmVideoPlayerMpv,
subtitle_scale: c_double,
);
pub fn vpm_video_player_mpv_set_subtitle_track(
self_: *mut VpmVideoPlayerMpv,
subtitle_track_id: c_uint,

View File

@ -460,3 +460,9 @@ void vpm_video_player_mpv_set_subtitle_track(VpmVideoPlayerMpv *self,
uint64_t id = (uint64_t)subtitle_track_id;
mpv_set_property(self->mpv_ctx->handle, "sid", MPV_FORMAT_INT64, &id);
}
void vpm_video_player_mpv_set_subtitle_scale(VpmVideoPlayerMpv *self,
double subtitle_scale) {
mpv_set_option(self->mpv_ctx->handle, "sub-scale", MPV_FORMAT_DOUBLE,
&subtitle_scale);
}

View File

@ -36,4 +36,7 @@ int vpm_video_player_mpv_current_subtitle_track(VpmVideoPlayerMpv *self);
void vpm_video_player_mpv_set_subtitle_track(VpmVideoPlayerMpv *self,
uint subtitle_track_id);
void vpm_video_player_mpv_set_subtitle_scale(VpmVideoPlayerMpv *self,
double subtitle_scale);
G_END_DECLS