Hi,
I've got a fairly simple pipeline that generates incorrect timestamps. mpegpsdemux -> mpegvideoparse mpegpsdmux gives no timestamps whatsoever, all timestamps are gnerated by baseparse, however there are gaps in the timestamps because of following code in gstbaseparse.c /* move along with upstream timestamp (if any), * but interpolate in between */ timestamp = gst_adapter_prev_timestamp (parse->priv->adapter, NULL); if (GST_CLOCK_TIME_IS_VALID (timestamp) && (parse->priv->prev_ts != timestamp)) { parse->priv->prev_ts = parse->priv->next_ts = timestamp; } now I'm not sure yet what's wrong with the stream (if anything) that requires gstbaseparse to skip data but it doesn't seem right to try to interpolate timestamps in videostream (even though it does work for audio). Could anyone explain to me how this is supposed to work? Cheers, Matej _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Actually, nevermind. The mpegvideoparse doesn't seem to take picture
coding extension into account (which can affect frame duration). This seems to be the cause of my problems. -Matej On Thu, Nov 10, 2011 at 12:11 PM, Matej Knopp <[hidden email]> wrote: > Hi, > > I've got a fairly simple pipeline that generates incorrect timestamps. > > mpegpsdemux -> mpegvideoparse > > mpegpsdmux gives no timestamps whatsoever, all timestamps are gnerated > by baseparse, however there are gaps in the timestamps because of > following code in gstbaseparse.c > > /* move along with upstream timestamp (if any), > * but interpolate in between */ > timestamp = gst_adapter_prev_timestamp (parse->priv->adapter, NULL); > if (GST_CLOCK_TIME_IS_VALID (timestamp) && > (parse->priv->prev_ts != timestamp)) { > parse->priv->prev_ts = parse->priv->next_ts = timestamp; > } > > now I'm not sure yet what's wrong with the stream (if anything) that > requires gstbaseparse to skip data but it doesn't seem right to try to > interpolate timestamps in videostream (even though it does work for > audio). Could anyone explain to me how this is supposed to work? > > Cheers, > Matej > gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
This was a false alarm, turns out gstmpegvideoparser doesn't support
progressive frames which was the cause for timestamp distortion. patch attached[1] [1] https://bugzilla.gnome.org/show_bug.cgi?id=663782 On Thu, Nov 10, 2011 at 2:12 PM, Matej Knopp <[hidden email]> wrote: > Actually, nevermind. The mpegvideoparse doesn't seem to take picture > coding extension into account (which can affect frame duration). This > seems to be the cause of my problems. > > -Matej > > On Thu, Nov 10, 2011 at 12:11 PM, Matej Knopp <[hidden email]> wrote: >> Hi, >> >> I've got a fairly simple pipeline that generates incorrect timestamps. >> >> mpegpsdemux -> mpegvideoparse >> >> mpegpsdmux gives no timestamps whatsoever, all timestamps are gnerated >> by baseparse, however there are gaps in the timestamps because of >> following code in gstbaseparse.c >> >> /* move along with upstream timestamp (if any), >> * but interpolate in between */ >> timestamp = gst_adapter_prev_timestamp (parse->priv->adapter, NULL); >> if (GST_CLOCK_TIME_IS_VALID (timestamp) && >> (parse->priv->prev_ts != timestamp)) { >> parse->priv->prev_ts = parse->priv->next_ts = timestamp; >> } >> >> now I'm not sure yet what's wrong with the stream (if anything) that >> requires gstbaseparse to skip data but it doesn't seem right to try to >> interpolate timestamps in videostream (even though it does work for >> audio). Could anyone explain to me how this is supposed to work? >> >> Cheers, >> Matej >> > gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |