Video stream timestamps problem!
Edward Hervey
bilboed at gmail.com
Sun Dec 16 23:35:37 PST 2012
Hi,
The freescale gstreamer decoder elements are known to have atrociously
bad timestamp management (read : the correlation between the timestamps
provided to the decoder and the timestamps coming out are completely
nuts).
There's not much you can do until freescale (or someone else) fixes
that.
The issue could be mitigated by basing those plugins off the base
GstVideoDecoder classes (which has proper timestamp handling) ... and
hope the VPU firmware no longer has issues regarding frame corruption.
Another option is using the gst-ffmpeg decoder plugins (but then you
won't have hardware acceleration).
Edward
On Wed, 2012-12-12 at 12:05 +0000, Tarek El-Sherbiny wrote:
> Hi,
>
>
> In this scenario a live stream from IP camera is displayed on HDMI TV
> using embedded system.
> OS = Linux - CPU = i.MX6 ARM - Gstreamer =0.10.36
> The problem is the decoder is dropping buffers because of timestamping
> problem. So the video is not smooth and what is being played is a
> breaking sequence of frames as if the iframe alone is being displayed
> and everything else is dropped.
>
>
> I'm using ffmpeg to demux the frame which gives me ffmpeg packet then
> memcpy the packet date to GST_BUFFER.
>
>
> Appsrc is used to inject the buffer date into Gstreamer pipeline. Here
> is my pipeline:
> app-source | typefinder | vpu-decoder | mfw_v4lsink-sink
>
>
>
> This is the need_data signal callback:
> {
> av_read_frame(fctx,&packet)
>
>
>
> buffer = gst_buffer_new_and_alloc (packet.size);
> memcpy(GST_BUFFER_MALLOCDATA(buffer),packet.data, packet.size);
>
>
> ret = gst_app_src_push_buffer(ctx->appsrc, buffer);
>
>
> av_free_packet(&packet);
>
>
>
> return TRUE
> }
>
>
> Debug messages:
> :00:16.732445169 1660 0x3465baf0 INFO vpudec
> vpudec.c:1512:gst_vpudec_chain: Got no disp information!!
> 0:00:16.732541335 1660 0x3465baf0 INFO vpudec
> vpudec.c:1551:gst_vpudec_chain: Got not enough input message!!
> 0:00:16.762768835 1660 0x3465baf0 WARN basesink
> gstbasesink.c:2875:gst_base_sink_is_too_late:<video-sink> warning: A
> lot of buffers are being dropped.
> 0:00:16.762866002 1660 0x3465baf0 WARN basesink
> gstbasesink.c:2875:gst_base_sink_is_too_late:<video-sink> warning:
> There may be a timestamping problem, or this computer is too slow.
>
>
> My question is how do I extract the PTS and pass this information to
> the decoder?
>
>
> Thanks,
> Tarek
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list