WebKit Bugzilla
Attachment 346273 Details for
Bug 188210
: [GStreamer] Make sure that first buffer running time is 0 in GStreamerMediaStreamSource
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188210-20180801084110.patch (text/plain), 3.56 KB, created by
Thibault Saunier
on 2018-08-01 05:41:11 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Thibault Saunier
Created:
2018-08-01 05:41:11 PDT
Size:
3.56 KB
patch
obsolete
>Subversion Revision: 234422 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index db75c8ed54de943e879f0d2a724b838c2a485957..5c013cb1ad14f0bbcc1c2ef7a1b1f9e6aec56005 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,20 @@ >+2018-07-31 Thibault Saunier <tsaunier@igalia.com> >+ >+ [GStreamer] Make sure that first buffer running time is 0 in GStreamerMediaStreamSource >+ https://bugs.webkit.org/show_bug.cgi?id=188210 >+ >+ This is a live source and the first frame is the beginning of the stream, >+ but that doesn't mean that the incoming stream from the camera didn't start >+ before. We need to set a pad offset on each srcpad of the source to compensate >+ for that. This is the exact same logic as in webrtc GStreamerVideo/Enc/Dec/oder. >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp: >+ (WebCore::webkit_media_stream_src_init): >+ (WebCore::webkitMediaStreamSrcPushVideoSample): >+ (WebCore::webkitMediaStreamSrcPushAudioSample): >+ > 2018-07-25 Thibault Saunier <tsaunier@igalia.com> > > [GStreamer] Make codecparsers optionnal >diff --git a/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp b/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp >index 9536076cb228e1369a50ef9d0e0ca2c016fb2e30..ffdae4eb508ee625d282ca22a9987c5cc2fe30d6 100644 >--- a/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp >+++ b/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp >@@ -149,7 +149,9 @@ struct _WebKitMediaStreamSrc { > gchar* uri; > > GstElement* audioSrc; >+ GstClockTime firstAudioBufferPts; > GstElement* videoSrc; >+ GstClockTime firstFramePts; > > std::unique_ptr<WebKitMediaStreamTrackObserver> observer; > String videoTrackID; >@@ -320,6 +322,8 @@ static void webkit_media_stream_src_init(WebKitMediaStreamSrc* self) > { > self->observer = std::make_unique<WebKitMediaStreamTrackObserver>(self); > self->flowCombiner = gst_flow_combiner_new(); >+ self->firstAudioBufferPts = GST_CLOCK_TIME_NONE; >+ self->firstFramePts = GST_CLOCK_TIME_NONE; > } > > typedef struct { >@@ -485,14 +489,31 @@ gboolean webkitMediaStreamSrcSetStream(WebKitMediaStreamSrc* self, MediaStreamPr > > static void webkitMediaStreamSrcPushVideoSample(WebKitMediaStreamSrc* self, GstSample* gstsample) > { >- if (self->videoSrc) >+ if (self->videoSrc) { >+ if (!GST_CLOCK_TIME_IS_VALID(self->firstFramePts)) { >+ auto buffer = gst_sample_get_buffer(gstsample); >+ >+ self->firstFramePts = GST_BUFFER_PTS(buffer); >+ auto pad = adoptGRef(gst_element_get_static_pad(self->videoSrc, "src")); >+ gst_pad_set_offset(pad.get(), -self->firstFramePts); >+ } >+ > gst_app_src_push_sample(GST_APP_SRC(self->videoSrc), gstsample); >+ } > } > > static void webkitMediaStreamSrcPushAudioSample(WebKitMediaStreamSrc* self, GstSample* gstsample) > { >- if (self->audioSrc) >+ if (self->audioSrc) { >+ if (!GST_CLOCK_TIME_IS_VALID(self->firstAudioBufferPts)) { >+ auto buffer = gst_sample_get_buffer(gstsample); >+ >+ self->firstAudioBufferPts = GST_BUFFER_PTS(buffer); >+ auto pad = adoptGRef(gst_element_get_static_pad(self->audioSrc, "src")); >+ gst_pad_set_offset(pad.get(), -self->firstAudioBufferPts); >+ } > gst_app_src_push_sample(GST_APP_SRC(self->audioSrc), gstsample); >+ } > } > > static void webkitMediaStreamSrcTrackEnded(WebKitMediaStreamSrc* self,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188210
:
346222
| 346273