summaryrefslogtreecommitdiff
path: root/subprojects/gst-plugins-good/gst/matroska/ebml-write.c
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/gst-plugins-good/gst/matroska/ebml-write.c')
-rw-r--r--subprojects/gst-plugins-good/gst/matroska/ebml-write.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/subprojects/gst-plugins-good/gst/matroska/ebml-write.c b/subprojects/gst-plugins-good/gst/matroska/ebml-write.c
index d676170e22..cd3e271d7b 100644
--- a/subprojects/gst-plugins-good/gst/matroska/ebml-write.c
+++ b/subprojects/gst-plugins-good/gst/matroska/ebml-write.c
@@ -52,7 +52,7 @@ gst_ebml_write_class_init (GstEbmlWriteClass * klass)
static void
gst_ebml_write_init (GstEbmlWrite * ebml)
{
- ebml->srcpad = NULL;
+ ebml->agg = NULL;
ebml->pos = 0;
ebml->last_pos = G_MAXUINT64; /* force segment event */
@@ -68,7 +68,7 @@ gst_ebml_write_finalize (GObject * object)
{
GstEbmlWrite *ebml = GST_EBML_WRITE (object);
- gst_object_unref (ebml->srcpad);
+ ebml->agg = NULL;
if (ebml->cache) {
gst_byte_writer_free (ebml->cache);
@@ -98,12 +98,12 @@ gst_ebml_write_finalize (GObject * object)
* Returns: a new #GstEbmlWrite
*/
GstEbmlWrite *
-gst_ebml_write_new (GstPad * srcpad)
+gst_ebml_write_new (GstAggregator * agg)
{
GstEbmlWrite *ebml =
GST_EBML_WRITE (g_object_new (GST_TYPE_EBML_WRITE, NULL));
- ebml->srcpad = gst_object_ref (srcpad);
+ ebml->agg = agg;
ebml->timestamp = GST_CLOCK_TIME_NONE;
gst_ebml_write_reset (ebml);
@@ -207,11 +207,10 @@ gst_ebml_write_set_cache (GstEbmlWrite * ebml, guint size)
ebml->cache_pos = ebml->pos;
}
-static gboolean
+static void
gst_ebml_writer_send_segment_event (GstEbmlWrite * ebml, guint64 new_pos)
{
GstSegment segment;
- gboolean res;
GST_INFO ("seeking to %" G_GUINT64_FORMAT, new_pos);
@@ -221,12 +220,7 @@ gst_ebml_writer_send_segment_event (GstEbmlWrite * ebml, guint64 new_pos)
segment.stop = -1;
segment.position = 0;
- res = gst_pad_push_event (ebml->srcpad, gst_event_new_segment (&segment));
-
- if (!res)
- GST_WARNING ("seek to %" G_GUINT64_FORMAT "failed", new_pos);
-
- return res;
+ gst_aggregator_update_segment (ebml->agg, &segment);
}
/**
@@ -268,7 +262,7 @@ gst_ebml_write_flush_cache (GstEbmlWrite * ebml, gboolean is_keyframe,
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
}
ebml->last_pos = ebml->pos;
- ebml->last_write_result = gst_pad_push (ebml->srcpad, buffer);
+ ebml->last_write_result = gst_aggregator_finish_buffer (ebml->agg, buffer);
} else {
gst_buffer_unref (buffer);
}
@@ -474,7 +468,7 @@ gst_ebml_write_element_push (GstEbmlWrite * ebml, GstBuffer * buf,
GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DISCONT);
}
ebml->last_pos = ebml->pos;
- ebml->last_write_result = gst_pad_push (ebml->srcpad, buf);
+ ebml->last_write_result = gst_aggregator_finish_buffer (ebml->agg, buf);
} else {
gst_buffer_unref (buf);
}