mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-06 02:32:23 +00:00
player: API additions for subtitle-video-offset property
This new property contols the synchronisation offset between subtitles and video in nanoseconds. https://bugzilla.gnome.org/show_bug.cgi?id=797134
This commit is contained in:
parent
2e6e4cce0b
commit
de26abc88a
3 changed files with 63 additions and 0 deletions
|
@ -863,6 +863,9 @@ gst_player_set_multiview_flags
|
||||||
gst_player_get_audio_video_offset
|
gst_player_get_audio_video_offset
|
||||||
gst_player_set_audio_video_offset
|
gst_player_set_audio_video_offset
|
||||||
|
|
||||||
|
gst_player_get_text_video_offset
|
||||||
|
gst_player_set_text_video_offset
|
||||||
|
|
||||||
gst_player_get_rate
|
gst_player_get_rate
|
||||||
gst_player_set_rate
|
gst_player_set_rate
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_player_debug);
|
||||||
#define DEFAULT_RATE 1.0
|
#define DEFAULT_RATE 1.0
|
||||||
#define DEFAULT_POSITION_UPDATE_INTERVAL_MS 100
|
#define DEFAULT_POSITION_UPDATE_INTERVAL_MS 100
|
||||||
#define DEFAULT_AUDIO_VIDEO_OFFSET 0
|
#define DEFAULT_AUDIO_VIDEO_OFFSET 0
|
||||||
|
#define DEFAULT_SUBTITLE_VIDEO_OFFSET 0
|
||||||
|
|
||||||
GQuark
|
GQuark
|
||||||
gst_player_error_quark (void)
|
gst_player_error_quark (void)
|
||||||
|
@ -116,6 +117,7 @@ enum
|
||||||
PROP_VIDEO_MULTIVIEW_MODE,
|
PROP_VIDEO_MULTIVIEW_MODE,
|
||||||
PROP_VIDEO_MULTIVIEW_FLAGS,
|
PROP_VIDEO_MULTIVIEW_FLAGS,
|
||||||
PROP_AUDIO_VIDEO_OFFSET,
|
PROP_AUDIO_VIDEO_OFFSET,
|
||||||
|
PROP_SUBTITLE_VIDEO_OFFSET,
|
||||||
PROP_LAST
|
PROP_LAST
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -412,6 +414,11 @@ gst_player_class_init (GstPlayerClass * klass)
|
||||||
"The synchronisation offset between audio and video in nanoseconds",
|
"The synchronisation offset between audio and video in nanoseconds",
|
||||||
G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
param_specs[PROP_SUBTITLE_VIDEO_OFFSET] =
|
||||||
|
g_param_spec_int64 ("subtitle-video-offset", "Text Video Offset",
|
||||||
|
"The synchronisation offset between text and video in nanoseconds",
|
||||||
|
G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
g_object_class_install_properties (gobject_class, PROP_LAST, param_specs);
|
g_object_class_install_properties (gobject_class, PROP_LAST, param_specs);
|
||||||
|
|
||||||
signals[SIGNAL_URI_LOADED] =
|
signals[SIGNAL_URI_LOADED] =
|
||||||
|
@ -734,6 +741,9 @@ gst_player_set_property (GObject * object, guint prop_id,
|
||||||
case PROP_AUDIO_VIDEO_OFFSET:
|
case PROP_AUDIO_VIDEO_OFFSET:
|
||||||
g_object_set_property (G_OBJECT (self->playbin), "av-offset", value);
|
g_object_set_property (G_OBJECT (self->playbin), "av-offset", value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SUBTITLE_VIDEO_OFFSET:
|
||||||
|
g_object_set_property (G_OBJECT (self->playbin), "text-offset", value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -831,6 +841,9 @@ gst_player_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_AUDIO_VIDEO_OFFSET:
|
case PROP_AUDIO_VIDEO_OFFSET:
|
||||||
g_object_get_property (G_OBJECT (self->playbin), "av-offset", value);
|
g_object_get_property (G_OBJECT (self->playbin), "av-offset", value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SUBTITLE_VIDEO_OFFSET:
|
||||||
|
g_object_get_property (G_OBJECT (self->playbin), "text-offset", value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -4345,6 +4358,46 @@ gst_player_set_audio_video_offset (GstPlayer * self, gint64 offset)
|
||||||
g_object_set (self, "audio-video-offset", offset, NULL);
|
g_object_set (self, "audio-video-offset", offset, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_player_get_subtitle_video_offset:
|
||||||
|
* @player: #GstPlayer instance
|
||||||
|
*
|
||||||
|
* Retrieve the current value of subtitle-video-offset property
|
||||||
|
*
|
||||||
|
* Returns: The current value of subtitle-video-offset in nanoseconds
|
||||||
|
*
|
||||||
|
* Since 1.16
|
||||||
|
*/
|
||||||
|
gint64
|
||||||
|
gst_player_get_subtitle_video_offset (GstPlayer * self)
|
||||||
|
{
|
||||||
|
gint64 val = 0;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GST_IS_PLAYER (self), DEFAULT_SUBTITLE_VIDEO_OFFSET);
|
||||||
|
|
||||||
|
g_object_get (self, "subtitle-video-offset", &val, NULL);
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_player_set_subtitle_video_offset:
|
||||||
|
* @player: #GstPlayer instance
|
||||||
|
* @offset: #gint64 in nanoseconds
|
||||||
|
*
|
||||||
|
* Sets subtitle-video-offset property by value of @offset
|
||||||
|
*
|
||||||
|
* Since 1.16
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gst_player_set_subtitle_video_offset (GstPlayer * self, gint64 offset)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GST_IS_PLAYER (self));
|
||||||
|
|
||||||
|
g_object_set (self, "subtitle-video-offset", offset, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define C_ENUM(v) ((gint) v)
|
#define C_ENUM(v) ((gint) v)
|
||||||
#define C_FLAGS(v) ((guint) v)
|
#define C_FLAGS(v) ((guint) v)
|
||||||
|
|
||||||
|
|
|
@ -249,6 +249,13 @@ GST_PLAYER_API
|
||||||
void gst_player_set_audio_video_offset (GstPlayer * player,
|
void gst_player_set_audio_video_offset (GstPlayer * player,
|
||||||
gint64 offset);
|
gint64 offset);
|
||||||
|
|
||||||
|
GST_PLAYER_API
|
||||||
|
gint64 gst_player_get_subtitle_video_offset (GstPlayer * player);
|
||||||
|
|
||||||
|
GST_PLAYER_API
|
||||||
|
void gst_player_set_subtitle_video_offset (GstPlayer * player,
|
||||||
|
gint64 offset);
|
||||||
|
|
||||||
GST_PLAYER_API
|
GST_PLAYER_API
|
||||||
gboolean gst_player_set_config (GstPlayer * player,
|
gboolean gst_player_set_config (GstPlayer * player,
|
||||||
GstStructure * config);
|
GstStructure * config);
|
||||||
|
|
Loading…
Reference in a new issue