Zebediah Figura : winegstreamer: Access the stream duration through a Unix library function.

Alexandre Julliard julliard at winehq.org
Thu Feb 18 16:06:05 CST 2021


Module: wine
Branch: master
Commit: 82d4fa9f969217229a0926ceb4c7b4ad62329539
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=82d4fa9f969217229a0926ceb4c7b4ad62329539

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Wed Feb 17 17:30:35 2021 -0600

winegstreamer: Access the stream duration through a Unix library function.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winegstreamer/gst_private.h | 2 ++
 dlls/winegstreamer/gstdemux.c    | 2 +-
 dlls/winegstreamer/wg_parser.c   | 6 ++++++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
index 31fca81ce6c..e90de8803e5 100644
--- a/dlls/winegstreamer/gst_private.h
+++ b/dlls/winegstreamer/gst_private.h
@@ -245,6 +245,8 @@ struct unix_funcs
     void (CDECL *wg_parser_stream_notify_qos)(struct wg_parser_stream *stream,
             bool underflow, double proportion, int64_t diff, uint64_t timestamp);
 
+    /* Returns the duration in 100-nanosecond units. */
+    uint64_t (CDECL *wg_parser_stream_get_duration)(struct wg_parser_stream *stream);
     /* start_pos and stop_pos are in 100-nanosecond units. */
     bool (CDECL *wg_parser_stream_seek)(struct wg_parser_stream *stream, double rate,
             uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags);
diff --git a/dlls/winegstreamer/gstdemux.c b/dlls/winegstreamer/gstdemux.c
index ab901a34843..3bea994521b 100644
--- a/dlls/winegstreamer/gstdemux.c
+++ b/dlls/winegstreamer/gstdemux.c
@@ -977,7 +977,7 @@ static HRESULT parser_sink_connect(struct strmbase_sink *iface, IPin *peer, cons
     {
         struct parser_source *pin = filter->sources[i];
 
-        pin->seek.llDuration = pin->seek.llStop = pin->wg_stream->duration;
+        pin->seek.llDuration = pin->seek.llStop = unix_funcs->wg_parser_stream_get_duration(pin->wg_stream);
         pin->seek.llCurrent = 0;
     }
 
diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c
index ccd60853007..5d10ddf753c 100644
--- a/dlls/winegstreamer/wg_parser.c
+++ b/dlls/winegstreamer/wg_parser.c
@@ -492,6 +492,11 @@ static void CDECL wg_parser_stream_release_buffer(struct wg_parser_stream *strea
     pthread_cond_signal(&stream->event_empty_cond);
 }
 
+static uint64_t CDECL wg_parser_stream_get_duration(struct wg_parser_stream *stream)
+{
+    return stream->duration;
+}
+
 static bool CDECL wg_parser_stream_seek(struct wg_parser_stream *stream, double rate,
         uint64_t start_pos, uint64_t stop_pos, DWORD start_flags, DWORD stop_flags)
 {
@@ -1724,6 +1729,7 @@ static const struct unix_funcs funcs =
     wg_parser_stream_release_buffer,
     wg_parser_stream_notify_qos,
 
+    wg_parser_stream_get_duration,
     wg_parser_stream_seek,
 };
 




More information about the wine-cvs mailing list