Bug 208454 - [GStreamer][MSE] Playback rate update support
Summary: [GStreamer][MSE] Playback rate update support
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Local Build
Hardware: PC Other
: P2 Minor
Assignee: Philippe Normand
URL:
Keywords: InRadar
: 190844 209386 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-03-02 11:00 PST by kpect
Modified: 2020-04-07 04:14 PDT (History)
17 users (show)

See Also:


Attachments
Patch (15.36 KB, patch)
2020-03-13 06:03 PDT, Philippe Normand
calvaris: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description kpect 2020-03-02 11:00:42 PST
Hi.
I'm using www/surf browser (on FreeBSD 12.1 STABLE) which leverages www/webkit2-gtk3 and multimedia/gstreamer1 as a backend and I'm not able to change playback rate when watching youtube videos.

$ uname -a
FreeBSD KPECT 12.1-STABLE FreeBSD 12.1-STABLE GENERIC  amd64
$ pkg query -a "%n-%v" | grep gstreamer
gstreamer1-1.16.2
gstreamer1-libav-1.16.2
gstreamer1-plugins-1.16.2
gstreamer1-plugins-bad-1.16.2
gstreamer1-plugins-curl-1.16.2
gstreamer1-plugins-gl-1.16.2
gstreamer1-plugins-good-1.16.2
gstreamer1-plugins-neon-1.16.2
gstreamer1-plugins-soup-1.16.2
gstreamer1-plugins-vpx-1.16.2

> pkginfo webkit2-gtk3                                                                                                                                                                      /home/x ]
webkit2-gtk3-2.26.4
Name           : webkit2-gtk3
Version        : 2.26.4
Installed on   : Mon Mar  2 20:19:16 2020 +03
Origin         : www/webkit2-gtk3
Architecture   : FreeBSD:12:amd64
Prefix         : /usr/local
Categories     : www
Licenses       : 
Maintainer     : gnome@FreeBSD.org
WWW            : https://webkitgtk.org/
Comment        : Opensource browser engine using the GTK+ 3 toolkit
Options        :
        DEBUG          : off
        GEOIP          : off
        WAYLAND        : off
Shared Libs required:
        libicudata.so.65
        libxslt.so.1
        libsoup-2.4.so.1
        libpango-1.0.so.0
        libjpeg.so.8
        libgstapp-1.0.so.0
        libsqlite3.so.0
        libcairo.so.2
        libgtk-3.so.0
        libxml2.so.2
        libtasn1.so.6
        libgcrypt.so.20
        libwebp.so.7
        libsecret-1.so.0
        libatk-1.0.so.0
        libgstfft-1.0.so.0
        libfreetype.so.6
        libgstreamer-1.0.so.0
        libgmodule-2.0.so.0
        libharfbuzz-icu.so.0
        libXcomposite.so.1
        libgdk_pixbuf-2.0.so.0
        libcairo-gobject.so.2
        libgio-2.0.so.0
        libgstgl-1.0.so.0
        libX11.so.6
        libwebpdemux.so.2
        libglib-2.0.so.0
        libGL.so.1
        libgobject-2.0.so.0
        libXrender.so.1
        libXt.so.6
        libicuuc.so.65
        libharfbuzz.so.0
        libEGL.so.1
        libgstpbutils-1.0.so.0
        libXdamage.so.1
        libgstvideo-1.0.so.0
        libgsttag-1.0.so.0
        libpng16.so.16
        libintl.so.8
        libgstaudio-1.0.so.0
        libgstbase-1.0.so.0
        libopenjp2.so.7
        libicui18n.so.65
        libfontconfig.so.1
        libgdk-3.so.0
        libpangocairo-1.0.so.0
Shared Libs provided:
        libwebkit2gtk-4.0.so.37
        libjavascriptcoregtk-4.0.so.18
Annotations    :
        FreeBSD_version: 1201511
Flat size      : 61.2MiB
Description    :
WebKitGTK+ is a full-featured port of the WebKit rendering engine, suitable
for projects requiring any kind of web integration, from hybrid HTML/CSS
applications to full-fledged web browsers. It offers WebKit's full
functionality and is useful in a wide range of systems from desktop
computers to embedded systems like phones, tablets, and televisions.

WebKitGTK+ is made by a lively community of developers and designers,
who hope to bring the web platform to everyone. It's the official web
engine of the GNOME platform and is used in browsers such as Epiphany
and Midori.

WWW: https://webkitgtk.org/


Thank you in advance.

Sergey.
Comment 1 Philippe Normand 2020-03-13 04:03:31 PDT
This is overridden as unimplemented in the MSE player, I currently see no reason for such override.
Comment 2 Philippe Normand 2020-03-13 06:03:44 PDT
Created attachment 393475 [details]
Patch
Comment 3 Xabier Rodríguez Calvar 2020-03-13 10:06:43 PDT
I'm open to give an r+ but I would prefer Alicia has a look at this as well.
Comment 4 Alicia Boya García 2020-03-14 10:27:07 PDT
Comment on attachment 393475 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=393475&action=review

I hope some day I can finally get playbin3 and the new WebKitMediaSrc working and landed and I can get rid of most of this madness with seeks... but that is an ongoing rabbit hole (currently working on fixing WebKitWebSrc races to be able to debug playbin3 player races to be able to use playbin3 for MSE).

With that in mind, if this passes tests, LGTM.

> Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:248
> +    // FIXME: Make a copy here because in some cases below it is modified. This
> +    // sounds like a bad idea and should be investigated further.
> +    MediaTime seekTime = position;

Could you elaborate?
Comment 5 Alicia Boya García 2020-03-14 10:27:14 PDT
View in context: https://bugs.webkit.org/attachment.cgi?id=393475&action=review

I hope some day I can finally get playbin3 and the new WebKitMediaSrc working and landed and I can get rid of most of this madness with seeks... but that is an ongoing rabbit hole (currently working on fixing WebKitWebSrc races to be able to debug playbin3 player races to be able to use playbin3 for MSE).

With that in mind, if this passes tests, LGTM.

> Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:248
> +    // FIXME: Make a copy here because in some cases below it is modified. This
> +    // sounds like a bad idea and should be investigated further.
> +    MediaTime seekTime = position;

Could you elaborate?
Comment 6 Philippe Normand 2020-03-14 10:37:11 PDT
Comment on attachment 393475 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=393475&action=review

>> Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:248
>> +    MediaTime seekTime = position;
> 
> Could you elaborate?

the seek time is updated there: https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp#L315
Comment 7 Xabier Rodríguez Calvar 2020-03-16 10:00:04 PDT
Comment on attachment 393475 [details]
Patch

The only thing I'd say is that it would be better if you split in two, one for the debug and the other one to actually fix the problem but I won't object if you want to land it like this.
Comment 8 Philippe Normand 2020-03-17 02:36:47 PDT
Committed r258542: <https://trac.webkit.org/changeset/258542>
Comment 9 Radar WebKit Bug Importer 2020-03-17 02:37:14 PDT
<rdar://problem/60532167>
Comment 10 Philippe Normand 2020-04-06 03:23:42 PDT
*** Bug 209386 has been marked as a duplicate of this bug. ***
Comment 11 Philippe Normand 2020-04-07 04:14:14 PDT
*** Bug 190844 has been marked as a duplicate of this bug. ***