GST_STATIC_CAPS (RG_VOLUME_CAPS_TEMPLATE_STRING)
);
+static GstBuffer *test_buffer_new (gfloat value);
+
/* gstcheck sets up a chain function that appends buffers to a global list.
* This is our equivalent of that for event handling. */
static gboolean
}
static void
+send_newsegment_and_empty_buffer (void)
+{
+ GstBuffer *buf;
+ GstEvent *ev;
+
+ fail_unless (g_list_length (events) == 0);
+
+ ev = gst_event_new_new_segment (FALSE, 1.0, GST_FORMAT_TIME, 0, -1, 0);
+ fail_unless (gst_pad_push_event (mysrcpad, ev),
+ "Pushing newsegment event failed");
+
+ buf = test_buffer_new (0.0);
+ GST_BUFFER_SIZE (buf) = 0;
+ GST_BUFFER_DURATION (buf) = 0;
+ GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET (buf);
+ fail_unless (gst_pad_push (mysrcpad, buf) == GST_FLOW_OK);
+
+ fail_unless (g_list_length (events) == 1);
+ fail_unless (events->data == ev);
+ gst_mini_object_unref ((GstMiniObject *) events->data);
+ events = g_list_remove (events, ev);
+
+ fail_unless (g_list_length (buffers) == 1);
+ fail_unless (buffers->data == buf);
+ gst_mini_object_unref ((GstMiniObject *) buffers->data);
+ buffers = g_list_remove (buffers, buf);
+}
+
+static void
cleanup_rgvolume (GstElement * element)
{
GST_DEBUG ("cleanup_rgvolume");
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, +4.95, GST_TAG_TRACK_PEAK, 0.59463,
"pre-amp", -6.00, "fallback-gain", +1.23, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, -3.45, GST_TAG_TRACK_PEAK, 1.0,
"pre-amp", -6.00, "fallback-gain", -3.00, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, +3.5, GST_TAG_TRACK_PEAK, 1.0,
"pre-amp", -6.00, "fallback-gain", +1.23, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, +2.11, GST_TAG_TRACK_PEAK, 1.0, NULL);
"pre-amp", -6.00, "fallback-gain", +1.23, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_ALBUM_GAIN, +3.73, GST_TAG_ALBUM_PEAK, 1.0, NULL);
"pre-amp", +0.00, "fallback-gain", +1.23, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, +3.50, GST_TAG_TRACK_PEAK, 1.0, NULL);
"headroom", +0.00, "pre-amp", +0.00, "fallback-gain", +1.23, NULL);
set_playing_state (element);
+ send_newsegment_and_empty_buffer ();
+
tag_list = gst_tag_list_new ();
gst_tag_list_add (tag_list, GST_TAG_MERGE_REPLACE,
GST_TAG_TRACK_GAIN, 0.00, GST_TAG_TRACK_PEAK, 0.2,