[Webkit-unassigned] [Bug 167120] [GTK][GStreamer][MSE] Crash on youtube when MSE is enabled but gstreamer cant find the decoder element.
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Apr 11 10:08:12 PDT 2017
https://bugs.webkit.org/show_bug.cgi?id=167120
Vanessa Chipirrás Navalón <vchipirras at igalia.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vchipirras at igalia.com
--- Comment #8 from Vanessa Chipirrás Navalón <vchipirras at igalia.com> ---
(In reply to Zan Dobersek from comment #5)
> Comment on attachment 304937 [details]
> Patch
>
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=304937&action=review
>
> >> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:113
> >> +bool doInitializeGStreamerAndRegisterWebKitElements()
> >
> > I'd thank feedback from some reviewer about if this is the best way to expose the original initializeGStreamerAndRegisterWebKitElements() internal function to be called from another internal function in MediaPlayerPrivateGStreamer.cpp.
> >
> > If resorting to declare a friend function is too cumbersome, maybe a more direct approach would be to just declare the original initializeGStreamerAndRegisterWebKitElements() publicly in the header file. I'm still not sure.
>
> IMO this should be a public static function in the
> MediaPlayerPrivateGStreamerBase class. That way there's no need to declare
> friendship in the MediaPlayerPrivateGStreamerMSE class.
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:755
> > +static HashSet<String, ASCIICaseInsensitiveHash>& codecSet()
>
> Should return a const reference.
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:759
> > + callInitializeGStreamerAndRegisterWebKitElements();
>
> This would be a direct call to
> MediaPlayerPrivateGStreamerBase::
> initializeGStreamerAndRegisterWebKitElements().
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:780
> > + Vector<GstCapsWebKitMapping> mapping = {
> > + {VideoDecoder, "video/x-h264, profile=(string){ constrained-baseline, baseline }", {"x-h264"}},
> > + {VideoDecoder, "video/x-h264, stream-format=avc", {"avc*"}},
> > + {VideoDecoder, "video/mpeg, mpegversion=(int){1,2}, systemstream=(boolean)false", {"mpeg"}},
> > + };
>
> This should be a std::array<>.
>
> The brace-initialization should have spaces at after the opening and before
> the closing brace: { VideoDecoder, ..., { "x-h264" } },
>
> Why AtomicStrings? Regardless whether you use AtomicStrings or ordinary
> Strings, you should intialize them with AtomicString("...",
> AtomicString::ConstructFromLiteral) or ASCIILiteral("...").
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:787
> > + GList* factories = nullptr;
> > + if (current.elementType == AudioDecoder)
> > + factories = audioDecoderFactories;
> > + else if (current.elementType == VideoDecoder)
> > + factories = videoDecoderFactories;
>
> This doesn't handle the Demuxer value, which would leave the factories GList
> null and cause problems in gstRegistryHasElementForMediaType(). But as it
> stands the Demuxer value isn't used in the mapping array.
>
> If it's not needed, it should be removed from the enum. If it's needed, it
> should be handled here. Either way, this if-elseif block should be a switch
> statement that handles all the values in the enum.
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:811
> > + set.add(AtomicString("audio/mpeg"));
> > + set.add(AtomicString("audio/x-mpeg"));
>
> Again regarding using AtomicStrings -- you should use Strings all the way if
> the target HashSet has String values. But don't forget to use ASCIILiteral
> directly.
>
> > Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:814
> > +
> > +
>
> Nit: one extraneous newline.
OK Zan, thanks for the review. I am going to apply those changes in my patch.
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170411/d4a82b5e/attachment.html>
More information about the webkit-unassigned
mailing list