diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c index acd4846dd4..f13778f67c 100644 --- a/ext/mpeg2dec/gstmpeg2dec.c +++ b/ext/mpeg2dec/gstmpeg2dec.c @@ -1525,8 +1525,18 @@ gst_mpeg2dec_src_query (GstPad * pad, GstQuery * query) case GST_QUERY_POSITION: { GstFormat format; + GstPad *peer; gint64 cur; + /* First, we try to ask upstream, which might know better, especially in + * the case of DVDs, with multiple chapter */ + if ((peer = gst_pad_get_peer (mpeg2dec->sinkpad)) != NULL) { + res = gst_pad_query (peer, query); + gst_object_unref (peer); + if (res) + break; + } + /* save requested format */ gst_query_parse_position (query, &format, NULL);