static void on_got_metadata_event (BaconVideoWidget *bvw, callback_data *data) { GValue value = { 0, }; GdkPixbuf *pixbuf; PROGRESS_DEBUG("Got metadata, checking if we have a cover"); bacon_video_widget_get_metadata (bvw, BVW_INFO_COVER, &value); pixbuf = g_value_dup_object (&value); g_value_unset (&value); if (pixbuf) { PROGRESS_DEBUG("Saving cover image"); bacon_video_widget_close (bvw); totem_resources_monitor_stop (); gtk_widget_destroy (GTK_WIDGET (bvw)); save_pixbuf (pixbuf, data->output, data->input, output_size, TRUE); g_object_unref (pixbuf); exit (0); } else if (has_video (bvw) == FALSE) { PROGRESS_DEBUG("No covers, and no video, exiting"); exit (0); } }
static gboolean has_video (BaconVideoWidget *bvw) { GValue value = { 0, }; gboolean retval; bacon_video_widget_get_metadata (bvw, BVW_INFO_HAS_VIDEO, &value); retval = g_value_get_boolean (&value); g_value_unset (&value); return retval; }
static void update_from_state (XplayerOntopPluginPrivate *priv) { GValue has_video = { 0, }; bacon_video_widget_get_metadata (priv->bvw, BVW_INFO_HAS_VIDEO, &has_video); gtk_window_set_keep_above (priv->window, (xplayer_is_playing (priv->xplayer) != FALSE && g_value_get_boolean (&has_video) != FALSE)); g_value_unset (&has_video); }
static void update_properties_from_bvw (BaconVideoWidgetProperties *props, GtkWidget *widget) { GValue value = { 0, }; gboolean has_video, has_audio; BaconVideoWidget *bvw; g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props)); g_return_if_fail (BACON_IS_VIDEO_WIDGET (widget)); bvw = BACON_VIDEO_WIDGET (widget); /* General */ UPDATE_FROM_STRING (BVW_INFO_TITLE, "title"); UPDATE_FROM_STRING (BVW_INFO_ARTIST, "artist"); UPDATE_FROM_STRING (BVW_INFO_ALBUM, "album"); UPDATE_FROM_STRING (BVW_INFO_YEAR, "year"); UPDATE_FROM_STRING (BVW_INFO_COMMENT, "comment"); UPDATE_FROM_STRING (BVW_INFO_CONTAINER, "container"); bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), BVW_INFO_DURATION, &value); bacon_video_widget_properties_set_duration (props, g_value_get_int (&value) * 1000); g_value_unset (&value); /* Types */ bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), BVW_INFO_HAS_VIDEO, &value); has_video = g_value_get_boolean (&value); g_value_unset (&value); bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), BVW_INFO_HAS_AUDIO, &value); has_audio = g_value_get_boolean (&value); g_value_unset (&value); bacon_video_widget_properties_set_has_type (props, has_video, has_audio); /* Video */ if (has_video != FALSE) { UPDATE_FROM_INT2 (BVW_INFO_DIMENSION_X, BVW_INFO_DIMENSION_Y, "dimensions", N_("%d x %d")); UPDATE_FROM_STRING (BVW_INFO_VIDEO_CODEC, "vcodec"); UPDATE_FROM_INT (BVW_INFO_VIDEO_BITRATE, "video_bitrate", N_("%d kbps"), C_("Stream bit rate", "N/A")); bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), BVW_INFO_FPS, &value); bacon_video_widget_properties_set_framerate (props, g_value_get_int (&value)); g_value_unset (&value); } /* Audio */ if (has_audio != FALSE) { UPDATE_FROM_INT (BVW_INFO_AUDIO_BITRATE, "audio_bitrate", N_("%d kbps"), C_("Stream bit rate", "N/A")); UPDATE_FROM_STRING (BVW_INFO_AUDIO_CODEC, "acodec"); UPDATE_FROM_INT (BVW_INFO_AUDIO_SAMPLE_RATE, "samplerate", N_("%d Hz"), C_("Sample rate", "N/A")); UPDATE_FROM_STRING (BVW_INFO_AUDIO_CHANNELS, "channels"); } #undef UPDATE_FROM_STRING #undef UPDATE_FROM_INT #undef UPDATE_FROM_INT2 }