race condition in gstsubparse.c

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

race condition in gstsubparse.c

bcxa sz
Hi Developers,

This is what I observed when exercise srt subtitle on my embedded
system. But I thought it should also happen in pc.

The sympton is that:
frequently do forward seek and backward seek after sometimes, the
subtititle will not be displayed after one backward seek. And it will
display after the video comes to the last playback position before
this seek.

And with some debug, I found there are 2 issues:
1. race condition in self->segment
.. the self->segment will be written after push event_new_seek in
gst_sub_parse_src_event(). This will happen after FLUSH_STOP.
.. the self->segment also will be written in
handle_buffer()/gst_sub_parse_chain(). This also will happen after
FLUSH_STOP.

So it will have un-certain value of self->segment when push new
segement event to downstream in gst_sub_parse_chain().

2. during gstsubparse flush_start operation, it doesn't clear the
adapter. Then after flush stop, the older data (the data before seek)
can be pushed to downstream if the older data is in the segment)
before new data after seek.

Please let me know whether you agree. If yes, I will report to bugzilla.

best regards

BCXA
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: race condition in gstsubparse.c

bcxa sz
Correct on 2nd point. The adapter is clear if the coming buffer offset
not the same as last or discounty flag is set.

So after seek, the adapter is always get cleared. Just 1st point I
think this is the issue.

On Thu, Oct 13, 2011 at 3:47 PM, bcxa sz <[hidden email]> wrote:

> Hi Developers,
>
> This is what I observed when exercise srt subtitle on my embedded
> system. But I thought it should also happen in pc.
>
> The sympton is that:
> frequently do forward seek and backward seek after sometimes, the
> subtititle will not be displayed after one backward seek. And it will
> display after the video comes to the last playback position before
> this seek.
>
> And with some debug, I found there are 2 issues:
> 1. race condition in self->segment
> .. the self->segment will be written after push event_new_seek in
> gst_sub_parse_src_event(). This will happen after FLUSH_STOP.
> .. the self->segment also will be written in
> handle_buffer()/gst_sub_parse_chain(). This also will happen after
> FLUSH_STOP.
>
> So it will have un-certain value of self->segment when push new
> segement event to downstream in gst_sub_parse_chain().
>
> 2. during gstsubparse flush_start operation, it doesn't clear the
> adapter. Then after flush stop, the older data (the data before seek)
> can be pushed to downstream if the older data is in the segment)
> before new data after seek.
>
> Please let me know whether you agree. If yes, I will report to bugzilla.
>
> best regards
>
> BCXA
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel