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 |
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 |
Free forum by Nabble | Edit this page |