summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarun Kumar Singh <barun.singh@samsung.com>2016-04-28 15:19:17 +0530
committerSebastian Dröge <sebastian@centricular.com>2016-04-28 13:18:41 +0300
commitbf43460018eceb5942e7f0a135bc86f212b9f638 (patch)
treea180083101fac2f6acc3d3dd80e950dcf82b5798
parentb9cfa34118e023efb046a9eac78f1b5c275bf839 (diff)
player: Add audio-video-offset property and setter/getter API
https://bugzilla.gnome.org/show_bug.cgi?id=765315
-rw-r--r--docs/libs/gst-plugins-bad-libs-sections.txt3
-rw-r--r--gst-libs/gst/player/gstplayer.c52
-rw-r--r--gst-libs/gst/player/gstplayer.h4
-rw-r--r--win32/common/libgstplayer.def2
4 files changed, 60 insertions, 1 deletions
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index 5e913bcd59..5014d893f5 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -1750,6 +1750,9 @@ gst_player_set_multiview_mode
gst_player_get_multiview_flags
gst_player_set_multiview_flags
+gst_player_get_audio_video_offset
+gst_player_set_audio_video_offset
+
gst_player_get_rate
gst_player_set_rate
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 3ba51b2043..5a01dc5a9c 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -65,6 +65,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_player_debug);
#define DEFAULT_MUTE FALSE
#define DEFAULT_RATE 1.0
#define DEFAULT_POSITION_UPDATE_INTERVAL_MS 100
+#define DEFAULT_AUDIO_VIDEO_OFFSET 0
GQuark
gst_player_error_quark (void)
@@ -97,6 +98,7 @@ enum
PROP_POSITION_UPDATE_INTERVAL,
PROP_VIDEO_MULTIVIEW_MODE,
PROP_VIDEO_MULTIVIEW_FLAGS,
+ PROP_AUDIO_VIDEO_OFFSET,
PROP_LAST
};
@@ -342,6 +344,10 @@ gst_player_class_init (GstPlayerClass * klass)
GST_TYPE_VIDEO_MULTIVIEW_FLAGS, GST_VIDEO_MULTIVIEW_FLAGS_NONE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ param_specs[PROP_AUDIO_VIDEO_OFFSET] =
+ g_param_spec_int64 ("audio-video-offset", "Audio Video Offset",
+ "The synchronisation offset between audio 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);
@@ -600,6 +606,9 @@ gst_player_set_property (GObject * object, guint prop_id,
g_object_set_property (G_OBJECT (self->playbin), "video-multiview-flags",
value);
break;
+ case PROP_AUDIO_VIDEO_OFFSET:
+ g_object_set_property (G_OBJECT (self->playbin), "av-offset", value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -706,6 +715,9 @@ gst_player_get_property (GObject * object, guint prop_id,
g_value_get_flags (value));
break;
}
+ case PROP_AUDIO_VIDEO_OFFSET:
+ g_object_get_property (G_OBJECT (self->playbin), "av-offset", value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -3787,6 +3799,46 @@ gst_player_set_multiview_flags (GstPlayer * self, GstVideoMultiviewFlags flags)
g_object_set (self, "video-multiview-flags", flags, NULL);
}
+/**
+ * gst_player_get_audio_video_offset:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of audio-video-offset property
+ *
+ * Returns: The current value of audio-video-offset in nanoseconds
+ *
+ * Since 1.10
+ */
+gint64
+gst_player_get_audio_video_offset (GstPlayer * self)
+{
+ gint64 val = 0;
+
+ g_return_val_if_fail (GST_IS_PLAYER (self), DEFAULT_AUDIO_VIDEO_OFFSET);
+
+ g_object_get (self, "audio-video-offset", &val, NULL);
+
+ return val;
+}
+
+/**
+ * gst_player_set_audio_video_offset:
+ * @player: #GstPlayer instance
+ * @offset: #gint64 in nanoseconds
+ *
+ * Sets audio-video-offset property by value of @offset
+ *
+ * Returns: void
+ *
+ * Since 1.10
+ */
+void
+gst_player_set_audio_video_offset (GstPlayer * self, gint64 offset)
+{
+ g_return_if_fail (GST_IS_PLAYER (self));
+
+ g_object_set (self, "audio-video-offset", offset, NULL);
+}
#define C_ENUM(v) ((gint) v)
#define C_FLAGS(v) ((guint) v)
diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
index f3bd09d73d..0ab42333b2 100644
--- a/gst-libs/gst/player/gstplayer.h
+++ b/gst-libs/gst/player/gstplayer.h
@@ -188,7 +188,9 @@ GstVideoMultiviewFlags gst_player_get_multiview_flags (GstPlayer * player);
void gst_player_set_multiview_flags (GstPlayer * player,
GstVideoMultiviewFlags flags);
-
+gint64 gst_player_get_audio_video_offset (GstPlayer * player);
+void gst_player_set_audio_video_offset (GstPlayer * player,
+ gint64 offset);
G_END_DECLS
diff --git a/win32/common/libgstplayer.def b/win32/common/libgstplayer.def
index 609af692de..53fab85d3f 100644
--- a/win32/common/libgstplayer.def
+++ b/win32/common/libgstplayer.def
@@ -13,6 +13,7 @@ EXPORTS
gst_player_g_main_context_signal_dispatcher_get_type
gst_player_g_main_context_signal_dispatcher_new
gst_player_get_audio_streams
+ gst_player_get_audio_video_offset
gst_player_get_color_balance
gst_player_get_current_audio_track
gst_player_get_current_subtitle_track
@@ -50,6 +51,7 @@ EXPORTS
gst_player_seek
gst_player_set_audio_track
gst_player_set_audio_track_enabled
+ gst_player_set_audio_video_offset
gst_player_set_color_balance
gst_player_set_multiview_flags
gst_player_set_multiview_mode