diff options
Diffstat (limited to 'subprojects/gst-plugins-good/gst/matroska/ebml-write.c')
-rw-r--r-- | subprojects/gst-plugins-good/gst/matroska/ebml-write.c | 22 |
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); } |