[Webkit-unassigned] [Bug 78883] [GStreamer] AudioSourceProvider support in the MediaPlayer

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Dec 7 11:11:03 PST 2014


https://bugs.webkit.org/show_bug.cgi?id=78883

--- Comment #44 from Sebastian Dröge (slomo) <slomo at coaxion.net> ---
Comment on attachment 218586
  --> https://bugs.webkit.org/attachment.cgi?id=218586
rebased patch that works

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

What's missing to land this? I have some comments here, but there's probably more missing? Is channels!=2 support mandatory? I can probably work on this a bit

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:62
> +    GstBuffer* buffer = gst_buffer_list_get(buffers, 0);

Better iterate over all buffers here like in AudioFileReaderGStreamer. gst_buffer_list_get() will merge all buffers first, so you copy twice here.

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:67
> +    gst_buffer_list_remove(buffers, 0, 1);

Maybe just unref the buffer list here and create a new one instead

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:181
> +    GstElement* dataChopper = gst_element_factory_make("chopmydata", "dataChopper");

Instead of such dubious elements I would recommend to just use a GstAdapter or similar (in the appsink callback) to chop the data yourself

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:214
> +        "format", G_TYPE_STRING, gst_audio_format_to_string(GST_AUDIO_FORMAT_F32),

GST_AUDIO_NE(F32)

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:228
> +    gst_element_link_pads_full(audioTee.get(), 0, audioQueue, "sink", GST_PAD_LINK_CHECK_NOTHING);

Provide the pad name here: "src_%u"

> Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:320
> +    GstIteratorResult result = gst_iterator_next(iter, &item);

Instead of all this you can simply use gst_iterator_foreach() (make sure to check the return value for resync!) here

> Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:1832
> +    if (m_preservesPitch) {

Maybe instead of all this we can just depend on GStreamer >= 1.4.2 and use the audio-filter property for scaletempo? That would considerably clean up this code

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20141207/8f2d7e2a/attachment-0002.html>


More information about the webkit-unassigned mailing list