segment: add gst_segment_is_equal

It beats memcmp due to the 'reserved' fields.

API: gst_segment_is_equal()

Found via, but probably not directly linked to,
https://bugzilla.gnome.org/show_bug.cgi?id=738216
This commit is contained in:
Vincent Penquerc'h 2015-03-19 10:45:56 +00:00
parent 936b252253
commit d6ae9c0feb
4 changed files with 43 additions and 0 deletions

View file

@ -2516,6 +2516,7 @@ gst_segment_to_position
gst_segment_set_running_time gst_segment_set_running_time
gst_segment_copy_into gst_segment_copy_into
gst_segment_offset_running_time gst_segment_offset_running_time
gst_segment_is_equal
<SUBSECTION Standard> <SUBSECTION Standard>
GST_TYPE_SEGMENT GST_TYPE_SEGMENT
GST_TYPE_SEGMENT_FLAGS GST_TYPE_SEGMENT_FLAGS

View file

@ -830,3 +830,43 @@ gst_segment_offset_running_time (GstSegment * segment, GstFormat format,
} }
return TRUE; return TRUE;
} }
/**
* gst_segment_is_equal:
* @s0: a #GstSegment structure.
* @s1: a #GstSegment structure.
*
* Checks for two segments being equal. Equality here is defined
* as perfect equality, including floating point values.
*
* Since: 1.6
*
* Returns: %TRUE if the segments are equal, %FALSE otherwise.
*/
gboolean
gst_segment_is_equal (const GstSegment * s0, const GstSegment * s1)
{
if (s0->flags != s1->flags)
return FALSE;
if (s0->rate != s1->rate)
return FALSE;
if (s0->applied_rate != s1->applied_rate)
return FALSE;
if (s0->format != s1->format)
return FALSE;
if (s0->base != s1->base)
return FALSE;
if (s0->offset != s1->offset)
return FALSE;
if (s0->start != s1->start)
return FALSE;
if (s0->stop != s1->stop)
return FALSE;
if (s0->time != s1->time)
return FALSE;
if (s0->position != s1->position)
return FALSE;
if (s0->duration != s1->duration)
return FALSE;
return TRUE;
}

View file

@ -234,6 +234,7 @@ gboolean gst_segment_do_seek (GstSegment * segment, gdouble rate
GstFormat format, GstSeekFlags flags, GstFormat format, GstSeekFlags flags,
GstSeekType start_type, guint64 start, GstSeekType start_type, guint64 start,
GstSeekType stop_type, guint64 stop, gboolean * update); GstSeekType stop_type, guint64 stop, gboolean * update);
gboolean gst_segment_is_equal (const GstSegment * s0, const GstSegment * s1);
G_END_DECLS G_END_DECLS

View file

@ -1115,6 +1115,7 @@ EXPORTS
gst_search_mode_get_type gst_search_mode_get_type
gst_seek_flags_get_type gst_seek_flags_get_type
gst_seek_type_get_type gst_seek_type_get_type
gst_segment_is_equal
gst_segment_clip gst_segment_clip
gst_segment_copy gst_segment_copy
gst_segment_copy_into gst_segment_copy_into