243
245
static void empathy_streamed_media_window_mic_toggled_cb (
244
246
GtkToggleToolButton *toggle, EmpathyStreamedMediaWindow *window);
246
static void empathy_streamed_media_window_sidebar_hidden_cb (EmpathySidebar *sidebar,
248
static void empathy_streamed_media_window_sidebar_hidden_cb (EvSidebar *sidebar,
247
249
EmpathyStreamedMediaWindow *window);
249
static void empathy_streamed_media_window_sidebar_shown_cb (EmpathySidebar *sidebar,
251
static void empathy_streamed_media_window_sidebar_shown_cb (EvSidebar *sidebar,
250
252
EmpathyStreamedMediaWindow *window);
252
254
static void empathy_streamed_media_window_hangup_cb (gpointer object,
1043
1055
"camera_off", &priv->tool_button_camera_off,
1044
1056
"camera_preview", &priv->tool_button_camera_preview,
1045
1057
"camera_on", &priv->tool_button_camera_on,
1046
"action_camera_off", &priv->action_camera,
1047
"action_camera_preview", &priv->action_camera_preview,
1058
"action_camera_on", &priv->action_camera_on,
1048
1059
"details_vbox", &priv->details_vbox,
1049
1060
"vcodec_encoding_label", &priv->vcodec_encoding_label,
1050
1061
"acodec_encoding_label", &priv->acodec_encoding_label,
1071
1082
"camera_off", "toggled", tool_button_camera_off_toggled_cb,
1072
1083
"camera_preview", "toggled", tool_button_camera_preview_toggled_cb,
1073
1084
"camera_on", "toggled", tool_button_camera_on_toggled_cb,
1074
"action_camera_off", "changed", action_camera_change_cb,
1085
"action_camera_on", "changed", action_camera_change_cb,
1077
1088
gtk_action_set_sensitive (priv->menu_fullscreen, FALSE);
1162
1174
gtk_box_pack_end (GTK_BOX (priv->vbox), h, FALSE, FALSE, 3);
1163
1175
gtk_box_pack_end (GTK_BOX (h), priv->sidebar_button, FALSE, FALSE, 3);
1165
priv->sidebar = empathy_sidebar_new ();
1177
priv->sidebar = ev_sidebar_new ();
1166
1178
g_signal_connect (G_OBJECT (priv->sidebar),
1167
1179
"hide", G_CALLBACK (empathy_streamed_media_window_sidebar_hidden_cb), self);
1168
1180
g_signal_connect (G_OBJECT (priv->sidebar),
1170
1182
gtk_paned_pack2 (GTK_PANED (priv->pane), priv->sidebar, FALSE, FALSE);
1172
1184
page = empathy_streamed_media_window_create_audio_input (self);
1173
empathy_sidebar_add_page (EMPATHY_SIDEBAR (priv->sidebar),
1185
ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "audio-input",
1174
1186
_("Audio input"), page);
1176
1188
page = empathy_streamed_media_window_create_video_input (self);
1177
empathy_sidebar_add_page (EMPATHY_SIDEBAR (priv->sidebar),
1189
ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "video-input",
1178
1190
_("Video input"), page);
1180
1192
priv->dtmf_panel = empathy_streamed_media_window_create_dtmf (self);
1181
empathy_sidebar_add_page (EMPATHY_SIDEBAR (priv->sidebar),
1193
ev_sidebar_add_page (EV_SIDEBAR (priv->sidebar), "dialpad",
1182
1194
_("Dialpad"), priv->dtmf_panel);
1184
1196
gtk_widget_set_sensitive (priv->dtmf_panel, FALSE);
1719
1733
g_object_unref (priv->audio_input);
1720
1734
priv->audio_input = NULL;
1736
if (priv->audio_output != NULL)
1737
g_object_unref (priv->audio_output);
1738
priv->audio_output = NULL;
1722
1740
if (priv->video_tee != NULL)
1723
1741
g_object_unref (priv->video_tee);
1724
1742
priv->video_tee = NULL;
1744
if (priv->liveadder != NULL)
1745
gst_object_unref (priv->liveadder);
1746
priv->liveadder = NULL;
1726
1748
if (priv->fsnotifier != NULL)
1727
1749
g_object_unref (priv->fsnotifier);
1728
1750
priv->fsnotifier = NULL;
1877
1902
EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
1879
gtk_label_set_text (GTK_LABEL (priv->vcodec_encoding_label), _("Unknown"));
1880
gtk_label_set_text (GTK_LABEL (priv->acodec_encoding_label), _("Unknown"));
1881
gtk_label_set_text (GTK_LABEL (priv->vcodec_decoding_label), _("Unknown"));
1882
gtk_label_set_text (GTK_LABEL (priv->acodec_decoding_label), _("Unknown"));
1904
/* translators: encoding video codec is unknown */
1905
gtk_label_set_text (GTK_LABEL (priv->vcodec_encoding_label),
1906
C_("encoding video codec", "Unknown"));
1907
/* translators: encoding audio codec is unknown */
1908
gtk_label_set_text (GTK_LABEL (priv->acodec_encoding_label),
1909
C_("encoding audio codec", "Unknown"));
1910
/* translators: decoding video codec is unknown */
1911
gtk_label_set_text (GTK_LABEL (priv->vcodec_decoding_label),
1912
C_("decoding video codec", "Unknown"));
1913
/* translators: decoding audio codec is unknown */
1914
gtk_label_set_text (GTK_LABEL (priv->acodec_decoding_label),
1915
C_("decoding audio codec", "Unknown"));
1885
1918
static gboolean
2017
2052
else if (media_type == TP_MEDIA_STREAM_TYPE_AUDIO)
2019
if (priv->audio_output != NULL)
2054
if (priv->liveadder != NULL)
2021
2056
gst_element_set_state (priv->audio_output, GST_STATE_NULL);
2057
gst_element_set_state (priv->liveadder, GST_STATE_NULL);
2023
2059
gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
2024
priv->audio_output = NULL;
2060
gst_bin_remove (GST_BIN (priv->pipeline), priv->liveadder);
2061
priv->liveadder = NULL;
2114
2151
EmpathyStreamedMediaWindowPriv *priv = GET_PRIV (self);
2116
GstPadTemplate *template;
2154
GError *gerror = NULL;
2118
if (priv->audio_output == NULL)
2156
if (priv->liveadder == NULL)
2120
priv->audio_output = empathy_audio_sink_new ();
2158
priv->liveadder = gst_element_factory_make ("liveadder", NULL);
2160
if (!gst_bin_add (GST_BIN (priv->pipeline), priv->liveadder))
2162
g_warning ("Could not add liveadder to the pipeline");
2163
goto error_add_liveadder;
2122
2165
if (!gst_bin_add (GST_BIN (priv->pipeline), priv->audio_output))
2124
2167
g_warning ("Could not add audio sink to pipeline");
2125
g_object_unref (priv->audio_output);
2126
2168
goto error_add_output;
2171
if (gst_element_set_state (priv->liveadder, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
2173
g_warning ("Could not start liveadder");
2129
2177
if (gst_element_set_state (priv->audio_output, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
2131
2179
g_warning ("Could not start audio sink");
2136
template = gst_element_class_get_pad_template (
2137
GST_ELEMENT_GET_CLASS (priv->audio_output), "sink%d");
2139
pad = gst_element_request_pad (priv->audio_output,
2140
template, NULL, NULL);
2183
if (GST_PAD_LINK_FAILED (
2184
gst_element_link (priv->liveadder, priv->audio_output)))
2186
g_warning ("Could not link liveadder to audio output");
2191
filter = gst_parse_bin_from_description (
2192
"audioconvert ! audioresample ! audioconvert", TRUE, &gerror);
2195
g_warning ("Could not make audio conversion filter: %s", gerror->message);
2196
g_clear_error (&gerror);
2200
if (!gst_bin_add (GST_BIN (priv->pipeline), filter))
2202
g_warning ("Could not add audio conversion filter to pipeline");
2203
gst_object_unref (filter);
2207
if (gst_element_set_state (filter, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE)
2209
g_warning ("Could not start audio conversion filter");
2213
if (!gst_element_link (filter, priv->liveadder))
2215
g_warning ("Could not link audio conversion filter to liveadder");
2219
pad = gst_element_get_static_pad (filter, "sink");
2142
2221
if (pad == NULL)
2144
g_warning ("Could not get sink pad from sink");
2223
g_warning ("Could not get sink pad from filter");
2231
gst_element_set_locked_state (filter, TRUE);
2232
gst_element_set_state (filter, GST_STATE_NULL);
2233
gst_bin_remove (GST_BIN (priv->pipeline), filter);
2237
gst_element_set_locked_state (priv->liveadder, TRUE);
2151
2238
gst_element_set_locked_state (priv->audio_output, TRUE);
2240
gst_element_set_state (priv->liveadder, GST_STATE_NULL);
2152
2241
gst_element_set_state (priv->audio_output, GST_STATE_NULL);
2153
2243
gst_bin_remove (GST_BIN (priv->pipeline), priv->audio_output);
2154
priv->audio_output = NULL;
2247
gst_bin_remove (GST_BIN (priv->pipeline), priv->liveadder);
2249
gst_element_set_locked_state (priv->liveadder, FALSE);
2250
gst_element_set_locked_state (priv->audio_output, FALSE);
2252
error_add_liveadder:
2254
if (priv->liveadder != NULL)
2256
gst_object_unref (priv->liveadder);
2257
priv->liveadder = NULL;