~titan-lien/ubuntu/saucy/totem/totem.dev

« back to all changes in this revision

Viewing changes to src/plugins/properties/totem-movie-properties.c

  • Committer: Package Import Robot
  • Author(s): Michael Biebl, Sjoerd Simons, Michael Biebl, Josselin Mouette
  • Date: 2011-11-27 06:21:34 UTC
  • mfrom: (1.4.8) (5.1.23 sid)
  • Revision ID: package-import@ubuntu.com-20111127062134-c3ikko9wdfn9m2av
Tags: 3.2.1-1
[ Sjoerd Simons ]
* New upstream release
* debian/control.in: Update build-depends
* debian/rules: Enable vala plugins
* debian/totem-plugins.install:
  - Add grilo and rotation plugins
  - Remove jamendo, thumbnail and tracker plugins

[ Michael Biebl ]
* debian/control.in:
  - Bump Depends on python-gobject to (>= 2.90.3).

[ Josselin Mouette ]
* Replace python-gobject dependencies by python-gi.

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
 
40
40
#include "totem-plugin.h"
41
41
#include "totem.h"
 
42
#include "bacon-video-widget.h"
42
43
 
43
44
#define TOTEM_TYPE_MOVIE_PROPERTIES_PLUGIN              (totem_movie_properties_plugin_get_type ())
44
45
#define TOTEM_MOVIE_PROPERTIES_PLUGIN(o)                (G_TYPE_CHECK_INSTANCE_CAST ((o), TOTEM_TYPE_MOVIE_PROPERTIES_PLUGIN, TotemMoviePropertiesPlugin))
56
57
                      TotemMoviePropertiesPlugin,
57
58
                      totem_movie_properties_plugin)
58
59
 
 
60
/* used in update_properties_from_bvw() */
 
61
#define UPDATE_FROM_STRING(type, name) \
 
62
        do { \
 
63
                const char *temp; \
 
64
                bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), \
 
65
                                                 type, &value); \
 
66
                if ((temp = g_value_get_string (&value)) != NULL) { \
 
67
                        bacon_video_widget_properties_set_label (props, name, \
 
68
                                                                 temp); \
 
69
                } \
 
70
                g_value_unset (&value); \
 
71
        } while (0)
 
72
 
 
73
#define UPDATE_FROM_INT(type, name, format, empty) \
 
74
        do { \
 
75
                char *temp; \
 
76
                bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), \
 
77
                                                 type, &value); \
 
78
                if (g_value_get_int (&value) != 0) \
 
79
                        temp = g_strdup_printf (gettext (format), \
 
80
                                        g_value_get_int (&value)); \
 
81
                else \
 
82
                        temp = g_strdup (empty); \
 
83
                bacon_video_widget_properties_set_label (props, name, temp); \
 
84
                g_free (temp); \
 
85
                g_value_unset (&value); \
 
86
        } while (0)
 
87
 
 
88
#define UPDATE_FROM_INT2(type1, type2, name, format) \
 
89
        do { \
 
90
                int x, y; \
 
91
                char *temp; \
 
92
                bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), \
 
93
                                                 type1, &value); \
 
94
                x = g_value_get_int (&value); \
 
95
                g_value_unset (&value); \
 
96
                bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), \
 
97
                                                 type2, &value); \
 
98
                y = g_value_get_int (&value); \
 
99
                g_value_unset (&value); \
 
100
                temp = g_strdup_printf (gettext (format), x, y); \
 
101
                bacon_video_widget_properties_set_label (props, name, temp); \
 
102
                g_free (temp); \
 
103
        } while (0)
 
104
 
 
105
static void
 
106
update_properties_from_bvw (BaconVideoWidgetProperties *props,
 
107
                                      GtkWidget *widget)
 
108
{
 
109
        GValue value = { 0, };
 
110
        gboolean has_video, has_audio;
 
111
        BaconVideoWidget *bvw;
 
112
 
 
113
        g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props));
 
114
        g_return_if_fail (BACON_IS_VIDEO_WIDGET (widget));
 
115
 
 
116
        bvw = BACON_VIDEO_WIDGET (widget);
 
117
 
 
118
        /* General */
 
119
        UPDATE_FROM_STRING (BVW_INFO_TITLE, "title");
 
120
        UPDATE_FROM_STRING (BVW_INFO_ARTIST, "artist");
 
121
        UPDATE_FROM_STRING (BVW_INFO_ALBUM, "album");
 
122
        UPDATE_FROM_STRING (BVW_INFO_YEAR, "year");
 
123
        UPDATE_FROM_STRING (BVW_INFO_COMMENT, "comment");
 
124
        UPDATE_FROM_STRING (BVW_INFO_CONTAINER, "container");
 
125
 
 
126
        bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw),
 
127
                                         BVW_INFO_DURATION, &value);
 
128
        bacon_video_widget_properties_set_duration (props,
 
129
                                                    g_value_get_int (&value) * 1000);
 
130
        g_value_unset (&value);
 
131
 
 
132
        /* Types */
 
133
        bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw),
 
134
                                         BVW_INFO_HAS_VIDEO, &value);
 
135
        has_video = g_value_get_boolean (&value);
 
136
        g_value_unset (&value);
 
137
 
 
138
        bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw),
 
139
                                         BVW_INFO_HAS_AUDIO, &value);
 
140
        has_audio = g_value_get_boolean (&value);
 
141
        g_value_unset (&value);
 
142
 
 
143
        bacon_video_widget_properties_set_has_type (props, has_video, has_audio);
 
144
 
 
145
        /* Video */
 
146
        if (has_video != FALSE)
 
147
        {
 
148
                UPDATE_FROM_INT2 (BVW_INFO_DIMENSION_X, BVW_INFO_DIMENSION_Y,
 
149
                                  "dimensions", N_("%d x %d"));
 
150
                UPDATE_FROM_STRING (BVW_INFO_VIDEO_CODEC, "vcodec");
 
151
                UPDATE_FROM_INT (BVW_INFO_VIDEO_BITRATE, "video_bitrate",
 
152
                                 N_("%d kbps"), C_("Stream bit rate", "N/A"));
 
153
 
 
154
                bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw), BVW_INFO_FPS, &value);
 
155
                bacon_video_widget_properties_set_framerate (props, g_value_get_int (&value));
 
156
                g_value_unset (&value);
 
157
        }
 
158
 
 
159
        /* Audio */
 
160
        if (has_audio != FALSE)
 
161
        {
 
162
                UPDATE_FROM_INT (BVW_INFO_AUDIO_BITRATE, "audio_bitrate",
 
163
                                 N_("%d kbps"), C_("Stream bit rate", "N/A"));
 
164
                UPDATE_FROM_STRING (BVW_INFO_AUDIO_CODEC, "acodec");
 
165
                UPDATE_FROM_INT (BVW_INFO_AUDIO_SAMPLE_RATE, "samplerate",
 
166
                                N_("%d Hz"), C_("Sample rate", "N/A"));
 
167
                UPDATE_FROM_STRING (BVW_INFO_AUDIO_CHANNELS, "channels");
 
168
        }
 
169
 
 
170
#undef UPDATE_FROM_STRING
 
171
#undef UPDATE_FROM_INT
 
172
#undef UPDATE_FROM_INT2
 
173
}
 
174
 
 
175
 
 
176
 
59
177
static void
60
178
stream_length_notify_cb (TotemObject *totem,
61
179
                         GParamSpec *arg1,
67
185
                      "stream-length", &stream_length,
68
186
                      NULL);
69
187
 
70
 
        bacon_video_widget_properties_from_time
 
188
        bacon_video_widget_properties_set_duration
71
189
                (BACON_VIDEO_WIDGET_PROPERTIES (plugin->priv->props),
72
190
                 stream_length);
73
191
}
80
198
        GtkWidget *bvw;
81
199
 
82
200
        bvw = totem_get_video_widget (totem);
83
 
        bacon_video_widget_properties_update
 
201
        update_properties_from_bvw
84
202
                (BACON_VIDEO_WIDGET_PROPERTIES (plugin->priv->props), bvw);
85
203
        g_object_unref (bvw);
86
204
        gtk_widget_set_sensitive (plugin->priv->props, TRUE);
107
225
        GtkWidget *bvw;
108
226
 
109
227
        bvw = totem_get_video_widget (totem);
110
 
        bacon_video_widget_properties_update
 
228
        update_properties_from_bvw
111
229
                (BACON_VIDEO_WIDGET_PROPERTIES (plugin->priv->props), bvw);
112
230
        g_object_unref (bvw);
113
231
}