## BaconVideoWidget

BaconVideoWidget — video playing widget and abstraction

## Stability Level

Unstable, unless otherwise indicated

## Functions

GtkWidget * | bacon_video_widget_new ()
void | bacon_video_widget_open ()
gboolean | bacon_video_widget_play ()
void | bacon_video_widget_pause ()
gboolean | bacon_video_widget_seek ()
gboolean | bacon_video_widget_seek_time ()
void | bacon_video_widget_stop ()
void | bacon_video_widget_close ()
gboolean | bacon_video_widget_can_direct_seek ()
gboolean | bacon_video_widget_can_get_frames ()
gboolean | bacon_video_widget_can_set_volume ()
void | bacon_video_widget_dvd_event ()
gboolean | bacon_video_widget_has_menus ()
BvwAspectRatio | bacon_video_widget_get_aspect_ratio ()
void | bacon_video_widget_set_aspect_ratio ()
BvwAudioOutputType | bacon_video_widget_get_audio_output_type ()
void | bacon_video_widget_set_audio_output_type ()
GdkPixbuf * | bacon_video_widget_get_current_frame ()
gint64 | bacon_video_widget_get_current_time ()
gboolean | bacon_video_widget_get_deinterlacing ()
void | bacon_video_widget_set_deinterlacing ()
GList * | bacon_video_widget_get_languages ()
void | bacon_video_widget_lang_info_free ()
int | bacon_video_widget_get_language ()
void | bacon_video_widget_set_language ()
void | bacon_video_widget_set_logo ()
gboolean | bacon_video_widget_get_logo_mode ()
void | bacon_video_widget_set_logo_mode ()
void | bacon_video_widget_get_metadata ()
GOptionGroup * | bacon_video_widget_get_option_group ()
double | bacon_video_widget_get_position ()
void | bacon_video_widget_set_referrer ()
BvwRotation | bacon_video_widget_get_rotation ()
void | bacon_video_widget_set_rotation ()
gint64 | bacon_video_widget_get_stream_length ()
GList * | bacon_video_widget_get_subtitles ()
int | bacon_video_widget_get_subtitle ()
void | bacon_video_widget_set_subtitle ()
void | bacon_video_widget_set_text_subtitle ()
void | bacon_video_widget_set_subtitle_encoding ()
void | bacon_video_widget_set_subtitle_font ()
void | bacon_video_widget_set_user_agent ()
int | bacon_video_widget_get_video_property ()
void | bacon_video_widget_set_video_property ()
double | bacon_video_widget_get_volume ()
void | bacon_video_widget_set_volume ()
BvwZoomMode | bacon_video_widget_get_zoom ()
void | bacon_video_widget_set_zoom ()
gboolean | bacon_video_widget_has_angles ()
void | bacon_video_widget_set_next_angle ()
gboolean | bacon_video_widget_has_next_track ()
gboolean | bacon_video_widget_has_previous_track ()
gboolean | bacon_video_widget_is_playing ()
gboolean | bacon_video_widget_is_seekable ()
gfloat | bacon_video_widget_get_rate ()
gboolean | bacon_video_widget_set_rate ()
gboolean | bacon_video_widget_step ()
GObject * | bacon_video_widget_get_controls_object ()
GObject * | bacon_video_widget_get_header_controls_object ()
void | bacon_video_widget_set_fullscreen ()
void | bacon_video_widget_set_next_language ()
void | bacon_video_widget_set_next_subtitle ()
void | bacon_video_widget_show_popup ()
void | bacon_video_widget_mark_popup_busy ()
void | bacon_video_widget_unmark_popup_busy ()

## Properties

BvwAudioOutputType | audio-output-type | Read / Write
gint64 | av-offset | Read / Write
gint | brightness | Read / Write
gint | contrast | Read / Write
gboolean | deinterlacing | Read / Write
gchar * | download-filename | Read / Write
gint | hue | Read / Write
gboolean | logo-mode | Read / Write
gboolean | playing | Read
gdouble | position | Read
gchar * | referrer | Read / Write
gboolean | reveal-controls | Read
gint | saturation | Read / Write
gboolean | seekable | Read
gint64 | stream-length | Read
gchar * | user-agent | Read / Write
gdouble | volume | Read / Write

## Signals

void | buffering | Run Last
void | channels-change | Run Last
void | download-buffering | Run Last
void | eos | Run Last
void | error | Run Last
void | got-metadata | Run Last
void | got-redirect | Run Last
gboolean | missing-plugins | Run Last
void | seek-requested | Run Last
void | tick | Run Last
void | track-skip-requested | Run Last
void | volume-change-requested | Run Last

## Types and Values

| BaconVideoWidget
enum | BvwAspectRatio
enum | BvwAudioOutputType
enum | BvwDVDEvent
| BvwLangInfo
enum | BvwMetadataType
enum | BvwRotation
enum | BvwTrackType
enum | BvwVideoProperty
enum | BvwZoomMode
enum | BvwError

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkWidget
                ╰── GtkContainer
                    ╰── GtkClutterEmbed
                        ╰── BaconVideoWidget

## Implemented Interfaces

BaconVideoWidget implements AtkImplementorIface, GtkBuildable and GInitable.

## Includes

    #include <bacon-video-widget.h>

## Description

BaconVideoWidget is a widget to play audio or video streams, with support for visualisations for audio-only streams. It has a GStreamer backend, and abstracts away the differences to provide a simple interface to the functionality required by Totem. It handles all the low-level audio and video work for Totem (or passes the work off to the backend).

## Functions

### bacon_video_widget_new ()

    GtkWidget *
    bacon_video_widget_new (GError **error);

Creates a new BaconVideoWidget.

A BvwError will be returned on error.

#### Parameters

error | a GError, or `NULL` |

#### Returns

a new BaconVideoWidget, or `NULL`; destroy with `gtk_widget_destroy()`

### bacon_video_widget_open ()

    void
    bacon_video_widget_open (BaconVideoWidget *bvw,
                             const char *mrl);

Opens the given `mrl` in `bvw` for playing.

The MRL is loaded and waiting to be played with `bacon_video_widget_play()`.

#### Parameters

bvw | a BaconVideoWidget |
mrl | an MRL |

### bacon_video_widget_play ()

    gboolean
    bacon_video_widget_play (BaconVideoWidget *bvw,
                             GError **error);

Plays the currently-loaded video in `bvw` .

Errors from the GStreamer backend will be returned asynchronously via the “error” signal, even if this function returns `TRUE`.

#### Parameters

bvw | a BaconVideoWidget |
error | a GError, or `NULL` |

#### Returns

`TRUE` on success, `FALSE` otherwise

### bacon_video_widget_pause ()

    void
    bacon_video_widget_pause (BaconVideoWidget *bvw);

Pauses the current stream in the video widget.

If a live stream is being played, playback is stopped entirely.

#### Parameters

bvw | a BaconVideoWidget |

### bacon_video_widget_seek ()

    gboolean
    bacon_video_widget_seek (BaconVideoWidget *bvw,
                             double position,
                             GError **error);

Seeks the currently-playing stream to `position` as a percentage of the total stream length.

#### Parameters

bvw | a BaconVideoWidget |
position | the percentage of the way through the stream to which to seek |
error | a GError, or `NULL` |

#### Returns

`TRUE` on success, `FALSE` otherwise

### bacon_video_widget_seek_time ()

    gboolean
    bacon_video_widget_seek_time (BaconVideoWidget *bvw,
                                  gint64 _time,
                                  gboolean accurate,
                                  GError **error);

Seeks the currently-playing stream to the absolute position `time` , in milliseconds.

#### Parameters

bvw | a BaconVideoWidget |
_time | the time to which to seek, in milliseconds |
accurate | whether to use accurate seek, an accurate seek might be slower for some formats (see GStreamer docs) |
error | a GError, or `NULL` |

#### Returns

`TRUE` on success, `FALSE` otherwise

### bacon_video_widget_stop ()

    void
    bacon_video_widget_stop (BaconVideoWidget *bvw);

Stops playing the current stream and resets to the first position in the stream.

#### Parameters

bvw | a BaconVideoWidget |

### bacon_video_widget_close ()

    void
    bacon_video_widget_close (BaconVideoWidget *bvw);

Closes the current stream and frees the resources associated with it.

#### Parameters

bvw | a BaconVideoWidget |

### bacon_video_widget_can_direct_seek ()

    gboolean
    bacon_video_widget_can_direct_seek (BaconVideoWidget *bvw);

Determines whether direct seeking is possible for the current stream.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if direct seeking is possible, `FALSE` otherwise

### bacon_video_widget_can_get_frames ()

    gboolean
    bacon_video_widget_can_get_frames (BaconVideoWidget *bvw,
                                       GError **error);

Determines whether individual frames from the current stream can be returned using `bacon_video_widget_get_current_frame()`.

Frames cannot be returned for audio-only streams, unless visualisations are enabled.

#### Parameters

bvw | a BaconVideoWidget |
error | a GError, or `NULL` |

#### Returns

`TRUE` if frames can be captured, `FALSE` otherwise

### bacon_video_widget_can_set_volume ()

    gboolean
    bacon_video_widget_can_set_volume (BaconVideoWidget *bvw);

Returns whether the volume level can be set, given the current settings.

The volume cannot be set if the audio output type is set to `BVW_AUDIO_SOUND_AC3PASSTHRU`.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if the volume can be set, `FALSE` otherwise

### bacon_video_widget_dvd_event ()

    void
    bacon_video_widget_dvd_event (BaconVideoWidget *bvw,
                                  BvwDVDEvent type);

Issues a DVD navigation event to the video widget, such as one to skip to the next chapter, or navigate to the DVD title menu.

This is a no-op if the current stream is not navigable.

#### Parameters

bvw | a BaconVideoWidget |
type | the type of DVD event to issue |

### bacon_video_widget_has_menus ()

    gboolean
    bacon_video_widget_has_menus (BaconVideoWidget *bvw);

Returns whether the widget is currently displaying a menu, such as a DVD menu.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if a menu is displayed, `FALSE` otherwise

### bacon_video_widget_get_aspect_ratio ()

    BvwAspectRatio
    bacon_video_widget_get_aspect_ratio (BaconVideoWidget *bvw);

Returns the current aspect ratio used by the widget, from BvwAspectRatio.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the aspect ratio

### bacon_video_widget_set_aspect_ratio ()

    void
    bacon_video_widget_set_aspect_ratio (BaconVideoWidget *bvw,
                                         BvwAspectRatio ratio);

Sets the aspect ratio used by the widget, from BvwAspectRatio.

Changes to this take effect immediately.

#### Parameters

bvw | a BaconVideoWidget |
ratio | the new aspect ratio |

### bacon_video_widget_get_audio_output_type ()

    BvwAudioOutputType
    bacon_video_widget_get_audio_output_type
                                   (BaconVideoWidget *bvw);

Returns the current audio output type (e.g. how many speaker channels) from BvwAudioOutputType.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the audio output type, or `-1`

### bacon_video_widget_set_audio_output_type ()

    void
    bacon_video_widget_set_audio_output_type
                                   (BaconVideoWidget *bvw,
                                    BvwAudioOutputType type);

Sets the audio output type (number of speaker channels) in the video widget.

#### Parameters

bvw | a BaconVideoWidget |
type | the new audio output type |

### bacon_video_widget_get_current_frame ()

    GdkPixbuf *
    bacon_video_widget_get_current_frame (BaconVideoWidget *bvw);

Returns a GdkPixbuf containing the current frame from the playing stream. This will wait for any pending seeks to complete before capturing the frame.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the current frame, or `NULL`; unref with `g_object_unref()`

### bacon_video_widget_get_current_time ()

    gint64
    bacon_video_widget_get_current_time (BaconVideoWidget *bvw);

Returns the current position in the stream, as the time (in milliseconds) since the beginning of the stream.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

time since the beginning of the stream, in milliseconds, or `-1`

### bacon_video_widget_get_deinterlacing ()

    gboolean
    bacon_video_widget_get_deinterlacing (BaconVideoWidget *bvw);

Returns whether deinterlacing of videos is enabled for this widget.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if automatic deinterlacing is enabled, `FALSE` otherwise

### bacon_video_widget_set_deinterlacing ()

    void
    bacon_video_widget_set_deinterlacing (BaconVideoWidget *bvw,
                                          gboolean deinterlace);

Sets whether the widget should deinterlace videos.

#### Parameters

bvw | a BaconVideoWidget |
deinterlace | `TRUE` if videos should be automatically deinterlaced, `FALSE` otherwise |

### bacon_video_widget_get_languages ()

    GList *
    bacon_video_widget_get_languages (BaconVideoWidget *bvw);

Returns a list of BvwLangInfo for each audio track.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

a GList of BvwLangInfo, or `NULL`; free each element with `bacon_video_widget_lang_info_free()` and the list with `g_list_free()`

### bacon_video_widget_lang_info_free ()

    void
    bacon_video_widget_lang_info_free (BvwLangInfo *info);

### bacon_video_widget_get_language ()

    int
    bacon_video_widget_get_language (BaconVideoWidget *bvw);

Returns the index of the current audio language.

If the widget is not playing, or the default language is in use, `-1` will be returned.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the audio language index

### bacon_video_widget_set_language ()

    void
    bacon_video_widget_set_language (BaconVideoWidget *bvw,
                                     int language);

Sets the audio language index for `bvw` . If `language` is `-1`, the default language will be used.

#### Parameters

bvw | a BaconVideoWidget |
language | an audio language index |

### bacon_video_widget_set_logo ()

    void
    bacon_video_widget_set_logo (BaconVideoWidget *bvw,
                                 const char *name);

Sets the logo displayed on the video widget when no stream is loaded.

#### Parameters

bvw | a BaconVideoWidget |
name | the icon name of the logo |

### bacon_video_widget_get_logo_mode ()

    gboolean
    bacon_video_widget_get_logo_mode (BaconVideoWidget *bvw);

Gets whether the logo is displayed when no stream is loaded.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if the logo is displayed, `FALSE` otherwise

### bacon_video_widget_set_logo_mode ()

    void
    bacon_video_widget_set_logo_mode (BaconVideoWidget *bvw,
                                      gboolean logo_mode);

Sets whether to display a logo set with `bacon_video_widget_set_logo` when no stream is loaded. If `logo_mode` is `FALSE`, nothing will be displayed and the video widget will take up no space. Otherwise, the logo will be displayed and will requisition a corresponding amount of space.

#### Parameters

bvw | a BaconVideoWidget |
logo_mode | `TRUE` to display the logo, `FALSE` otherwise |

### bacon_video_widget_get_metadata ()

    void
    bacon_video_widget_get_metadata (BaconVideoWidget *bvw,
                                     BvwMetadataType type,
                                     GValue *value);

Provides metadata of the given `type` about the current stream in `value` .

Free the GValue with `g_value_unset()`.

#### Parameters

bvw | a BaconVideoWidget |
type | the type of metadata to return |
value | a GValue |

### bacon_video_widget_get_option_group ()

    GOptionGroup *
    bacon_video_widget_get_option_group (void);

Returns the GOptionGroup containing command-line options for BaconVideoWidget.

Applications must call either this exactly once.

#### Returns

a GOptionGroup giving command-line options for BaconVideoWidget

### bacon_video_widget_get_position ()

    double
    bacon_video_widget_get_position (BaconVideoWidget *bvw);

Returns the current position in the stream, as a value between

`0` and `1`.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the current position, or `-1`

### bacon_video_widget_set_referrer ()

    void
    bacon_video_widget_set_referrer (BaconVideoWidget *bvw,
                                     const char *referrer);

Sets the HTTP referrer URI to use when fetching HTTP ressources.

#### Parameters

bvw | a BaconVideoWidget |
referrer | a HTTP referrer URI, or `NULL` |

### bacon_video_widget_get_rotation ()

    BvwRotation
    bacon_video_widget_get_rotation (BaconVideoWidget *bvw);

Returns the angle of rotation of the video, in degrees.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

a BvwRotation.

### bacon_video_widget_set_rotation ()

    void
    bacon_video_widget_set_rotation (BaconVideoWidget *bvw,
                                     BvwRotation rotation);

Sets the rotation to be applied to the video when it is displayed.

#### Parameters

bvw | a BaconVideoWidget |
rotation | the BvwRotation of the video in degrees |

### bacon_video_widget_get_stream_length ()

    gint64
    bacon_video_widget_get_stream_length (BaconVideoWidget *bvw);

Returns the total length of the stream, in milliseconds.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the stream length, in milliseconds, or `-1`

### bacon_video_widget_get_subtitles ()

    GList *
    bacon_video_widget_get_subtitles (BaconVideoWidget *bvw);

Returns a list of BvwLangInfo for each subtitle track.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

a GList of BvwLangInfo, or `NULL`; free each element with `bacon_video_widget_lang_info_free()` and the list with `g_list_free()`

### bacon_video_widget_get_subtitle ()

    int
    bacon_video_widget_get_subtitle (BaconVideoWidget *bvw);

Returns the index of the current subtitles.

If the widget is not playing, `-2` will be returned. If no subtitles are being used, `-1` is returned.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the subtitle index

### bacon_video_widget_set_subtitle ()

    void
    bacon_video_widget_set_subtitle (BaconVideoWidget *bvw,
                                     int subtitle);

Sets the subtitle index for `bvw` . If `subtitle` is `-1`, no subtitles will be used.

#### Parameters

bvw | a BaconVideoWidget |
subtitle | a subtitle index |

### bacon_video_widget_set_text_subtitle ()

    void
    bacon_video_widget_set_text_subtitle (BaconVideoWidget *bvw,
                                          const gchar *subtitle_uri);

Sets the URI for the text subtitle file to be displayed alongside the current video. Use `NULL` if you want to unload the current text subtitle file being used.

#### Parameters

bvw | a BaconVideoWidget |
subtitle_uri | the URI of a subtitle file, or `NULL`. | [allow-none]

### bacon_video_widget_set_subtitle_encoding ()

    void
    bacon_video_widget_set_subtitle_encoding
                                   (BaconVideoWidget *bvw,
                                    const char *encoding);

Sets the encoding system for the subtitles, so that they can be decoded properly.

#### Parameters

bvw | a BaconVideoWidget |
encoding | an encoding system |

### bacon_video_widget_set_subtitle_font ()

    void
    bacon_video_widget_set_subtitle_font (BaconVideoWidget *bvw,
                                          const char *font);

Sets the font size and style in which to display subtitles.

`font` is a Pango font description string, as understood by `pango_font_description_from_string()`.

#### Parameters

bvw | a BaconVideoWidget |
font | a font description string |

### bacon_video_widget_set_user_agent ()

    void
    bacon_video_widget_set_user_agent (BaconVideoWidget *bvw,
                                       const char *user_agent);

Sets the HTTP user agent string to use when fetching HTTP ressources.

#### Parameters

bvw | a BaconVideoWidget |
user_agent | a HTTP user agent string, or `NULL` to use the default |

### bacon_video_widget_get_video_property ()

    int
    bacon_video_widget_get_video_property (BaconVideoWidget *bvw,
                                           BvwVideoProperty type);

Returns the given property of the video display, such as its brightness or saturation.

It is returned as a percentage in the full range of integer values; from `0` to `65535` (inclusive), where `32768` is the default.

#### Parameters

bvw | a BaconVideoWidget |
type | the type of property |

#### Returns

the property's value, in the range `0` to `65535`

### bacon_video_widget_set_video_property ()

    void
    bacon_video_widget_set_video_property (BaconVideoWidget *bvw,
                                           BvwVideoProperty type,
                                           int value);

Sets the given property of the video display, such as its brightness or saturation.

It should be given as a percentage in the full range of integer values; from `0` to `65535` (inclusive), where `32768` is the default.

#### Parameters

bvw | a BaconVideoWidget |
type | the type of property |
value | the property's value, in the range `0` to `65535` |

### bacon_video_widget_get_volume ()

    double
    bacon_video_widget_get_volume (BaconVideoWidget *bvw);

Returns the current volume level, as a percentage between `0` and `1`.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the volume as a percentage between `0` and `1`

### bacon_video_widget_set_volume ()

    void
    bacon_video_widget_set_volume (BaconVideoWidget *bvw,
                                   double volume);

Sets the volume level of the stream as a percentage between `0` and `1`.

If `bacon_video_widget_can_set_volume()` returns `FALSE`, this is a no-op.

#### Parameters

bvw | a BaconVideoWidget |
volume | the new volume level, as a percentage between `0` and `1` |

### bacon_video_widget_get_zoom ()

    BvwZoomMode
    bacon_video_widget_get_zoom (BaconVideoWidget *bvw);

Returns the zoom mode applied to videos displayed by the widget.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

a BvwZoomMode

### bacon_video_widget_set_zoom ()

    void
    bacon_video_widget_set_zoom (BaconVideoWidget *bvw,
                                 BvwZoomMode mode);

Sets the zoom type applied to the video when it is displayed.

#### Parameters

bvw | a BaconVideoWidget |
mode | the BvwZoomMode |

### bacon_video_widget_has_angles ()

    gboolean
    bacon_video_widget_has_angles (BaconVideoWidget *bvw);

Returns whether the widget is currently playing a stream with multiple angles.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if the current video stream has multiple angles, `FALSE` otherwise

### bacon_video_widget_set_next_angle ()

    void
    bacon_video_widget_set_next_angle (BaconVideoWidget *bvw);

Select the next angle, or video track in the playing stream.

#### Parameters

bvw | a BaconVideoWidget |

### bacon_video_widget_has_next_track ()

    gboolean
    bacon_video_widget_has_next_track (BaconVideoWidget *bvw);

Determines whether there is another track after the current one, typically as a chapter on a DVD.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if there is another track, `FALSE` otherwise

### bacon_video_widget_has_previous_track ()

    gboolean
    bacon_video_widget_has_previous_track (BaconVideoWidget *bvw);

Determines whether there is another track before the current one, typically as a chapter on a DVD.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if there is another track, `FALSE` otherwise

### bacon_video_widget_is_playing ()

    gboolean
    bacon_video_widget_is_playing (BaconVideoWidget *bvw);

Returns whether the widget is currently playing a stream.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if a stream is playing, `FALSE` otherwise

### bacon_video_widget_is_seekable ()

    gboolean
    bacon_video_widget_is_seekable (BaconVideoWidget *bvw);

Returns whether seeking is possible in the current stream.

If no stream is loaded, `FALSE` is returned.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

`TRUE` if the stream is seekable, `FALSE` otherwise

### bacon_video_widget_get_rate ()

    gfloat
    bacon_video_widget_get_rate (BaconVideoWidget *bvw);

Get the current playback rate, with 1.0 being normal rate.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

the current playback rate

### bacon_video_widget_set_rate ()

    gboolean
    bacon_video_widget_set_rate (BaconVideoWidget *bvw,
                                 gfloat new_rate);

Sets the current playback rate.

#### Parameters

bvw | a BaconVideoWidget |
new_rate | the new playback rate |

#### Returns

`TRUE` on success, `FALSE` on failure.

### bacon_video_widget_step ()

    gboolean
    bacon_video_widget_step (BaconVideoWidget *bvw,
                             gboolean forward,
                             GError **error);

Step one frame forward, if `forward` is `TRUE`, or backwards, if `forward` is `FALSE`

#### Parameters

bvw | a BaconVideoWidget |
forward | the direction of the frame step |
error | a GError, or `NULL` |

#### Returns

`TRUE` on success, `FALSE` otherwise

### bacon_video_widget_get_controls_object ()

    GObject *
    bacon_video_widget_get_controls_object
                                   (BaconVideoWidget *bvw);

Get the widget which displays the video controls.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

controls widget.

[transfer none]

Since: 3.12

### bacon_video_widget_get_header_controls_object ()

    GObject *
    bacon_video_widget_get_header_controls_object
                                   (BaconVideoWidget *bvw);

Get the widget which displays the video header controls.

#### Parameters

bvw | a BaconVideoWidget |

#### Returns

header controls widget.

[transfer none]

Since: 3.20

### bacon_video_widget_set_fullscreen ()

    void
    bacon_video_widget_set_fullscreen (BaconVideoWidget *bvw,
                                       gboolean fullscreen);

Sets the fullscreen state, enabling a toplevel header bar sliding from the top of the video widget.

#### Parameters

bvw | a BaconVideoWidget |
fullscreen | the new fullscreen state |

### bacon_video_widget_set_next_language ()

    void
    bacon_video_widget_set_next_language (BaconVideoWidget *bvw);

Switch to the next audio language index for the current video. See `bacon_video_widget_set_language()`.

#### Parameters

bvw | a BaconVideoWidget |

Since: 3.12

### bacon_video_widget_set_next_subtitle ()

    void
    bacon_video_widget_set_next_subtitle (BaconVideoWidget *bvw);

Switch to the next text subtitle index for the current video. See `bacon_video_widget_set_subtitle()`.

#### Parameters

bvw | a BaconVideoWidget |

Since: 3.12

### bacon_video_widget_show_popup ()

    void
    bacon_video_widget_show_popup (BaconVideoWidget *bvw);

Show the video controls popup, and schedule for it to be hidden again after a timeout.

#### Parameters

bvw | a BaconVideoWidget |

Since: 3.12

### bacon_video_widget_mark_popup_busy ()

    void
    bacon_video_widget_mark_popup_busy (BaconVideoWidget *bvw,
                                        const char *reason);

Mark the video controls popup as busy, for the given `reason` . Use `bacon_video_widget_unmark_popup_busy()` to undo.

#### Parameters

bvw | a BaconVideoWidget |
reason | human-readable reason for the controls popup being marked as busy |

Since: 3.12

### bacon_video_widget_unmark_popup_busy ()

    void
    bacon_video_widget_unmark_popup_busy (BaconVideoWidget *bvw,
                                          const char *reason);

Unmark the video controls popup as busy, for the given `reason` . The popup must previously have been marked as busy using `bacon_video_widget_mark_popup_busy()`.

#### Parameters

bvw | a BaconVideoWidget |
reason | human-readable reason for the controls popup being unmarked as busy |

Since: 3.12

## Types and Values

### BaconVideoWidget

    typedef struct _BaconVideoWidget BaconVideoWidget;

### enum BvwAspectRatio

The pixel aspect ratios available in which to display videos using ``bacon_video_widget_set_aspect_ratio()`` .

#### Members

BVW_RATIO_AUTO | automatic |
BVW_RATIO_SQUARE | square (1:1) |
BVW_RATIO_FOURBYTHREE | four-by-three (4:3) |
BVW_RATIO_ANAMORPHIC | anamorphic (16:9) |
BVW_RATIO_DVB | DVB (20:9) |

### enum BvwAudioOutputType

The audio output types available for use with `bacon_video_widget_set_audio_output_type()`.

#### Members

BVW_AUDIO_SOUND_STEREO | stereo output |
BVW_AUDIO_SOUND_4CHANNEL | 4-channel output |
BVW_AUDIO_SOUND_41CHANNEL | 4.1-channel output |
BVW_AUDIO_SOUND_5CHANNEL | 5-channel output |
BVW_AUDIO_SOUND_51CHANNEL | 5.1-channel output |
BVW_AUDIO_SOUND_AC3PASSTHRU | AC3 passthrough output |

### enum BvwDVDEvent

The DVD navigation actions available to fire as DVD events to the BaconVideoWidget.

#### Members

BVW_DVD_ROOT_MENU | root menu |
BVW_DVD_TITLE_MENU | title menu |
BVW_DVD_SUBPICTURE_MENU | subpicture menu (if available) |
BVW_DVD_AUDIO_MENU | audio menu (if available) |
BVW_DVD_ANGLE_MENU | angle menu (if available) |
BVW_DVD_CHAPTER_MENU | chapter menu |
BVW_DVD_NEXT_CHAPTER | the next chapter |
BVW_DVD_PREV_CHAPTER | the previous chapter |
BVW_DVD_NEXT_TITLE | the next title in the current chapter |
BVW_DVD_PREV_TITLE | the previous title in the current chapter |
BVW_DVD_ROOT_MENU_UP | go up in the menu |
BVW_DVD_ROOT_MENU_DOWN | go down in the menu |
BVW_DVD_ROOT_MENU_LEFT | go left in the menu |
BVW_DVD_ROOT_MENU_RIGHT | go right in the menu |
BVW_DVD_ROOT_MENU_SELECT | select the current menu entry |

### BvwLangInfo

    typedef struct {
    	char *language;
    	char *codec;
    } BvwLangInfo;

BvwLangInfo holds the language code and codec for each subtitle or audio track for a media, which would allow the front-ends to present appropriate information to the user.

#### Members

char *`language`; | the ISO-639 language code for the track, or "und" if unknown. Can never be `NULL`. |
char *`codec`; | the codec for the track, or `NULL` if unknown or unset. |

### enum BvwMetadataType

The different metadata available for querying from a BaconVideoWidget stream with `bacon_video_widget_get_metadata()`.

#### Members

BVW_INFO_TITLE | the stream's title |
BVW_INFO_ARTIST | the artist who created the work |
BVW_INFO_YEAR | the year in which the work was created |
BVW_INFO_COMMENT | a comment attached to the stream |
BVW_INFO_ALBUM | the album in which the work was released |
BVW_INFO_DURATION | the stream's duration, in seconds |
BVW_INFO_TRACK_NUMBER | the track number of the work on the album |
BVW_INFO_COVER | a GdkPixbuf of the cover artwork |
BVW_INFO_CONTAINER | the type of stream container |
BVW_INFO_HAS_VIDEO | whether the stream has video |
BVW_INFO_DIMENSION_X | the video's width, in pixels |
BVW_INFO_DIMENSION_Y | the video's height, in pixels |
BVW_INFO_VIDEO_BITRATE | the video's bitrate, in kilobits per second |
BVW_INFO_VIDEO_CODEC | the video's codec |
BVW_INFO_FPS | the number of frames per second in the video |
BVW_INFO_HAS_AUDIO | whether the stream has audio |
BVW_INFO_AUDIO_BITRATE | the audio's bitrate, in kilobits per second |
BVW_INFO_AUDIO_CODEC | the audio's codec |
BVW_INFO_AUDIO_SAMPLE_RATE | the audio sample rate, in bits per second |
BVW_INFO_AUDIO_CHANNELS | a string describing the number of audio channels in the stream |

### enum BvwRotation

The rotation is used by the video widget, as set by `bacon_video_widget_set_rotation()`.

#### Members

BVW_ROTATION_R_ZERO | No rotation |
BVW_ROTATION_R_90R | Rotate 90 degrees to the right |
BVW_ROTATION_R_180 | Rotate 180 degrees |
BVW_ROTATION_R_90L | Rotate 90 degrees to the left |

### enum BvwTrackType

A type of media track.

#### Members

BVW_TRACK_TYPE_AUDIO | an audio track |
BVW_TRACK_TYPE_SUBTITLE | a subtitle track |
BVW_TRACK_TYPE_VIDEO | a video track |

### enum BvwVideoProperty

The video properties queryable with `bacon_video_widget_get_video_property()`, and settable with `bacon_video_widget_set_video_property()`.

#### Members

BVW_VIDEO_BRIGHTNESS | the video brightness |
BVW_VIDEO_CONTRAST | the video contrast |
BVW_VIDEO_SATURATION | the video saturation |
BVW_VIDEO_HUE | the video hue |

### enum BvwZoomMode

The zoom mode used by the video widget, as set by `bacon_video_widget_set_zoom()`.

#### Members

BVW_ZOOM_NONE | No video zooming/cropping |
BVW_ZOOM_EXPAND | Fill area with video, and crop the excess |

### enum BvwError

Error codes for BaconVideoWidget operations.

#### Members

BVW_ERROR_NO_PLUGIN_FOR_FILE | A required GStreamer plugin is missing. |
BVW_ERROR_BROKEN_FILE | The movie file is broken and cannot be decoded. |
BVW_ERROR_FILE_GENERIC | A generic error for problems with movie files. |
BVW_ERROR_FILE_PERMISSION | Permission was refused to access the stream, or authentication was required. |
BVW_ERROR_FILE_ENCRYPTED | The stream is encrypted and cannot be played. |
BVW_ERROR_FILE_NOT_FOUND | The stream cannot be found. |
BVW_ERROR_DVD_ENCRYPTED | The DVD is encrypted and libdvdcss is not installed. |
BVW_ERROR_INVALID_DEVICE | The device given in an MRL (e.g. DVD drive or DVB tuner) did not exist. |
BVW_ERROR_UNKNOWN_HOST | The host for a given stream could not be resolved. |
BVW_ERROR_NETWORK_UNREACHABLE | The host for a given stream could not be reached. |
BVW_ERROR_CONNECTION_REFUSED | The server for a given stream refused the connection. |
BVW_ERROR_INVALID_LOCATION | An MRL was malformed, or CDDB playback was attempted (which is now unsupported). |
BVW_ERROR_GENERIC | A generic error occurred. |
BVW_ERROR_CODEC_NOT_HANDLED | The audio or video codec required by the stream is not supported. |
BVW_ERROR_CANNOT_CAPTURE | Error determining frame capture support for a video with `bacon_video_widget_can_get_frames()`. |
BVW_ERROR_READ_ERROR | A generic error for problems reading streams. |
BVW_ERROR_PLUGIN_LOAD | A library or plugin could not be loaded. |
BVW_ERROR_EMPTY_FILE | A movie file was empty. |

## Property Details

### The `“audio-output-type”` property

      “audio-output-type”        BvwAudioOutputType

The type of audio output to use (e.g. the number of channels).

Owner: BaconVideoWidget

Flags: Read / Write

Default value: BVW_AUDIO_SOUND_STEREO

### The `“av-offset”` property

      “av-offset”                gint64

Control the synchronisation offset between the audio and video streams. Positive values make the audio ahead of the video and negative values make the audio go behind the video.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: 0

### The `“brightness”` property

      “brightness”               gint

The brightness of the video display.

Owner: BaconVideoWidget

Flags: Read / Write

Allowed values: [0,65535]

Default value: 32768

### The `“contrast”` property

      “contrast”                 gint

The contrast of the video display.

Owner: BaconVideoWidget

Flags: Read / Write

Allowed values: [0,65535]

Default value: 32768

### The `“deinterlacing”` property

      “deinterlacing”            gboolean

Whether to automatically deinterlace videos.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: FALSE

### The `“download-filename”` property

      “download-filename”        gchar *

The filename of the fully downloaded stream when using download buffering.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: NULL

### The `“hue”` property

      “hue”                      gint

The hue of the video display.

Owner: BaconVideoWidget

Flags: Read / Write

Allowed values: [0,65535]

Default value: 32768

### The `“logo-mode”` property

      “logo-mode”                gboolean

Whether the logo should be displayed when no stream is loaded, or the widget should take up no space.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: FALSE

### The `“playing”` property

      “playing”                  gboolean

Whether a stream is currently playing.

Owner: BaconVideoWidget

Flags: Read

Default value: FALSE

### The `“position”` property

      “position”                 gdouble

The current position in the stream, as a percentage between `0` and `1`.

Owner: BaconVideoWidget

Flags: Read

Allowed values: [0,1]

Default value: 0

### The `“referrer”` property

      “referrer”                 gchar *

The HTTP referrer URI.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: NULL

### The `“reveal-controls”` property

      “reveal-controls”          gboolean

Whether to show or hide the controls.

Owner: BaconVideoWidget

Flags: Read

Default value: FALSE

### The `“saturation”` property

      “saturation”               gint

The saturation of the video display.

Owner: BaconVideoWidget

Flags: Read / Write

Allowed values: [0,65535]

Default value: 32768

### The `“seekable”` property

      “seekable”                 gboolean

Whether the current stream can be seeked.

Owner: BaconVideoWidget

Flags: Read

Default value: FALSE

### The `“stream-length”` property

      “stream-length”            gint64

The length of the current stream, in milliseconds.

Owner: BaconVideoWidget

Flags: Read

Allowed values: >= 0

Default value: 0

### The `“user-agent”` property

      “user-agent”               gchar *

The HTTP user agent string to use.

Owner: BaconVideoWidget

Flags: Read / Write

Default value: NULL

### The `“volume”` property

      “volume”                   gdouble

The current volume level, as a percentage between `0` and `1`.

Owner: BaconVideoWidget

Flags: Read / Write

Allowed values: [0,1]

Default value: 0

## Signal Details

### The `“buffering”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gdouble           percentage,
                   gpointer          user_data)

Emitted regularly when a network stream is being buffered, to provide status updates on the buffering progress.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
percentage | the percentage of buffering completed, between `0` and `1` |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“channels-change”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gpointer          user_data)

Emitted when the number of audio languages available changes, or when the selected audio language is changed.

Query the new list of audio languages with `bacon_video_widget_get_languages()`.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“download-buffering”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gdouble           percentage,
                   gpointer          user_data)

Emitted regularly when a network stream is being cached on disk, to provide status updates on the buffering level of the stream.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
percentage | the percentage of download buffering completed, between `0` and `1` |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“eos”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gpointer          user_data)

Emitted when the end of the current stream is reached.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“error”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gchar            *message,
                   gboolean          playback_stopped,
                   gpointer          user_data)

Emitted when the backend wishes to asynchronously report an error. If `fatal` is `TRUE`, playback of this stream cannot be restarted.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
message | the error message |
playback_stopped | `TRUE` if playback has stopped due to the error, `FALSE` otherwise |
fatal | `TRUE` if the error was fatal to playback, `FALSE` otherwise |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“got-metadata”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gpointer          user_data)

Emitted when the widget has updated the metadata of the current stream. This will typically happen just after opening a stream.

Call `bacon_video_widget_get_metadata()` to query the updated metadata.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“got-redirect”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gchar            *new_mrl,
                   gpointer          user_data)

Emitted when a redirect response is received from a stream's server.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
new_mrl | the new MRL |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“missing-plugins”` signal

    gboolean
    user_function (BaconVideoWidget *bvw,
                   GStrv             details,
                   GStrv             descriptions,
                   gboolean          playing,
                   gpointer          user_data)

Emitted when plugins required to play the current stream are not found. This allows the application to request the user install them before proceeding to try and play the stream again.

Note that this signal is only available for the GStreamer backend.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
details | a `NULL`-terminated array of missing plugin details for use when installing the plugins with libgimme-codec |
descriptions | a `NULL`-terminated array of missing plugin descriptions for display to the user |
playing | `TRUE` if the stream could be played even without these plugins, `FALSE` otherwise |
user_data | user data set when the signal handler was connected. |

#### Returns

`TRUE` if the signal was handled and some action was taken, `FALSE` otherwise

Flags: Run Last

### The `“seek-requested”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gboolean          forward,
                   gpointer          user_data)

Emitted when a gesture, our mouse movement that should seek is made.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
forward | whether the seek requested is a forward or backward seek. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“tick”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gint64            current_time,
                   gint64            stream_length,
                   gdouble           current_position,
                   gboolean          seekable,
                   gpointer          user_data)

Emitted every time an important time event happens, or at regular intervals when playing a stream.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
current_time | the current position in the stream, in milliseconds since the beginning of the stream |
stream_length | the length of the stream, in milliseconds |
current_position | the current position in the stream, as a percentage between `0` and `1` |
seekable | `TRUE` if the stream can be seeked, `FALSE` otherwise |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“track-skip-requested”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gboolean          forward,
                   gpointer          user_data)

Emitted when a gesture, our mouse movement that should seek is made.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
forward | whether the track change requested is a forward or backward skip. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“volume-change-requested”` signal

    void
    user_function (BaconVideoWidget *bvw,
                   gboolean          increase,
                   gpointer          user_data)

Emitted when a gesture, our mouse movement that should change the volume is emitted.

#### Parameters

bvw | the BaconVideoWidget which received the signal |
increase | whether the volume change requested is an increase or decrease. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last