summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEdgard Lima <edgard.lima@indt.org.br>2008-02-07 13:59:41 +0000
committerEdgard Lima <edgard.lima@indt.org.br>2008-02-07 13:59:41 +0000
commit6063b1da97fb2f84ce5e6bd6d013f03b1662e740 (patch)
tree89d4a27b57b0a1c2fad3daf4436eba7cf8a229a7 /tests
parent26abf37c0365079b3dffae19c94d6690f2f1584e (diff)
downloadgst-plugins-bad-6063b1da97fb2f84ce5e6bd6d013f03b1662e740.tar.gz
gst-plugins-bad-6063b1da97fb2f84ce5e6bd6d013f03b1662e740.tar.bz2
gst-plugins-bad-6063b1da97fb2f84ce5e6bd6d013f03b1662e740.zip
Add more tags. Improve test app.
Original commit message from CVS: Add more tags. Improve test app.
Diffstat (limited to 'tests')
-rw-r--r--tests/icles/metadata_editor.c319
-rw-r--r--tests/icles/metadata_editor.glade190
2 files changed, 474 insertions, 35 deletions
diff --git a/tests/icles/metadata_editor.c b/tests/icles/metadata_editor.c
index d59e4cd3..02212bb2 100644
--- a/tests/icles/metadata_editor.c
+++ b/tests/icles/metadata_editor.c
@@ -62,11 +62,22 @@ enum
COL_VALUE,
NUM_COLS
};
-
-#define ENC_ERROR (-1)
-#define ENC_DONE (0)
+/* *INDENT-OFF* */
+typedef enum _AppOptions {
+ APP_OPT_DEMUX_EXIF = (1 << 0),
+ APP_OPT_DEMUX_IPTC = (1 << 1),
+ APP_OPT_DEMUX_XMP = (1 << 2),
+ APP_OPT_MUX_EXIF = (1 << 3),
+ APP_OPT_MUX_IPTC = (1 << 4),
+ APP_OPT_MUX_XMP = (1 << 5),
+ APP_OPT_ALL = (1 << 6) - 1,
+} AppOptions;
+
+#define ENC_ERROR (-1)
+#define ENC_DONE (0)
#define ENC_UNKNOWN (1)
+/* *INDENT-OFF* */
/*
* functions prototypes
@@ -79,7 +90,7 @@ static int
me_gst_setup_view_pipeline (const gchar * filename, GdkWindow * window);
static int
me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
- gint * encode_status);
+ gint * encode_status, gboolean use_v4l2);
static int
me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
gint * encode_status);
@@ -87,6 +98,7 @@ me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
/* ui related functions */
static void ui_refresh ();
+static void process_file();
/*
* Global Vars
@@ -103,6 +115,8 @@ GstElement *gst_video_sink = NULL;
GstElement *gst_file_sink = NULL;
GstElement *gst_pipeline = NULL;
+AppOptions app_options = APP_OPT_ALL;
+
GstTagList *tag_list = NULL;
GladeXML *ui_glade_xml = NULL;
@@ -113,7 +127,8 @@ GtkWidget *ui_tree = NULL;
GtkEntry *ui_entry_insert_tag = NULL;
GtkEntry *ui_entry_insert_value = NULL;
-GtkToggleButton *ui_chk_bnt_capture = NULL;
+GtkToggleButton *ui_chk_bnt_capture_v4l2 = NULL;
+GtkToggleButton *ui_chk_bnt_capture_test = NULL;
GString *filename = NULL;
@@ -264,6 +279,10 @@ on_buttonInsert_clicked (GtkButton * button, gpointer user_data)
const gchar *tag = gtk_entry_get_text (ui_entry_insert_tag);
const gchar *value = gtk_entry_get_text (ui_entry_insert_value);
+ if ( tag_list == NULL ) {
+ tag_list = gst_tag_list_new ();
+ }
+
if (tag && value && tag[0] != '\0') {
/* insert just new tags (the ones already in list should be modified) */
@@ -314,16 +333,20 @@ on_buttonSaveFile_clicked (GtkButton * button, gpointer user_data)
GString *src_file = NULL;
gint enc_status = ENC_UNKNOWN;
+ const gboolean use_v4l2 =
+ gtk_toggle_button_get_active (ui_chk_bnt_capture_v4l2);
+ const gboolean use_test =
+ gtk_toggle_button_get_active (ui_chk_bnt_capture_test);
gst_element_set_state (gst_pipeline, GST_STATE_NULL);
gst_element_get_state (gst_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
src_file = g_string_new (filename->str);
- if (gtk_toggle_button_get_active (ui_chk_bnt_capture)) {
+ if (use_v4l2 || use_test) {
setup_new_filename (filename, ".jpg");
if (me_gst_setup_capture_pipeline (src_file->str, filename->str,
- &enc_status)) {
+ &enc_status, use_v4l2)) {
goto done;
}
} else {
@@ -381,13 +404,130 @@ done:
}
void
-on_checkbuttonCapture_toggled (GtkToggleButton * togglebutton,
+on_checkbuttonCaptureV4l2_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ gtk_toggle_button_set_active(ui_chk_bnt_capture_test, FALSE);
+}
+
+void
+on_checkbuttonCaptureTest_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ gtk_toggle_button_set_active(ui_chk_bnt_capture_v4l2, FALSE);
+}
+
+void
+on_checkbuttonOptionsDemuxExif_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_DEMUX_EXIF;
+ else
+ app_options &= ~APP_OPT_DEMUX_EXIF;
+}
+
+void
+on_checkbuttonOptionsDemuxIptc_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_DEMUX_IPTC;
+ else
+ app_options &= ~APP_OPT_DEMUX_IPTC;
+}
+
+void
+on_checkbuttonOptionsDemuxXmp_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_DEMUX_XMP;
+ else
+ app_options &= ~APP_OPT_DEMUX_XMP;
+}
+
+void
+on_checkbuttonOptionsMuxExif_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
- if (gtk_toggle_button_get_active (togglebutton)) {
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_MUX_EXIF;
+ else
+ app_options &= ~APP_OPT_MUX_EXIF;
+}
+
+void
+on_checkbuttonOptionsMuxIptc_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_MUX_IPTC;
+ else
+ app_options &= ~APP_OPT_MUX_IPTC;
+}
+
+void
+on_checkbuttonOptionsMuxXmp_toggled (GtkToggleButton * togglebutton,
+ gpointer user_data)
+{
+ if (gtk_toggle_button_get_active (togglebutton))
+ app_options |= APP_OPT_MUX_XMP;
+ else
+ app_options &= ~APP_OPT_MUX_XMP;
+}
+
+void
+on_buttonOpenFile_clicked (GtkButton * button, gpointer user_data)
+{
+ GtkWidget *dialog;
+ gboolean open = FALSE;
+
+ dialog = gtk_file_chooser_dialog_new ("Open File",
+ GTK_WINDOW(ui_main_window),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ if (filename) {
+ const char *p = filename->str;
+ char *q = filename->str + filename->len - 1;
+ for (;p != q; --q) {
+ if ( *q == '/' )
+ break;
+ }
+ if ( p != q )
+ *q = '\0';
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (dialog),
+ filename->str);
+ if ( p != q )
+ *q = '/';
+ }
+
+ open = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT;
+
+ if (open) {
+ char *str;
+
+ str = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ if (filename)
+ g_string_free (filename, TRUE);
+ filename = g_string_new(str);
+ g_free (str);
+ }
+
+ gtk_widget_destroy (dialog);
+
+ if (open) {
+ process_file();
}
+
}
+
/*
* UI handling functions
*/
@@ -520,6 +660,62 @@ ui_refresh ()
}
static int
+ui_connect_signals()
+{
+
+ glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureV4l2_toggled",
+ (GCallback)on_checkbuttonCaptureV4l2_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureTest_toggled",
+ (GCallback)on_checkbuttonCaptureTest_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsDemuxExif_toggled",
+ (GCallback) on_checkbuttonOptionsDemuxExif_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsDemuxIptc_toggled",
+ (GCallback) on_checkbuttonOptionsDemuxIptc_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsDemuxXmp_toggled",
+ (GCallback) on_checkbuttonOptionsDemuxXmp_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsMuxExif_toggled",
+ (GCallback) on_checkbuttonOptionsMuxExif_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsMuxIptc_toggled",
+ (GCallback) on_checkbuttonOptionsMuxIptc_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml,
+ "on_checkbuttonOptionsMuxXmp_toggled",
+ (GCallback) on_checkbuttonOptionsMuxXmp_toggled);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_buttonSaveFile_clicked",
+ (GCallback)on_buttonSaveFile_clicked);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_windowMain_delete_event",
+ (GCallback)on_windowMain_delete_event);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_drawingMain_expose_event",
+ (GCallback)on_drawingMain_expose_event);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_windowMain_configure_event",
+ (GCallback)on_windowMain_configure_event);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_buttonInsert_clicked",
+ (GCallback)on_buttonInsert_clicked);
+
+ glade_xml_signal_connect(ui_glade_xml, "on_buttonOpenFile_clicked",
+ (GCallback)on_buttonOpenFile_clicked);
+
+ return 0;
+
+}
+
+static int
ui_create ()
{
int ret = 0;
@@ -544,18 +740,23 @@ ui_create ()
ui_entry_insert_value =
GTK_ENTRY (glade_xml_get_widget (ui_glade_xml, "entryValue"));
- ui_chk_bnt_capture =
+ ui_chk_bnt_capture_v4l2 =
+ GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
+ "checkbuttonCaptureV4l2"));
+
+ ui_chk_bnt_capture_test =
GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
- "checkbuttonCapture"));
+ "checkbuttonCaptureTest"));
- if (!(ui_main_window && ui_drawing && ui_tree && ui_entry_insert_tag
- && ui_entry_insert_value && ui_chk_bnt_capture)) {
+ if (!(ui_main_window && ui_drawing && ui_tree
+ && ui_entry_insert_tag && ui_entry_insert_value
+ && ui_chk_bnt_capture_v4l2 && ui_chk_bnt_capture_test)) {
fprintf (stderr, "Some widgets couldn't be created\n");
ret = -105;
goto done;
}
- glade_xml_signal_autoconnect (ui_glade_xml);
+ ui_connect_signals();
ui_setup_tree_view (GTK_TREE_VIEW (ui_tree));
@@ -752,7 +953,7 @@ done:
static int
me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
- gint * encode_status)
+ gint * encode_status, gboolean use_v4l2)
{
int ret = 0;
GstBus *bus = NULL;
@@ -763,7 +964,10 @@ me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
me_gst_cleanup_elements ();
/* create elements */
- gst_source = gst_element_factory_make ("v4l2src", NULL);
+ if ( use_v4l2 )
+ gst_source = gst_element_factory_make ("v4l2src", NULL);
+ else
+ gst_source = gst_element_factory_make ("videotestsrc", NULL);
gst_video_convert = gst_element_factory_make ("ffmpegcolorspace", NULL);
gst_image_enc = gst_element_factory_make ("jpegenc", NULL);
gst_metadata_mux = gst_element_factory_make ("metadatamux", NULL);
@@ -788,6 +992,20 @@ me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
/* set elements's properties */
g_object_set (gst_source, "num-buffers", 1, NULL);
g_object_set (gst_file_sink, "location", dest_file, NULL);
+ if ( app_options & APP_OPT_MUX_EXIF )
+ g_object_set (gst_metadata_mux, "exif", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "exif", FALSE, NULL);
+
+ if ( app_options & APP_OPT_MUX_IPTC )
+ g_object_set (gst_metadata_mux, "iptc", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "iptc", FALSE, NULL);
+
+ if ( app_options & APP_OPT_MUX_XMP )
+ g_object_set (gst_metadata_mux, "xmp", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "xmp", FALSE, NULL);
/* adding and linking elements */
gst_bin_add_many (GST_BIN (gst_pipeline), gst_source, gst_video_convert,
@@ -859,6 +1077,36 @@ me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
g_object_set (gst_source, "location", src_file, NULL);
g_object_set (gst_file_sink, "location", dest_file, NULL);
+ if ( app_options & APP_OPT_DEMUX_EXIF )
+ g_object_set (gst_metadata_demux, "exif", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_demux, "exif", FALSE, NULL);
+
+ if ( app_options & APP_OPT_DEMUX_IPTC )
+ g_object_set (gst_metadata_demux, "iptc", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_demux, "iptc", FALSE, NULL);
+
+ if ( app_options & APP_OPT_DEMUX_XMP )
+ g_object_set (gst_metadata_demux, "xmp", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_demux, "xmp", FALSE, NULL);
+
+ if ( app_options & APP_OPT_MUX_EXIF )
+ g_object_set (gst_metadata_mux, "exif", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "exif", FALSE, NULL);
+
+ if ( app_options & APP_OPT_MUX_IPTC )
+ g_object_set (gst_metadata_mux, "iptc", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "iptc", FALSE, NULL);
+
+ if ( app_options & APP_OPT_MUX_XMP )
+ g_object_set (gst_metadata_mux, "xmp", TRUE, NULL);
+ else
+ g_object_set (gst_metadata_mux, "xmp", FALSE, NULL);
+
/* adding and linking elements */
gst_bin_add_many (GST_BIN (gst_pipeline), gst_source, gst_metadata_demux,
gst_metadata_mux, gst_file_sink, NULL);
@@ -967,34 +1215,47 @@ done:
}
+static void
+process_file() {
+ /* filename for future usage (title and file name to be created) */
+ me_gst_cleanup_elements ();
+
+ if (tag_list) {
+ gst_tag_list_free (tag_list);
+ tag_list = NULL;
+ }
+
+ /* create pipeline */
+ me_gst_setup_view_pipeline (filename->str, ui_drawing->window);
+
+ gst_element_set_state (gst_pipeline, GST_STATE_PLAYING);
+
+ ui_refresh ();
+
+}
+
int
main (int argc, char *argv[])
{
int ret = 0;
- if (argc != 2) {
- fprintf (stderr, "Give the name of a jpeg file as argument\n");
- ret = -5;
- goto done;
+ if (argc >= 2) {
+ if (filename)
+ g_string_free (filename, TRUE);
+ filename = g_string_new (argv[1]);
}
gst_init (&argc, &argv);
gtk_init (&argc, &argv);
- /* filename for future usage (title and file name to be created) */
- if (filename)
- g_string_free (filename, TRUE);
- filename = g_string_new (argv[1]);
-
/* create UI */
if ((ret = ui_create ())) {
goto done;
}
- /* create pipeline */
- me_gst_setup_view_pipeline (argv[1], ui_drawing->window);
-
- gst_element_set_state (gst_pipeline, GST_STATE_PLAYING);
+ if (argc >= 2) {
+ process_file();
+ }
gtk_main ();
diff --git a/tests/icles/metadata_editor.glade b/tests/icles/metadata_editor.glade
index 871d8e6b..521e82f8 100644
--- a/tests/icles/metadata_editor.glade
+++ b/tests/icles/metadata_editor.glade
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.2.0 on Mon Dec 17 11:42:47 2007 by edlima@feisty-laptop-->
+<!--Generated with glade3 3.4.0 on Thu Feb 7 14:44:35 2008 -->
<glade-interface>
<widget class="GtkWindow" id="windowMain">
<property name="width_request">800</property>
@@ -96,6 +96,7 @@
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Insert</property>
+ <property name="response_id">0</property>
<signal name="clicked" handler="on_buttonInsert_clicked"/>
</widget>
<packing>
@@ -110,6 +111,7 @@
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Save File</property>
+ <property name="response_id">0</property>
<signal name="clicked" handler="on_buttonSaveFile_clicked"/>
</widget>
<packing>
@@ -124,13 +126,188 @@
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkbuttonCapture">
+ <widget class="GtkHBox" id="hboxOptions">
<property name="visible">True</property>
- <property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">Capture image from camera</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="on_checkbuttonCapture_toggled"/>
+ <child>
+ <widget class="GtkVBox" id="vboxCaptureOptions">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonCaptureV4l2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Capture image from camera</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonCaptureV4l2_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonCaptureTest">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Capture image from videotestsrc</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonCaptureTest_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkButton" id="buttonOpenFile">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">Open File...</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="on_buttonOpenFile_clicked"/>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vboxOptionsDemux">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkLabel" id="labelDemux">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Demux options:</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsDemuxExif">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">exif</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsDemuxExif_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsDemuxIptc">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">iptc</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsDemuxIptc_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsDemuxXmp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">xmp</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsDemuxXmp_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vboxOptionsMux">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <widget class="GtkLabel" id="labelMux">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Mux options:</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsMuxExif">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">exif</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsMuxExif_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsMuxIptc">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">iptc</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsMuxIptc_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkCheckButton" id="checkbuttonOptionsMuxXmp">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">xmp</property>
+ <property name="response_id">0</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="on_checkbuttonOptionsMuxXmp_toggled"/>
+ </widget>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="position">2</property>
@@ -145,6 +322,7 @@
</child>
</widget>
<packing>
+ <property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>