#include <gst/video/video.h>
#include <gst/pbutils/missing-plugins.h>
#include "settings.h"
+#include "presets.h"
#include "callbacks.h"
#include "hb-backend.h"
#include "preview.h"
gboolean pause;
gboolean encoded[10];
gint encode_frame;
+ gint live_id;
gchar *current;
};
ud->preview->play = gst_element_factory_make("playbin", "play");
ud->preview->pause = TRUE;
+ ud->preview->encode_frame = -1;
+ ud->preview->live_id = -1;
//xover = gst_element_factory_make("xvimagesink", "xover");
xover = gst_element_factory_make("gconfvideosink", "xover");
g_object_set(G_OBJECT(ud->preview->play), "video-sink", xover, NULL);
{
gboolean encoded;
+ if (ud->preview->live_id >= 0)
+ {
+ ghb_stop_live_encode();
+ }
+ ud->preview->live_id = -1;
+ ud->preview->encode_frame = -1;
if (!ud->preview->pause)
live_preview_stop(ud);
if (ud->preview->current)
js = ghb_value_dup(ud->settings);
ghb_settings_set_string(js, "destination", name);
ghb_settings_set_int(js, "start_frame", ud->preview->frame);
- ghb_settings_set_int(js, "live_duration", 15);
- ghb_add_live_job(js, 0);
+ ud->preview->live_id = 0;
+ ghb_add_live_job(js, ud->preview->live_id);
ghb_start_live_encode();
ghb_value_free(js);
}
GtkWidget *widget;
GtkWidget *prog;
+ ud->preview->live_id = -1;
prog = GHB_WIDGET(ud->builder, "live_encode_progress");
if (success &&
ud->preview->encode_frame == ud->preview->frame)
ghb_set_preview_image(ud);
}
+static void
+set_visible(GtkWidget *widget, gboolean visible)
+{
+ if (visible)
+ {
+ gtk_widget_show_now(widget);
+ }
+ else
+ {
+ gtk_widget_hide(widget);
+ }
+}
+
void
preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
{
- gint titleindex;
-
- titleindex = ghb_settings_combo_int(ud->settings, "title");
- if (titleindex < 0) return;
- g_debug("titleindex %d", titleindex);
+ GtkWidget *widget = GHB_WIDGET (ud->builder, "preview_window");
+ set_visible(widget, gtk_toggle_tool_button_get_active(
+ GTK_TOGGLE_TOOL_BUTTON(xwidget)));
+}
+void
+preview_menu_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
+{
GtkWidget *widget = GHB_WIDGET (ud->builder, "preview_window");
- gtk_widget_show (widget);
+ set_visible(widget, TRUE);
+ widget = GHB_WIDGET (ud->builder, "show_picture");
+ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget), TRUE);
}
void
preview_frame_value_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
+ if (ud->preview->live_id >= 0)
+ {
+ ghb_stop_live_encode();
+ ud->preview->live_id = -1;
+ ud->preview->encode_frame = -1;
+ }
ghb_set_preview_image(ud);
}
+gboolean
+preview_window_delete_cb(
+ GtkWidget *widget,
+ GdkEvent *event,
+ signal_user_data_t *ud)
+{
+ live_preview_stop(ud);
+ gtk_widget_hide(widget);
+ widget = GHB_WIDGET (ud->builder, "show_picture");
+ gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(widget), FALSE);
+ return TRUE;
+}
+
+void
+preview_duration_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+{
+ g_debug("preview_duration_changed_cb ()");
+ ghb_live_reset(ud);
+ ghb_widget_to_setting (ud->settings, widget);
+ ghb_check_dependency(ud, widget);
+ const gchar *name = gtk_widget_get_name(widget);
+ ghb_pref_save(ud->settings, name);
+}
+