diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/resindvd/gstmpegdemux.c | 21 | ||||
-rw-r--r-- | ext/resindvd/resindvdbin.c | 50 |
2 files changed, 62 insertions, 9 deletions
diff --git a/ext/resindvd/gstmpegdemux.c b/ext/resindvd/gstmpegdemux.c index 87e6ffbbb..fe934832f 100644 --- a/ext/resindvd/gstmpegdemux.c +++ b/ext/resindvd/gstmpegdemux.c @@ -920,7 +920,8 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) GST_DEBUG_OBJECT (demux, "demux: received new segment start %" G_GINT64_FORMAT " stop %" - G_GINT64_FORMAT " time %" G_GINT64_FORMAT, start, stop, time); + G_GINT64_FORMAT " time %" G_GINT64_FORMAT + " base %" G_GINT64_FORMAT, start, stop, time, base); adjust = base - start + SCR_MUNGE; start = base + SCR_MUNGE; @@ -937,20 +938,22 @@ gst_flups_demux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) stop = demux->src_segment.position; } - GST_DEBUG_OBJECT (demux, - "sending new segment: rate %g format %d, start: %" - G_GINT64_FORMAT ", stop: %" G_GINT64_FORMAT ", time: %" - G_GINT64_FORMAT " scr_adjust: %" G_GINT64_FORMAT "(%" GST_TIME_FORMAT - ")", segment->rate, segment->format, start, stop, time, - demux->scr_adjust, - GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->scr_adjust))); - demux->src_segment.rate = segment->rate; demux->src_segment.applied_rate = segment->applied_rate; demux->src_segment.format = segment->format; demux->src_segment.start = start; demux->src_segment.stop = stop; demux->src_segment.time = time; + demux->src_segment.base = base; + + GST_DEBUG_OBJECT (demux, + "sending new segment: rate %g format %d, start: %" + G_GINT64_FORMAT ", stop: %" G_GINT64_FORMAT ", time: %" + G_GINT64_FORMAT ", base: %" G_GINT64_FORMAT + ", scr_adjust: %" G_GINT64_FORMAT "(%" GST_TIME_FORMAT ")", + segment->rate, segment->format, start, stop, time, base, + demux->scr_adjust, + GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->scr_adjust))); if (demux->in_still && stop != -1) { /* Generate gap buffers, due to closing segment from a still-frame */ diff --git a/ext/resindvd/resindvdbin.c b/ext/resindvd/resindvdbin.c index c70f7b39d..2ffb4b5cc 100644 --- a/ext/resindvd/resindvdbin.c +++ b/ext/resindvd/resindvdbin.c @@ -353,6 +353,49 @@ _pad_block_destroy_notify (RsnDvdBinPadBlockCtx * ctx) g_slice_free (RsnDvdBinPadBlockCtx, ctx); } +#if DEBUG_TIMING +static GstPadProbeReturn +dvdbin_dump_timing_info (GstPad * opad, + GstPadProbeInfo * info, gpointer userdata) +{ + if (GST_PAD_PROBE_INFO_TYPE (info) & (GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | + GST_PAD_PROBE_TYPE_EVENT_FLUSH)) { + GstEvent *event = GST_PAD_PROBE_INFO_EVENT (info); + if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { + const GstSegment *seg; + + gst_event_parse_segment (event, &seg); + + g_print ("%s:%s segment: rate %g format %d, start: %" + GST_TIME_FORMAT ", stop: %" GST_TIME_FORMAT ", time: %" + GST_TIME_FORMAT " base: %" GST_TIME_FORMAT "\n", + GST_DEBUG_PAD_NAME (opad), + seg->rate, seg->format, GST_TIME_ARGS (seg->start), + GST_TIME_ARGS (seg->stop), GST_TIME_ARGS (seg->time), + GST_TIME_ARGS (seg->base)); + } else if (GST_EVENT_TYPE (event) == GST_EVENT_GAP) { + GstClockTime ts, dur, end; + gst_event_parse_gap (event, &ts, &dur); + end = ts; + if (ts != GST_CLOCK_TIME_NONE && dur != GST_CLOCK_TIME_NONE) + end += dur; + g_print ("%s:%s Gap TS: %" GST_TIME_FORMAT " dur %" GST_TIME_FORMAT + " (to %" GST_TIME_FORMAT ")\n", GST_DEBUG_PAD_NAME (opad), + GST_TIME_ARGS (ts), GST_TIME_ARGS (dur), GST_TIME_ARGS (end)); + } else if (GST_EVENT_TYPE (event) == GST_EVENT_FLUSH_STOP) { + g_print ("%s:%s FLUSHED\n", GST_DEBUG_PAD_NAME (opad)); + } + } + if (GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_BUFFER) { + GstBuffer *buf = GST_PAD_PROBE_INFO_BUFFER (info); + g_print ("%s:%s Buffer PTS %" GST_TIME_FORMAT " duration %" GST_TIME_FORMAT + "\n", GST_DEBUG_PAD_NAME (opad), GST_TIME_ARGS (GST_BUFFER_PTS (buf)), + GST_TIME_ARGS (GST_BUFFER_DURATION (buf))); + } + return GST_PAD_PROBE_OK; +} +#endif + static gboolean try_link_pieces (GstElement * e1, const gchar * pad1, GstElement * e2, const gchar * pad2) @@ -466,6 +509,13 @@ create_elements (RsnDvdBin * dvdbin) gst_object_unref (src); src = NULL; +#if DEBUG_TIMING + gst_pad_add_probe (dvdbin->video_pad, + GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | GST_PAD_PROBE_TYPE_BUFFER | + GST_PAD_PROBE_TYPE_EVENT_FLUSH, + (GstPadProbeCallback) dvdbin_dump_timing_info, NULL, NULL); +#endif + /* FIXME: Merge stream-selection logic to core and switch back */ if (!try_create_piece (dvdbin, DVD_ELEM_SPU_SELECT, NULL, RSN_TYPE_INPUT_SELECTOR, "subpselect", "Subpicture stream selector")) |