# wpesrc

The wpesrc element is used to produce a video texture representing a web page rendered off-screen by WPE.

Starting from WPEBackend-FDO 1.6.x, software rendering support is available. This features allows wpesrc to be used on machines without GPU, and/or for testing purpose. To enable it, set the `LIBGL_ALWAYS_SOFTWARE=true` environment variable and make sure `video/x-raw, format=BGRA` caps are negotiated by the wpesrc element.

## Example launch lines

### Show the GStreamer website homepage

    gst-launch-1.0 -v wpesrc location="https://gstreamer.freedesktop.org" ! queue ! glimagesink

### Save the first 50 video frames generated for the GStreamer website as PNG files in /tmp

    LIBGL_ALWAYS_SOFTWARE=true gst-launch-1.0 -v wpesrc num-buffers=50 location="https://gstreamer.freedesktop.org" ! videoconvert ! pngenc ! multifilesink location=/tmp/snapshot-%05d.png

### Show the GStreamer website homepage as played with GstPlayer in a GTK+ window

    gst-play-1.0 --videosink gtkglsink wpe://https://gstreamer.freedesktop.org

### Composite WPE with a video stream in a single OpenGL scene

    gst-launch-1.0  glvideomixer name=m sink_1::zorder=0 ! glimagesink wpesrc location="file:///home/phil/Downloads/plunk/index.html" draw-background=0 ! m. videotestsrc ! queue ! glupload ! glcolorconvert ! m.

### Composite WPE with a video stream, sink_0 pad properties have to match the video dimensions

    gst-launch-1.0 glvideomixer name=m sink_1::zorder=0 sink_0::height=818 sink_0::width=1920 ! gtkglsink wpesrc location="file:///home/phil/Downloads/plunk/index.html" draw-background=0 ! m. uridecodebin uri="http://192.168.1.44/Sintel.2010.1080p.mkv" name=d d. ! queue ! glupload ! glcolorconvert ! m.

Additionally, any audio stream created by WPE is exposed as "sometimes" audio source pads.

This source also relays GStreamer bus messages from the GStreamer pipelines running inside the web pages. Error, warning and info messages are made ours with the addition of the following fields into the GstMessage details (See gst_message_parse_error_details, gst_message_parse_warning_details and gst_message_parse_info_details):

- `wpesrc_original_src_path`: Path of the original element posting the message

Other message types are posted as element custom messages reusing the same GstStructure as the one from the message from the message posted in the web page with the addition of the following fields:

- `wpesrc_original_message_type`: Type of the original message from gst_message_type_get_name.
- `wpesrc_original_src_name`: Name of the original element posting the message
- `wpesrc_original_src_type`: Name of the GType of the original element posting the message
- `wpesrc_original_src_path`: Path of the original element positing the message

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBin
                        ╰──wpesrc

## Implemented interfaces

    GstChildProxy
    GstURIHandler

## Factory details

Authors: – Philippe Normand , Žan Doberšek

Classification: – `Source/Video/Audio`

Rank – none

Plugin – wpe

Package – gst-plugins-bad

## Pad Templates

### `audio_%u`

Each audio stream in the renderer web page will expose the and `audio_%u` GstPad.

    audio/x-raw:
             format: F32LE
               rate: [ 1, 2147483647 ]
           channels: [ 1, 2147483647 ]
             layout: interleaved
    audio/x-raw:
             format: F64LE
               rate: [ 1, 2147483647 ]
           channels: [ 1, 2147483647 ]
             layout: interleaved
    audio/x-raw:
             format: S16LE
               rate: [ 1, 2147483647 ]
           channels: [ 1, 2147483647 ]
             layout: interleaved

Presence – sometimes

Direction – src

Object type – GstPad

### `src`

    video/x-raw(memory:GLMemory):
             format: RGBA
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    pixel-aspect-ratio: 1/1
     texture-target: 2D
    video/x-raw:
             format: BGRA

Presence – always

Direction – src

Object type – GstPad

### `video`

    video/x-raw(memory:GLMemory):
             format: RGBA
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    pixel-aspect-ratio: 1/1
     texture-target: 2D
    video/x-raw:
             format: BGRA
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    pixel-aspect-ratio: 1/1

Presence – sometimes

Direction – src

Object type – GstPad

## Signals

### configure-web-view

    configure_web_view_callback (GstElement * param_0,
                                 GObject * arg0,
                                 gpointer udata)

    def configure_web_view_callback (param_0, arg0, udata):
        #python callback for the 'configure-web-view' signal

    function configure_web_view_callback(param_0: GstElement * param_0, arg0: GObject * arg0, udata: gpointer udata): {
        // javascript callback for the 'configure-web-view' signal
    }

Parameters:

`param_0` –
No description available
`arg0` –
No description available
`udata` –
No description available

Flags: Run Last

## Action Signals

### load-bytes

    g_signal_emit_by_name (src, "load-bytes", bytes);

    ret = src.emit ("load-bytes", bytes)

    let ret = src.emit ("load-bytes", bytes);

Load the specified bytes into the internal webView.

Parameters:

`src` (GstElement *) –

the object which received the signal

`bytes` (GBytes *) –

the GBytes data to load

Flags: Run Last / Action

## Properties

### draw-background

    “draw-background” gboolean

Whether to draw the WebView background

Flags : Read / Write

Default value : true

### location

    “location” gchararray

The URL to display

Flags : Read / Write

Default value : NULL

The results of the search are