[Gstavdemux] check if we ran outside of the segment

Sebastian Dröge sebastian at centricular.com
Thu Oct 13 08:11:19 UTC 2016


On Sun, 2016-10-09 at 17:31 -0700, Majaja wrote:
> Dear all:
> 
> I wonder the correctness about the flow within Gstavdemux to check  if we
> ran outside of the segment.
> 
> Please see the following flow.
> *
>   /* do timestamps, we do this first so that we can know when we
>    * stepped over the segment stop position. */
>   timestamp = gst_ffmpeg_time_ff_to_gst (pkt.pts, avstream->time_base);
>   if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
>     stream->last_ts = timestamp;
>   }
>   ...
>   if (GST_CLOCK_TIME_IS_VALID (timestamp))
>     timestamp -= demux->start_time;
>   ...
> 
>   /* check if we ran outside of the segment */
>   if (demux->segment.stop != -1 && timestamp > demux->segment.stop)
>     goto drop;*
> 
> When we are given the settings below and it means we want to playback P1 B3
> B4 only.
> 
> Presentation order =  I1 B1 B2 { P1 B3 B4 } I2
> decoding      order =  I1 P1 B1 B2 I2 B3 B4
> 
> PTS of ( I1 B1 B2 P1 B3 B4  I2) = ( 1, 2, 3, 4, 5, 6, 7)
> DTS of ( I1 B1 B2 P1 B3 B4  I2) = (1, 3, 4, 2, 6, 7, 5) 
> 
> The segment stop is set to "6" accordingly since the PTS of {P1 B3 B4} = (
> 4, 5, 6 ).
> 
> However, notice that the PTS of I2 is "7" which is larger than 6. Also we
> will demux it before B3 & B4. 
> 
> By the flow : "check if we ran outside of the segment", we will go to the
> drop label & pause where.
> 
> The result is we miss the following two B frames, which should be played
> originally.
> 
> 
> I think an additional check such as "if we have met the first Key frame
> whose PTS is greater than segment's stop, go to drop (pause)" will be safe.

Can you file a bug with a patch for discussion at
  https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
?

Thanks!

-- 
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 967 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20161013/7d80fc3d/attachment.sig>


More information about the gstreamer-devel mailing list