player: Add audio-video-offset property and setter/getter API
authorBarun Kumar Singh <barun.singh@samsung.com>
Thu, 28 Apr 2016 09:49:17 +0000 (15:19 +0530)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 28 Apr 2016 10:18:41 +0000 (13:18 +0300)
https://bugzilla.gnome.org/show_bug.cgi?id=765315

docs/libs/gst-plugins-bad-libs-sections.txt
gst-libs/gst/player/gstplayer.c
gst-libs/gst/player/gstplayer.h
win32/common/libgstplayer.def

index 5e913bc..5014d89 100644 (file)
@@ -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
 
index 3ba51b2..5a01dc5 100644 (file)
@@ -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)
index f3bd09d..0ab4233 100644 (file)
@@ -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
 
index 609af69..53fab85 100644 (file)
@@ -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