mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 05:31:15 +00:00
mpegtsbase: Store incoming newsegments
This commit is contained in:
parent
f054eab77e
commit
b73679e13d
2 changed files with 27 additions and 4 deletions
|
@ -210,6 +210,8 @@ mpegts_base_reset (MpegTSBase * base)
|
||||||
/* base->pat = NULL; */
|
/* base->pat = NULL; */
|
||||||
/* pmt pids will be added and removed dynamically */
|
/* pmt pids will be added and removed dynamically */
|
||||||
|
|
||||||
|
gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED);
|
||||||
|
|
||||||
if (klass->reset)
|
if (klass->reset)
|
||||||
klass->reset (base);
|
klass->reset (base);
|
||||||
}
|
}
|
||||||
|
@ -241,6 +243,8 @@ mpegts_base_init (MpegTSBase * base, MpegTSBaseClass * klass)
|
||||||
base->mode = BASE_MODE_STREAMING;
|
base->mode = BASE_MODE_STREAMING;
|
||||||
base->seen_pat = FALSE;
|
base->seen_pat = FALSE;
|
||||||
base->first_pat_offset = -1;
|
base->first_pat_offset = -1;
|
||||||
|
|
||||||
|
gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1008,7 +1012,7 @@ mpegts_base_get_tags_from_eit (MpegTSBase * base, GstStructure * eit_info)
|
||||||
static gboolean
|
static gboolean
|
||||||
mpegts_base_sink_event (GstPad * pad, GstEvent * event)
|
mpegts_base_sink_event (GstPad * pad, GstEvent * event)
|
||||||
{
|
{
|
||||||
gboolean res;
|
gboolean res = TRUE;
|
||||||
MpegTSBase *base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad)));
|
MpegTSBase *base = GST_MPEGTS_BASE (gst_object_get_parent (GST_OBJECT (pad)));
|
||||||
|
|
||||||
GST_WARNING_OBJECT (base, "Got event %s",
|
GST_WARNING_OBJECT (base, "Got event %s",
|
||||||
|
@ -1016,11 +1020,27 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event)
|
||||||
|
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
case GST_EVENT_NEWSEGMENT:
|
case GST_EVENT_NEWSEGMENT:
|
||||||
/* FIXME : STORE NEW SEGMENT ! */
|
{
|
||||||
|
gboolean update;
|
||||||
|
gdouble rate, applied_rate;
|
||||||
|
GstFormat format;
|
||||||
|
gint64 start, stop, position;
|
||||||
|
|
||||||
|
gst_event_parse_new_segment_full (event, &update, &rate, &applied_rate,
|
||||||
|
&format, &start, &stop, &position);
|
||||||
|
GST_DEBUG_OBJECT (base,
|
||||||
|
"Segment update:%d, rate:%f, applied_rate:%f, format:%s", update,
|
||||||
|
rate, applied_rate, gst_format_get_name (format));
|
||||||
|
GST_DEBUG_OBJECT (base,
|
||||||
|
" start:%" G_GINT64_FORMAT ", stop:%" G_GINT64_FORMAT
|
||||||
|
", position:%" G_GINT64_FORMAT, start, stop, position);
|
||||||
|
gst_segment_set_newsegment_full (&base->segment, update, rate,
|
||||||
|
applied_rate, format, start, stop, position);
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
res = FALSE;
|
}
|
||||||
break;
|
break;
|
||||||
case GST_EVENT_FLUSH_START:
|
case GST_EVENT_FLUSH_START:
|
||||||
|
gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED);
|
||||||
mpegts_packetizer_flush (base->packetizer);
|
mpegts_packetizer_flush (base->packetizer);
|
||||||
/* Passthrough */
|
/* Passthrough */
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -120,8 +120,11 @@ struct _MpegTSBase {
|
||||||
/* Whether we saw a PAT yet */
|
/* Whether we saw a PAT yet */
|
||||||
gboolean seen_pat;
|
gboolean seen_pat;
|
||||||
|
|
||||||
/*Offset from the origin to the first PAT (pullmode) */
|
/* Offset from the origin to the first PAT (pullmode) */
|
||||||
guint64 first_pat_offset;
|
guint64 first_pat_offset;
|
||||||
|
|
||||||
|
/* Upstream segment */
|
||||||
|
GstSegment segment;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _MpegTSBaseClass {
|
struct _MpegTSBaseClass {
|
||||||
|
|
Loading…
Reference in a new issue