GstBaseParse broken for video streams?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

GstBaseParse broken for video streams?

Matej Knopp
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
Reply | Threaded
Open this post in threaded view
|

Re: GstBaseParse broken for video streams?

Matej Knopp
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
Reply | Threaded
Open this post in threaded view
|

Re: GstBaseParse broken for video streams?

Matej Knopp
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