70
71
gtk_list_store_clear (meta_store);
72
add_meta_entry ("Title:", XINE_META_INFO_TITLE);
73
add_meta_entry ("Artist:", XINE_META_INFO_ARTIST);
74
add_meta_entry ("Comment:", XINE_META_INFO_COMMENT);
75
add_meta_entry ("Date:", XINE_META_INFO_YEAR);
76
add_meta_entry ("Audio Codec:", XINE_META_INFO_AUDIOCODEC);
73
add_meta_entry (_("Title:"), XINE_META_INFO_TITLE);
74
add_meta_entry (_("Artist:"), XINE_META_INFO_ARTIST);
75
add_meta_entry (_("Comment:"), XINE_META_INFO_COMMENT);
76
add_meta_entry (_("Date:"), XINE_META_INFO_YEAR);
77
add_meta_entry (_("Audio codec:"), XINE_META_INFO_AUDIOCODEC);
78
channels = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_AUDIO_CHANNELS);
79
bits = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_AUDIO_BITS);
80
samplerate = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_AUDIO_SAMPLERATE);
81
bps = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_AUDIO_BITRATE) ;
79
channels = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_CHANNELS);
80
bits = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_BITS);
81
samplerate = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_SAMPLERATE);
82
bps = xine_get_stream_info (stream, XINE_STREAM_INFO_AUDIO_BITRATE) ;
84
snprintf (str, 80, "%d channels, %d bit, %3.1fkHz, %d bps",
85
snprintf (str, 80, _("%d channels, %d bit, %3.1fkHz, %d bps"),
85
86
channels, bits, samplerate/1000.0, bps);
87
add_string_entry ("Audio Format:", str);
88
add_string_entry (_("Audio format:"), str);
91
add_meta_entry ("Video Codec:", XINE_META_INFO_VIDEOCODEC);
93
w = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_VIDEO_WIDTH);
94
h = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_VIDEO_HEIGHT);
96
if (gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_FRAME_DURATION) != 0.0)
97
fps = 90000.0 / gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_FRAME_DURATION);
92
add_meta_entry (_("Video codec:"), XINE_META_INFO_VIDEOCODEC);
94
w = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_WIDTH);
95
h = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_HEIGHT);
97
if (xine_get_stream_info (stream, XINE_STREAM_INFO_FRAME_DURATION) != 0.0)
98
fps = 90000.0 / xine_get_stream_info (stream, XINE_STREAM_INFO_FRAME_DURATION);
101
ratio = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_VIDEO_RATIO) / 10000.0;
102
bps = gtk_xine_get_stream_info (GTK_XINE (gtx), XINE_STREAM_INFO_VIDEO_BITRATE) ;
102
ratio = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_RATIO) / 10000.0;
103
bps = xine_get_stream_info (stream, XINE_STREAM_INFO_VIDEO_BITRATE) ;
104
105
snprintf (str, 80, "%dx%d, %2.1f fps, %4.2f:1, %d bps", w, h, fps, ratio, bps);
106
add_string_entry ("Video Format:", str);
107
add_string_entry (_("Video format:"), str);
109
add_meta_entry ("System Layer:", XINE_META_INFO_SYSTEMLAYER);
110
add_meta_entry (_("System layer:"), XINE_META_INFO_SYSTEMLAYER);
124
125
is_visible = TRUE;
125
126
gtk_widget_show_all (dlg);
126
gtk_widget_map (dlg);
130
static gboolean close_cb (GtkWidget* widget, gpointer data) {
132
gtk_widget_unmap (dlg);
130
static void response_cb (GtkDialog *dbox, int response, gpointer data)
134
case GTK_RESPONSE_YES:
139
gtk_widget_hide (dlg);
143
static JSBool js_stream_info_show (JSContext *cx, JSObject *obj, uintN argc,
144
jsval *argv, jsval *rval) {
146
/* se_t *se = (se_t *) JS_GetContextPrivate(cx); */
148
se_log_fncall ("stream_info_show");
137
155
void stream_info_init (void) {
139
GtkWidget *tree_view, *button, *scrolled_window;
157
GtkWidget *tree_view, *scrolled_window;
140
158
GtkCellRenderer *cell;
141
159
GtkTreeViewColumn *column;
143
161
/* create dialog */
145
dlg = gtk_dialog_new ();
146
gtk_window_set_title (GTK_WINDOW (dlg), "Stream Meta Info");
163
dlg = gtk_dialog_new_with_buttons (_("Stream meta-info"), NULL, 0,
164
GTK_STOCK_REFRESH, GTK_RESPONSE_YES,
165
GTK_STOCK_CLOSE, GTK_RESPONSE_DELETE_EVENT,
147
167
gtk_window_set_default_size (GTK_WINDOW (dlg), 500, 400);
148
g_signal_connect (GTK_OBJECT (dlg), "delete_event",
149
G_CALLBACK (close_cb), NULL );
168
hide_on_delete (dlg, &is_visible);
169
g_signal_connect (GTK_OBJECT(dlg), "response",
170
GTK_SIGNAL_FUNC(response_cb), NULL);
151
button = gtk_dialog_add_button (GTK_DIALOG (dlg), GTK_STOCK_CLOSE, 1);
152
g_signal_connect (GTK_OBJECT(button), "clicked",
153
G_CALLBACK(close_cb),
156
172
/* add list to hold meta info */
158
174
meta_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);